从源代码构建 python 而不为二进制文件创建符号链接
Build python from source without creating symlink for binary
是否有 Python 的编译选项会阻止为新创建的二进制文件创建 python3
symlink?
我正在尝试在单个系统上构建和安装 python 的多个版本,以便与 CI 系统一起使用 运行 测试使用多个 python 版本.具体来说 Python-3.6.6、Python-3.7.4 和 Python-3.8.0.
构建和安装过程如下(假设源已经下载并解压到/usr/src/python
):
cd /usr/src/python
./configure \
--prefix=/usr/ \
--build=x86_64-linux-gnu \
--enable-loadable-sqlite-extensions \
--enable-shared \
--with-system-expat \
--with-system-ffi \
--without-ensurepip
make -j "$(nproc)"
make install
完成上述过程后,我得到了构建的二进制文件(例如,Python-3.7.8 的 /usr/bin/python3.7
)以及来自 /usr/bin/python3
到那个二进制文件。无论我最后安装哪个 python 版本,都会将 symlink 覆盖为 link 自身,而不管它之前 link 编辑的是什么:
我的问题是:是否有一个标志可以传递给 configure
脚本或使它完全禁止创建此 symlink?我可以为我想成为“默认”python3 版本的二进制文件创建 symlink 作为我自己的设置过程的一部分,因为我不想依赖安装顺序来确定我的默认设置版本。
我查看了 python 开发人员文档,但未能找到完整的构建参数列表和有关它们的功能的文档。这也不是我的专业领域,所以我无法在源代码中找到我要找的东西(但如果有人能指出我将不胜感激)。
make altinstall
正是为此而生:
make install
can overwrite or masquerade the python3 binary. make altinstall
is therefore recommended instead of make install
since it
only installs exec_prefix/bin/pythonversion
.
是否有 Python 的编译选项会阻止为新创建的二进制文件创建 python3
symlink?
我正在尝试在单个系统上构建和安装 python 的多个版本,以便与 CI 系统一起使用 运行 测试使用多个 python 版本.具体来说 Python-3.6.6、Python-3.7.4 和 Python-3.8.0.
构建和安装过程如下(假设源已经下载并解压到/usr/src/python
):
cd /usr/src/python
./configure \
--prefix=/usr/ \
--build=x86_64-linux-gnu \
--enable-loadable-sqlite-extensions \
--enable-shared \
--with-system-expat \
--with-system-ffi \
--without-ensurepip
make -j "$(nproc)"
make install
完成上述过程后,我得到了构建的二进制文件(例如,Python-3.7.8 的 /usr/bin/python3.7
)以及来自 /usr/bin/python3
到那个二进制文件。无论我最后安装哪个 python 版本,都会将 symlink 覆盖为 link 自身,而不管它之前 link 编辑的是什么:
我的问题是:是否有一个标志可以传递给 configure
脚本或使它完全禁止创建此 symlink?我可以为我想成为“默认”python3 版本的二进制文件创建 symlink 作为我自己的设置过程的一部分,因为我不想依赖安装顺序来确定我的默认设置版本。
我查看了 python 开发人员文档,但未能找到完整的构建参数列表和有关它们的功能的文档。这也不是我的专业领域,所以我无法在源代码中找到我要找的东西(但如果有人能指出我将不胜感激)。
make altinstall
正是为此而生:
make install
can overwrite or masquerade the python3 binary.make altinstall
is therefore recommended instead ofmake install
since it only installsexec_prefix/bin/pythonversion
.