apt-get存储库如何托管/托管/构建?
作者:互联网
无论我是在某个地方设置新的VPS还是在我坐在的旧计算机上安装Ubuntu ISO,当我想要获得自己喜欢的编程环境设置时,我所要做的就是键入
sudo apt-get install foo baz bar
然后我的计算机-做某事-最后,我通常会拥有所需要的软件.
这是如何运作的? apt-get下载预编译的二进制文件吗?还是正在下载源代码并为我构建东西?还是安装了其他包装的东西?还是全部三个?无论是谁来构建这些二进制文件,管理这些构建配方或将这些软件包放在一起?无论apt-get在做什么-它发送给我的比特是从哪里提供的?
我隐约知道我的作曲家/ VPS将有一个apt-get存储库列表,它会检查软件包.这些提要是否只是托管在HTTP服务器上某个指向问题的地方?或者是其他东西?谁托管这些提要?
当我使用composer之类的软件包管理器(对于PHP)时,我知道packagist.org composer存储库中有一个软件包主列表,用户可以指定其他软件包存储库,并且该存储库仅指向版本控制系统,包的源文件已存储.我想对apt-get的工作原理有类似的高级了解.
我意识到这是一个不可能解决的广泛问题-指向FM中我可以读到的有关如何将所有内容捆绑在一起的指针,这对我来说是一个完全可以接受的答案. (尽管如果您对linux软件包管理充满热情,请不要让它阻止您回答)
解决方法:
我的经验基于Debian和Ubuntu:
apt-get从哪里获得软件?
通过为系统选择像Ubuntu 16.04这样的发行版,您基本上是在安装配置了软件包存储库的引导映像. apt-get从这些存储库获取用于安装/更新的软件.系统的存储库必须在文件/etc/apt/sources.list中配置.
例如,我在德国供应商的VPS上安装Ubuntu 16.04包含以下几行,这些行指向其自己的镜像软件包存储库:
deb http://mirror.hetzner.de/ubuntu/packages xenial main restricted universe multiverse
deb http://mirror.hetzner.de/ubuntu/packages xenial-backports main restricted universe multiverse
deb http://mirror.hetzner.de/ubuntu/packages xenial-updates main restricted universe multiverse
deb http://mirror.hetzner.de/ubuntu/security xenial-security main restricted universe multiverse
(我省略了一些)
由大学,公司,托管服务提供商等运营的许多镜像存储库.
存储库中有什么?
每个存储库都有一个或多个索引文件,其中包含所有软件包的列表.因此,apt-get可以确定哪些软件包可用并解决依赖关系. apt-get从这些存储库中安装/更新软件,方法是通过ftp或http下载软件包,并使用dpkg程序进行安装.
所有基于Debian的发行版(如Ubuntu)使用的软件包格式是.deb.它包含二进制文件,因此发行版支持的每种体系结构都有不同的.deb文件,例如“ amd64”或“ arm64”,它们显然必须与您的系统体系结构匹配.您还可以获取.deb软件包,其中包含您自己构建软件的程序源(/etc/apt/sources.list中以deb-src开头的行).
谁制作包裹?
每个包裹由一个或多个包裹维护者维护.这些将采用原始软件的发行版(在这种情况下称为“上游”),并将它们打包为.deb并将其打包到软件包存储库中.存在用于包装的整个工具链,该工具链基本上是基于包装配方的自动化测试/构建/存档.
标签:package,apt-get,linux 来源: https://codeday.me/bug/20191111/2017650.html