Difference between revisions of "Pacman (简体中文)"

From ArchWiki
Jump to: navigation, search
(问题解决: Add --force warning)
(Update translation.)
Line 1: Line 1:
[[Category:简体中文]]
 
 
[[Category:Package management (简体中文)]]
 
[[Category:Package management (简体中文)]]
 
[[cs:Pacman]]
 
[[cs:Pacman]]
Line 42: Line 41:
 
{{Article summary link|repo-add(8) Manual Page|http://www.archlinux.org/pacman/repo-add.8.html}}
 
{{Article summary link|repo-add(8) Manual Page|http://www.archlinux.org/pacman/repo-add.8.html}}
 
{{Article summary end}}
 
{{Article summary end}}
{{TranslationStatus (简体中文)|Pacman|2012-09-28|224497}}
+
{{TranslationStatus (简体中文)|Pacman|2012-11-21|235472}}
 
'''[http://archlinux.org/pacman/ Pacman]''' 包管理器是 Arch Linux 的一大亮点。它将一个简单的二进制包格式和易用的构建系统结合了起来(参见[[makepkg]]和[[ABS]])。不管软件包是来自官方的 Arch 库还是用户自己创建,Pacman 都能方便得管理。
 
'''[http://archlinux.org/pacman/ Pacman]''' 包管理器是 Arch Linux 的一大亮点。它将一个简单的二进制包格式和易用的构建系统结合了起来(参见[[makepkg]]和[[ABS]])。不管软件包是来自官方的 Arch 库还是用户自己创建,Pacman 都能方便得管理。
  

Revision as of 09:17, 21 November 2012

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary heading Template:Article summary link Template:Article summary link Template:Article summary link Template:Article summary link Template:Article summary end

翻译状态: 本文是英文页面 Pacman翻译,最后翻译时间:2012-11-21,点击这里可以查看翻译后英文页面的改动。

Pacman 包管理器是 Arch Linux 的一大亮点。它将一个简单的二进制包格式和易用的构建系统结合了起来(参见makepkgABS)。不管软件包是来自官方的 Arch 库还是用户自己创建,Pacman 都能方便得管理。

Pacman 通过和主服务器同步软件包列表来进行系统更新,这使得注重安全的系统管理员的维护工作成为轻而易举的事情。这种服务器/客户端模式可以使用一条命令就下载/安装软件包,同时安装必需的依赖包。

pacman 用 C 语言编写,使用 .pkg.tar.xz 打包格式。

提示: 官方的 pacman 软件包还提供了其它有用工具,例如makepkgpactreevercomp等。可以通过 pacman -Ql pacman | grep bin 获取工具列表。

配置

Pacman 的配置文件位于/etc/pacman.confman pacman.conf 可以查看配置文件的进一步信息。

通用选项

通用选项都在[options]段。阅读 man 手册或者查看默认的 pacman.conf 可以获得有关信息和用法。

不升级软件包

如果由于某种原因,你不希望升级某个软件包,可以加入内容如下:

IgnorePkg = 软件包名

多软件包用空格隔开。

不升级软件包组

和软件包一样,你也可以不升级某个软件包组:

IgnoreGroup = gnome

跳过

要跳过某些文件夹的安装,可以将它们放到 NoExtract 中,例如不想安装 systemd unit 文件:

NoExtract=usr/lib/systemd/system/*

软件仓库

这部分定义使用的软件仓库,在 /ect/pacman.conf 中引用,可以直接设置或者从其它文件包含。

所有官方软件仓库都使用同一个包含了'$repo' 的 /etc/pacman.d/mirrorlist文件,因此你只需要维护一个列表。 下面例子中使用官方软件仓库,用 mirrorlist 设定镜像的一个范例。

#[testing]
#SigLevel = PackageRequired
#Include = /etc/pacman.d/mirrorlist

[core]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist

[extra]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist

#[community-testing]
#SigLevel = PackageRequired
#Include = /etc/pacman.d/mirrorlist

[community]
SigLevel = PackageRequired
Include = /etc/pacman.d/mirrorlist

# If you want to run 32 bit applications on your x86_64 system,
# enable the multilib repositories as required here.

#[multilib-testing]
#SigLevel = PackageRequired
#Include = /etc/pacman.d/mirrorlist

#[multilib]
#SigLevel = PackageRequired
#Include = /etc/pacman.d/mirrorlist

# An example of a custom package repository.  See the pacman manpage for
# tips on creating your own repositories.
#[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs
警告: 使用 [testing] 仓库的时候要谨慎,这个仓库里面开发比较活跃,可能导致某些软件包不能工作。推荐使用 [testing] 的用户订阅 arch-dev-public 邮件列表以获得最新信息。

用法

pacman 的其他示例请阅读man pacman。下面只是一个可执行操作的小部分示范。

安装软件包

安装指定的包

安装或者升级单个软件包,或者一列软件包(包含依赖包),使用如下命令:

pacman -S package_name1 package_name2 ...

有时候在不同的软件仓库中,一个软件包有多个版本(比如[extra]和[testing])。你可以选择一个来安装:

pacman -S extra/package_name
pacman -S testing/package_name

安装包组

一些包属于一个可以同时安装的包组。例如,运行下面的命令

# pacman -S gnome

会安装所有属于 gnome 组的包。想要查看哪些包属于 gnome 组,运行:

# pacman -Sg gnome

也可以访问 https://www.archlinux.org/groups/ 查看可用的包组。

注意: 如果列表中的包已经安装在系统中,它会被重新安装,即使它已经是最新的。可以用 --needed 选项覆盖这种行为。
警告: 安装包时不要刷新包列表 (即 pacman -Sy package_name); 这会导致依赖问题。[1] 请先#升级软件包,然后再安装新包。

删除软件包

删除单个软件包,保留其全部已经安装的依赖关系

pacman -R package_name

删除指定软件包,及其所有没有被其他已安装软件包使用的依赖关系:

pacman -Rs package_name

要删除软件包和所有依赖这个软件包的程序:

# pacman -Rsc package_name
警告: 此操作是递归的,请小心检查,可能会一次删除大量的软件包。

要删除软件包,但是不删除依赖这个软件包的其他程序:

# pacman -Rdd package_name

pacman 删除某些程序时会备份重要配置文件,在其后面加上*.pacsave扩展名。-n 选项可以删除这些文件:

pacman -Rn package_name
pacman -Rsn package_name
注意: Pacman不会删除软件自己创建的文件(例如主目录中的 .dot 文件不会被删除。

升级软件包

一个 pacman 命令就可以升级整个系统。花费的时间取决于系统有多老。这个命令会同步非本地(local)软件仓库并升级系统的软件包:

# pacman -Syu
注意: 作为一个滚动升级发行版,升级 Arch Linux 系统不像一些固定发行的系统那样直接。此外,pacman 不是 "运行后不管" 的软件包管理器。所以,用 pacman 进行的系统维护工作会新用户带来疑惑(论坛上的讨论显示出这一点)。 请将下面部分从头到尾阅读一遍之后再继续。

pacman 是强大的软件包管理工具,但是不会做"所有的事情"。有疑问,请阅读Arch 之道。相反,用户需要负责维护自己的系统。例如,当执行系统升级(pacman -Syu) 时,请务必阅读 pacman 输出的所有信息。

有升级时,不要立即升级。用户需要明白升级关键软件包可能产生不可预知的结果。所以如果即将进行重要的演讲,升级xorg-server 是不明智的。请在空闲时升级,并做好准备,处理升级时遇到的任何问题。

其次,请随时访问 Arch Linux 主页。当升级需要用户做特别处理时,主页上会给出通知。通常升级到达各个镜像之后,会有论坛帖子描述相应的问题,并提供详细的解决方案。

执行升级时,请阅读 pacman 的信息,软件打包者通常会描述变更和引起的问题,并引导用户访问相应的 wiki 页面和资源。最后,请阅读 pacman 输出的所有信息!

提示: pacman 输出会保持到 /var/log/pacman.log

查询包数据库

pacman 使用 -Q 参数查询本地软件包数据库。参见:

pacman -Q --help

使用 -S 参数来查询远程同步的数据库。参见:

pacman -S --help

pacman 可以在包数据库中查询软件包,查询位置包含了软件包的名字和描述:

$ pacman -Ss package

要查询已安装的软件包:

$ pacman -Qs package

显示软件包的详尽的信息:

$ pacman -Si package

查询本地安装包的详细信息:

$pacman -Qi package

使用两个 -i 将同时显示备份文件和修改状态:

$ pacman -Qii package_name

要获取已安装软件包所包含文件的列表:

$pacman -Ql package

未安装的软件包使用pkgfile

查询数据库获取某个文件属于哪个软件包:

$ pacman -Qo /path/to/a/file

要罗列所有不再作为依赖的软件包(孤立orphans):

$ pacman -Qdt

要显示软件包的依赖树:

$ pactree package_name

其它命令

下载包而不安装它:

# pacman -Sw package_name

安装一个本地包(不从源里下载):

# pacman -U /path/to/package/package_name-version.pkg.tar.xz

安装一个远程包(不在 pacman 配置的源里面):

# pacman -U http://www.example.com/repo/example.pkg.tar.xz

删除 Cache 中当前未安装的软件包(/var/cache/pacman/pkg):

# pacman -Sc
警告: 仅在确定当前安装的软件包很稳定,不需要降级时才这样做,因为pacman -Sc 会从缓存中删除软件包的所以老版本。

完全清理包缓存:

# pacman -Scc

作为-Sc-Scc的替换,使用pacman-contrib提供的paccache。此工具提供了更多的控制,例如软件包和删除数量等。使用方法参阅paccache -h

不支持部分升级

Arch Linux 是滚动发行版,新 版本将不断被推送到源。开发者和信任用户会按照需要重新构建源中的所有软件包。如果有本地安装的版本(例如 AUR 软件包),需要在它们的依赖关系升级了soname时重新编译。

也就是说,部分升级是不被支持的。不要使用 pacman -Sy package 或等价命令如 pacman -Sy 之后再 pacman -S package。在安装软件包前请更新源并升级。同理请特别注意 IgnorePkg/IgnoreGroup 的使用。

如果进行了部分升级,二进制包因为找不到链接库而损坏,不要通过简单的符号链接进行修正。库升级 soname 是因为它们不再向前兼容。只要 pacman 可以运行,使用更新的源进行 pacman -Syu 就能修复这些问题。

问题解决

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ