Code Monkey home page Code Monkey logo

Comments (8)

ice-kylin avatar ice-kylin commented on July 17, 2024 2

-yy 是强制更新软件包数据库,不是软件。你也可以不强制刷新,使用 -Syyu 只是习惯问题而已。

如果对软件包管理器的工作原理有疑问,请参阅 这个链接,里面清晰介绍了本地软件包数据库(元数据的本地缓存)等内容。

from archlinuxtutorial.

ice-kylin avatar ice-kylin commented on July 17, 2024
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)

from archlinuxtutorial.

ice-kylin avatar ice-kylin commented on July 17, 2024
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)

from archlinuxtutorial.

 avatar commented on July 17, 2024

man pacman

-y, --refresh
Download fresh package databases from the server. Use twice to force a refresh even if databases are up to
date.

from archlinuxtutorial.

BackMountainDevil avatar BackMountainDevil commented on July 17, 2024

系统升级

首先,感谢各位的倾情解答。对于问题中的第一点给出了来源。

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)。
可以看到当强制刷新的时候,会重新同步数据库;而使用-Syu则检查两者的数据库一致不一致,一致则不会花时间更新本地数据库,不一致则更新本地数据库(这一点在下面的案例中没有体现)。也就是说,什么情况下才使用强制刷新呢?如果-Syu已经可以达到目的,使用更费力的-Syyu的用意是?这一点随着深入的交流我发现显得更为重要。

$ 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

from archlinuxtutorial.

BackMountainDevil avatar BackMountainDevil commented on July 17, 2024

该链接中是这样描述的

你的系统上的包管理器首先会与元数据进行交互。包管理器在你的系统上创建了一个元数据的本地缓存。当你运行包管理器的更新选项(例如 apt update)时,它会通过引用仓库中的元数据来更新本地元数据缓存。
当你运行软件包管理器的安装命令(例如 apt install package_name)时,软件包管理器会引用这个缓存。如果它在缓存中找到了包的信息,它就会使用互联网连接到相应的仓库,并在你的系统上安装之前先下载包。

按照这样理解的话,就是更新整个系统时 -Syu 会自动更新数据库(如果不是最新的话),用 -Syyu 只是作者习惯,即使是新的也要更新。

from archlinuxtutorial.

 avatar commented on July 17, 2024

@BackMountainDevil
如果没有问题 请关闭issue

from archlinuxtutorial.

BackMountainDevil avatar BackMountainDevil commented on July 17, 2024

Q&A 中的第一点升级系统 Syu 中加个了个 y 指的是强制刷新软件哭,第二点 删除孤立软件包 并没有对此做出解释,个人认为这个命令容易让人以为这些包是卸载的时候落下的而进行删除

from archlinuxtutorial.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.