我正在编写一个Python系统脚本,当程序被安装/升级/删除时,我需要得到通知。 首先,我想把我的应用程序连接到apt-dbus守护进程。 不幸的是,我还没有find它,而我正在等待其实施(可能需要很长时间),我正在研究另一种方法来做到这一点。 所以我想过pyinotify 。 也许每当文件/var/log/apt/history.log发生变化时我都会收到通知,然后我只是parsing添加的行以获得我所期望的。 你能否build议我另一个安全的方法来做到这一点? 谢谢。
我想删除我从第三方存储库安装的任何软件包。 我最近从PPA存储库安装了一些backports,我怀疑其中一个打破了我的Ubuntu 12.04服务器系统。 有没有什么办法可以列出当前安装的软件包中没有的软件包,或者哪个版本高于当前版本库中的版本?
使用apt-get安装软件包,然后覆盖一些特定于软件包的configuration文件后,无论系统什么时候升级,都会尝试用默认configuration覆盖我的自定义configuration。 有没有更好的方式来特定的自定义configuration,而不被问到是否我想要重置为默认的程序包更新本身?
有没有办法确定软件包的安装或更新date? rpm和dpkg的正确语法是什么?
运行Debian Lenny发行版: 我仍然想知道如何“轻松地”完成一个完整的发行版设置,但是现在我想能够轻松快速地运行重新安装,所以我在rsync备份shell中添加了这样一行代码: # Store the list of installed packages dpkg –get-selections > $PACKAGES 有没有更好的方法使用dpkg或其他工具,以便能够从现有的系统中生成一个自动重新安装文件在失败的情况下?
我试图通过傀儡自动化的设置。 我遵循这里描述的方法,这为我几个包工作,但为了进出口我有一个问题:一个select没有正确应用在一个新的系统。 在设置exim或运行dpkg-reconfigure exim4-config ,我select了如下面截图所示的smarthost选项 将select导出到文件导致以下(剥去一些部分) $ debconf-get-selections | grep exim exim4-config exim4/dc_other_hostnames string my.other.hostname exim4-config exim4/dc_eximconfig_configtype select mail sent by smarthost; received via SMTP or fetchmail exim4-config exim4/no_config boolean true exim4-config exim4/hide_mailname boolean true exim4-config exim4/dc_postmaster string exim4-config exim4/dc_smarthost string my.smarthost.com::port exim4-config exim4/dc_relay_domains string exim4-config exim4/dc_relay_nets string exim4-base exim4/purge_spool boolean false exim4-config exim4/mailname string […]
我试图在Debian机器上从源代码构build一个应用程序; 源代码包括一个“ debian ”目录,其中包含构build软件包所需的所有文件(控制/规则等)。 当我运行dpkg-buildpackage ,它失败了,因为我没有所需的依赖关系。 好。 所以,我运行dpkg-checkbuilddeps ,它给了我一个非常清晰的包依赖关系。 我现在是否希望手动validation该工具的(parsing不友好)输出? 然后自己安装每个软件包? 我觉得有这样高质量的工具,让你只有90%的目标,所以我一定是做错了。 我怎样才能从dpkg-checkbuilddeps到“ 完成 ”? 谢谢。
美好的一天! 当试图恢复一个箱子lenny似乎我已经破了东西。 它在dpkg似乎被破坏之后升级了libc和glib 。 我可以运行apt-get ,但是从dpkg中得到分段错误: # apt-get -f install Reading package lists… Done Building dependency tree… Done 0 upgraded, 0 newly installed, 0 to remove and 316 not upgraded. 9 not fully installed or removed. Need to get 0B of archives. After unpacking 0B of additional disk space will be used. /bin/sh: line 1: […]
在使用守护进程安装软件包时,他们经常在Debian上安装/升级时重新启动该服务。 我有一个守护进程,它有一些只能在运行时设置的选项,没有configuration。 如果Debian软件包在我的控制之下,我会更改init脚本,以便它包含一个函数来设置这些选项,并在(重新)启动服务之后调用它。 由于这个守护进程来自一个远程仓库,我不想build立我自己的deb,所以我需要一个解决scheme,不会改变包中的任何文件(以避免在通过dpkg / apt更新包时出现问题)。 那么,是否有可能在该服务重新启动后以干净的方式执行某些命令或脚本?
首先,获取提供特定虚拟包的(真实)包列表最简单的方法是什么? “aptitude show”似乎将其包含在虚拟包的输出中,但“apt-cache show”不包含。 然而,并不总是能够安装,而且由于本地化的缘故,脚本中的“由……提供”将是脆弱的。 # aptitude show java-sdk No current or candidate version found for java-sdk Package: java-sdk State: not a real package Provided by: default-jdk, gcj-4.4-jdk, gcj-4.5-jdk, gcj-jdk, openjdk-6-jdk, sun-java6-jdk # apt-cache show java-sdk N: Can't select versions from package 'java-sdk' as it is purely virtual N: No packages found 其次,有没有什么合理的方法可以对提供商进行排名,使我有可能select最新的或“最优先的”? 在'java-sdk'的情况下,脚本显然应该使用'default-jdk'来开始; 然而,如果有人没有想到创build,我可以想象sorting的优先级,组件/部分和版本的组合。 […]