麒麟桌面系统【apt-get –print-uris命令使用】

apt-get --print-uris 是一个非常实用的命令,它可以让你在不实际下载或安装软件包的情况下,获取软件包的下载 URL 及其相关信息(如文件大小、哈希值等)。


1. 基本用法:获取单个软件包的 URL

apt-get --print-uris download <package-name>

示例

apt-get --print-uris download curl

输出

'http://archive.ubuntu.com/ubuntu/pool/main/c/curl/curl_7.81.0-1ubuntu1.14_amd64.deb' curl_7.81.0-1ubuntu1.14_amd64.deb 306836 SHA256:8d4e6f2fbfa4a3e3e6a5a6f2e3c3a1b2c3a1b2c3a1b2c3a1b2c3a1b2c3a1b2
  • 'http://...'.deb 文件的完整下载 URL。
  • curl_7.81.0-1ubuntu1.14_amd64.deb:下载后的文件名。
  • 306836:文件大小(字节)。
  • SHA256:...:文件的哈希校验值。

2. 获取多个软件包的 URL

apt-get --print-uris install <package1> <package2>

示例

apt-get --print-uris install curl wget

输出

'http://archive.ubuntu.com/ubuntu/pool/main/c/curl/curl_7.81.0-1ubuntu1.14_amd64.deb' curl_7.81.0-1ubuntu1.14_amd64.deb 306836 SHA256:8d4e6f2fbfa4a3e3e6a5a6f2e3c3a1b2c3a1b2c3a1b2c3a1b2c3a1b2c3a1b2
'http://archive.ubuntu.com/ubuntu/pool/main/w/wget/wget_1.21.2-2ubuntu1_amd64.deb' wget_1.21.2-2ubuntu1_amd64.deb 350456 SHA256:9d3a1b2c3a1b2c3a1b2c3a1b2c3a1b2c3a1b2c3a1b2c3a1b2c3a1b2c3a1b2
  • 这样可以一次性获取多个软件包的下载 URL。

3. 获取依赖包的 URL(递归查询)

如果你想获取某个软件包 及其所有依赖包 的下载 URL,可以使用:

apt-get --print-uris --yes --reinstall install <package-name>

示例

apt-get --print-uris --yes --reinstall install nginx

输出

'http://archive.ubuntu.com/ubuntu/pool/main/n/nginx/nginx_1.18.0-0ubuntu1_amd64.deb' nginx_1.18.0-0ubuntu1_amd64.deb 1234567 SHA256:...
'http://archive.ubuntu.com/ubuntu/pool/main/libz/libzlib/zlib1g_1.2.11.dfsg-2ubuntu9_amd64.deb' zlib1g_1.2.11.dfsg-2ubuntu9_amd64.deb 56789 SHA256:...
...
  • 这样可以获取 nginx 及其所有依赖包的下载 URL。

4. 仅显示 URL(适合脚本处理)

如果你只需要 URL(不显示文件名、大小、哈希值),可以使用 awk 提取:

apt-get --print-uris download curl | awk -F "'" '{print $2}'

输出

http://archive.ubuntu.com/ubuntu/pool/main/c/curl/curl_7.81.0-1ubuntu1.14_amd64.deb
  • 这样可以方便地在脚本中使用 wgetcurl 下载。

5. 结合 xargs 批量下载

如果你想 批量下载多个软件包,可以结合 xargs 使用:

apt-get --print-uris download curl wget | awk -F "'" '{print $2}' | xargs -I {} wget {}
  • 这样会直接下载 curlwget.deb 文件。

6. 检查软件包是否存在于仓库

如果你想 检查某个软件包是否在仓库中,但不下载,可以:

if apt-get --print-uris download some-package &>/dev/null; then
    echo "Package exists!"
else
    echo "Package not found."
fi
  • 这样可以避免 apt-get install 的交互式提示。

7. 查看软件包的镜像源

如果你想 查看软件包来自哪个镜像源,可以:

apt-get --print-uris download curl | grep -o 'http://[^/]*'

输出

http://archive.ubuntu.com
  • 这样可以知道当前 APT 使用的是哪个镜像站。

总结

用途 命令
获取单个软件包的 URL apt-get --print-uris download <package>
获取多个软件包的 URL apt-get --print-uris install <pkg1> <pkg2>
获取依赖包的 URL apt-get --print-uris --yes --reinstall install <package>
仅提取 URL(适合脚本) apt-get --print-uris ... \| awk -F "'" '{print $2}'
批量下载软件包 apt-get --print-uris ... \| awk -F "'" '{print $2}' \| xargs -I {} wget {}
检查软件包是否存在 if apt-get --print-uris download ... &>/dev/null; then ...
查看镜像源 apt-get --print-uris ... \| grep -o 'http://[^/]*'

这个命令特别适合 系统管理员、开发者、自动化脚本 使用,能让你更灵活地管理软件包! 🚀

发表回复 0

Your email address will not be published.