设置
我运行 Debian Squeeze 主机,用它来构建多语言项目(python、java、php……)并自动生成自定义包(debian 和 RPM)(通过 jenkins)
问题
这些 Debian 软件包的目标发行版是 Etch、Lenny 和 Squeeze。但我们的项目有一些本机依赖项,只能通过DebianRelease + 1
存储库(即Lenny + 1 == Squeeze
)获得Squeeze + 1 == Wheezy
。例如,我们需要jetty
Lenny 中的 Squeeze 软件包,以及cyrus-imapd-2.4
Squeeze 中的 Wheezy 软件包。一些其他信息:
我们可以通过将 DebianRelease + 1 软件包镜像到我们自己的存储库来简单地“手动反向移植”某些软件包。例如,
jetty
来自 Squeeze 的软件包可以在 Lenny 上正常运行,因为它不需要大量额外的依赖项但是我们确实需要重建一些软件包。例如,Wheezy 的 cyrus-imapd-2.4 对 Squeeze 有很多未满足的依赖关系。因此我们需要在 Squeeze 中重建它,然后将其上传到我们的存储库。
问题
我需要一种简单的方法来了解这些额外软件包是否有任何更新(“常规”和“安全”更新)。我可以编写一个每周运行一次的简单脚本,从文件中获取一些参数,并生成更新报告。假设文件如下所示:
jetty:squeeze
cyrus-imapd-2.4:wheezy
该脚本应以普通用户身份运行,以免弄乱系统 apt 配置并发出适当的命令来生成该报告。
Debian 是否有一些内置apt-*
命令/选项专门用于解决此类问题,我可以使用它们来编写此脚本?如果没有,有人能想出另一个干净的解决方案来实现我的需要吗?
答案1
是的。我使用 apt-show-versions 来实现这一点。安装非常简单:
# apt-get install apt-show-versions
在我的 /etc/apt/apt.conf 中我有:
APT::Default-Release "unstable";
在 /e/a/sources.list 中我有一些不稳定、实验性的以及有时其他临时存储库(例如旧的 emacs-snapshot 档案)的条目。
下面是一个带有实验性最新包的 asv 示例:
# apt-show-versions -a xmonad
xmonad 0.10.1~darcs20120707-1 install ok installed
xmonad 0.10-4+b2 unstable 192.168.10.1:3142
xmonad 0.10.1~darcs20120707-1 experimental 192.168.10.1:3142
xmonad/experimental uptodate 0.10.1~darcs20120707-1
下面是一个不稳定且实验性的软件包的例子,但我只有不稳定的版本:
# apt-show-versions -a zsh
zsh 4.3.17-1 install ok installed
zsh 4.3.17-1 unstable 192.168.10.1:3142
zsh 5.0.0-2 experimental 192.168.10.1:3142
zsh/unstable uptodate 4.3.17-1
我可以使用 apt-show-versions 来查看实验中是否有升级:
# apt-show-versions |grep manually| head
autogen/experimental *manually* upgradeable from 1:5.16-2 to 1:5.16.2-2
iproute/experimental *manually* upgradeable from 20121001-1 to 20121001-2
iproute-doc/experimental *manually* upgradeable from 20121001-1 to 20121001-2
它也很好,因为它会向你显示任何存储库中不再可用的软件包:
#apt-show-versions |grep -v uptodate |grep "No available"
brscan2 0.2.5-1 installed: No available version in archive
dfc-depends 1.0 installed: No available version in archive
google-chrome-unstable 24.0.1297.0-r162078 installed: No available version in archive