每个电脑设备都使用某种形式的软件来执行其预定任务。在软件开发的早期,对产品进行了严格的bug和其他缺陷测试。在过去的十多年里,软件通过互联网发布,目的是通过应用新版本的软件来修复任何错误。在某些情况下,每个应用程序都有自己的更新程序。在其他情况下,则由用户自己决定如何获得和升级软件。

Linux早期采用了维护集中位置的做法,用户可以在这里查找和安装软件。在这篇文章中,我将讨论linux上软件安装的历史,以及现代操作系统是如何与无休止的洪流保持同步的。

在软件包管理器之前,Linux上的软件是如何安装的?

从历史上看,软件要么是通过FTP提供的,要么是通过邮件列表提供的(最终这个发行版将包括基本网站)。只有几个小文件包含了创建二进制文件的指令(通常在tarfile中)。您将解压缩文件,读取自述文件,只要您有gcc或其他形式的C编译器,您通常会运行一个./configure带有一些属性列表的脚本,例如将文件粘贴到库文件、创建新二进制文件的位置等。此外,configure进程将检查您的系统是否存在应用程序依赖关系。如果缺少任何主要需求,配置脚本将退出,在满足所有依赖关系之前无法继续安装。如果成功完成配置脚本,则Makefile都会被创造出来。

什么是包裹?

软件包是为了对抗这种复杂性而发明的。为了便于移植和存储,包将多个数据文件一起收集到一个存档文件中,或者简单地压缩文件以减少存储空间。包中包含的二进制文件是根据开发人员选择的正常默认值预编译的。包还包含元数据,如软件名称、用途说明、版本号和软件正常运行所需的依赖项列表。

虽然包本身并不直接管理依赖项,但它们在Linux软件管理方面向前迈进了一大步。

什么是软件存储库?

几年前,在智能手机泛滥之前,对于许多用户来说,如果他们没有参与Linux生态系统的话,建立一个软件存储库的想法是很难理解的。到目前为止,大多数Windows用户似乎仍然需要打开网页浏览器来搜索和安装新的软件。然而,那些拥有智能手机的人已经习惯了软件“商店”的想法。智能手机用户获取软件的方式和软件包管理器的工作方式并无不同。虽然已经有几次尝试为软件库创建一个有吸引力的UI,但绝大多数Linux用户仍然使用命令行来安装软件包。软件存储库是系统配置要使用的任何存储库的所有可用软件的集中列表。

下面是一些最著名的包管理器的简要概述:

基于rpm的包管理器

更新基于RPM的系统,特别是那些基于RedHat技术的系统,有着非常有趣和详细的历史。实际上,当前版本的百胜(用于企业发行版)和DNF(对于社区)组合了几个开源项目,以提供它们当前的功能。

最初,RedHat使用了一个名为rpm(红帽包管理器),至今仍在使用。但是,它的主要用途是安装RPM,这是您在本地拥有的,而不是搜索软件存储库。包管理器名为up2date创建的目的是通知用户包的更新,并使他们能够搜索远程存储库并轻松安装依赖项。在达到目的同时,一些社区成员认为up2date有一些明显的缺点。

目前对百胜的咒语来自几种不同的社区努力。YellowdogUpdater(YUP)是由Terra软件解决方案公司的人员在1999-2001年开发的,作为图形化安装程序的后端引擎。黄狗Linux。杜克大学喜欢是的想法,并决定改进它。他们创造了改良的黄狗更新器(Yum)它最终被改造成帮助管理大学的红帽Linux系统。百胜越来越受欢迎,据估计,到2005年,它将被Linux市场的一半以上所使用。今天,几乎所有使用RPM的Linux发行版都使用YUM进行包管理(除了一些显著的例外)。

基于debian的包管理器

Debian是目前维护最古老的Linux发行版之一,它的系统非常类似于基于RPM的系统。他们用.deb包,可以由名为dpkg. dpkg非常类似于rpm因此,它是为管理本地可用的包而设计的。它不进行依赖解析(尽管它进行依赖检查),也没有与远程存储库交互的可靠方法。为了提高用户体验和易用性,debian项目委托了一个名为神灵。这个代号最终被放弃,改为高级包装工具(APT).

基于ARCH的软件包管理器

ARCH Linux使用名为帕克曼。不像.deb或.rpm文件,Pacman使用了更传统的tarball和LZMA 2压缩(.tar.xz)这使得Arch linux包比其他形式的压缩存档要小得多(例如gzip)最初是在2002年发布的,Pacman已经得到了稳步的迭代和改进。Pacman的主要优点之一是它支持拱筑体系,一种从源构建包的系统。构建系统包含一个名为PKGBUILD的文件,该文件包含元数据(例如版本号、修订、依赖项等)以及一个shell脚本,其中包含编译符合Arch Linux要求的包所需的标志。然后将产生的二进制文件打包到上述文件中。.tar.xz文件供帕克曼使用。

这个系统导致创建了ARCH用户库(Aur)是一个社区驱动的存储库,包含PKGBUILD文件和支持补丁或脚本。这使得几乎无穷无尽的软件可以在Arch中获得。这个系统的明显优点是,如果用户希望向公众提供软件,他们不需要经过官方渠道才能在主要存储库中接受软件。缺点是它依赖社区管理,类似于码头枢纽,CANTEN的快照包,或其他类似的机制。有许多特定于Aur的包管理器,它们可以用于从Aur中的PKGBUILD文件中下载、编译和安装。

结语

当然,本文只触及包管理器所能做的事情的表面。还有很多其他的包管理器,我无法在这个空间中介绍。一些发行版,比如Ubuntu或ElementOS,已经竭尽全力提供了一种图形化的包管理方法。最后推荐《Linux就该这么学》这本书,非常适合小白入门~

Linux系统-----包管理器的演变的更多相关文章

  1. ARCH Linux pacman 包管理器出错总结

    最在使用ARCH的时候使用命令: sudo pacman -S Ruby 终端报错: error: could not open file /var/lib/pacman/sync/apricity- ...

  2. 在ubtuntu中使用包管理器 linux-brew

    用惯了mac的程序员回到linux开发平台总觉得有点不适应,这是因为linux的界面没有mac那么精美,而且linux的包管理器没有mac上面的homebrew那么强大.mac程序员遇到库的依赖问题时 ...

  3. [转]给Linux系统管理员准备的Nmap命令的29个实用范例+ tsysv 系统服务器管理器

    原文链接:http://os.51cto.com/art/201401/428152.htm Nmap即网络映射器对Linux系统/网络管理员来说是一个开源且非常通用的工具.Nmap用于在远程机器上探 ...

  4. Linux包管理器

    按Linux系统分类 Redhat系列:Redhat(本身就是Centos).Centos.Fedora等,采用Dpkg包管理器 Debian系列:Debian.Ubuntu等,使用RPM包管理器 R ...

  5. Linux新手的最佳包管理器

    一个 Linux 新用户应该知道他或她的进步源自于对 Linux 发行版的使用,而 Linux 发行版有好几种,并以不同的方式管理软件包. 在 Linux开发 中,包管理器非常重要,知道如何使用多种包 ...

  6. 把玩Alpine linux(二):APK包管理器

    导读 Alpine Linux非常精简,开机内存占用也在二三十兆大,没有拆箱即用,就需要我们自己去做一些了解和配置 Alpine Linux的优劣 优势 Alpine Linux的Docker镜像特点 ...

  7. Arch Linux 独特的包管理器相关名词解释及用法对照

    https://wiki.archlinux.org/index.php/PacmanPacman包管理器是Arch Linux的主要特色之一.它结合了简单的二进制包格式和易于使用的构建系统.pacm ...

  8. 在linux中使用包管理器安装node.js

    网上文章中,在linux下安装node.js都是使用源码编译,其实node的github上已经提供了各个系统下使用各自的包管理器(package manager)安装node.js的方法. 1. 在U ...

  9. linux 各种发行版及包管理器的关系

    linux 各种发行版及包管理器的关系 Linux发行版列表 基于Kpkg(Debian 系) Debian GNU / Linux 及其派生发行版使用deb软件包格式,并使用dpkg及其前端作为包管 ...

随机推荐

  1. 珠心算测验(0)<P2014_1>

    珠心算测验 (count.cpp/c/pas) 问题描述]  珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术.珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得 ...

  2. 重新理解《务实创业》---HHR计划--以太一堂第三课

    第一节:开始学习 1,面对创业和融资,我们应该如何从底层,理解他们的本质呢?(实事求是) 2,假设你现在要出来融资,通常你需要告诉投资人三件事:我的市场空间很大,我的用户需求很疼,我的商业模式能跑通. ...

  3. C#多态学习总结

    面向对象编程三大特点  封装 继承 多态.今天我把自己学习多态的过程进行总结 多态 就是 同一个方法在不同情况下,会表选不同的效果(多个形态).在代码上表现就是 同一个父类对象 赋予不同的子类对象 就 ...

  4. 使用阿里云服务器配置frp实现Windows系统RDP内网穿透

    1.frp服务器采用阿里云ecs的centos7.5系统,客户端是台windows10的系统,做一个RDP服务的内网穿透用. 2.首先下载frp到服务器(链接:https://github.com/f ...

  5. [蓝桥杯2015决赛]穿越雷区(BFS求最短路)

    题目描述 X星的坦克战车很奇怪,它必须交替地穿越正能量辐射区和负能量辐射区才能保持正常运转,否则将报废.某坦克需要从A区到B区去(A,B区本身是安全区,没有正能量或负能量特征),怎样走才能路径最短?已 ...

  6. Java--输入与输入

    输入 java.util.Scanner java.lang.System java.io.Console ``` Scanner in = new Scanner(System.in); // 新建 ...

  7. loss训练技巧

    一,train loss与test loss结果分析4666train loss 不断下降,test loss不断下降,说明网络仍在学习; train loss 不断下降,test loss趋于不变, ...

  8. redis 之redis发布订阅

    Redis 通过 PUBLISH . SUBSCRIBE 等命令实现了订阅与发布模式. 一个Publisher,多个Subscriber模型 如下图所示,可以作为消息队列或者消息通道 主要应用: 一个 ...

  9. uniGUI之uniColorButton(21)

    uniColorButton相当于VCL的ColorDialog1 若Palette 为空,则为系统自带颜色.

  10. ssh_crm项目

    1.代码 https://pan.baidu.com/s/1hudAhA8  密码:c7xu 2.总结 https://pan.baidu.com/s/1o9ArFf0 密码:hteu 3.资料 ht ...