我正在编写一个脚本来显示系统上的配置文件与原始包中提供的配置文件之间的差异。除了使用 apt 下载软件包而不是 root 之外,我几乎所有这些都在工作。有没有一种简单的方法可以做到这一点?
编辑:我已经研究了'hacky' wget 脚本类型选项,但我遇到的主要问题是您将如何确定尝试从哪个存储库获取包。它不包含在我可以看到的任何 apt-cache 输出中。
我正在编写一个脚本来显示系统上的配置文件与原始包中提供的配置文件之间的差异。除了使用 apt 下载软件包而不是 root 之外,我几乎所有这些都在工作。有没有一种简单的方法可以做到这一点?
编辑:我已经研究了'hacky' wget 脚本类型选项,但我遇到的主要问题是您将如何确定尝试从哪个存储库获取包。它不包含在我可以看到的任何 apt-cache 输出中。
你可以设置无密码
sudo
吗aptitude --download-only
?或者您可以解析各种 apt 命令的输出并从那里手动下载文件。有用于处理 libapt 的 3rd 方库,例如python-apt简单地
aptitude download
说:dget
做你想要的。从手册页:wget 可用于将包下载到用户可写目录,这可以回答您的问题,除非您的问题中有隐藏的要求来实际安装包。
尝试使用底层的 pkg_apt 库?虽然,它们可能会使您的脚本更加复杂,而且 iirc 是在 perl 中,所以需要您使用它。
存储库的位置位于 /etc/apt/sources.list 和 /etc/apt/sources.list.d/* 中,因此您可以使用它们来计算存储库列表。然后使用 wget 尝试所有这些以获取包的位置。这是蛮力,但会奏效。
比如这个条目 deb http://us.archive.ubuntu.com/ubuntu/jaunty-updates multiverse 变成 wget http://us.archive.ubuntu.com/ubuntu/jaunty-updates/multiverse/i386/packagename