Linux服务器安装版本管理工具之pyenv和rbenv——超详细小白全程避坑篇

1. 前言

一位小白同学兴高采烈买了服务器后,第一时间一定热情高涨,心想一定要发挥出它的作用出来,比如把开发环境从 Windows 迁移到 Linux 上?在服务器上搭建一个属于自己的博客?……

当然,在做这些之前一定要把环境、工具等准备工作做齐,这步看似简单,但对于初步接触的小白来讲,还是有很多坑会踩,虽可能此前已经能熟练使用虚拟机上的 Linux 系统,但与使用服务器上的系统还是有好些不一样的地方,或许是虚拟机上几乎不会用到、注意到的点——就成为了坑!(典型的比如权限问题…)

下面就记录一下我在服务器上安装 pyenv 和 rbenv 时遇到的问题,也为其他初学者避下坑。(大神请勿鄙视这些基操,只有想不到,没有菜鸟遇不到)

2. 环境

  • 服务器:华为云耀云服务器 HECS(1 核 2GB 40GB 高 IO 硬盘;悄 mi mi 高兴一下,新人是真便宜哇!)
  • python 版本管理器:pyenv
    pyenv 是一款 python 版本管理器,不同项目可能需要不同的 python 版本,有的需要 python2 有的需要 python3,这时候就需要这样一款版本管理器,方便针对具体项目需要随时切换 python 版本,甚至是为其建立单独的隔离环境(virtualenv)。Windows下也有对应版本:pyenv-win
  • ruby 版本管理器:rbenv
    同pyenv,是ruby的版本管理器。如同Java的jenv,这一系列我都挺喜欢的,好用、简单、基本相同。
  • 系统:Ubuntu20.04

3. 操作

3.1 准备工作及注意点

登录新到手的服务器后,默认的用户一般都是 root 用户,此时建议新建一个拥有 sudo 权限的普通用户,后面安装软件、使用等操作都在普通用户下进行,原因如下:

  1. 最直接的就是影响后续使用。在 root 权限甚至 root 用户目录下的文件,用户及组都是 root,一旦你切换到普通用户时,将没有权限访问这些内容,自然也就无法使用。
  2. 危险、存在安全隐患。root 作为最高权限用户,你将工具、文件、甚至后续部署的博客网站放在它的里面,一旦出现问题,那结果,呵呵呵~

其二,也是非常重要的一点:
尽量都安装在 /usr/local 路径内!!!千千万万别随手安装在 /root/home/your_new_user 路径下!!!(重要的事说三遍!)

这里解释下原因:
一是因为,如果安装在 root 目录下,那么你只有是 root 身份时才能使用该软件,因为普通用户无权访问这个路径;

其二,如果安装在 /home/user 内时,当切换到其他用户时(包括 root),该文件夹会被隔离,你仍然无法访问使用!因此放在 /usr/local 文件夹内时是方便的,大家都能访问使用,就相当于 Windows 下的 C:/Program Files

因此下面就做一整个流程的全程记录。

3.2 创建新的普通用户

  1. 以 root 用户登录服务器
  2. 创建新用户
    命令:adduser your_new_user
    其余选项都可以默认或者自行选择,添加成功后,新用户的路径为:/home/your_new_user
  3. 为新用户增加 sudo 权限
    方法一是去修改 /etc/sudoers 的文件内容。
    这里建议方法二,直接一行命令
    adduser your_new_user sudo
    接下来的操作,建议不要再用 root 了,登录刚刚新建的普通用户进行操作。

3.3 安装 pyenv

  1. 登录普通用户
  2. 安装依赖环境
    sudo apt install make build-essential llvm libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl libncurses5-dev xz-utils libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev tk-dev
    
  3. 克隆 pyenv 源码
    pyenv官网 有参考教程。但只要是在国内的服务器,不要妄图使用 culr 的下载安装程序来自动安装,不会成功的。
    git clone --depth 1 https://github.com/pyenv/pyenv.git /usr/local/.pyenv
    
  4. 将环境变量添加到全局,并使之立即生效
    vim /etc/profile
    然后将一下内容添加到最后即可。
    # for pyenv
    export PYENV_ROOT="/usr/local/.pyenv"
    export PATH="$PYENV_ROOT/bin:$PATH"
    eval "$(pyenv init --path)"
    eval "$(pyenv virtualenv-init -)"
    
    然后使用命令使之立即生效,pyenv 就可以使用了:source /etc/profile
  5. pyenv 常用命令
    pyenv versions # 显示所有已经安装的python版本
    pyenv version # 显示当前设置的python版本
    pyenv install --list # 显示可以安装的python版本
    pyenv install <version> # 安装<version>版本的python
    pyenv global <version> # 设置全局状态的python版本
    pyenv local <version> # 设置当前目录(或其子目录)下的python的版本
    pyenv shell <version> # 仅为当前shell会话选择
    pyenv uninstall <version> # 卸载<version>版本的python
    
  6. 可能出现问题和可能需要的插件:
    1. 安装速度慢
      因为 pyenv 默认是从官网下载的,所以速度就会很慢,有时候甚至会失败,多试几次就好了。

      还有一种就是离线安装的方法。
      自行从 python 官网下载需要的 python 版本,下载后缀为 tar.xz 的源文件,例如“Python-3.8.10.tar.xz”。
      然后将该文件放在 /.pyenv/cache 路径下,第一次安装 pyenv 可能还没有这个缓存文件夹,自己在 .pyenv 目录下创建一个就好,最后再次使用 pyenv install <python版本> 即可。
      不过我试了几次,好像有时候它并没有识别到这个缓存?

    2. 安装 pyenv-virtualenv 插件

      git clone https://github.com/pyenv/pyenv-virtualenv.git /usr/local/.pyenv/plugins
      

      virtualenv 的解决方案是为每个项目创建一个独立的虚拟环境,在每个虚拟环境中安装的库,对其他虚拟环境完全无影响。所以就可以在一台机器的不同虚拟环境中分别安装同一个库的不同版本。如果想详细了解其使用方法,请自行查阅。

  7. 升级 pyenv
    • 使用 pyenv-update 插件
      git clone https://github.com/pyenv/pyenv-update.git /usr/local/.pyenv/plugins/pyenv-update
      
      要更新 pyenv 和插件(包括 pyenv-update 本身),只需输入: pyenv update
    • 使用 Git 升级安装
      • 要升级到 pyenv 的最新开发版本,请使用:git pull
        cd /usr/local/.pyenv
        git pull
        
      • 要升级到 Pyenv 的特定版本,请查看相应的标签:
        cd /usr/local/.pyenv
        git fetch
        git tag
        git checkout v0.1.0
        
  8. 完全卸载 pyenv
    直接删除 pyenv 的安装目录,然后清除 /etc/profile 文件中的相关配置即可。
    sudo rm -rf /usr/local/.pyenv
    

3.4 安装 rbenv

好吧,在我完成以下安装操作后,写这篇 blog 时才发现有 ruby-China… 这里放上地址 rbenv使用指南(ruby-china.org),应该有更快的安装方式和镜像,自行选择尝试。这里还有一个 rbenv-cn 的 gitee 项目
真是服了,需要的时候就是没搜出来 cn 版,费劲安装完了它又出来了。。。

  1. 第一步同样是登录普通用户
  2. 安装依赖环境
    sudo apt install autoconf bison build-essential libssl-dev libyaml-dev libreadline-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev libdb-dev
    
  3. 克隆 rbenv 源码。但只要是在国内的服务器,不要妄图使用 culr 的下载安装程序来自动安装,不会成功的。
    git clone https://github.com/rbenv/rbenv.git /usr/local/.rbenv
    
  4. 将环境变量添加到全局,并使之立即生效
    vim /etc/profile
    然后将一下内容添加到最后即可。
    # for rbenv
    export RBENV_ROOT="/usr/local/.rbenv"
    export PATH="$RBENV_ROOT/bin:$PATH"
    export PATH="$RBENV_ROOT/plugins/ruby-build/bin:$PATH"
    eval "$(rbenv init -)"
    
    然后使用命令使之立即生效,pyenv 就可以使用了:source /etc/profile
  5. rbenv 常用命令
    基本和 pyenv 相同,参考上述 pyevn 常用命令即可
  6. 可能遇到的问题
    如果在安装 ruby 过程中,没有 rbenv install 命令,那么需要安装以下 ruby-build 插件
    git clone https://github.com/rbenv/ruby-build.git /usr/local/.rbenv/plugins/ruby-build
    如果同样遇到下载速度非常慢的情况,同 pyenv 一样,多试几次等一等就好了。或者尝试类似方法的离线安装。
    下载后缀为 .tar.gz 的 ruby 源文件,将其放置在 /.rbenv/cache 目录中再次尝试安装。
  7. 升级 rbenv
    使用 Git 升级安装,要升级到 pyenv 的最新开发版本,请使用:git pull
    cd /usr/local/.rbenv
    git pull
    
  8. 完全卸载 rbenv
    直接删除 rbenv 的安装目录,然后清除 /etc/profile 文件中的相关配置即可。
    sudo rm -rf /usr/local/.rbenv
    

4. 其他踩坑点(重点避坑)

  1. 如果你上面没有听我的话,安装 pyenv、rbenv 或其他软件时,没有切换到普通用户去安装,而是一不小心用默认登录的 root 用户安装到 /usr/local 目录下了,此时该文件夹的用户及组用命令 ls -l 查看就还是 root,用以下命令将其改为普通用户即可。

    查看所属用户。这里 ubuntu 是我的普通用户。
    ls -l
    ![[Pasted image 20221205235400.png]]

    如果是 root 组,用如下命令即可变更为普通用户组。

    chown 用户名 文件名 -R
    chgrp 用户名 文件名 -R
    

    -R 表示递归目录下所有文件

  2. 如果普通用户在使用过程中遇到 command not found 或者找不到 PATH 的情况,在 /home/your_new_user 目录下的配置文件 .bashrc 中添加如下一句命令,让其自行加载全局配置文件即可。
    source /etc/profile

  3. 最后再提一次,一定不要安装在 /home/user//root/ 目录下面去。。。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值