正如标题所建议的,在没有root访问权限(或相当于
aws-cli
)的情况下,我一直无法找到安装
sudo
(https://github.com/aws/aws-cli/)的好方法特权)。
Mac 上的
Homebrew
设置方式暗示这可能是可能的,前提是设置了一些目录和权限以方便将来的安装。然而,我还没有在 Linux 中找到任何方法(特别是 Red Hat Enterprise Linux 或 CentOS 发行版)。
我也了解 RHEL 的 SCL (https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Developer_Guide/scl-utils.html) 但同样,它需要
sudo
.
有一个用于此目的的捆绑安装程序。
将
aws
命令安装到 $HOME/bin
wget https://s3.amazonaws.com/aws-cli/awscli-bundle.zip
unzip awscli-bundle.zip
./awscli-bundle/install -b ~/bin/aws
设置
$PATH
环境变量
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
测试 AWS CLI 安装
aws help
详情请参阅以下链接: http://docs.aws.amazon.com/cli/latest/userguide/awscli-install-bundle.html#install-bundle-user
对于 AWS CLI v2,建议的解决方案是在安装时传递选项
-i
和 -b
指示用户具有写入权限的目录。
示例:
$ cd Downloads
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ ./aws/install -i ~/aws-cli -b ~/aws-cli/bin
来自 Amazon Web Service 的 文档:
如果您指定已经具有写入权限的目录,则无需安装
即可安装。使用以下sudo
命令说明来指定安装位置:install
确保您提供给
和-i
参数的路径不包含包含任何空格字符或其他空白字符的卷名称或目录名称。如果有空格则安装失败。-b
或--install-dir
– 此选项指定要将所有文件复制到的目录。-i
默认值为
。/usr/local/aws-cli
或--bin-dir
– 此选项指定安装目录中的主-b
程序以符号方式链接到指定路径中的文件aws
。您必须具有指定目录的写入权限。创建指向路径中已有目录的符号链接就无需将安装目录添加到用户的aws
变量中。$PATH
默认值为
。/usr/local/bin
(我认为接受的答案已经过时,因为它仅适用于 AWS CLI v1。)
显然,答案是可能的。诀窍是将整个堆栈安装在主机上的备用位置。
所以 altinstall python,然后 easy_intsall,然后 pip。这是我日志中的命令历史记录。
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
这些是我遵循的有用链接,可帮助我实现该目标。
您可以使用
--user
标记到 pip
: 进行安装,无需 root 访问权限
pip install --user -U awscli
(向在评论中写下此内容的 Etan Reisner 致敬)。
在我的 ubuntu 20.04 上安装 aws 后,我遇到了同样的问题。 当我尝试时:
aws --version
没成功(
Command 'aws' not found, but can be installed with: sudo apt install awscli
)
和
/usr/local/bin/aws --version
aws-cli/2.3.1 Python/3.8.8 Linux/5.11.0-38-generic exe/x86_64.ubuntu.20 prompt/off
那么如果没有 sudo 权限我就无法使用 aws
我通过(通过在 /usr/local/aws-cli 目录上添加组和其他人的权限)修复了它
sudo chmod -R 755 /usr/local/aws-cli
它对我有用! 让我知道是否适合您!
Quiver的答案就像一个魅力,只不过有一个先决条件。您还需要安装Python。考虑到您没有 root 权限,您现在最终将搜索如何在没有 root 权限的情况下安装 python,这也不会那么简单。
所以这是最终对我有用的完整解决方案。
cd ~
wget https://repo.continuum.io/archive/Anaconda3-2020.11-Linux-x86_64.sh
bash Anaconda3-2020.11-Linux-x86_64.sh -b -p ~/anaconda3 # Install aws command to $HOME/bin
echo 'export PATH="~/anaconda3/bin:$PATH"' >> ~/.bashrc
~/anaconda3/bin/conda init # Reload default profile
source ~/.bashrc
wget https://s3.amazonaws.com/aws-cli/awscli-bundle.zip
unzip awscli-bundle.zip
./awscli-bundle/install -b ~/bin/aws
export PATH=~/bin:$PATH
aws —version
namei -l /usr/local/bin/aws
显示通向实际 aws 脚本的每个路径的权限。
sudo chmod 777
修复了非 root 用户无法访问的路径的权限。
conda install -c conda-forge awscli
安装 conda 不需要 root 权限。