@ Author: lebhoryi@gmail.com
@ Date: 2021/10/28
0x01 背景故事
Ubuntu 20.04 系统,默认存在 Python38.
需要在系统中安装另一个版本的 Python:Python35。
已经存在 Python3 的情况下,安装另外一个 Python3.x 需要通过源码安装,(官方建议)
下载链接:https://www.python.org/downloads/release/python-354/
源码安装步骤:
# 源码安装步骤
tar -xzvf Python-x.x.x.tgz
cd Python-x.x.x
./configure
make -j # 可能需要管理员权限
make install
装了Python之后,怎么卸载?
0x02 要解决的问题
之前已经安装了 Python37,想要让系统“干净”一点,Python37 用不到,Python35 和 Python38 才是我想要的。
就遇到了一个问题:
“如何卸载源码安装的 Python37”?
网上有教程:
在安装的时候,指定路径,然后卸载的时候删除即可
./configure --prefix <PATH>
“linux, configure --prefix=/”的作用是:编译的时候用来指定程序存放路径 。
1、不指定prefix,可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc。其它的资源文件放在/usr /local/share。
2、指定prefix,直接删掉一个文件夹就够了。
那么我想要删除的话,需要重新安装一遍,然后删除,有没有更简单的方法?
有的,就是 checkinstall
,Debian 系的都支持用 checkinstall 将源码打包成 deb
0x03 将源码打包成 deb
该方法适用于一切 debian 系
使用 auto-apt 和 checkinstall
sudo apt install checkinstall auto-apt
# 如果找不到 auto-apt
wget https://mirrors.edge.kernel.org/ubuntu/pool/universe/a/auto-apt/auto-apt_0.3.24_amd64.deb
sudo dpkg -i auto-apt_0.3.24_amd64.deb
sudo apt install -f
#在源码目录中
auto-apt run ./configure
make
checkinstall
# 这样会生成一个deb包,卸载和重新安装就非常方便了
#完全卸载 (packagename具体的名字在checkintall完成之后会有提示)
sudo dpkg -r packagename
#用生成的deb包重新安装
sudo dpkg -i ***.deb
# 列出包中安装的文件位置
sudo dpkg -L packagename
# 检查是否安装成功
sudo dpkg -l | grep packagename
# 同上
sudo apt list --installed | grep packagename
0x04 其他
如何更换系统中的 python 版本?
# 查看当前的python路径
whereis python
# 查看python软连接指向
# 一般是 /usr/bin/local/python
ll /usr/bin/local/python
# lrwxrwxrwx 1 root root 24 Oct 28 21:48 /usr/local/bin/python -> /usr/local/bin/python3.8
方法一:通过重定向软连接
# python 3.8
ln -sf /usr/local/bin/python3.8 /usr/local/bin/python
# python 3.5
ln -sf /usr/local/bin/python3.5 /usr/local/bin/python
# 查看python版本
python --version
方法二:通过 update-alternative
update-alternatives --install /usr/local/bin/python python /usr/local/bin/python3.8 2
update-alternatives --install /usr/local/bin/python python /usr/local/bin/python2.7 1
update-alternatives --list pythonxxxx
update-alternatives --config python
参考链接: