在最开始介绍Linux发行版
分类时曾提到过是依照软件包打包格局分为如下三大类:
Debian
系列: 软件包后缀格局为.deb
,软件包治理命令为apt
。Red Hat
系列: 软件包后缀格局为.rpm
, 软件包治理命令为yum
、dnf
、zypper
。ArchLinux
系列: 软件包后缀格局为.pkg.tar.zst
, 软件包治理命令为pacman
。GentooLinux
系列:软件包从源代码构建,GentooLinux为用户提供了大量的应用程序源代码,软件包治理命令工具为emerge
。
apt包管理器用法
APT高级打包工具(英语:Advanced Packaging Tools,缩写为APT)是Debian
及其派生的Linux软件包管理器。APT能够主动下载,配置,装置二进制或者源代码格局的软件包,因而简化了Unix零碎上管理软件的过程。APT最早被设计成dpkg的前端,用来解决deb格局的软件包。当初通过APT-RPM组织批改,APT曾经能够装置在反对RPM的系统管理RPM包。
- 装置软件 :
apt install <package>
- 删除软件 :
apt remove <package>
- 查找软件 :
apt search <package-name>
- 更新软件 :
apt update
- 软件源配置文件:
/etc/apt/sources.list.d/*.list
自定义软件源配置文件 - 更新软件源缓存:
apt update
- 清理软件源缓存: 无
yum包管理器用法
Yum(Yellowdog Updater, Modified),是由Duke University团队批改Yellow Dog Linux的Yellow Dog Updater开发而成,是一个基于RPM包治理的字符前端软件包管理器。可能从指定的服务器主动下载RPM包并且装置,能够解决依赖性关系,并且一次装置所有依赖的软件包,毋庸繁琐地一次次下载、装置。被Yellow Dog Linux自身,以及Fedora、Red Hat Enterprise Linux采纳。
- 装置软件 :
yum install <package>
- 删除软件 :
yum remove <package>
- 查找软件 :
yum search <package-name>
- 更新软件 :
yum update
- 软件源配置文件:
/etc/yum.repos.d/*.repo
自定义软件源配置文件 - 更新软件源缓存:
yum makecache
- 清理软件源缓存:
yum clean all
DNF包管理器(yum的下一代代替版)
DNF,全称Dandified Yum,是RPM发行版的软件包管理器Yellowdog Updater, Modified(yum)的下一代版本。DNF最早呈现在Fedora 18中,并在Fedora 22、RHEL8中代替yum
。DNF旨在解决局部yum已知的不足之处,包含蹩脚的性能、高内存应用、迟缓的迭代拓扑排序。
简略说下DNF
代替了Yum
的次要起因:
- 宏大而简单的外部代码集,这也是任何一款软件产品倒退到肯定阶段经常要面临的难题,有时候从新实现某一性能要比在它根底上革新要简略的多。
Python
的终结,Yum
是应用Python
实现的,迁徙到Python3
可能革新可能有微小的艰难且毫无意义,倒不如从新实现来的简略且更好,最新版本的DNF
改用C/C++
来实现,并将大部分性能封装到了libdnf
库中,以便对外提供API。- 解决软件包的装置依赖关系的解析速度和性能问题,让安装包更加智能的解析依赖关系。
既然是代替计划,当然用法差别并不大,接下来理解下DNF
软件包管理器的用法:
- 装置软件 :
dnf install <package>
- 删除软件 :
dnf remove <package>
- 查找软件 :
dnf search <package-name>
- 更新软件 :
dnf update
- 软件源配置文件:
/etc/yum.repos.d/*.repo
(配置目录兼容yum
,实际上yum
命令是dnf
命令的软链接) - 更新软件源缓存:
dnf makecache
- 清理软件源缓存:
dnf clean all
当初咱们在CentOS8
中看到的yum
其实曾经是dnf
命令的软链接了。
ZYPPER包管理器用法
zypper
是SuSe Linux
分支默认的包管理器工具,采纳了一种称为布尔可满足性问题
算法计算软件包依赖性问题,简略的来说就是剖析出依赖关系后,将软件依赖包装置选择权和决策权交给用户本人决策。
- 装置软件 :
zypper install <package>
- 删除软件 :
zypper remove <package>
- 查找软件 :
zypper search <package-name>
- 更新软件 :
zypper update
- 软件源配置文件:
/etc/zypp/repos.d/*.repo
- 更新软件源缓存:
zypper refresh
- 清理软件源缓存:
zypper clean
Pacman包管理器用法
Pacman
是一个软件包管理器,作为Arch Linux
发行版的一部分。它最早由Arch Linux的Judd Vinet
开发。Pacman
能够解决装置过程中的依赖问题,主动下载并且装置所有须要的软件包。
最后的pacman
很慢。这是因为您要援用的镜像服务器与您网络间隔太远,传输速度太慢。
因而,有必要在应用前应用上面命令主动执行镜像优化。
# 测试并抉择提早最低的镜像源地址(通过-c参数抉择国家)
$ sudo pacman-mirrors -g -c China
# 更新软件源本地缓存
$ sudo pacman -Sy
- 装置软件 :
pacman -S <package>
,-Sw
选项只下载不装置 - 降级所有版本比源列表低的包:
pacman -Su
- 删除软件 :
pacman -R <package>
- 查找软件 :
pacman -Ss <package>
- 查找软件 :
pacman -Qs <package>
(查找本地装置软件) - 更新软件 :
pacman -U <package>
,软件包能够是软件包名字、本地门路,也能够是URL
地址。 - 软件源配置文件:
/etc/pacman.conf
- 更新软件源缓存:
pacman -Sy
- 清理软件源缓存:
pacman -Sc
(清理装置后长期缓存的软件包),-Scc
选项彻底清理所有缓存信息。
portage包治理用法
gentoo的包管理工具称为portage。
emerge
是这个portage的字符界面管理工具,图形界面工具还有portato,porthole,kuroo,himerge等。
emerge
常用命令有:
- 同步portage:emerge –sync 或 emerge-webrsync
- 降级所有的软件包:emerge -uDN @world
- 重编译所有的软件包:emerge -e @world
特立独行的软件装置办法
下面列举的软件包管理工具都是重点思考如何解决软件包依赖问题,而有些软件装置办法就不须要这种思考,这类软件被称为
(portable software)便携软件
,在Windows
零碎中被称做绿色软件
,这类软件不须要装置就能够间接应用。
不依赖于特定发行版的包装格局在Linux生态系中在Flatpak前早已被提出过数次。
2000年代晚期,autopackage开始,2004年则是klik,这也提供了Alexander Larsson灵感,于2007年开发出glick我的项目。
到了2014年,klik便演化成AppImage
,其指标是成为不依赖于特定分布版的便携式上游打包格局。
Canonical公司则于2016年公布了Snappy
,其指标也是为了提供宽泛的linux生态系一个通用的包装格局,其反对相似于Flatpak
的格局,同时也反对应用程序商店式的数字发行与更新模式。
上面列举一些常见的便携软件
:
- AppImage : 核心思想是
一个应用程序 = 一个文件
,下载即用,非常适合无需root权限的软件。您能够浏览官网文档理解如何制作、应用一款AppImage
更多介绍。应用示例: AnotherRedisDesktopManager - Flatpak : 口号是
Linux零碎上的软件的将来
,Flatpak
的指标是在用户想要运行他们可能并不齐全信赖的应用软件时提供一个平安的沙盒环境
供用户应用。应用程序将必须应用由flatpak提供的函数调用来管制硬件设施或拜访用户的文件,而flatpak将会在给予应用程序拜访权限前提醒用户。Flatpak
容许应用程序开发人员间接向用户提供更新,而无需通过发行版,而不用为每个发行版别离打包和测试应用程序。晋升了软件更新的速度但也可能会升高稳定性。您能够拜访Flathub软件仓库获取更多软件。 - Snappy : 用过
Ubuntu
的人肯定应用过这类软件,这类软件包最后设计是利用于Ubuntu Core
零碎的挪动端、云、物联网平台,snap
格局包是一种能够由主机操作系统动静挂载的压缩的文件系统,其中还附有元数据申明,snap零碎能够据其为应用程序设置适当的平安沙箱或容器。装置snap
软件后执行df
命令,你能够看到多了/dev/loopX
文件系统。
总结
本文介绍了Linux零碎
大多数发行版可能应用的软件包管理工具,依据软件包格局分为三大支流派别:Debian
、Red Hat
和Pacman
。
接着介绍了三大派别以后应用最宽泛的软件包管理器
以及应用办法。
古人云:天下大势,分久必合
。总有一些人在想着解决软件包依赖问题
,以及各种软件包如何能够在所有Linux发行版
中通用,因而就呈现了AppImage
、Flatpak
和Snap
。从当初(2020年)的应用状况来看,将来很可能属于Flatpak
的。
发表回复