如何使用Arch Linux的软件包管理

入门

Arch Linux提供类似于其他现代Linux发行版中的软件包管理功能。 这是常用包管理操作的指南。

在继续进行之前,请确保您的包数据库是最新的:

sudo pacman -Sy

搜索

喜欢简洁直观,Arch Linux中大多数包管理操作的格式如下:

pacman -<a-z><a-z>.

例如,用于搜索pacman存储库的正常命令是

pacman -Ss <package> 

像大多数pacman命令一样,它并不是特别明显。 pacman还配有pacsearch实用程序。 它工作类似,但它有一些增强pacman -Ss:

  • 颜色突出
  • 已安装软件包类别('local')

下面是如何使用关键字'linux'列出所有标准包。

pacsearch linux

有时会有很多包匹配您的搜索条件。 在使用像yaourt这样的AUR助手时尤其如此。 正则表达式可以帮助缩小列表范围。 例如,假设您正在尝试查找与“ack”工具相关的任何内容。 定期搜索ack将不可避免地返回很多结果筛选,由于像“包”,“黑客”或“播放”的话。

pacsearch ack

然而,没有多少话开始应答。 向搜索字词添加^仅会包括以这些字母开头的结果。 这至少与pacsearch,pacman和yaourt工作。

pacsearch ^ack 

为了保证正则表达式按预期工作,用引号括起来。

pacsearch 'c\+\+'

如果要获取与搜索匹配的已安装软件包的列表,请将结果传递到“grep local”。 “-A 1”选项指示grep在每个匹配之后包括一行(在这种情况下为包描述)。

pacsearch linux | grep local -A 1

或者,您可以使用pacman -Qs,下面没有颜色突出显示。

pacman -Qs linux

如果想用pacman -Ss进行颜色突出显示,可以从/etc/pacman.conf中取消注释Color。 它突出了不同于pacsearch的东西,所以你可能想尝试两个,看看你最喜欢哪一个。

sudo vi /etc/pacman.conf

...
# Misc options
#UseSyslog
Color
#TotalDownload
CheckSpace
#VerbosePkgLists
...

获取信息

pacman-Qi 显示有关已安装软件包的基本信息。

pacman -Qi linux

Name           : linux
Version        : 3.8.4-1
Description    : The linux kernel and modules
Architecture   : x86_64
URL            : http://www.kernel.org/
Licenses       : GPL2
Groups         : base
Provides       : kernel26=3.8.4
Depends On     : coreutils  linux-firmware  kmod  mkinitcpio>=0.7
Optional Deps  : crda: to set the correct wireless channels of your country
Required By    : None
Optional For   : None
Conflicts With : kernel26
Replaces       : kernel26
Installed Size : 64728.00 KiB
Packager       : Tobias Powalowski <tpowa@archlinux.org>
Build Date     : Wed Mar 20 21:16:17 2013
Install Date   : Fri Mar 29 01:02:14 2013
Install Reason : Explicitly installed
Install Script : Yes
Validated By   : Unknown

如果pacman -Qi没有传递任何参数,它将返回系统中的所有包。 您可以搜索此输出以获取有关已安装软件包的专门信息。

例如,如果你想得到每个包和它的大小:

pacman -Qi | grep -e "Name" -e "Installed Size"

Name           : a52dec
Installed Size : 244.00 KiB
Name           : aalib
Installed Size : 768.00 KiB
...

虽然pacman -Qi提供有关已安装软件包的信息,但pacman -Si向数据库查询最近检索到的有关软件包的信息。

pacman -Si linux

Repository     : core
Name           : linux
Version        : 3.11.6-1
Description    : The Linux kernel and modules
Architecture   : x86_64
URL            : http://www.kernel.org/
Licenses       : GPL2
Groups         : base
Provides       : kernel26=3.11.6
Depends On     : coreutils  linux-firmware  kmod  mkinitcpio>=0.7
Optional Deps  : crda: to set the correct wireless channels of your country
Conflicts With : kernel26
Replaces       : kernel26
Download Size  : 47855.98 KiB
Installed Size : 64493.00 KiB
Packager       : Thomas Bächler <thomas@archlinux.org>
Build Date     : Fri 18 Oct 2013 05:25:12 PM EDT
Validated By   : MD5 Sum  SHA256 Sum  Signature

pacman-Q1 列出与包关联的所有文件。

pacman -Ql vi

vi /usr/
vi /usr/bin/
vi /usr/bin/edit
vi /usr/bin/ex
vi /usr/bin/vedit
vi /usr/bin/vi
...

每行上的包名称可能使输出在脚本中更难以使用。 pacman -Qlq(即“pacman查询列表,安静”)将不打印包名称。

pacman -Qlq vi

/usr/
/usr/bin/
/usr/bin/edit
/usr/bin/ex
/usr/bin/vedit
/usr/bin/vi
...

你可以使用pacman -Qlq | grep bin查找该包中位于bin文件夹中的所有文件(因此可能是可执行文件)。 当与包关联的命令与包名称不同时,这是很方便的。

pacman -Qql pacman | grep bin

/usr/bin/
/usr/bin/bacman
/usr/bin/checkupdates
/usr/bin/cleanupdelta
/usr/bin/makepkg
/usr/bin/paccache
/usr/bin/pacdiff
/usr/bin/paclist
/usr/bin/paclog-pkglist
/usr/bin/pacman
/usr/bin/pacman-db-upgrade
/usr/bin/pacman-key
/usr/bin/pacman-optimize
/usr/bin/pacscripts
/usr/bin/pacsearch
/usr/bin/pacsort
/usr/bin/pacsysclean
/usr/bin/pactree
/usr/bin/pkgdelta
/usr/bin/rankmirrors
/usr/bin/repo-add
/usr/bin/repo-elephant
/usr/bin/repo-remove
/usr/bin/testdb
/usr/bin/testpkg
/usr/bin/updpkgsums
/usr/bin/vercmp

存储消耗

最简单的方法来看看哪些软件包占用了你系统上最多的空间是pacsysclean,它附带pacman。

pacsysclean

如果你想要一些更复杂的东西,pacgraph实用程序可以产生SVG和PNG格式的最大包的依赖性字云。

pacgraph在社区存储库中找到。

sudo pacman -S pacgraph

pacgraph -c将输出到控制台,如pacsysclean。 如果有很多软件包,pacgraph的输出可能会因为从最大到最小排序而变得笨拙,与pacsysclean不同。 你可以管道到头,只看到最大的包。

pacgraph -c | head

Autodetected Arch.
Loading package info
Total size: 730MB
114MB linux
103MB libtool
84MB pacgraph
40MB imagemagick
25784kB ppl
22264kB nmap
17295kB pkgfile

在我测试的Arch LinuxDroplet中,在输出之前产生了一些错误。 要删除错误,您需要从默认的“C”更正区域设置。

export LANG=en_US.UTF-8

运行没有任何参数,pacgraph生成一个SVG和一个PNG文件(如果可能的话)。 如果您没有使用虚拟服务器设置文件共享系统,访问pacgraph生成的图像的最简单的方法是使用安全复制。

scp <user>@<addr>:<remote_path> <local_path>

注意 :虽然pacgraph会声称呈现PNG文件安装的ImageMagick和libpng后,在此写它的时候不会产生实际Inkscape中没有一个PNG,其中有相当多的依赖关系。

下载/安装

安装或升级标准软件包的典型方法是pacman -S。

sudo pacman -S <package>

包名称中通常有类似的模式。 括号可以用作快捷方式。

sudo pacman -S lua-{sec,socket,zlib}

有时候,您可能只想下载一个文件包,而不安装它。 pacman -Sw将下载一个包到缓存文件夹。

sudo pacman -Sw <package>

如果软件包已下载,或者您知道网址,您可以直接安装。

sudo pacman -U <package_path>

升级

由于pacman围绕着将包与远程存储库“同步”的想法,pacman -S将升级已经安装的包。

Pacman可以列出过时的软件包。

pacman -Qu

不幸的是,它不会在存储库中显示包的版本,所以你将无法知道每个包是什么过期的。 如果这对你很重要,你可能想要查看第三方包管理器或编写一个脚本,它将从pacman -Qi和pacman -Si获得的包版本绑定在一起。

您可以使用正则表达式从pacman -Qi或pacman -Si获取版本。

pacman -Qi linux | grep "Version" | sed 's/^Version\s*:\s//'

3.8.4-1

然后编写一个并排显示版本的脚本。

for i in $(pacman -Qqu)
do
  printf "$i: "
  printf "$(pacman -Qi "$i" | grep 'Version' | sed 's/^Version\s*:\s//') "
  echo   "$(pacman -Si "$i" | grep 'Version' | sed 's/^Version\s*:\s//')"
done

Pacman提供了一种立即升级所有软件包的方法,但不建议这样做,因为Arch是滚动发布版本。 如果出现问题,可能需要时间来确定原因。

sudo pacman -Syu

降级

Arch Linux不正式维护已弃用的软件包。 相反,您将需要依赖于包缓存和像Arch Rollback Machine之类的地方。

缓存

使用pacman下载的每个软件包都存储在/ var / cache / pacman / pkg中。

ls /var/cache/pacman/pkg | grep linux

linux-3.11.6-1-x86_64.pkg.tar.xz
linux-3.9.7-1-x86_64.pkg.tar.xz
...

如果您想还原到缓存中的包,只需直接安装即可。

pacman -U <path_to_cached_file>

拱形回滚机

凯旋门回滚机是官方的Arch Linux镜像快照的集合。 在写这篇文章时,它可以追溯到四个月。 该ARM目前在托管http://seblu.net/a/arm ,尽管这可能会在未来改变。

可以使用pacman -U远程安装ARM软件包

pacman -U http://seblu.net/a/arm/2013/08/31/extra/os/x86_64/apache-2.2.25-1-x86_64.pkg.tar.xz

对于较旧的软件包浏览ARM不是很方便。 幸运的是,有工具,使这更容易:

他们在缓存和ARM中搜索旧版本。 他们的用法是你会期望的。

downgrade <package>
downgrader <package>

两个工具都在AUR中,所以安装它们的最简单的方法将是一个帮助器,如yaourt。

:ARM是一个非官方项目,并在过去已经被关闭,所以它可能是避免清除的情况下,高速缓存中的ARM停机或再次改变位置是个好主意。 如果你想推出自己的ARM,似乎有一个项目的NodeJS GitHub上

删除

删除一个包,只要没有取决于它。 保留其依赖关系。

sudo pacman -R <package>

删除一个包,只要没有取决于它。 删除其他任何不需要的依赖项。

sudo pacman -Rs <package>

强制删除包。 这是你将到达的命令只是从系统中擦除包,并重新安装,当单独重新安装是不够的。

sudo pacman -Rdd <package>

非官方包

绝大多数Arch Linux的包都位于拱门用户系统信息库 从AUR搜索并下载包,最好的办法是使用一个辅助工具

已经有一个在AUR和yaourt工具数字海洋的文章

:提交罗伯特·奎尔斯
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏