天天看点

Ubuntu管理软件的多个版本update-alternatives(维护系统命令链接符)

update-alternatives(维护系统命令链接符)

可用来管理多版本的JDK,python等

管理多版本的Python和pip

一、分别安装Python2和python3,pip和pip3

[email protected]:~$ sudo apt-get install python
[sudo] sparrow 的密码:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
python 已经是最新版 (2.7.14-2ubuntu1)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 198 个软件包未被升级。
[email protected]:~$ sudo apt-get install python3
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
python3 已经是最新版 (3.6.3-0ubuntu2)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 198 个软件包未被升级。
[email protected]:~$ sudo apt-get install python-pip
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
python-pip 已经是最新版 (9.0.1-2)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 198 个软件包未被升级。
[email protected]:~$ sudo apt-get install python3-pip
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
python3-pip 已经是最新版 (9.0.1-2)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 198 个软件包未被升级。
           

二、管理多版本的Python

  1. 找到python命令的位置
[email protected]:~$ which python
/usr/bin/python
[email protected]:~$ ls /usr/bin/python
/usr/bin/python
[email protected]:~$ ls /usr/bin/python*
/usr/bin/python     /usr/bin/python2.7-config  /usr/bin/python3.6         /usr/bin/python3.6m-config  /usr/bin/python3m-config
/usr/bin/python2    /usr/bin/python2-config    /usr/bin/python3.6-config  /usr/bin/python3-config     /usr/bin/python-config
/usr/bin/python2.7  /usr/bin/python3           /usr/bin/python3.6m        /usr/bin/python3m
[email protected]:~$
           

可以看到,/usr/bin下有Python2和Python3

2. 维护系统命令链接符

[email protected]:~$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 1000
[email protected]:~$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1500
[email protected]:~$ sudo update-alternatives --list python
/usr/bin/python2
/usr/bin/python3
[email protected]:~$ sudo update-alternatives --config python
有 2 个候选项可用于替换 python (提供 /usr/bin/python)。

  选择       路径            优先级  状态
------------------------------------------------------------
  0            /usr/bin/python3   1500      自动模式
  1            /usr/bin/python2   1000      手动模式
* 2            /usr/bin/python3   1500      手动模式

要维持当前值[*]请按<回车键>,或者键入选择的编号:
[email protected]:~$
           
  • update-alternatives --install <命令地址> <命令名称(自己随意指定)> <需要链接的命令地址> <优先级,在auto模式下,数字较大的选项有较高的优先级>
  • update-alternatives --list python 查看已经维护起来的Python的列表
  • update-alternatives --config python 配置Python

二、管理多版本的pip

[email protected]:~$ which pip
/usr/bin/pip
[email protected]:~$ ls /usr/bin/pip*
/usr/bin/pip  /usr/bin/pip2  /usr/bin/pip3
[email protected]:~$ sudo vim /usr/bin/pip2
#!/usr/bin/python2
# GENERATED BY DEBIAN

import sys

# Run the main entry point, similarly to how setuptools does it, but because
# we didn't install the actual entry point from setup.py, don't use the
# pkg_resources API.
from pip import main
if __name__ == '__main__':
    sys.exit(main())
~
~
~

[email protected]:~$ sudo vim /usr/bin/pip3
[email protected]:~$
           

类似上面的操作,但是要注意修改 /usr/bin/pip2 ,因为文件默认使用**/usr/bin/python**,要修改为**/usr/bin/python2**,pip3 中也看下是不是也需要修改

注:配置过程中如果出现问题
  1. 删除 /usr/bin/pip
  2. 新建软连接 /usr/bin/pip 指向 /etc/alternatives/pip
  3. 然后按照上面的步骤将多版本的pip管理起来就行了

我的个人博客,有空来坐坐

继续阅读