-1

我刚刚安装了一个全新的 Linux 发行版,我想跟踪我将安装的所有新软件包。

因此,每次运行时sudo apt-get install packageName,我都想记录特定的包以跟踪我的配置。

然后,对于新安装,我可以编写一个简单的脚本来选择是否要安装旧包。

你们有解决方案吗?也许一些简单的事情是使用所有已安装的包来跟踪文件?但我确信有很多依赖项,而不是基本的依赖项?

这个想法是永久观察 shell 条目并保存匹配的字符串(包名)也许这不是最好的解决方案。

在此先感谢您的帮助。

4

2 回答 2

0

您可以创建一个脚本,作为您的 install 命令的别名,该命令会记住每个新安装的包,可能通过将每个条目附加到某个文件中。该脚本可以选择重新安装软件包,如果选择该选项,它将遍历每个记住的软件包并提示您是否要安装它。如果您备份该脚本和已安装软件包的文件,那么在您的干净机器上,您只需复制这些文件并重新安装所需的软件包。

或者,您可以调查使用 Puppet、Chef、Salt 等配置工具来配置您的系统。这可能是一个更好的方法。

于 2015-04-10T16:11:39.487 回答
0

在跟踪包安装时间方面——你不需要;apt-get已经记录了您需要的所有元数据(具体参见/var/log/apt/history.log)。因此,对于给定的用例,您真的不需要遵循以下建议。


但是,作为问题的一般答案:编写一个包装器。例如,如果它位于为 root 创建的 PATH/usr/local/bin的前面/usr/bin和中间,那么您可以将以下内容放入:/binsudo/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 "$@"
于 2015-04-10T17:05:21.273 回答