使用 update-alternatives 将 python3 切换到旧版本有问题吗?

使用 update-alternatives 将 python3 切换到旧版本有问题吗?

我想知道这样做是否会破坏整个系统,或者这是否是实际完成的事情。我们有一台正在尝试升级的服务器,我们的许多工作流程都使用命令“python3”。现在这意味着python3.4。

我们想升级这个系统并安装最新的 python,但目前还没有用 python3.7 测试过所有内容。我的计划是这样做:

  1. 安装python3.7以及3.4。
  2. 使用 update-alternatives 将 python3 切换为指向 3.4 而不是 3.7。
  3. 让所有内容继续使用 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/binPATH

相关内容