入门
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工具数字海洋的文章 。