Ubuntu下非标准包管理器安装及系统预装包管理器位置相关技术问询
嗨,我来帮你理清这些问题,刚好之前在虚拟机上折腾过类似的实验,分享下实际操作的经验:
一、Ubuntu预装包管理器(apt)的位置及本质
首先明确:apt不是内核模块,它是运行在用户空间的一套软件包管理工具链,属于用户态程序——简单说就是普通的应用程序,和你平时用的终端浏览器、编辑器是一类,只是专门负责软件的安装、卸载、更新而已。
要查看它的具体位置,直接在终端敲下面的命令:
which apt
通常会返回 /usr/bin/apt,这就是apt主程序的可执行文件位置。如果想查看更多相关的配套文件(比如配置、手册),可以用:
whereis apt
输出一般类似这样:
apt: /usr/bin/apt /usr/lib/apt /etc/apt /usr/share/man/man8/apt.8.gz
这里几个关键路径的作用:
/usr/bin/apt:apt的主执行文件,你在终端敲apt时调用的就是它/etc/apt/:apt的核心配置目录,里面的sources.list是软件源配置文件,apt.conf.d里是各种自定义规则/usr/lib/apt:apt运行依赖的辅助库文件
另外,apt其实是个更友好的前端工具,底层真正负责包安装、卸载操作的是dpkg,它的位置是/usr/bin/dpkg,你可以理解成apt帮你把dpkg的复杂操作简化成了更易读的命令。
二、安装其他包管理器并与apt共存(以dnf为例)
既然是在虚拟机做实验,完全可以放心折腾。下面以安装RPM系的包管理器dnf为例,步骤非常简单,而且能和apt完美共存:
- 先更新一下系统的apt源和已安装包,确保环境干净:
sudo apt update && sudo apt upgrade -y - 直接通过apt安装dnf(Ubuntu官方软件仓库里已经收录了这个包):
sudo apt install dnf -y - 安装完成后,直接在终端输入
dnf就能使用了,和apt的调用方式完全一样。比如你可以用apt install xxx安装deb格式的包,用dnf install yyy安装rpm格式的包——不过要注意,因为Ubuntu本身是deb系系统,rpm包可能会有依赖兼容问题,实验时尽量选简单的小软件测试,避免搞乱系统。
如果你想安装其他小众包管理器(比如Arch系的pacman),因为Ubuntu官方仓库没有收录,可能需要添加第三方PPA或者从源码编译,操作会复杂一些,建议先从dnf这种官方支持的开始上手。
额外提醒
不同包管理器管理的软件包格式不同(apt管deb,dnf管rpm),不要用不同包管理器安装同一软件的不同格式版本,否则很容易导致系统文件冲突,虚拟机里折腾没问题,但物理机千万别这么干。
所有包管理器安装后,都会把可执行文件放到/usr/bin/或者/usr/local/bin/这类系统默认的PATH路径下,所以你在终端直接敲命令就能调用,和apt的使用体验一致。
备注:内容来源于stack exchange,提问作者Kumail Haider

