![使用 update-alternatives 将 python3 切换到旧版本有问题吗?](https://linux22.com/image/740353/%E4%BD%BF%E7%94%A8%20update-alternatives%20%E5%B0%86%20python3%20%E5%88%87%E6%8D%A2%E5%88%B0%E6%97%A7%E7%89%88%E6%9C%AC%E6%9C%89%E9%97%AE%E9%A2%98%E5%90%97%EF%BC%9F.png)
我想知道这样做是否会破坏整个系统,或者这是否是实际完成的事情。我们有一台正在尝试升级的服务器,我们的许多工作流程都使用命令“python3”。现在这意味着python3.4。
我们想升级这个系统并安装最新的 python,但目前还没有用 python3.7 测试过所有内容。我的计划是这样做:
- 安装python3.7以及3.4。
- 使用 update-alternatives 将 python3 切换为指向 3.4 而不是 3.7。
- 让所有内容继续使用 python3,除了在 3.7 下专门测试的任务外,这些任务将切换为明确调用 3.7。
推荐这样做吗?我以前用过其他方法做这种事情,但是 Python 中我注意到了一些奇怪的现象,我想确保推荐这样做。
答案1
(您没有提到您正在运行哪个 Ubuntu 版本,我的示例来自 18.04 LTS)
update-alternatives
仅适用于使用 Debian 替代系统的软件包。这些软件包update-alternatives
在其维护者脚本中调用该命令,并具有指向目录的符号链接/etc/alternatives
。
查看 python3,我们发现它不是指向以下内容的链接/etc/alternatives
:
$ ls -l /usr/bin/python3
lrwxrwxrwx 1 root root 9 Oct 25 2018 /usr/bin/python3 -> python3.6
该符号链接由以下包安装python-minimal
:
dpkg -S /usr/bin/python3
python3-minimal: /usr/bin/python3
如果您修改它,那么如果python-minimal
软件包升级(例如通过安全更新),它将恢复您的更改并将符号链接恢复到原来的状态。
如果您希望脚本使用python3
或#!/usr/bin/env python3
调用不同版本的 Python,则可以添加/usr/local/bin/python3
指向您首选版本的符号链接。由于默认的/usr/local/bin
前面有,所以这应该可以满足您的要求。/usr/bin
PATH