-
Notifications
You must be signed in to change notification settings - Fork 148
关于“成为合格的系统管理” 中 pacman 的疑问 #33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
pacman -hQ
用法: 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 -hS
用法: 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 <glob>
overwrite conflicting files (can be used more than once)
--print-format <字符串>
指定如何打印目标
--sysroot 在一个已挂载的 guest 系统操作(仅 root) |
man pacman -y, --refresh |
系统升级首先,感谢各位的倾情解答。对于问题中的第一点给出了来源。 yy的含义中文解释的不太到位,看了英文版的“force a refresh even if up to date”。也就是说即使是最新版的软件也要重新安装吗? $ pacman -hS
-y, --refresh 从服务器下载新的软件包数据库
(-yy 强制更新软件包数据库)
$ export LANG=en
$ pacman -hS
-y, --refresh download fresh package databases from the server
(-yy to force a refresh even if up to date) 实际例子从这个案例中,首先和最后使用了强制刷新软件包数据库( -Syyu),中间使用的是( -Syu)。 $ sudo pacman -Syyu
[sudo] kearney 的密码:
:: 正在同步软件包数据库...
core 134.1 KiB 221 KiB/s 00:01 [####################################] 100%
extra 1566.8 KiB 1284 KiB/s 00:01 [####################################] 100%
community 5.6 MiB 5.60 MiB/s 00:01 [####################################] 100%
multilib 149.6 KiB 4.87 MiB/s 00:00 [####################################] 100%
archlinuxcn 1881.6 KiB 6.34 MiB/s 00:00 [####################################] 100%
:: 正在进行全面系统更新...
警告:google-chrome:忽略软件包升级 (91.0.4472.101-1 => 91.0.4472.114-1)
警告:liburing:忽略软件包升级 (0.7-2 => 2.0-1)
警告:obs-studio:忽略软件包升级 (27.0.0-2 => 27.0.1-1)
警告:qemu:忽略软件包升级 (5.0.0-8 => 6.0.0-3)
警告:qemu-arch-extra:忽略软件包升级 (5.1.0-3 => 6.0.0-3)
正在解析依赖关系...
正在查找软件包冲突...
软件包 (11) drumstick-2.3.0-1 enchant-2.3.0-1 imath-3.0.5-1 iproute2-5.13.0-1 libgit2-1:1.1.1-1
libksba-1.6.0-1 libnm-1.32.2-1 networkmanager-1.32.2-1 pacman-contrib-1.4.0-4 tor-0.4.6.6-1
vmpk-0.8.4-1
下载大小: 13.80 MiB
全部安装大小: 78.44 MiB
净更新大小: 0.14 MiB
:: 进行安装吗? [Y/n] n
$ sudo pacman -Syu
:: 正在同步软件包数据库...
core 已经是最新版本
extra 已经是最新版本
community 已经是最新版本
multilib 已经是最新版本
archlinuxcn 已经是最新版本
:: 正在进行全面系统更新...
警告:google-chrome:忽略软件包升级 (91.0.4472.101-1 => 91.0.4472.114-1)
警告:liburing:忽略软件包升级 (0.7-2 => 2.0-1)
警告:obs-studio:忽略软件包升级 (27.0.0-2 => 27.0.1-1)
警告:qemu:忽略软件包升级 (5.0.0-8 => 6.0.0-3)
警告:qemu-arch-extra:忽略软件包升级 (5.1.0-3 => 6.0.0-3)
正在解析依赖关系...
正在查找软件包冲突...
软件包 (11) drumstick-2.3.0-1 enchant-2.3.0-1 imath-3.0.5-1 iproute2-5.13.0-1 libgit2-1:1.1.1-1
libksba-1.6.0-1 libnm-1.32.2-1 networkmanager-1.32.2-1 pacman-contrib-1.4.0-4 tor-0.4.6.6-1
vmpk-0.8.4-1
下载大小: 13.80 MiB
全部安装大小: 78.44 MiB
净更新大小: 0.14 MiB
:: 进行安装吗? [Y/n] n
$ sudo pacman -Syyu
:: 正在同步软件包数据库...
core 134.1 KiB 552 KiB/s 00:00 [##########################################] 100%
extra 1566.8 KiB 5.15 MiB/s 00:00 [##########################################] 100%
community 5.6 MiB 4.72 MiB/s 00:01 [##########################################] 100%
multilib 149.6 KiB 2.92 MiB/s 00:00 [##########################################] 100%
archlinuxcn 1881.6 KiB 5.57 MiB/s 00:00 [##########################################] 100%
:: 正在进行全面系统更新...
警告:google-chrome:忽略软件包升级 (91.0.4472.101-1 => 91.0.4472.114-1)
警告:liburing:忽略软件包升级 (0.7-2 => 2.0-1)
警告:obs-studio:忽略软件包升级 (27.0.0-2 => 27.0.1-1)
警告:qemu:忽略软件包升级 (5.0.0-8 => 6.0.0-3)
警告:qemu-arch-extra:忽略软件包升级 (5.1.0-3 => 6.0.0-3)
正在解析依赖关系...
正在查找软件包冲突...
软件包 (11) drumstick-2.3.0-1 enchant-2.3.0-1 imath-3.0.5-1 iproute2-5.13.0-1 libgit2-1:1.1.1-1 libksba-1.6.0-1
libnm-1.32.2-1 networkmanager-1.32.2-1 pacman-contrib-1.4.0-4 tor-0.4.6.6-1 vmpk-0.8.4-1
下载大小: 13.80 MiB
全部安装大小: 78.44 MiB
净更新大小: 0.14 MiB
:: 进行安装吗? [Y/n] n |
如果对软件包管理器的工作原理有疑问,请参阅 这个链接,里面清晰介绍了本地软件包数据库(元数据的本地缓存)等内容。 |
该链接中是这样描述的
按照这样理解的话,就是更新整个系统时 -Syu 会自动更新数据库(如果不是最新的话),用 -Syyu 只是作者习惯,即使是新的也要更新。 |
@BackMountainDevil |
Q&A 中的第一点升级系统 Syu 中加个了个 y 指的是强制刷新软件哭,第二点 删除孤立软件包 并没有对此做出解释,个人认为这个命令容易让人以为这些包是卸载的时候落下的而进行删除 |
在成为合格的系统管理员中:
pacman -Syyu
pacman -Rs $(pacman -Qtdq)
升级系统
在英文 wiki 系统升级 中,升级部分并没有提到,而是说使用
pacman -Syu
。因此对于文中所写的 -Syyu 还望能给出来源。删除孤立软件包 -
pacman -Rs $(pacman -Qtdq)
这个是我第一次见到,十分感谢打开的我的视界,本着探究的精神尝试了一下,最后的结果表面,即使是孤立的软件包,在删除前还是应该审慎。
pacman -Qtd 和 pacman -Qtdq 差了一个q,亲自尝试了发现输出差别是后者不会输出版本号。
第一个可能一时无法发现,或许某天用某个软件才发现这玩意不见了。。。 mpv 常用才晓得,还有一些你不知道ta在哪里干啥用的,比如我卸载完发现图标没有显示了。。桌面环境变的僵化了,后发现是某些正在使用的图标集合被删除了。
第二个原因是因为 -R 和 -Rs 的区别。这里我有一个小小的疑问,如果是要删除孤立的软件包,则要连其依赖包也一并删除吗?个人感觉这个命令风险有点高。。。
案例
在这个例子中,我尝试删除孤立的软件包,因此我会先看看有哪些,是真的多,震惊到我自己,其中有些我认识,mpv播放器、deepin*深度的东西(个人不喜欢)、python-sphinx(之前学习sphinx安装的)
mpv 播放器已被卸载
The text was updated successfully, but these errors were encountered: