【问题标题】:Is it possible to install aws-cli package without root permission?是否可以在没有 root 权限的情况下安装 aws-cli 包?
【发布时间】:2014-11-25 06:04:42
【问题描述】:

正如标题所暗示的,我一直无法找到安装aws-cli (https://github.com/aws/aws-cli/) 的好方法,而无需root 访问权限(或等效sudo 权限)。

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

【问题讨论】:

  • 您是否尝试使用pip 来安装它? --user 标志不起作用吗?

标签: amazon-web-services centos redhat aws-cli


【解决方案1】:

Quiver 的答案就像一个魅力,除了有一个先决条件。您还需要安装 Python。鉴于您没有 root 权限,您现在最终将搜索如何在没有 root 权限的情况下安装 python,而且这也不是一件简单的事情。

所以这是最终对我有用的完整解决方案。

  1. 使用 wget 安装 Anaconda
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
  1. 使用捆绑的安装程序安装 aws-cli 包
wget https://s3.amazonaws.com/aws-cli/awscli-bundle.zip
unzip awscli-bundle.zip
./awscli-bundle/install -b ~/bin/aws

export PATH=~/bin:$PATH
  1. 测试 AWS CLI 安装
aws —version

【讨论】:

    【解决方案2】:

    在我的 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
    

    它对我有用! 让我知道它是否适合您!

    【讨论】:

      【解决方案3】:

      对于 AWS CLI v2,推荐的解决方案是在安装指示用户具有写入权限的目录时传递选项 -i-b

      例子:

      [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
      

      来自亚马逊网络服务的documentation

      如果您指定的目录您已经拥有写入权限,则可以不使用 sudo 进行安装。使用install 命令的以下说明指定安装位置:

      • 确保您提供给-i-b 参数的路径不包含包含任何空格字符或其他空格字符的卷名或目录名。如果有空格,则安装失败。

      • --install-dir-i - 此选项指定将所有文件复制到的目录。

        默认值为/usr/local/aws-cli

      • --bin-dir-b - 此选项指定安装目录中的主aws 程序符号链接到指定路径中的文件aws。您必须对指定目录具有写入权限。创建指向已在路径中的目录的符号链接,无需将安装目录添加到用户的 $PATH 变量中。

        默认值为/usr/local/bin

      (我认为接受的答案已经过时,因为它仅适用于 AWS CLI v1。)

      【讨论】:

      • 我认为将二进制文件放在用户的二进制目录中会更有意义:./aws/install -i ~/aws-cli -b ~/bin
      • 其实最好放在.local/bin:./aws/install -i ~/.local/aws-cli -b ~/.local/bin
      【解决方案4】:

      你可以在没有root访问权限的情况下安装--user标志pip

      pip install --user -U awscli
      

      (向在评论中写下这篇文章的 Etan Reisner 致敬)。

      【讨论】:

        【解决方案5】:

        为此目的有一个捆绑安装程序。

        安装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

        【讨论】:

        • 谢谢,即使没有pip 和其他依赖项。
        • 我相信这只适用于 AWS CLI v1。有关推荐的 v2 解决方案,请参见下文。
        【解决方案6】:

        显然,答案是可能的。诀窍是将整个堆栈安装在主机上的备用位置。

        所以 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
        

        这些是我为帮助我实现该目标而遵循的有用链接。

        Install Python in an alternate location

        Install Python stack without root privilege

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-08-22
          • 1970-01-01
          • 1970-01-01
          • 2012-12-20
          • 2019-02-25
          • 2020-10-06
          • 2015-11-12
          • 2013-05-29
          相关资源
          最近更新 更多