什么是包管理器

作者:罗上文,微信:Loken1,公众号:FFmpeg弦外之音

现代计算机世界里面有很多的包管理器,例如 Ubuntu 的 apt 跟 dpkg, Centos 的 yum,Fedora 的 dnf。

甚至,Windows应用商店,Apple Store,安卓应用市场,应用宝,都是包管理器。


这些包管理器,在云端都有一个庞大的软件仓库。仓库里面有支持各种 CPU 架构的软件。

仓库里面的软件都是可运行文件,静态库或者动态库,这些都是二进制的字节码,没有源代码。二进制文件,只有两个重点。

1,里面的字节码是哪种CPU指令集的。

2,文件格式是哪种,ELF 还是 PE 还是其他。

这里面没有涉及到 编译链接的东西,因为软件仓库的东西是别人已经编译链接好的了。

通常一个完善的软件,会提供多个版本来支持不同的 CPU 指令集,例如 ARM 指令集的发一个版本,x86 指令集的发一个版本。

而文件格式是 操作系统如何 加载 (loader) 这个文件定义出来的,例如 Windows 的 exe 文件是 PE格式,Linux 的可执行文件是 ELF 格式。


而包管理器干的活,就是判断你当前的环境是什么 CPU 指令集的,当前是什么操作系统,下载相应的压缩包,然后解压放到本地的各个默认目录,例如 /etc ,/usr/lib ,/usr/bin,等等。

这与我们在 windows 下一个 exe 然后指定他的安装目录不同,包管理器是有默认目录的。所以包管理器是一种统一管理软件的方式。


由于云端仓库有非常多的软件,通常比较好的平台都会有分析软件,分析出这些安装包有无危害代码。

参考资料:

1,《怎么理解ubuntu中的软件包管理器apt和dpkg》

2,《Linux 包管理基础:apt、yum、dnf 和 pkg》



感谢 NETINT(镕铭微电子) 赞助《FFmpeg原理》免费版一书的服务器费用,下面是 VPU 产品介绍

版权所属 xianwanzhiyin.net 罗上文 2024 all right reserved,powered by Gitbook该文件修订时间: 2022-06-03 15:36:02

results matching ""

    No results matching ""