我刚刚安装了一个全新的 Linux 发行版,我想跟踪我将安装的所有新软件包。
因此,每次运行时sudo apt-get install packageName
,我都想记录特定的包以跟踪我的配置。
然后,对于新安装,我可以编写一个简单的脚本来选择是否要安装旧包。
你们有解决方案吗?也许一些简单的事情是使用所有已安装的包来跟踪文件?但我确信有很多依赖项,而不是基本的依赖项?
这个想法是永久观察 shell 条目并保存匹配的字符串(包名)也许这不是最好的解决方案。
在此先感谢您的帮助。
我刚刚安装了一个全新的 Linux 发行版,我想跟踪我将安装的所有新软件包。
因此,每次运行时sudo apt-get install packageName
,我都想记录特定的包以跟踪我的配置。
然后,对于新安装,我可以编写一个简单的脚本来选择是否要安装旧包。
你们有解决方案吗?也许一些简单的事情是使用所有已安装的包来跟踪文件?但我确信有很多依赖项,而不是基本的依赖项?
这个想法是永久观察 shell 条目并保存匹配的字符串(包名)也许这不是最好的解决方案。
在此先感谢您的帮助。
您可以创建一个脚本,作为您的 install 命令的别名,该命令会记住每个新安装的包,可能通过将每个条目附加到某个文件中。该脚本可以选择重新安装软件包,如果选择该选项,它将遍历每个记住的软件包并提示您是否要安装它。如果您备份该脚本和已安装软件包的文件,那么在您的干净机器上,您只需复制这些文件并重新安装所需的软件包。
或者,您可以调查使用 Puppet、Chef、Salt 等配置工具来配置您的系统。这可能是一个更好的方法。
在跟踪包安装时间方面——你不需要;apt-get
已经记录了您需要的所有元数据(具体参见/var/log/apt/history.log
)。因此,对于给定的用例,您真的不需要遵循以下建议。
但是,作为问题的一般答案:编写一个包装器。例如,如果它位于为 root 创建的 PATH/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 "$@"