有没有办法在多台电脑之间同步我的安装(和删除)?
最好使用 dropbox - 因为我已经在使用它来保持我的文件同步。
我想到了一个别名,用于将参数存储到文件中(一个用于安装,一个用于删除)的命令,以及另一个命令,用于读取文件中的所有条目并执行相应的命令。这是一种现实的方法吗apt-get install
?apt-get remove
答案1
我不知道是否有更好的方法(可能有),但根据你所需的规模,你可以使用 aptitude 的搜索功能来查找部分机器。它允许你搜索与模式匹配的软件包。因此,它会为aptitude search '~i'
你提供所有已安装的软件包
不过,我们需要更进一步。软件包管理器想知道哪些软件包是您直接请求的,哪些软件包只是因为其他软件包而被拉进来的。如果没有这些信息,糟糕的事情就会发生。因此,我们可以扩展该搜索模式以选择未自动安装的软件包:aptitude search '!~M ~i'
搜索功能在Aptitude 的参考手册。
现在,您有了要安装的软件包列表。您可以格式化输出根据需要通过将 -F 标志传递给该命令,例如 -F '%p' 来获取仅包含包名称的列表。
例如,你可以运行它机器 1:
aptitude -F "%c %p" --disable-columns search '!~M ~i' | awk -F " " '{ print "apt-get -y install " $2 }' > aptshell.sh
然后将新创建的aptshell.sh
文件复制到机器 2并使用此命令机器 2在那里运行它:
sudo sh aptshell.sh
然后用原来的机器 2作为新的机器 1和原来的机器 1作为新的机器 2。现在每台机器都拥有了以前只在另一台机器上拥有的所有软件包。
答案2
你可以使用木偶创建配置文件来指定应该安装哪些包,并且您可以使用 Dropbox 而不是 puppetmaster 服务器来同步机器之间的 puppet 配置,再加上一个 cron 作业来定期运行 puppet 并实施任何配置更改。
答案3
这是一个老问题,但既然没人提过,那么你可以用 dpkg 和 cron 做一些事情。设置一个 cron 作业,利用 dpkg 的 get-selections 和 set-selections 命令做一些巧妙的事情。
dpkg --set-selections < ~/Dropbox/selections.dpkg
dpkg --get-selections > ~/Dropbox/selections.dpkg
这不是一个建议的解决方案,您必须想出某种方法来确保在任一计算机上进行更改时selections.dpkg都会得到更新...
答案4
您将无法使用 dropbox 来同步包安装。
Synaptic 确实有办法保存软件包下载列表,但我不确定它是否可以处理“所有曾经安装过的软件包”的情况,而不仅仅是“这些是我这次想要下载的软件包”