精华内容
下载资源
问答
  • ArchLinux的包管理系统: pacman
    2021-02-02 19:47:57

    常用命令有:

    pacman -Sy abc 和源同步后安装名为abc的包

    pacman -S abc 从本地数据库中得到abc的信息,下载安装abc包

    pacman -Sf abc 强制安装包abc

    pacman -Ss abc 搜索有关abc信息的包

    pacman -Si abc 从数据库中搜索包abc的信息

    pacman -Syu 同步源,并更新系统

    pacman -Sy 仅同步源

    pacman -R abc 删除abc包

    pacman -Rc abc 删除abc包和依赖abc的包

    pacman -Rsn abc 移除包所有不需要的依赖包并删除其配置文件

    pacman -Sc 清理/var/cache/pacman/pkg目录下的旧包

    pacman -Scc 清除所有下载的包和数据库

    pacman -U abc 安装下载的abs包,或新编译的abc包

    pacman -Sd abc 忽略依赖性问题,安装包abc

    pacman -Su –ignore foo 升级时不升级包foo

    pacman -Sg abc 查询abc这个包组包含的软件包

    pacman -Q 列出系统中所有的包

    pacman -Q package 在本地包数据库搜索(查询)指定软件包

    pacman -Qi package 在本地包数据库搜索(查询)指定软件包并列出相关信息

    pacman-optimize To defragment pacman的数据库缓存和速度优化选项

    pacman -Q wc -l 统计当前系统中的包数量

    更多相关内容
  • pacman命令

    2021-01-14 11:22:04
    pacman是一个软件包管理器,作为 ArchLinux发行版的一部分。它最早由 Arch Linux 的 Judd Vinet开发,Pacman 可以解决安装过程中的依赖问题,自动下载并且安装所有需要的软件包。Pacman包管理器是Arch Linux的一大...

    pacman是一个软件包管理器,作为 ArchLinux发行版的一部分。它最早由 Arch Linux 的 Judd Vinet开发,Pacman 可以解决安装过程中的依赖问题,自动下载并且安装所有需要的软件包。Pacman包管理器是Arch Linux的一大亮点。它将一个简单的二进制包格式和易用的构建系统结合了起来。Pacman使得简单的管理与自定义软件包成为了可能,而不论他们来自于官方的Arch软件库或是用户自己创建的。

    [zhangy@BlackGhost ~]$ pacman -h

    用法

    pacman [...]

    操作

    pacman {-h --help} //帮助

    pacman {-V --version} //查看版本

    pacman {-D --database} //pacman管理数据库选项

    pacman {-Q --query} [选项] [软件包] //查询安装包

    pacman {-R --remove} [选项] //删除安装包

    pacman {-S --sync} [选项] [软件包] //安装安装包

    pacman {-U --upgrade} [选项] //更新安装包

    使用 'pacman {-h --help}' 及某个操作以查看可得的选项

    [zhangy@BlackGhost ~]$ pacman -D --help

    用法

    pacman {-D --database}

    选项

    --asdeps 标记为非单独指定安装的软件包

    --asexplicit 标记为单独指定安装的软件包

    --config 指定另外的配置文件

    --logfile 指定另外的日志文件

    --noconfirm 不询问确认

    --noprogressbar 下载文件时不显示进度条

    --noscriptlet 不执行安装小脚本

    -v, --verbose 循环执行

    -- debug 显示除错信息

    -r, --root 指定另外的安装根目录

    -b, --dbpath 指定另外的数据库位置

    --cachedir 指定另外的软件包缓存位置

    --arch 设定另外的架构

    [zhangy@BlackGhost ~]$ pacman -Q --help

    用法

    pacman {-Q --query} [选项] [软件包]

    选项

    -c, --changelog 查看某软件包的更新日志

    -d, --deps 列出所有作为依赖关系安装的软件包 [过滤器]

    -e, --explicit 列出所有单独指定安装的软件包 [过滤器]

    -g, --groups 查看某软件包组所属的所有软件包

    -i, --info 查看软件包信息 (-ii 查看备份文件)

    -k, --check 检查该软件包拥有的文件是否存在

    -l, --list 列出被查询软件包的内容

    -m, --foreign 列出没有在同步数据库时找到的已安装软件包 [过滤器]

    -o, --owns 查询哪个软件包拥有

    -p, --file 从某个软件包而不是数据库查询

    -s, --search 搜寻符合指定字符串的已安装本地的软件包

    -t, --unrequired 列出所有不被其他软件包要求的软件包 [过滤器]

    -u, --upgrades 列出所有可升级的软件包 [过滤器]

    -q, --quiet 在查询或搜索时显示较少的信息

    --config 指定另外的配置文件

    --logfile 指定另外的日志文件

    --noconfirm 不询问确认

    --noprogressbar 下载文件时不显示进度条

    --noscriptlet 不执行安装小脚本

    -v, --verbose 循环执行

    -- debug 显示除错信息

    -r, --root 指定另外的安装根目录

    -b, --dbpath 指定另外的数据库位置

    --cachedir 指定另外的软件包缓存位置

    --arch 设定另外的架

    [zhangy@BlackGhost ~]$ pacman -R --help

    用法

    pacman {-R --remove} [选项]

    选项

    -c, --cascade 删除软件包及所有的依赖于此的软件包

    -d, --nodeps 略过依赖关系检查

    -k, --dbonly 只删除数据库记录,不删除文件

    -n, --nosave 同时删除配置文件

    -s, --recursive 同时删除 (不会破坏其他软件包的) 依赖关系(-ss·也包括单独指定安装的依赖关系)

    -u, --unneeded 同时删除不需要的 (且不会破坏其他软件包的) 依赖关系

    --print 仅打印目标而不执行操作

    --print-format 指定如何打印目标

    --config 指定另外的配置文件

    --logfile 指定另外的日志文件

    --noconfirm 不询问确认

    --noprogressbar 下载文件时不显示进度条

    --noscriptlet 不执行安装小脚本

    -v, --verbose 循环执行

    -- debug 显示除错信息

    -r, --root 指定另外的安装根目录

    -b, --dbpath 指定另外的数据库位置

    --cachedir 指定另外的软件包缓存位置

    --arch 设定另外的架构

    [zhangy@BlackGhost ~]$ pacman -S --help

    用法

    pacman {-S --sync} [选项] [软件包]

    选项

    --asdeps 作为非单独指定安装的软件包安装

    --asexplicit 作为单独指定安装的软件包安装

    -c, --clean 从缓存目录中删除旧软件包 (-cc 清除所有)

    -d, --nodeps 略过依赖关系检查

    -f, -force 强制安装,覆盖存在冲突的文件

    -g, --groups 查看某软件包组所属的所有软件包

    -i, --info 查看软件包信息

    -l, --list 查看在该软件库中的软件包清单

    -s, --search 按照指定字符串查询远端软件库

    -u, --sysupgrade 升级所有已安装的软件包 (-uu 可启用降级)

    -w, --downloadonly 下载但不安装/升级软件包

    -y, --refresh 从服务器下载新的软件包数据库

    --needed 不重新安装已经为最新的软件包

    --ignore 升级时忽略某个软件包 (可多次使用)

    --ignoregroup 升级时忽略某个软件包组 (可多次使用)

    --print 仅打印目标而不执行操作

    --print-format 指定如何打印目标

    -q, --quiet 在查询或搜索时显示较少的信息

    --config 指定另外的配置文件

    --logfile 指定另外的日志文件

    --noconfirm 不询问确认

    --noprogressbar 下载文件时不显示进度条

    --noscriptlet 不执行安装小脚本

    -v, --verbose 循环执行

    -- debug 显示除错信息

    -r, --root 指定另外的安装根目录

    -b, --dbpath 指定另外的数据库位置

    --cachedir 指定另外的软件包缓存位置

    --arch 设定另外的架构

    [zhangy@BlackGhost ~]$ pacman -U --help

    用法

    pacman {-U --upgrade} [选项]

    选项

    --asdeps 作为非单独指定安装的软件包安装

    --asexplicit 作为单独指定安装的软件包安装

    -d, --nodeps 略过依赖关系检查

    -f, -force 强制安装,覆盖存在冲突的文件

    -k, --dbonly 添加数据库记录,不安装或保持现存文件

    --print 仅打印目标而不执行操作

    --print-format 指定如何打印目标

    --config 指定另外的配置文件

    --logfile 指定另外的日志文件

    --noconfirm 不询问确认

    --noprogressbar 下载文件时不显示进度条

    --noscriptlet 不执行安装小脚本

    -v, --verbose 循环执行

    -- debug 显示除错信息

    -r, --root 指定另外的安装根目录

    -b, --dbpath 指定另外的数据库位置

    --cachedir 指定另外的软件包缓存位置

    --arch 设定另外的架构

    实例1

    安装包

    1,安装或者升级单个软件包

    pacman -S mysql

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

    pacman -S extra/mysql

    3,步包数据库并且安装一个软件包

    pacman -Sy mysql

    实例2

    删除包

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

    pacman -R mysql

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

    pacman -Rs mysql

    实例3

    升级系统

    pacman -Syu

    实例4

    查询包

    1,查询可用安装包

    pacman -Ss mysql

    2,要查询已安装的软件包:

    pacman -Qs mysql

    实例5

    其他用法

    1,清理当前未被安装软件包的缓存

    pacman -Sc

    2,下载包而不安装

    pacman -Sw mysql

    实例6

    # pacman -Rsc package_name   #要删除软件包和所有依赖这个软件包的程序

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

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

    # pacman -Rn package_name

    # pacman -Rsn package_name

    # pacman -Si package_name  #显示软件包的详尽的信息

    # pacman -Qi package_name  #查询本地安装包的详细信息

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

    # pacman -Ql package_name   #要获取已安装软件包所包含文件的列表

    # pacman -Qk package_name   #检查软件包安装的文件是否都存在

    # pacman -Qo /path/to/file_name  #查询数据库获取某个文件属于哪个软件包

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

    # pacman -Qet  #要罗列所有明确安装而且不被其它包依赖的软件包

    # pactree package_name  #要显示软件包的依赖树

    # pactree -r package_name   #检查一个安装的软件包被那些包依赖

    展开全文
  • pacman常用命令

    千次阅读 2021-01-14 11:22:05
    pacman是arclinux中的软件管理工具,可以直接从网络上的软件仓库下载安装及删除软件,自动处理依赖关系,类似ubuntu中的apt-get。pacman也是widows上msys2默认的软件管理工具。安装软件pacman -S 软件名: 安装软件。...

    pacman是arclinux中的软件管理工具,可以直接从网络上的软件仓库下载安装及删除软件,自动处理依赖关系,类似ubuntu中的apt-get。pacman也是widows上msys2默认的软件管理工具。

    安装软件

    pacman -S 软件名: 安装软件。也可以同时安装多个包,只需以空格分隔包名即可。

    pacman -S --needed 软件名1 软件名2: 安装软件,但不重新安装已经是最新的软件。

    pacman -Sy 软件名:安装软件前,先从远程仓库下载软件包数据库(数据库即所有软件列表)。

    pacman -Sv 软件名:在显示一些操作信息后执行安装。

    pacman -Sw 软件名: 只下载软件包,不安装。

    pacman -U 软件名.pkg.tar.gz:安装本地软件包。

    pacman -U http://www.example.com/repo/example.pkg.tar.xz: 安装一个远程包(不在 pacman 配置的源里面)。

    更新系统

    pacman -Sy: 从服务器下载新的软件包数据库(实际上就是下载远程仓库最新软件列表到本地)。

    pacman -Su: 升级所有已安装的软件包。

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

    pacman -Syu

    在msys2中 pacman -Syu后需要重启一下msys2(关掉shell重新打开即可)。

    在Arch linux中,只支持系统完整升级,不支持部分升级。所以即使在msys2中,pacman -Syu也会升级整个系统。可以观察一下,即使新安装的msys2,pacman -Syu后,msys2安装目录占用空间立马变大很多。

    如果升级时,网络比较慢,觉得既浪费时间又浪费硬盘,实在不想升级那么多东西,可以逐个软件包升级。用下面命令可以升级核心包:

    pacman -S --needed filesystem msys2-runtime bash libreadline libiconv libarchive libgpgme libcurl pacman ncurses libintl

    卸载软件

    pacman -R 软件名: 该命令将只删除包,保留其全部已经安装的依赖关系

    pacman -Rv 软件名: 删除软件,并显示详细的信息

    pacman -Rs 软件名: 删除软件,同时删除本机上只有该软件依赖的软件。

    pacman -Rsc 软件名: 删除软件,并删除所有依赖这个软件的程序,慎用

    pacman -Ru 软件名: 删除软件,同时删除不再被任何软件所需要的依赖

    搜索软件

    pacman -Ss 关键字: 在仓库中搜索含关键字的软件包(本地已安装的会标记)

    pacman -Sl :

    显示软件仓库中所有软件的列表

    可以省略,通常这样用:`pacman -Sl | 关键字`

    pacman -Qs 关键字: 搜索已安装的软件包

    pacman -Qu: 列出所有可升级的软件包

    pacman -Qt: 列出不被任何软件要求的软件包

    参数加q可以简洁方式显示结果,比如pacman -Ssq gcc会比pacman -Ss gcc显示的好看一些。

    pacman -Sl | gcc跟pacman -Ssq gcc很接近,但是会少一些和gcc有关但软件名不包含gcc的包。

    查询软件信息

    pacman -Q 软件名: 查看软件包是否已安装,已安装则显示软件包名称和版本

    pacman -Qi 软件名: 查看某个软件包信息,显示较为详细的信息,包括描述、构架、依赖、大小等等

    pacman -Ql 软件名: 列出软件包内所有文件,包括软件安装的每个文件、文件夹的名称和路径

    软件包组

    pacman -Sg: 列出软件仓库上所有的软件包组

    pacman -Qg: 列出本地已经安装的软件包组和子包

    pacman -Sg 软件包组: 查看某软件包组所包含的所有软件包

    pacman -Qg 软件包组: 和pacman -Sg 软件包组完全一样

    很多人建议通过安装软件组来安装工具链,例如:

    pacman -S mingw-w64-x86_64-toolchain

    pacman -S mingw-w64-i686-toolchain

    pacman -S mingw-w64-x86_64-qt5

    pacman -S base-devel

    但是这样比较浪费空间。实际上如果把gcc, qt, clang等安装上,msys2就要占掉超过10G的硬盘空间,所以个人很少直接安装软件组。

    清理缓存

    pacman -Sc:清理未安装的包文件,包文件位于 /var/cache/pacman/pkg/ 目录。

    pacman -Scc:清理所有的缓存文件。

    最常用的pacman命令小结

    pacman命令较多,作为新手,将个人最常用的命令总结如下:

    pacman -Syu: 升级系统及所有已经安装的软件。

    pacman -S 软件名: 安装软件。也可以同时安装多个包,只需以空格分隔包名即可。

    pacman -Rs 软件名: 删除软件,同时删除本机上只有该软件依赖的软件。

    pacman -Ru 软件名: 删除软件,同时删除不再被任何软件所需要的依赖。

    pacman -Ssq 关键字: 在仓库中搜索含关键字的软件包,并用简洁方式显示。

    pacman -Qs 关键字: 搜索已安装的软件包。

    pacman -Qi 软件名: 查看某个软件包信息,显示软件简介,构架,依赖,大小等详细信息。

    pacman -Sg: 列出软件仓库上所有的软件包组。

    pacman -Sg 软件包组: 查看某软件包组所包含的所有软件包。

    pacman -Sc:清理未安装的包文件,包文件位于 /var/cache/pacman/pkg/ 目录。

    pacman -Scc:清理所有的缓存文件。

    参考文章

    展开全文
  • pacman (简体中文)

    2021-01-14 11:22:06
    翻译状态:本文是 pacman 的翻译。上次翻译日期:2020-10-20。如果英文版本有所更改,则您可以帮助同步翻译。pacman软件包管理器是 Arch Linux 的一大亮点。它将一个简单的二进制包格式和易用的构建系统结合了起来。...

    翻译状态:本文是 pacman 的翻译。上次翻译日期:2020-10-20。如果英文版本有所更改,则您可以帮助同步翻译。

    pacman软件包管理器是 Arch Linux 的一大亮点。它将一个简单的二进制包格式和易用的构建系统结合了起来。pacman的目标是简化对软件包的管理,无论软件包是来自官方软件仓库还是来自用户自己的创建。

    pacman 通过和主服务器同步软件包列表来进行系统更新。这种服务器/客户端模式可在使用一条命令就下载或安装软件包的同时,也安装其必需的依赖包。

    pacman 用 C 语言编写,使用tar作为打包格式。

    提示: makepkg和pactree、checkupdates等可在曾是 pacman 的内置工具)中找到。你可以通过 pacman -Ql pacman | grep -E 'bin/.+' 获取全部的工具列表。

    用法

    下面pacman可以执行的操作的一小部分,pacman 的其他示例请阅读

    提示: 使用过其它发行版的用户,可以参考 Pacman Rosetta 中的对比.

    安装软件包

    一个软件包是一个归档,它包含:

    一个应用的所有(编译好的)文件

    有关该应用的元数据,例如应用名称,版本,依赖……

    供 pacman 使用的安装文件和指令

    (可选)使软件更易操作的额外文件,例如启动/终止脚本

    Arch 的软件包管理器 pacman 可以安装,更新,和删除这些软件包。使用软件包而不是自己编译安装有如下优势:

    轻松升级:pacman 会在更新可用时立即更新已安装的软件包

    依赖检查:pacman 负责为你处理依赖问题,你只需要指明程序,pacman 就会把它和它所需的所有其他程序都一起安装。

    干净卸载:pacman 有着一个软件包所有文件的列表。这样,当你决定移除软件包时,不会无意留下文件。

    注意: 软件包通常有很多可选依赖, 它们为软件提供额外功能, 并不强制要求安装它们。 安装软件时, pacman 将会输出它的可选依赖, 但是这个输出不会在 pacman.log中;当你想浏览已安装软件的可选依赖时可以使用pacman -Si ,得到关于可选依赖的简短描述。

    警告: 在Arch下安装软件包时,未更新系统前,不要更新软件包数据库(例如,可能出现某软件包不再出现在官方库)。操作时,应使用pacman -Syu package_name, 而不要使用(pacman -Sy package_name),否则可能会有依赖问题。参见 System maintenance (简体中文)#不支持部分升级 和 BBS#89328.

    安装指定的包

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

    # pacman -S package_name1 package_name2 ...

    用正则表达式安装多个软件包(参见 这个帖子):

    # pacman -S $(pacman -Ssq package_regex)

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

    # pacman -S extra/package_name

    安装多个含有相似名称的软件包,而并非整个包组或全部匹配的软件包; 例如,

    # pacman -S plasma-{desktop,mediacenter,nm}

    当然,可以多层扩展,并不作限制:

    # pacman -S plasma-{workspace{,-wallpapers},pa}

    虚包

    虚拟软件包是一个特殊的软件包,它本身并不存在,但由一或多个其它软件包提供。虚拟软件包允许其它软件包不以某一个特定的包为依赖,以应对有多个候选的情况。虚包不能用它们的名称安装,相反它们会在你安装提供虚包的软件包时被安装到你的系统中。

    安装包组

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

    # pacman -S gnome

    会提醒用户选择 gnome 内需要安装的包。

    有的包组包含大量的软件包,有时用户只需其中几个。除了逐一键入序号外,pacman 还支持选择或排除某个区间内的的软件包:

    Enter a selection (default=all): 1-10 15

    这将选中序号 1 至 10 和 15 的软件包。而

    Enter a selection (default=all): ^5-8 ^2

    将会选中除了序号 5 至 8 和 2 之外的所有软件包。

    想要查看哪些包属于 gnome 组,运行:

    # pacman -Sg gnome

    注意: 如果列表中的包已经安装在系统中,它会被重新安装,即使它已经是最新的。可以用 --needed 选项覆盖这种行为。

    删除软件包

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

    # pacman -R package_name

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

    # pacman -Rs package_name

    上面这条命令在移除包含其他所需包的组时有时候会拒绝运行。这种情况下可以尝试

    # pacman -Rsu package_name

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

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

    # pacman -Rsc package_name

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

    警告: 此操作有破坏系统的能力,应该尽量避免使用。详情请看 避免某些 Pacman 命令。

    # pacman -Rdd package_name

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

    pacman -Rn package_name

    注意: pacman 不会删除软件自己创建的文件(例如主目录中的“点文件”不会被删除。)

    升级软件包

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

    # pacman -Syu

    查询包数据库

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

    $ pacman -Ss string1 string2 ...

    有时,-s的内置正则会匹配很多不需要的结果,所以应当指定仅搜索包名,而非描述或其他子段:

    $ pacman -Ss '^vim-'

    要查询已安装的软件包:

    $ pacman -Qs string1 string2 ...

    按文件名查找软件库:

    $ pacman -F string1 string2 ...

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

    $ pacman -Si package_name

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

    $ pacman -Qi package_name

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

    $ pacman -Qii package_name

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

    $ pacman -Ql package_name

    查询远程库中软件包包含的文件:

    $ pacman -Fl package_name

    检查软件包安装的文件是否都存在:

    $ pacman -Qk package_name

    两个参数k将会执行一次更彻底的检查。

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

    $ pacman -Qo /path/to/file_name

    查询文件属于远程数据库中的哪个软件包:

    $ pacman -F /path/to/file_name

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

    $ pacman -Qdt

    提示: 将上述命令添加到 pacman 的一个处理后 hook用于在如果有处理产生孤立包后获得提示。这在当有软件包被仓库放弃时是有用的,因为任何被抛弃的包都会成为本地的一个孤立包(除非它是被显式安装的)。要避免在没有找到孤立包时"failed to execute command”的错误,在你的 hook 中为Exec使用如下的指令: /usr/bin/bash -c "/usr/bin/pacman -Qtd || /usr/bin/echo '=> None found.'"

    要罗列所有明确安装而且不被其它包依赖的软件包:

    $ pacman -Qet

    Pactree

    要显示软件包的依赖树:

    $ pactree package_name

    检查一个安装的软件包被那些包依赖,将递归标识-r传递给 pactree,或者使用 AUR中的whoneeds

    数据库结构

    pacman数据库通常位于 /var/lib/pacman/sync. 对于每一个在/etc/pacman.conf中指定的软件仓库, 这里都有一个一致的数据库。数据库文件夹里每个tar.gz文件都包含着一个仓库的软件包信息。例如

    $ tree which-2.21-5

    which-2.21-5

    |-- desc

    这个 depends 项列出了该软件的依赖包, 而desc有该包的介绍,例如文件大小和MD5值 。

    清理软件包缓存

    pacman 将下载的软件包保存在 /var/cache/pacman/pkg/ 并且不会自动移除旧的和未安装版本的软件包。这样做有一些好处:

    这样允许降级软件包而不需要通过其他方式提取旧版本,例如 Arch Linux Archive.

    被卸载的软件包可以轻易地直接从缓存文件夹重新安装,不需要重新从软件仓库下载。

    然而,需要定期手动清理缓存来避免该文件夹无限制增大。

    # paccache -r

    启用 和 启动 paccache.timer来每周删除不使用的包。

    也可以自己设置保留最近几个版本:

    # paccache -rk1

    添加-u/--uninstalled开关来限制paccache的行为只作用于卸载的包。例如清理所有卸载的包的缓存版本,可以用以下命令:

    # paccache -ruk0

    或者你可以将安装其结合,同时作用于安装的和卸载的包,例如想要保留最近两个安装的包但是移除所有卸载的包的缓存版本,使用以下命令:

    # paccache -rk2 -ruk0

    更多参数参见paccache -h。

    pacman也有一些内建参数用于清除缓存和那些不再在/etc/pacman.conf配置文件中列出的软件仓库残留数据库文件。然而pacman并不提供保留一定数量的过去版本的功能,因此它比paccache的默认选项更加激进。

    要删除目前没有安装的所有缓存的包,和没有被使用的同步数据库,执行:

    # pacman -Sc

    要删除缓存中的全部文件,使用两次-c开关。这是最为激进的方式,将会清空缓存文件夹:

    # pacman -Scc

    警告: 应当避免从缓存中删除所有过去版本和卸载的包,除非需要更多磁盘空间。这样会导致无法降级或重新安装包而不再次下载他们

    AUR以及AUR是两个进一步清理缓存的替代工具

    其它命令

    升级系统时安装其他软件包:

    # pacman -Syu package_name1 package_name2 ...

    下载包而不安装它:

    # pacman -Sw package_name

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

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

    要将本地包保存至缓存,可执行:

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

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

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

    要禁用 -S, -U 和 -R 动作,可以使用 -p 选项.

    pacman 会列出需要安装和删除的软件,并在执行动作前要求需要的权限。

    安装原因

    pacman数据库按照软件包被安装的原因,将其分为两类:

    显式安装:那些真正地被传递给通用pacman-S和-U命令的包;

    依赖:那些虽然(一般)从未被传递给pacman安装命令,但由于被其它显式安装的包需要从而被隐式安装的包

    当安装软件包时,可以把安装原因强制设为依赖:

    # pacman -S --asdeps package_name

    提示: 用--asdeps安装可选依赖将导致如果你移除孤立包,pacman将会一同移除剩下的可选依赖。

    但是当重新安装该软件包时,安装原因将会被设为软件包所默认的。

    显式安装的软件包列表可用pacman -Qe获取, 与之互补的已安装的依赖包可用pacman -Qd获取。

    改变某个已安装软件包的安装原因,可以执行:

    # pacman -D --asdeps package_name

    注意: 在升级时使用--asdeps和--asexplicit选项,例如pacman -Syu package_name --asdeps,是不被推荐的。这会导致不仅改变要被安装的软件包的安装原因,也会改变被升级的软件包的安装原因。

    查询一个包含具体文件的包名

    同步文件数据库:

    # pacman -Fy

    查询包含某个文件的包名,比如:

    # pacman -F pacman

    core/pacman 5.0.1-4

    usr/bin/pacman

    usr/share/bash-completion/completions/pacman

    extra/xscreensaver 5.36-1

    usr/lib/xscreensaver/pacman

    提示: 可以设置一个 crontab 或者 systemd timer 来定期同步文件信息数据库。

    如果需要高级功能请安装 pkgfile,它使用一个单独的数据库来保存文件和它们所关联的软件包的信息。

    配置

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

    通用选项

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

    升级前对比版本

    要查看旧版和新版的有效安装包,请取消/etc/pacman.conf中"VerbosePkgLists"的注释。修改后的pacman -Syu输出如下:

    Package (6) Old Version New Version Net Change Download Size

    extra/libmariadbclient 10.1.9-4 10.1.10-1 0.03 MiB 4.35 MiB

    extra/libpng 1.6.19-1 1.6.20-1 0.00 MiB 0.23 MiB

    extra/mariadb 10.1.9-4 10.1.10-1 0.26 MiB 13.80 MiB

    在升级时跳过软件包

    警告: 在跳过软件包时要小心,因为部分升级不受支持

    要想在升级系统时跳过特定的软件包,用像如下的命令指明:

    IgnorePkg=linux

    多软件包可以用空格隔开,或者用另外的IgnorePkg行。也可使用 glob 模式。如果只打算忽略一次升级,可以使用 --ignore 选项,这时使用逗号隔开的列表。

    忽略了的软件包依然可通过 pacman -S 升级。这种情况下pacman会提醒你这些软件包已经被包含在IgnorePkg声明中。

    在升级时跳过软件包组

    警告: 在跳过软件包时要小心,因为部分升级不受支持

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

    IgnoreGroup = gnome

    在升级时跳过文件

    所有在NoUpgrade指令中列出的文件都会在软件包被安装/升级时不会被更改,并且新文件会以带有.pacnew后缀名的形式安装

    NoUpgrade=path/to/file

    注意: 这个路径指软件包中的文件,所以不要包括开头的斜线。

    在安装时跳过文件

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

    NoExtract=usr/lib/systemd/system/*

    后面的规则覆盖前面的规则,加上 ! 可以取消跳过效果。

    提示: pacman会在更新locales已经被localepurge或者bleachbit清除的包时发出警告。将CheckSpace参数加入pacman.conf能够抑制这种警告,但是要意识到space-check功能将会对所有软件包禁用。

    保留多个配置文件

    如果你有多个配置文件(比如,主配置和启用了测试仓库的配置文件),需要共享一些设置,你可以在配置文件中使用Include选项,例如:

    Include = /path/to/common/settings

    /path/to/common/settings文件中是两个配置文件共享的相同配置。

    Hooks

    pacman可以在处理前后,运行/usr/share/libalpm/hooks/文件夹下的hooks,更多的hooks文件夹可以通过HooDir选项在pacman.conf中指明,默认/etc/pacman.d/hooks。Hook文件必须以.hook为后缀。Pacman hooks不是交互式的。

    pacman hooks用于,比如说,和systemd-sysusers和systemd-tmpfiles结合来在安装包时自动创建系统用户和文件。例如,tomcat8的系统用户和一些属于该用户的文件。当pacman确定pacman hooks systemd-sysusers.hook和systemd-tmpfiles.hook唤起systemd-sysusers和systemd-tmpfiles。

    有关 alpm hooks 的更多信息,参见

    软件仓库

    除了特殊的通用选项节, 每个pacman.conf中的[section]都定义了一个使用的软件包仓库,仓库是多个软件包的逻辑上的集合,他们物理上存储在一个或多个服务器:这也是为什么每一个服务器都叫做这个仓库的镜像。

    仓库区分为官方仓库与非官方仓库。配置文件中仓库的顺序十分重要;当几个仓库出现同名安装包,不管版本号如何,pacman将使用配置文件中排前的仓库。要在添加后使用某个仓库,你需要先升级整个系统

    每个仓库节都可以直接指定镜像列表或者Include引用其他的文件:例如,官方镜像引用了/etc/pacman.d/mirrorlist/。具体查看Mirrors (简体中文)。

    软件包的安全性

    pacman 支持软件包签名,会为软件包提供额外的安全性。默认配置,SigLevel = Required DatabaseOptional 将启用全局签名验证,但会被每个软件仓库的 SigLevel 行所覆盖。有关软件包签名和签名验证的更多细节,参见 pacman-key。

    疑难解答

    "Failed to commit transaction (conflicting files)" 错误

    如果碰到如下错误:[2]

    error: could not prepare transaction

    error: failed to commit transaction (conflicting files)

    package: /path/to/file exists in filesystem

    Errors occurred, no packages were upgraded.

    这是因为 pacman 检测到文件冲突,而且按照设计,pacman 不会覆盖文件。这是设计功能,不是缺陷。

    这个问题通常很容易解决。一个安全的方式是,首先检查是否有另一个软件包提供了这个文件 (pacman -Qo /path/to/file)。如果文件被另一个软件包所有,请报告问题。如果不是其它软件包提供,将 'exists in filesystem' 的文件重命名并重新运行update命令。如果一切顺利,可以删掉这个文件。

    如果你手动安装了一个软件,没有通过pacman,例如用make install,你必须将软件连同它的全部文件一起移除/卸载。参见Pacman/Tips and tricks#Identify files not owned by any package。

    每一个安装的软件包都会提供一个 /var/lib/pacman/local/$package-$version/files 文件,包含此软件包的元数据。如果文件损坏或者丢失,将会导致升级时出现file exists in filesystem 错误。此错误通常只会影响一个软件包,除了手动删除或移动所有的问题文件,你也可以显式地使用pacman -S --overwrite glob package让 pacman 强制覆盖匹配glob的文件。

    "Failed to commit transaction (invalid or corrupted package)" 错误

    看看/var/cache/pacman/pkg中是否有*.part结尾的文件,它们是没有完全下载的文件,删除它们并重新执行更新。这些程序一般是自定义的XferCommand 下载命令造成的。

    # find /var/cache/pacman/pkg/ -iname "*.part" -delete

    "Failed to init transaction (unable to lock database)" 错误

    pacman 在改变软件包数据库前,比如安装软件包时,会创建一个文件锁 /var/lib/pacman/db.lck。这会阻止其他 pacman 实例在同一时间修改软件包数据库。

    如果 pacman 在更新数据库时被打断,旧锁可能保留下来。如果确认没有 pacman 实例在运行,那么删掉文件锁:

    # rm /var/lib/pacman/db.lck

    安装时无法获取软件包

    错误内容包含:Not found in sync db, Target not found 或 Failed retrieving file.

    首先确认软件包确实存在(并注意错别字)。如果确认软件包存在,可能本地数据库过时了或者软件仓库没有配置好,试试 pacman -Syyu 强制数据库更新和升级。

    也有可能包含该软件包的软件仓库没有启动。例如,该软件包可能在 multilib 仓库里,但该仓库没有在 pacman.conf 中启用。

    pacman 更新时崩溃

    如果 pacman 在删除、重新安装或更新软件包时 "数据库写入" 出错:

    从 Arch 安装媒体启动,最好用最新的安装媒体

    挂载根文件系统,例如以 root 身份mount /dev/sdaX /mnt,通过 df -h 确认根文件目录包含足够的空间

    同样挂载 proc, sys 和 dev 文件系统:mount -t proc proc /mnt/proc; mount --rbind /sys /mnt/sys; mount --rbind /dev /mnt/dev

    如果系统使用默认的数据库目录位置,可以通过 root 用户执行下面命令pacman --sysroot /mnt -Syu来更新系统的 pacman 数据库。

    更新之后,可以通过下面命令确认是否还存在损坏的包:find /mnt/usr/lib -size 0

    通过pacman --sysroot /mnt -S package重新安装依然损坏的软件包

    手动重新安装 pacman

    警告: 这种方式极其容易破坏你的系统,把它变得更糟。这个方式只是作为最后的措施,以防万一#pacman 更新时崩溃不起作用

    即使 pacman 严重损坏,你仍可以手动修复它,这需要下载最新的包并把它们解压到正确的目录。大致步骤如下:

    确定要安装的

    从你选择的mirror下载每个包

    把每个包解压到 root

    使用pacman -S --overwrite重新安装这些包来更新相应的软件包数据库

    进行完整系统更新

    如果你拥有一个健康的 Arch 系统,你可以这样查看依赖项的完整列表:

    $ pacman -Q $(pactree -u pacman)

    但是依据你遇到的问题,你可能只需要更新其中的几个。解压一个包的示例是:

    # tar -xvpwf package.tar.xz -C / --exclude .PKGINFO --exclude .INSTALL --exclude .MTREE --exclude .BUILDINFO

    注意w参数表示交互模式。以非交互方式运行是非常冒险的,因为你可能就此覆盖了一个重要文件。你也要注意以正确的顺序解压软件包(例如先解压依赖)。

    这个帖子包含了一些这个过程的例子,这些例子中只有少量pacman依赖项损坏。

    升级系统重启后,出现"unable to find root device"错误,无法登陆

    很有可能 initramfs 在内核升级时损坏(例如由错误地使用 pacman 的 --overwrite 选项导致)。有两个选择;首先尝试 Fallback启动项。

    提示: 万一你删除了 Fallback 启动项,你总可以在启动加载器菜单显示出来的时候按Tab键(对于 Syslinux)或者按e键(对于 GRUB 或者 systemd-boot),将它重命名为initramfs-linux-fallback.img然后按Enter或者b(取决于你的启动加载器以新参数启动的方式)

    一旦系统启动,从控制台或终端(为备用

    # mkinitcpio -p linux

    如果上面方法不行,从一个当前的 Arch 发行(CD/DVD 或者 U盘),挂载你的根目录和启动分区,然后用 arch-chroot chroot

    # arch-chroot /mnt

    # pacman -Syu mkinitcpio systemd linux

    注意:

    如果你没有一个当前的发行或者你只有某些其他的 "live" Linux 发行版,你可以用老式的方法chroot。显然,这种方式比简单地运行arch-chroot脚本需要更多的输入

    如果 pacman 伴随Could not resolve host运行失败,请检查你的网络连接

    如果无法进入 arch-chroot 或 chroot 环境,但是需要重新安装软件包,可以使用 pacman --sysroot /mnt -Syu foo bar 从而在你的根分区下使用 pacman

    重新安装内核(mkinitcpio -p linux 重新生成 initramfs 镜像,不需要单独生成。

    之后建议执行 exit, umount /mnt/{boot,} 然后 reboot.

    Signature from "User " is unknown trust, installation failed

    试试以下途径:

    更新已知密钥:pacman-key --refresh-keys;

    手动升级archlinux-keyring软件包:pacman -Sy archlinux-keyring && pacman -Su.

    请求导入 PGP keys

    如果用过时的 ISO 安装 Arch,你很有可能被提示要导入 PGP keys。同意下载密钥来继续。如果你无法成功添加 PGP keys,更新或升级 keyring above).

    Error: key "0123456789ABCDEF" could not be looked up remotely

    如果软件包使用了新的密钥,且该密钥最近才被添加到 #Signature from "User " is unknown trust, installation failed 所述更新

    不停看到错误 "PackageName: signature from "User " is invalid"

    当系统时间错误时,签名密钥将会被认为过期(或无效)并且签名检查将会失败,提示以下错误信息:

    error: PackageName: signature from "User " is invalid

    error: failed to commit transaction (invalid or corrupted package (PGP signature))

    Errors occured, no packages were upgraded.

    确保矫正系统时间,例如在安装或升级前从 root 执行 ntpd -qg ,和 hwclock -w。

    'warning: current locale is invalid; using default "C" locale' 错误

    错误信息已经很明确了,locale 设置不正确,请阅读Locale进行设置。

    Pacman 不使用我的代理设置

    正确设置环境变量($http_proxy, $ftp_proxy 等)如果使用 sudo,需要让 sudo 将这些变量传递给 pacman.

    如何重装所有包并保留安装和依赖信息?

    重装所有软件包:pacman -S $(pacman -Qnq)(-S 选项会保留安装缘由)。

    接着需要重装外来包(不在官方仓库里的软件包)。外来包可通过pacman -Qmq查看。

    "Cannot open shared object file" 错误

    有可能是前一次 pacman 事务中删除或者损坏了 pacman 自身需要的一些共享库。

    要修复这种情况,你需要手动解压那些共享库文件到文件系统中合适的地方。首先请查明哪个包中包含有所需的库文件,然后在 pacman 缓存中 (/var/cache/pacman/pkg/) 找到对应的包。解压出需要的库文件到文件系统的对应位置,如此可以继续使用 pacman 。

    之后需要重新安装损坏的软件包。注意你可能需要使用 --overwrite 选项覆盖掉你刚刚解压出的系统文件,因为 pacman 可能没有跟踪到对应的文件信息。 pacman 随后会使用包中的文件正确替换掉共享库文件。如此能修好您的 pacman ,然后请继续更新系统中剩下的软件包。

    软件包下载停滞

    Some issues have been reported regarding network problems that prevent pacman from updating/synchronizing repositories. [3] [4] When installing Arch Linux natively, these issues have been resolved by replacing the default pacman file downloader with an alternative (see Improve pacman performance for more details). When installing Arch Linux as a guest OS in VirtualBox, this issue has also been addressed by using Host interface instead of NAT in the machine properties.

    无法从镜像服务器获取 'core.db'

    如果从正确的镜像服务器收到此错误,请换一个域名解析服务器。

    error: 'local-package.pkg.tar': permission denied

    如果你想要在一个 sshfs 上使用pacman -U安装软件包并遇到了这个错误,将包移动到本地目录,再试一次。

    另请参见

    展开全文
  • 1、使用包文件加入一个新的软件包# pacman --add foo.pkg.tar.gz# pacman -A foo.pkg.tar.gz这将会在系统上安装 foo.pkg.tar.gz 软件包。如果不能满足依赖关系,pacman 会退出并显示错误和报告所缺少的依赖关系,但...
  • pacman包管理常用命令

    2021-01-14 11:22:00
    -S 指令安装sudo pacman -S...sudo pacman -Syy #强行更新你的应用的软件库(源)sudo pacman -Su #更新所有软件sudo pacman -Syu #更新软件源并更新你的软件sudo pacman -Syyu #强行更新一遍,再更新软件查询一个软件...
  • Manjaro - Pacman命令详解

    2021-01-14 11:22:40
    文章目录1. 更新系统2. 搜索包3.... 更新系统命令 解释 备注pacman -Syu 对整个系统进行更新(常用)pacman -Syy 强制更新pacman -Syudd 使用 -dd跳过所有检测2. 搜索包命令 解释 备注pacman -Ss ...
  • manjaro pacman查看已安装命令隶属于哪个包(arch应该也行) pacman -Fl | grep command pacman -Ql package和pacman -Fl package是列出该package的所有文件,如果package省略,那么就列出所有package和他所包含的文件 ...
  • pacman得到软件列表

    千次阅读 2019-07-04 21:40:18
    对于Archlinux及类系统,对已经安装的软件进行备份是一个很好的习惯,能够在我们系统出问题或者重装一次性还原系统所需软件。...pacman -Qqen > packages-repository.txt pacman -Qqem > packag...
  • 使用pacman的本地查询命令可以生成一个带有详细描述的包列表: pacman -Qei 可以使用输出重定向命令将其保存到一个文件中: touch wholePacList pacman -Qei > wholiPacList 但是这样生成的包列表包含了太多的...
  • pacman

    2021-01-31 00:01:09
    #linyoubiao 2021-01-24 Msys2新版本,镜像为清华:速度必须要服它。...** 2 修改镜像地址 C:\msys64\etc\pacman.d * 2.1 文件mirrorlist.mingw32修改为 ## ## 32-bit Mingw-w64 repository mirrorlist ## #
  • pacman使用介绍

    2022-03-30 13:26:42
    Pacman 是一个软件包管理器。 国内源: ... 1.如何获取帮助 pacman {-h --help} //帮助 pacman {-V --version} //查看版本 pacman {-D --database} <...pacman {-Q --query} [选项] [软件包] //查询安装包 p
  • pacman命令详解Pacman 是一个软件包管理器,作为ArchLinux发行版的一部分。简单来说,就是和apt-get之于Ubuntu一样,pacman就是Arch的apt-get。要想轻松玩转Arch,学会pacman是必需的。Pacman包管理器是ArchLinux的...
  • pacman是arclinux中的软件管理...文章目录常见命令安装软件更新系统卸载软件搜索软件查询软件信息软件包组清理缓存最常用的pacman命令小结给MSYS2 添加源添加清华源和中科大源参考文章 常见命令 安装软件 pacman ...
  • Pacman包管理器是ArchLinux的一大亮点。它汲取了其他Linux版本软件管理的优点,譬如Debian的APT机制、Redhat的Yum机制、 Suse的Yast等,对于安装软件提供了无与伦比的方便。另外由于ArchLinux是一个针对i686架构优化...
  • pacman基础

    千次阅读 2019-04-16 13:59:44
    pacman -D --asexplicite xxx 设置为单独安装的包 pacman -Qtd 出来的包可以删 但有些删除可能会有影响,大多没用 pacman -Rscn 可以删除干净包 pacman -Rdd 是在出现了依赖问题的时候用用,一般就不用它,他是强行破坏...
  • pacman手册

    2020-03-18 14:48:38
    内容来源于网络>>>原帖地址 ... archlinux pacman 命令 常用命令有: pacman -Sy 仅同步源 pacman -Syu 同步源,并更新系统 pacman -Su –ignore foo 升级时不升级包foo pacman -S abc 从本地...pacman -Sy...
  • 常用命令列出已经安装的软件包pacman -Q查看virtualbox包是否已经安装pacman -Q virtualbox查看已安装的包virtualbox的详细信息pacman -Qi virtualbox列出已安装包virtualbox的所有文件pacman -Ql virtualbox查...
  • pacman命令 – 软件包管理器

    千次阅读 2020-12-29 00:28:58
    Pacman命令是一个软件包管理器,作为ArchLinux发行版的一部分。简单来说,就是和apt-get之于Ubuntu一样,pacman就是Arch的apt-get。要想轻松玩转Arch,学会pacman是必需的。Pacman包管理器是ArchLinux的一大亮点。它...
  • Pacman 命令记录

    2021-01-14 11:22:04
    记性比较差,找了一下 pacman 的命令参数,放在这儿方便查看pacman -Sy abc #和源同步后安装名为abc的包pacman -S abc #从本地数据库中得到abc的信息,下载安装abc包pacman -Sf abc #强制安装包abcpacman -Ss abc #...
  • arch user repositoryman pacman三大类最实用:-S:比如现在想安装一个vlc,sudo pacman -S vlc,如果没安装过会提示你是否下载,如果已经安装过会重新装一遍sudo pacman -Sy,获取最新的软件情报,看看我现在安装的...
  • 导读pacman包管理器是Arch Linux与其他主要发行版(如Red Hat和Ubuntu/Debian)的主要区别之一。pacman目的是方便地管理包,不管软件包是来自官方的 Arch 库还是用户自己创建,pacman 都能方便地管理。环境Archlinux ...
  • pacman命令功能:用于软件包管理器,它出现在ArchLinux发行版中pacman包管理器,拥有Debian的APT机制,RedHat的yum机制,Suse的Yast等优点,它使安装软件变的越来越方便pacman命令的语法格式:pacman [参数]-----常用...
  • Pacman常用命令

    2021-01-14 11:22:01
    Pacman是Arch Linux 的包管理器。它将一个简单的二进制包格式和易用的构建系统结合了起来。不管软件包是来自官方的 Arch 库还是用户自己创建,Pacman 都能方便得管理。更新系统在 Archlinux 中,使用一条命令即可对...
  • archlinux pacman常用命令

    2021-02-02 19:47:55
    安装指定的包安装或者升级单个软件包,或者一列软件包(包含依赖包),使用如下命令:#pacman-Spackage_name1package_name2...用正则表达式安装多个软件包:#pacman-S$(pacman-Ssqpackage_regex)有时候在不同的软件...
  • Pacman

    2019-03-03 20:15:18
    pacman 是archlinux 下的包管理软件。它将一个简单的二进制包格式和易用的构建系统结合了起来。不管软件包是来自官方的 Arch 库还是用户自己创建,Pacman 都能方便得管理。 pacman -Sy abc #和源同步后安装名为abc的...
  • pacman详解及常见问题

    千次阅读 2021-01-17 13:45:32
    安装软件包:软件包有很多可选依赖,是为软件提供额外功能, 安装软件时pacman 会输出可选依赖, 但不会在 pacman.log中,浏览安装软件的可选以来可用pacman -Si得到可选依赖的简短描述安装指定的包:安装或者升级...
  • linux pacman常用命令

    2021-01-14 11:22:04
    S package_name#安装软件包pacman -R package_name#删除软件包pacman -Rs package_name#顺便删除软件包相关依赖pacman -Syu#升级系统中的所有包pacman -Ss package#查询软件包pacman -Qs package#查询已安装的包...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,186
精华内容 474
关键字:

pacman 查询