麒麟桌面系统【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
- 这样可以方便地在脚本中使用
wget或curl下载。
5. 结合 xargs 批量下载
如果你想 批量下载多个软件包,可以结合 xargs 使用:
apt-get --print-uris download curl wget | awk -F "'" '{print $2}' | xargs -I {} wget {}
- 这样会直接下载
curl和wget的.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://[^/]*' |
这个命令特别适合 系统管理员、开发者、自动化脚本 使用,能让你更灵活地管理软件包! 🚀