我刚安装了一个全新的Linux发行版,我想跟踪我要安装的所有新软件包。
因此,每次运行sudo apt-get install packageName
时,我都想记录特定的包以跟踪我的配置。
然后,对于新安装,我可以编写一个简单的脚本来选择是否要安装旧包。
你们有没有解决方案?也许简单的事情就是用所有已安装的软件包跟踪文件?但我确信有很多依赖,而不是基本的?
我们的想法是永久监视shell条目并保存匹配的字符串(包名)也许这不是最好的解决方案。
提前感谢您的帮助。
答案 0 :(得分:0)
您可以创建用作安装命令别名的脚本,该脚本会记住每个新安装的软件包,可能是通过将每个条目附加到某个文件的某个位置。此脚本可以选择重新安装包,如果选择,将迭代每个记住的包并提示您是否要安装它。如果您在干净的计算机上备份该脚本和已安装软件包的文件,则只需复制这些文件并重新安装所需的软件包。
或者,您可以使用配置工具(如Puppet,Chef,Salt等)来调查您的系统。这可能是一种更好的方法。
答案 1 :(得分:0)
在跟踪包安装时间方面 - 您不需要; apt-get
already records all the metadata you need(特别参见/var/log/apt/history.log
)。因此,您真的不需要遵循以下针对用例的建议。
但是,作为问题的一般答案:写一个包装器。如果/usr/local/bin
位于/usr/bin
和/bin
前面sudo
为根创建的路径中,那么您可以将以下内容放在/usr/local/bin/apt-get
中:
#!/bin/bash
# ^-- using /bin/bash rather than /bin/sh enables printf %q
# Shell-quote the command to unambiguously present arguments even if it contains
# newlines, spaces, etc.
printf -v cmd '%q ' "${0##*/}" "$@"
# Trim the trailing space
cmd=${cmd%" "}
# Log that command
printf '%s\n' "$cmd" >>/var/log/apt-get-commands
# ...and run the real command.
exec /usr/bin/apt-get "$@"