Ubuntu 包管理器学习
参考资料 Linux 黑话解释:什么是包管理器?它是如何工作的? 参考资料 怎么理解ubuntu中的软件包管理器apt和dpkg
什么是包管理器?
先来说明一下没有包管理器是怎么安装软件的,要想在 Linux 系统中安装软件只能采取源码包的方式安装,所以需要用户自行编译源码并解决软件间的依赖关系,而且升级之类的后续操作也非常困难。
为了摆脱这种复杂性,Linux 发行版创建了自己的打包格式,为终端用户提供随时可用的二进制文件(预编译软件),以便安装软件,同时提供一些元数据(版本号、描述)和依赖关系。
几乎所有的 Linux 发行版都有 “软件仓库”,它基本上是软件包的集合。可以 有不止一个软件库,软件库包含不同种类的软件包。
软件仓库也有元数据文件,其中包含了软件包的信息,如软件包的名称、版本号、软件包的描述和软件仓库名称等,系统上的包管理器就是与这个元数据进行交互来处理这些包管理的。可以使用 apt show 命令查看
apt show nginx
包管理器会在系统上创建了一个元数据的本地缓存。当运行包管理器的更新选项(例如 apt update)时,它会通过引用仓库中的元数据来更新本地元数据缓存。
当运行软件包管理器的安装命令(例如 apt install package_name)时,软件包管理器会引用这个缓存。如果它在缓存中找到了包的信息,它就会使用互联网连接到相应的仓库,并在系统上安装下载的包。
一个包可能有依赖关系。意思是说,它可能需要安装其他软件包,软件包管理器通常会自动处理这些依赖关系,并将其与正在安装的软件包一起自动安装。

软件包的分类
参考资料 Linux下软件包的分类及deb、rpm、tar.gz的区别
按类型分类
Linux 应用程序的软件包按内容类别可分为两类:
1、可执行文件(编译后的二进制软件包)
解开包后就可以直接运行的。在 Windows 中所有的软件包都是这种类型。安装完这个程序后,你就可以使用,但你看不到源程序。而且下载时要注意这个软件是否是你所使用的平台,否则将无法正常安装。
- 优点:使用简单,只需要几个命令就可以实现包的安装、升级、查询、卸载;安装速度快;
- 缺点:不能看源代码;功能选择不如源代码灵活;依赖性;
2、源程序(源码包)
解开包后,你还需要使用编译器将其编译成为可执行文件。这在 Windows 系统中是几乎没有的,因为 Windows 的思想是不开放源程序的。
- 优点:开源;可以自由选择所需功能;可看源代码;卸载方便(直接删除安装位置);
- 缺点:安装步骤过多;编译时间过长;
Linux 下软件包的格式分类
Linux 下的软件安装包主要有 rpm、deb、tar.gz 三种格式,想了解三种软件包的区别,我们先来看看 Linux 软件扩展名,通过扩展名可以了解软件格式,进而了解软件安装。
软件后缀为 .rpm 最初是 Red Hat Linux 提供的一种包封装格式,现在许多 Linux 发行版本都使用;
后缀为 .deb 是 Debain Linux 提供的一种包封装格式;
后缀为 .tar.gz、tar.Z、tar.bz2 或 .tgz 是使用 Unix 系统打包工具 tar 打包的;
后缀为 .bin 的一般是一些商业软件。
rpm 格式软件包
RPM 全称是 Red Hat Package Manager(Red Hat 包管理器),是由红帽公司最先发布的一种用来打包软件的的文件格式,他是一种特定的用来安装,卸载软件等操作的专门格式,它里面打包的内容必定是一个可以使用的具体软件。
RPM 本质上就是一个包,包含可以立即在特定机器体系结构上安装和运行的 Linux 软件。在红帽 LINUX、SUSE、Fedora 可以直接进行安装,但在 Ubuntu 中却无法识别。
deb 格式软件包
deb 是 Debian Linux 提供的一个包管理器,它与 RPM 十分类似。但由于 RPM 出现得早,并且应用广泛,所以在各种版本的 Linux 中都常见到,而 Debian 的包管理器 dpkg 只出现在 Debian Linux 中。它的优点是不用被严格的依赖性检查所困扰,缺点是只在 Debian Linux 发行版中才能见到这个包管理工具。
在 Ubuntu 系统中双击 deb 包就可以进入自动安装进程。