轻松管理软件:深入了解Linux的包管理工具 (linux 包管理工具)

在使用Linux操作系统时,软件的安装和升级是一项必要的任务。而Linux的包管理工具则是使用Linux操作系统的用户们最常用的工具之一。

Linux中有许多包管理工具,本文介绍的是基于Debian的APT(Advanced Package Tool)和基于Red Hat的YUM(Yellowdog Updater, Modified)。

APT:Debian的包管理工具

APT是Debian Linux操作系统中流行的包管理工具。除Debian外,还可以在许多基于Debian的Linux发行版中使用APT。

APT使用.deb作为软件包的文件格式。.deb文件保存了需要安装的软件以及软件的依赖关系。在使用APT进行安装时,APT会根据软件的依赖关系自动下载并安装所有需要的软件包。

APT的常用命令如下:

更新软件包列表:

sudo apt-get update

更新所有软件包:

sudo apt-get upgrade

安装软件包:

sudo apt-get install package_name

删除软件包:

sudo apt-get remove package_name

如果您在使用APT时遇到问题,可以尝试使用APT的高级版Synaptic。它提供了一个图形用户界面,使软件包管理更加简单易用。

YUM:Red Hat的包管理工具

YUM是Red Hat Linux操作系统的包管理工具。除Red Hat外,许多基于Red Hat的Linux发行版中也可以使用YUM。

YUM使用.rpm作为软件包的文件格式。与APT一样,在使用YUM进行安装时,YUM会自动安装软件包的依赖关系。

YUM的常用命令如下:

更新软件包列表:

sudo yum check-update

更新所有软件包:

sudo yum update

安装软件包:

sudo yum install package_name

删除软件包:

sudo yum remove package_name

与APT类似,YUM也提供了一个图形用户界面来处理软件包管理,它叫做PackageKit。

包管理工具是Linux操作系统中非常实用的工具。通过APT和YUM,我们可以轻松安装和管理软件包。当然,这并不是全部的内容。在Linux领域中,有更多其他的包管理工具。这些包管理工具为Linux操作系统提供了非常良好的软件管理体验。

相关问题拓展阅读:

dpkg命令详解(未完待续)

dpkg是一个比较底层的包管理工具,用来管理基于debian的Linux(如最常见的Ubuntu)的一些软件包,可以直接通过.deb文件来安装软件包,但是它并不能像apt那样自动解决软件包的依赖问题,所以一旦安装过程出现了缺少依赖包的错误,还是需要通过apt来解决一下的。下面介绍一些常用的dpkg命令(是否需要在命令前加 sudo 来用管理权限执茄弯行命令视情况而定,下面就省略前仔了,我个人在使慧纳汪用自己的私人电脑时反正为了方便一般都会加 sudo )。

执行命令: dpkg -i fileName.deb

安装文件名为”fileName.deb”的.deb文件所对应/包含的软件包

执行命令: dpkg -R

例如: dpkg -R /Downloads/debSoft 安装/Downloads/debSoft目录下的所有.deb软件包

执行命令: dpkg -r pkgName

卸载/删除一个已经安装的软件包,但是保留其配置信息和文件(即常说的不彻底卸载)

为什么Ubuntu的Snap是不受欢迎的

最近在Github上发现了一个非常有意思的开源项目,名称是

unsnap

这个开源项目是做什么的呢,码掘它是卸载你Linux系统上的Snap包管理,而使用flatpak来取代它。

事实上,Ubuntu的Snap包越来越不受到欢迎,Linux Mint 20甚至删除与禁止了Snap,这又是怎么一回事呢?

Linux这个操作系统,程序员或多或少都接触或使用过,但Snap包管理,可能并不一定大家都非常清楚。所以我就从Linux的软件安装方式说起。

无论是哪个Linux,任何发行版本,安装软件基本上有以下几种方式:

过往,这是主流的几种方式。

但是上面几种方式都存在一个共同的特点,就是:

不够通用

源码编译就不说了,无论是DEB还是APT包管理等,任何一个软件想要适配不同的Linux操作系统,都要在不同的系中折腾一次,分别发布DEB包,RPM包等。总而言之,就是不够通用。

所以,近些年来,Linux上产生了新的包管理方式,就是

通用包

在Linux的通用包中,更流行的属于

AppImage

,

Snap

以及

Flatpak

。这些管理方式与上述的几种方式的更大差别在于:

它们是通用的,几乎支持所有Linux系统

那它们是怎么做到的?

原理比较简单,它们改变过往的Linux软件对操作系统级别类库的依赖的做法,直接将所有依赖全整到自己的软件包内。这样就比较具有通用性了。

那很显然,这就会明显出现一个问题,这些包管理方式的体积都是非常大的。

当然,我不是来比较这些包发行版本的优缺点的,这里就略过不提。

回到Snap包管理上来吧,在我上面说的AppImage,Snap,以及Flatpak这三种流行的包管理方式中,其中Snap是Ubuntu的杰作,也就是Ubuntu背后的公司Canonical搞的,所以Snap都会随着Ubuntu一起发行。

由于Ubuntu在Linux操作系统中占有非常重要地位,使用率非常高。连带的导致Snap也被使用的越来越多。

这并不是什么坏现象,对吧。但可惜事实是,Snap越发的不受到欢迎。

什么原因?听我道来。

在说Snap为什么不受欢迎之迟稿核前,说回Snap和APT的这两者的关系与冲突吧。

如我以前在相关的文章中也阐述过了,Ubuntu其实是基于

Debian

基础之上构建的操作系统,而Debian使用的是APT包管理。

APT包管理其实是你可以简单理解为

deb + 依赖管理

,它是基于deb之上的包管理工具。

所以,问题就来了,Ubuntu做为一敬拆个debian系的操作系统,其本身是带有APT包管理的,现在自己又整了个Snap包管理,理所当然的这两者是存在冲突的了。

Ubuntu承诺不会移除APT包管理,当然Ubuntu一直也做到了,现在无论在哪个Ubuntu的发行版本中,你仍然可以使用APT来安装软件。

但这不表示冲突就不存在,Ubuntu本身是肯定有偏好的。作为一个商业公司,把资源投入到自己的产品中,这也是理所当然的吧。毕竟这也是建立生态与产品护城河的一种方式。

比旭Ubuntu的软件商店管理其实是基于Snap而不是APT的。你用Ubuntu的商店安装的软件全是Snap格式的,并不是DEB格式的。

Snap的性能比Deb还是差很多,这一点就先不说了。

更夸张的是,Ubuntu走的有点过了,做出了一些令人难以接受的操作,比如当你在Ubuntu上输入下述命令时:

这个命令的本意是使用apt来安装chromium浏览器,apt是deb包管理,当然安装的应该是chromium的deb包才对。

只可惜,在Ubuntu中,如果你使用的是上述命令,安装的却是chromium的snap版本。

Ubuntu的这种行为,已经明显越界了。甚至我们可以理解为它在APT中添加了特别的后门逻辑与程序来达到它的目的。

Snap有很多问题,比如几个比较明显的缺点是性能相对较差,软件包的体积大,中心化的软件商店,不透明的运行机制等,但最关键的一个点在于:

它违背了Linux操作系统的理念与精神

不管Linux有多少个发行版本,它们始终都有一个共同的理念与精神,就是

遵守开源与自由的理念

因为这个理念与精神,你可以发现,所有Linux都是开源与自由的操作系统。无论是在桌面还是服务器领域,你可以随心所欲地切换任何一个系统不会被限制。

就算是Redhat这样的商业巨头,它的YUM包管理,也是开源与自由的,并不只属于Redhat。比如CentOS可以建立自己的YUM软件仓库。

但Ubuntu的Snap越过了这个界线,虽然它有一部分是开源的,但事实上,Snap是一个中心化的包管理,它有一个类似App Store这样的中心存在,当然是由Canonical来维护管理的。

而除了Canonical以外,其它都无法复制或运营一个自己的Snap软件管理中心,也就是你只能使用Canonical的这个。因为它有一些专有实现在其中。

这种行为,已经明显违背了Linux操作系统的核心理念与精神,在开源与自由的Linux中,是不可能受到欢迎的。

Ubuntu的这些行为受到了明显的批评与,Linux Mint在其最新20版本中,已经删除了Snap包管理,并默认不允许安装Snap。

Following the decision made by Canonical to replace parts of APT with Snap and have the Ubuntu Store install itself without users knowledge or consent, the Snap Store is forbidden to be installed by APT in Linux Mint 20.

最后,说起Linux,就不得不说起Redhat与Canonical这两个商业公司,Redhat是服务器领域非常知名的Linux商业公司,而Canonical则在桌面Linux做的非常出色。

但Redhat明显非常克制,它一直都是非常遵守自由与开源的理念,Redhat通过售卖专业的服务来赚取利润,而在过往的十多年中,Redhat始终是Linux内核的更大贡献商业公司。REHL也是原始的Linux发行版本,类似CentOS这样的,是REHL开源的受益者。

而相比之下,Canonical的Ubuntu本身是基于Debian基础之上的再发行版本,Linux内核的贡献也远远比不上Redhat,还整出了Snap这种专有的中心化的专有包软件管理,步伐迈的有点过大了。

作为商业公司,通过各种方式赚取利润是理所当然的,但要遵守你所有的领域的基本理念与原则也应该属于最基本的操守。

Ubuntu对于在桌面Linux的卓越贡献当然是值得赞赏的,但它在Snap的这种行为上,理所当然主流都不会欢迎它的。

所以,现在你知道为什么Snap包管理不受欢迎了吧。

关于linux 包管理工具的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » 轻松管理软件:深入了解Linux的包管理工具 (linux 包管理工具)