pacman

6-04 811 views

pacman是什么?就是和apt-get之于Ubuntu一样,pacman就是Arch的apt-get。
要想轻松玩转Arch,学会pacman是必需的
下面熟悉一下pacman的几个常用命令

MSYS2 中pacman安装所有软件包命令:

pacman -Sl | awk '{cmd="pacman -S --needed --noconfirm "$2;system(cmd)}'
##### pacman
用法:  pacman <操作> [...]
操作:
    pacman {-h --help}
    pacman {-V --version}
    pacman {-D --database} <选项> <软件包>
    pacman {-F --files}    [选项] [软件包]
    pacman {-Q --query}    [选项] [软件包]
    pacman {-R --remove}   [选项] <软件包>
    pacman {-S --sync}     [选项] [软件包]
    pacman {-T --deptest}  [选项] [软件包]
    pacman {-U --upgrade}  [选项] <文件>
pacman -D
用法:  pacman {-D --database} <选项> <软件包>
选项:
  -b, --dbpath <路径>  指定另外的数据库位置
  -k, --check          检查本地数据库有效性 (-kk 以同步数据库)
  -q, --quiet          不显示成功消息的输出
  -r, --root <路径>    指定另外的安装根目录
  -v, --verbose        显示详细信息
      --arch <架构>    设定另外的架构
      --asdeps         标记为非明确指定安装的软件包
      --asexplicit     标记为明确指定安装的软件包
      --cachedir <dir> 指定另外的软件包缓存位置
      --color <when>   彩色化输出
      --config <路径>  指定另外的配置文件
      --confirm        总是询问确认
      --debug          显示调试信息
      --disable-download-timeout
                       下载时用宽松的超时
      --gpgdir <路径>  设定 GnuPG 的其他主目录
      --hookdir <目录>  指定另外的钩子位置
      --logfile <路径> 指定另外的日志文件
      --noconfirm      不询问确认
      --sysroot        在一个已挂载的 guest 系统操作(仅 root)
pacman -F
  -b, --dbpath <路径>  指定另外的数据库位置
  -l, --list           列出被查询软件包的内容
  -o, --owns <文件>    查询哪个软件包拥有<文件>
  -q, --quiet          在查询或搜索时显示较少的信息
  -r, --root <路径>    指定另外的安装根目录
  -s, --search <文件>  搜索符合指定字符串的软件包文件名
  -v, --verbose        显示详细信息
  -x, --regex          启用正则表达式进行搜索
  -y, --refresh        从服务器下载新的软件包数据库
                       (-yy 强制更新软件包数据库)
      --arch <架构>    设定另外的架构
      --cachedir <dir> 指定另外的软件包缓存位置
      --color <when>   彩色化输出
      --config <路径>  指定另外的配置文件
      --confirm        总是询问确认
      --debug          显示调试信息
      --disable-download-timeout
                       下载时用宽松的超时
      --gpgdir <路径>  设定 GnuPG 的其他主目录
      --hookdir <目录>  指定另外的钩子位置
      --logfile <路径> 指定另外的日志文件
      --machinereadable
                       产生机器可读输出
      --noconfirm      不询问确认
      --sysroot        在一个已挂载的 guest 系统操作(仅 root)
pacman -Q
用法:  pacman {-Q --query} [选项] [软件包]
选项:
  -b, --dbpath <路径>  指定另外的数据库位置
  -c, --changelog      查看某软件包的更新日志
  -d, --deps           列出所有作为依赖关系安装的软件包 [过滤器]
  -e, --explicit       列出所有单独指定安装的软件包 [过滤器]
  -g, --groups         查看某软件包组所属的所有软件包
  -i, --info           查看软件包信息 (-ii 查看备份文件)
  -k, --check          检查软件包的文件存在(-kk检查文件属性)
  -l, --list           列出被查询软件包的内容
  -m, --foreign        列出没有在同步数据库时找到的已安装软件包 [过滤器]
  -n, --native         列出只在(同步)数据库中的已安装软件包 [过滤]
  -o, --owns <文件>    查询哪个软件包拥有<文件>
  -p, --file <软件包>  从某个软件包而不是数据库查询
  -q, --quiet          在查询或搜索时显示较少的信息
  -r, --root <路径>    指定另外的安装根目录
  -s, --search <regex> 搜寻符合指定字符串的已安装本地的软件包
  -t, --unrequired     列出不被任何软件包(可选)要求的软件包(-tt 忽略可选依赖) [过滤器]
  -u, --upgrades       列出所有可升级的软件包 [过滤器]
  -v, --verbose        显示详细信息
      --arch <架构>    设定另外的架构
      --cachedir <dir> 指定另外的软件包缓存位置
      --color <when>   彩色化输出
      --config <路径>  指定另外的配置文件
      --confirm        总是询问确认
      --debug          显示调试信息
      --disable-download-timeout
                       下载时用宽松的超时
      --gpgdir <路径>  设定 GnuPG 的其他主目录
      --hookdir <目录>  指定另外的钩子位置
      --logfile <路径> 指定另外的日志文件
      --noconfirm      不询问确认
      --sysroot        在一个已挂载的 guest 系统操作(仅 root)
pacman -R
用法:  pacman {-R --remove} [选项] <软件包>
选项:
  -b, --dbpath <路径>  指定另外的数据库位置
  -c, --cascade        删除软件包及所有依赖于此的软件包
  -d, --nodeps         跳过依赖关系的版本检查 (-dd 跳过所有检查)
  -n, --nosave         删除配置文件
  -p, --print          打印目标而不是执行操作
  -r, --root <路径>    指定另外的安装根目录
  -s, --recursive      删除不需要的依赖关系
                       (-ss 包括单独指定安装的依赖关系)
  -u, --unneeded       删除不需要的软件包
  -v, --verbose        显示详细信息
      --arch <架构>    设定另外的架构
      --assume-installed <package=version>
                       添加一个虚拟包用以满足依赖要求
      --cachedir <dir> 指定另外的软件包缓存位置
      --color <when>   彩色化输出
      --config <路径>  指定另外的配置文件
      --confirm        总是询问确认
      --dbonly         仅修改数据库条目,而非软件包文件
      --debug          显示调试信息
      --disable-download-timeout
                       下载时用宽松的超时
      --gpgdir <路径>  设定 GnuPG 的其他主目录
      --hookdir <目录>  指定另外的钩子位置
      --logfile <路径> 指定另外的日志文件
      --noconfirm      不询问确认
      --noprogressbar  下载文件时不显示进度条
      --noscriptlet    不执行安装小脚本
      --print-format  <字符串>
                       指定如何打印目标
      --sysroot        在一个已挂载的 guest 系统操作(仅 root)
pacman -S
用法:  pacman {-S --sync} [选项] [软件包]
选项:
  -b, --dbpath <路径>  指定另外的数据库位置
  -c, --clean          从缓存目录中删除旧软件包 (-cc 清除所有)
  -d, --nodeps         跳过依赖关系的版本检查 (-dd 跳过所有检查)
  -g, --groups         查看某软件包组所属的所有软件包
                       (-gg 查看所有软件包组和所属于它们的软件包)
  -i, --info           查看软件包信息 (-ii 查看更多信息)
  -l, --list <repo>    查看在该软件库中的软件包清单
  -p, --print          打印目标而不是执行操作
  -q, --quiet          在查询或搜索时显示较少的信息
  -r, --root <路径>    指定另外的安装根目录
  -s, --search <正则表达式> 按照指定字符串查询远端软件库
  -u, --sysupgrade     升级所有已安装的软件包 (-uu 可启用降级)
  -v, --verbose        显示详细信息
  -w, --downloadonly   下载但不安装/升级软件包
  -y, --refresh        从服务器下载新的软件包数据库
                       (-yy 强制更新软件包数据库)
      --arch <架构>    设定另外的架构
      --asdeps         作为非单独指定安装的软件包安装
      --asexplicit     作为单独指定安装的软件包安装
      --assume-installed <package=version>
                       添加一个虚拟包用以满足依赖要求
      --cachedir <dir> 指定另外的软件包缓存位置
      --color <when>   彩色化输出
      --config <路径>  指定另外的配置文件
      --confirm        总是询问确认
      --dbonly         仅修改数据库条目,而非软件包文件
      --debug          显示调试信息
      --disable-download-timeout
                       下载时用宽松的超时
      --gpgdir <路径>  设定 GnuPG 的其他主目录
      --hookdir <目录>  指定另外的钩子位置
      --ignore <软件包>   升级时忽略某个软件包 (可多次使用)
      --ignoregroup <软件包组>
                         升级时忽略某个软件包组 (可多次使用)
      --logfile <路径> 指定另外的日志文件
      --needed         不重新安装已是最新的软件包
      --noconfirm      不询问确认
      --noprogressbar  下载文件时不显示进度条
      --noscriptlet    不执行安装小脚本
      --overwrite <path>
                       覆盖冲突的文件(可以使用多次)
      --print-format <字符串>
                       指定如何打印目标
      --sysroot        在一个已挂载的 guest 系统操作(仅 root)
pacman -T
用法:  pacman {-T --deptest} [选项] [软件包]
选项:
  -b, --dbpath <路径>  指定另外的数据库位置
  -r, --root <路径>    指定另外的安装根目录
  -v, --verbose        显示详细信息
      --arch <架构>    设定另外的架构
      --cachedir <dir> 指定另外的软件包缓存位置
      --color <when>   彩色化输出
      --config <路径>  指定另外的配置文件
      --confirm        总是询问确认
      --debug          显示调试信息
      --disable-download-timeout
                       下载时用宽松的超时
      --gpgdir <路径>  设定 GnuPG 的其他主目录
      --hookdir <目录>  指定另外的钩子位置
      --logfile <路径> 指定另外的日志文件
      --noconfirm      不询问确认
      --sysroot        在一个已挂载的 guest 系统操作(仅 root)
pacman -U
用法:  pacman {-U --upgrade} [选项] <文件>
选项:
  -b, --dbpath <路径>  指定另外的数据库位置
  -d, --nodeps         跳过依赖关系的版本检查 (-dd 跳过所有检查)
  -p, --print          打印目标而不是执行操作
  -r, --root <路径>    指定另外的安装根目录
  -v, --verbose        显示详细信息
      --arch <架构>    设定另外的架构
      --asdeps         作为非单独指定安装的软件包安装
      --asexplicit     作为单独指定安装的软件包安装
      --assume-installed <package=version>
                       添加一个虚拟包用以满足依赖要求
      --cachedir <dir> 指定另外的软件包缓存位置
      --color <when>   彩色化输出
      --config <路径>  指定另外的配置文件
      --confirm        总是询问确认
      --dbonly         仅修改数据库条目,而非软件包文件
      --debug          显示调试信息
      --disable-download-timeout
                       下载时用宽松的超时
      --gpgdir <路径>  设定 GnuPG 的其他主目录
      --hookdir <目录>  指定另外的钩子位置
      --ignore <软件包>   升级时忽略某个软件包 (可多次使用)
      --ignoregroup <软件包组>
                         升级时忽略某个软件包组 (可多次使用)
      --logfile <路径> 指定另外的日志文件
      --needed         不重新安装已是最新的软件包
      --noconfirm      不询问确认
      --noprogressbar  下载文件时不显示进度条
      --noscriptlet    不执行安装小脚本
      --overwrite <path>
                       覆盖冲突的文件(可以使用多次)
      --print-format <字符串>
                       指定如何打印目标
      --sysroot        在一个已挂载的 guest 系统操作(仅 root)
更新系统:
pacman -Syu
安装包:
➔ pacman -S 包名:例如,执行 pacman -S firefox 将安装 Firefox。你也可以同时安装多个包,
只需以空格分隔包名即可。
➔ pacman -S $(pacman -Qq | grep -v “$(pacman -Qmq)”) 重新安装你系统中所有的软件包(仓库中已有的)
➔ pacman -Sy 包名:与上面命令不同的是,该命令将在同步包数据库后再执行安装。
➔ pacman -Sv 包名:在显示一些操作信息后执行安装。
➔ pacman -U:安装本地包,其扩展名为 pkg.tar.gz。
➔ pacman -U http://www.example.com/repo/example.pkg.tar.xz 安装一个远程包(不在 pacman 配置的源里面)
删除包:
➔ pacman -R 包名:该命令将只删除包,保留其全部已经安装的依赖关系
➔ pacman -Rs 包名:在删除包的同时,删除其所有没有被其他已安装软件包使用的依赖关系
➔ pacman -Rs $(pacman -Qtdq) 递归删除孤立软件包
➔ pacman -Rsc 包名:在删除包的同时,删除所有依赖这个软件包的程序
➔ pacman -Rd 包名:在删除包时不检查依赖。
搜索包:
➔ pacman -Ss 关键字:在仓库中搜索含关键字的包。
➔ pacman -Qs 关键字: 搜索已安装的包。
➔ pacman -Qi 包名:查看有关包的详尽信息。
➔ pacman -Ql 包名:列出该包的文件。
其它用法:
➔ pacman -Sw package_name 包名:只下载包,不安装。
➔ pacman -Sc:清理未安装的包文件,包文件位于 /var/cache/pacman/pkg/ 目录。
➔ pacman -Scc:清理所有的缓存文件

获取所有软件包:

pacman -Sl
MSYS2 安装所有软件包(跳过已安装的软件包):

!/bin/bash

IFS=$'\n';
for LINE in pacman -Sg; do
pacman -S --needed --noconfirm ${LINE}
done;

不知道为什么,这样不行:

pacman -Sg | xargs pacman -S --need -- noconfirm
这样好像才是对的:

pacman -Sl | awk '{cmd="pacman -S --needed --noconfirm "$2;system(cmd)}'

其实要容易记的话可以自己在bashrc里配置一下alias就好。

再说说包下载的提速。。。
修改一下/etc/pacman.conf,把下面这句的注释去掉:
XferCommand = /usr/bin/wget -c --passive-ftp -c %u

这样就可以使用wget来下载包。当然你也可以尝试powerpill来提高下载速度,因为这个确实不错!

也可以用aria2,在配置文件中加上这句:
XferCommand = /usr/bin/aria2c -s 4 -m 2 -d / -o %o %u

-s后面是连接的服务器数量,-m是线程数。

wiki中提供了另一个脚本,是用aria2下载的。

在wiki中还提供了几个包查询彩色输出的脚本。
安装yapurt的源
[archlinuxfr]
Server = http://repo.archlinux.fr/i686

typescript 源码分析

https://www.cnblogs.com/xuld/p/12180913.html

阅读全文

flutter_gen config

const configDefaultYamlContent = ''' name: UNKNOWN flutter_gen: Optional output: lib/gen/ Optional line_length: 80 Optional parse_metadata: false ...

阅读全文

redis 函数的含义

您提供的函数列表是一个 Redis 客户端 API 的部分实现,通常用于与 Redis 数据库进行交互。以下是这些函数的简要解释,按类别进行分类以帮助理解其功能和用...

阅读全文

欢迎留言