@
AllenHua #2 RedHat 系和 Debian 系确实是两个非常庞大的发行版族系,但其他族系也是有不少的,而且很多有自己的包管理方案,发行版族系部分可以参考维基百科上的这个图,你可以发现 Arch Linux 是自成一系的:
https://upload.wikimedia.org/wikipedia/commons/b/b5/Linux_Distribution_Timeline_21_10_2021.svg你找的图里的信息其实并不严谨,这里面杂糅了好几种概念(可能我讲的也不是完全严谨):
包文件格式:.rpm 、.deb 、.pkg.tar.xz 这些;
包管理器:RPM(没错,跟包文件格式重名)、APT 、pacman ;
包安装器:dpkg ;
包管理器指令:yum/dnf 、apt-get/apt/aptitude 、pacman/makepkg/yay 。
bash 是 Shell ,不属于包管理器,仅仅是用来执行命令和脚本,比如简单把程序文件复制到系统目录,并进行简单配置,这个操作通常是不受包管理器控制的。
举个例子,比如对于 Debian 发行版来说,aptitude 工具会调用 APT 包管理器去软件源检索软件包和依赖,并下载下来,再使用 dpkg 安装到系统上,同时 APT 会对软件进行初始配置( configure )。
又比如可以在 Arch Linux 发行版上,使用 yay 工具调用 pacman 包管理器在软件源检索软件包和依赖并下载下来,或使用 yay 工具来下载 PKGBUILD 文件再使用 makepkg 来编译和打包,最终都使用 pacman 包管理器把包文件解包、安装到系统上并进行初始化配置。
在没有包管理器的发行版上,或者自己要安装的软件不支持使用包管理器安装的方式,你可以手动使用 make 等指令来编译软件文件,再用 cp 等指令把已经编译好软件包的文件复制到相应的系统目录中,并使用 vi 等编辑器来创建初始化配置文件;这个重复性过程也可以写成 Shell 脚本文件(
如.sh 文件)自动化完成。