本初学者指南向您展示了在Linux中可以使用pacman命令做什么,如何使用它们来查找新包、安装和升级新包以及清理系统。pacman包管理器是ArchLinux与其他主要发行版(如RedHat和Ubuntu/Debian)之间的主要区别之一。它结合了简单的二进制包格式和易于使用的构建系统。pacman的目标是轻松管理软件包,无论是来自官方仓库还是用户自己构建的仓库。如果您曾经使用过Ubuntu或基于debian的发行版,那么您可能使用过apt-get或apt命令。pacman与ArchLinux中的命令相同。如果你刚刚安装了ArchLinux,那么在安装ArchLinux之后首先要做的几件事之一就是学习使用pacman命令。在本初学者指南中,我将解释一些基本的pacman命令的用法,您应该知道如何管理基于Archlinux的系统。ArchLinux用户应该知道的几个重要pacman命令与其他包管理器一样,pacman可以将包列表与软件仓库同步,??它可以自动解析所有需要的依赖项,以便用户可以通过简单的命令下载并安装软件。通过pacman安装软件可以使用如下形式的代码来安装一个或多个软件包:pacman-S包名1包名2...安装一个包-S选项表示synchronization同步,表示pacman与软件同步安装前的存储库。pacman数据库根据安装的原因将已安装的包分为两组:显式安装:通过pacman-S或-U命令直接安装的包依赖安装:自动安装,因为它们依赖于其他显式安装的包包。卸载已安装的包卸载包并移除其所有依赖项。pacman-R包名删除一个包删除一个包及其不需要的其他包的依赖:pacman-Rs包名如果需要这个依赖的包已经删除,这个命令可以删除所有不需要的依赖再次需要的依赖:pacman-Qdtq|pacman-Rs-升级包pacman提供了一种升级ArchLinux的简单方法。您只需一个命令即可升级所有已安装的软件包。这可能需要一段时间,具体取决于系统的年龄。以下命令将同步存储库数据库并更新系统上的所有软件包,不包括不在软件存储库中的“本地安装”软件包:pacman-SyuS用于同步y用于更新本地存储库u用于系统更新即,同步到中央软件存储库(主包数据库),刷新主包数据库的本地副本,然后执行系统更新(通过更新所有可用的新版本包)。系统更新注意!对于ArchLinux用户,在系统升级前,建议您访问Arch-Linux主页查看最新消息,了解异常更新情况。如果系统更新需要人工干预,相关消息将发布在主页上。您还可以订阅RSS提要或Arch的公告电子邮件。在升级内核、xorg、systemd或glibc等底层软件之前,请注意查看相应的论坛以了解人们报告的各种问题。Arch和Manjaro等滚动版本不支持部分升级。这意味着当一个新的库版本被推送到软件仓库时,软件仓库中的所有包都需要根据该库版本进行升级。例如,如果两个包依赖于同一个库,则仅升级一个包可能会破坏依赖于该库旧版本的另一个包。使用Pacman查找包pacman使用-Q选项查询本地包数据库,使用-S选项查询同步数据库,使用-F选项查询文件数据库。pacman可以在数据库中搜索包,包括包名和描述:pacman-Ssstring1string2...查找包查找已经安装的包:pacman-Qsstring1string2...根据文件名在远程软包:pacman-Fstring1string2...查看包的依赖树:pactreepackagenameclearpackagecachepacman将其下载的包存储在/var/cache/Pacman/pkg/中,并且不会自动删除旧的或未安装的版本。这有一些优点:它允许降级软件包而无需通过其他来源检索以前的版本。卸载的包可以很容易地直接从缓存文件夹中重新安装。但是,有必要定期清除缓存以防止文件夹增长。pacmancontrib包中提供的paccache(8)脚本默认删除已安装和未安装包的所有缓存版本,除了最后3个版本:paccache-rclearcache删除所有当前未安装和未安装的缓存包同步使用的数据库,执行:pacman-Sc要从缓存中删除所有文件,请使用两次清除选项,这是最激进的方法并且不会在缓存文件夹中留下任何内容:pacman-Sccinstalllocalorathird-partypackageInstall不是来自远程存储库的“本地”包:pacman-Ulocal_package_path.pkg.tar.xz安装一个不包含在官方存储库中的“远程”包:pacman-Uhttp://www.example.com/repo/example.pkg.tar.xz附加信息:使用pacman解决常见错误以下是使用pacman管理包时可能遇到的一些常见错误。提交事务失败(文件冲突)如果您看到以下错误:错误:无法准备事务错误:无法提交事务(冲突文件)包:/path/to/fileexistsinfilesystemErrorsoccurred,nopackageswereupgraded.这是因为pacman会检测文件冲突并且不会为您覆盖文件。解决这个问题的一个安全方法是首先检查另一个包是否拥有这个文件(pacman-Qo文件路径)。如果文件属于另一个包,请提交错误报告。如果该文件不属于另一个包,请将文件重命名为“存在于文件系统中”并重新发出更新命令。如果一切顺利,文件可能会被删除。您可以显式运行pacman-S--overwrite_pattern_to_overwrite来强制pacman覆盖与给定模式匹配的文件,而不是手动重命名并稍后删除属于该包的所有文件。Failedtocommittransaction(invalidorcorruptpackage)在/var/cache/pacman/pkg/中查找.part文件(部分下载的包)并删除它们。这通常是由于在pacman.conf文件中使用自定义XferCommand引起的。Failedtoinitializetransaction(unabletolockdatabase)当pacman想要修改软件包数据库时,例如在安装软件包时,它会在/var/lib/pacman/db.lck中创建一个锁定文件。这可以防止pacman的另一个实例同时尝试更改包数据库。如果pacman在更改数据库时被中断,这个陈旧的锁文件可能仍然存在。如果您确定没有pacman实例正在运行,则删除锁定文件。检查进程是否持有锁文件:lsof/var/lib/pacman/db.lck如果上面的命令没有返回,你可以删除锁文件:rm/var/lib/pacman/db.lck如果你发现lsof命令输出如果知道使用锁文件的进程的PID,请先杀掉进程,再删除锁文件。我希望你喜欢我对pacman基本命令的介绍。
