As title suggested, I haven't been able to find a good way to install aws-cli
(https://github.com/aws/aws-cli/) without having the root access (or equivalent of sudo
privileges).
The way Homebrew
setup on Mac is hinting at it may be possible, provided that a few directories and permissions are set in a way to facility future installs. However, I have yet to find any approach in Linux (specially, Red Hat Enterprise Linux or CentOS distroes).
I am also aware of SCL from RHEL (https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Developer_Guide/scl-utils.html) But again, it requires sudo
.
If you want to install as a local user without admin rights, there's a simple official workaround. You need to create a XML file that will provide a path /Users/myusername where you want AWS CLI to be installed. This path should be an existing directory or created before launching the installer else it'll fail.
By default, the files are all installed to /usr/local/aws-cli , and a symbolic link is created in /usr/local/bin .
You can install version 1 of the AWS Command Line Interface (AWS CLI) on Windows by using a standalone installer (recommended) or pip , which is a package manager for Python.
To access AWS services with the AWS CLI, you need an AWS account, IAM credentials, and an IAM access key pair. When running AWS CLI commands, the AWS CLI needs to have access to those AWS credentials.
For AWS CLI v2, the recommended solution is passing options -i
and -b
when installing indicating directories for which user has write permissions.
Example:
[user@localhost ~]$ cd Downloads
[user@localhost Downloads]$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
[user@localhost Downloads]$ unzip awscliv2.zip
[user@localhost Downloads]$ ./aws/install -i ~/aws-cli -b ~/aws-cli/bin
From Amazon Web Service's documentation:
You can install without
sudo
if you specify directories that you already have write permissions to. Use the following instructions for theinstall
command to specify the installation location:
Ensure that the paths you provide to the
-i
and-b
parameters contain no volume name or directory names that contain any space characters or other white space characters. If there is a space, the installation fails.
--install-dir
or-i
– This option specifies the directory to copy all of the files to.The default value is
/usr/local/aws-cli
.
--bin-dir
or-b
– This option specifies that the mainaws
program in the install directory is symbolically linked to the fileaws
in the specified path. You must have write permissions to the specified directory. Creating a symlink to a directory that is already in your path eliminates the need to add the install directory to the user's$PATH
variable.The default value is
/usr/local/bin
.
(I believe the accepted answer is outdated in that it only works for AWS CLI v1.)
There's a bundled installer for that purpose.
Install aws
command to $HOME/bin
$ wget https://s3.amazonaws.com/aws-cli/awscli-bundle.zip
$ unzip awscli-bundle.zip
$ ./awscli-bundle/install -b ~/bin/aws
Set $PATH
environment variable
$ echo $PATH | grep ~/bin // See if $PATH contains ~/bin (output will be empty if it doesn't)
$ export PATH=~/bin:$PATH // Add ~/bin to $PATH if necessary
Test the AWS CLI Installation
$ aws help
See the following link for details: http://docs.aws.amazon.com/cli/latest/userguide/awscli-install-bundle.html#install-bundle-user
Obviously, the answers is possible. The trick is to install the whole stack in an alternate location on the host machine.
So altinstall python, then easy_intsall, then pip. Here are the command history in my log.
cd
mkdir installations
cd installations/
curl -O https://www.python.org/ftp/python/2.7/Python-2.7.tar.bz2
tar xjf Python-2.7.tar.bz2
cd Python-2.7
mkdir -p ~/usr/local
make altinstall prefix=~/usr/local exec-prefix=~/usr/local
~/usr/local/bin/python2.7 -V
ln -s ~/usr/local/bin/python2.7 ~/usr/local/bin/python
echo "export $PATH=~/usr/local/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
cd
mkdir virtualenv
cd virtualenv/
curl -O https://raw.github.com/pypa/virtualenv/master/virtualenv.py
mkdir ~/envs
python virtual-python.py --prefix=~/env/aws
curl -O http://peak.telecommunity.com/dist/ez_setup.py
~/env/aws/bin/python ez_setup.py
echo "export $PATH=~/env/aws/bin:~/usr/local/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
easy_install virtualenv
virtualenv --no-site-packages ~/env/awscli
source ~/env/awscli/bin/activate
pip -V
pip install awscli
These are helpful links that I followed to help me achieve that goal.
Install Python in an alternate location
Install Python stack without root privilege
You can install without root access with the --user
flag to pip
:
pip install --user -U awscli
(Hat tip to Etan Reisner who wrote this in a comment).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With