如何查看apt-get install
已手动执行的命令的历史记录?
在我看来,所有可用方法都显示了从Ubuntu安装开始就已经安装的所有内容。
apt-get install
自系统安装过程完成以来,如何查看历史记录?
dpkg
在/var/log/dpkg.log*
。
apt-get install
安装软件包的命令时查看所有实例的方法,并且我提供了一种解决方案,除非历史文件已以某些方式更改(例如:条目具有已删除)。
如何查看apt-get install
已手动执行的命令的历史记录?
在我看来,所有可用方法都显示了从Ubuntu安装开始就已经安装的所有内容。
apt-get install
自系统安装过程完成以来,如何查看历史记录?
dpkg
在/var/log/dpkg.log*
。
apt-get install
安装软件包的命令时查看所有实例的方法,并且我提供了一种解决方案,除非历史文件已以某些方式更改(例如:条目具有已删除)。
Answers:
我认为给出的答案在这里由科斯是迄今为止我见过的最好的方式。尽管正如Software Center所使用的apt
,它也会列出所有已安装的内容。
该命令是:
zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline: apt-get install (?!.*--reinstall)\K.*'
zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline:(?=.* install ) \K.*' | sed '1,4d'
:grep -Po '^Commandline:(?=.* install ) \K.*'
只有将筛选apt-get
包含命令install
用开头和结尾的空间,sed '1,4d'
可能是依赖于特定的安装; 我的中的1,4
会删除您要删除的来自Ubiquity的条目的确切数目。让我知道您安装的号码是否相同,这样至少我们有一个基线:|
apt-get -o APT::Status-Fd=4 -o APT::Keep-Fds::=5 -o APT::Keep-Fds::=6 -q -y --no-remove install linux-generic
新命令。他们是无所不在的界线吗?
apt-get
除了只能运行一次的Ubiquity(例如,aptdaemon
条目也将由该命令显示)之外,没有办法与用户运行的命令和某些前端运行的命令区分开。最好的选择仍然是使用该命令,该命令至少要排除“泛在”条目。
只需在终端中键入以下命令即可查看所有安装日志。
grep " install " /var/log/dpkg.log
为了简化@Arronical答案,我最近学到的一个巧妙技巧是,您可以同时使用zcat -qf
txt和txt压缩文件。
zcat /var/log/apt/history.log.*.gz | cat - /var/log/apt/history.log | grep -Po '^Commandline: apt-get install (?!.*--reinstall)\K.*'
变成
zcat -qf /var/log/apt/history.log* | grep -Po '^Commandline: apt-get install (?!.*--reinstall)\K.*'
来自man zcat:
-q --quiet
Suppress all warnings.
-f --force
Force compression or decompression even if the file has multiple links or the corre‐
sponding file already exists, or if the compressed data is read from or written to a
terminal. If the input data is not in a format recognized by gzip, and if the option
--stdout is also given, copy the input data without change to the standard output: let
zcat behave as cat. If -f is not given, and when not running in the background, gzip
prompts to verify whether an existing file should be overwritten.
这是只打印当前安装的脚本 顶级软件包的,其中“顶级软件包”定义为没有其他atp软件包所依赖的atp软件包。如果此类顶级程序是由atp或软件包管理器(如synaptic)安装的,则它们是由用户手动选择的。
#!/bin/sh
NumDaysAgo=18
find /var/lib/dpkg/info -name "*.list" -mtime -$NumDaysAgo \
-exec stat -c $'%y\t%n' {} \; | \
sed -e 's,/var/lib/dpkg/info/,,' -e 's,\.list,,' | \
sort -r | \
while read Date Time Xxx Pkg
do
lncnt=$(apt-cache --installed rdepends $Pkg | wc -l)
if [ $lncnt -eq "2" ]
then echo "$Date $Time $Pkg"
fi
done
echo "JOB COMPLETED: $BASH_SOURCE"
假定用户更可能希望更快地获取新信息并且程序运行缓慢,则以相反的顺序打印软件包。
程序流程:
/var/lib/dpkg/info/
。文件修改时间是安装时间。$Pkg
,调用来apt-cache rdepends $Pkg
请求的反向依赖性$Pkg
。如果没有依赖项,则它是顶级程序包,并打印该程序包信息:日期时间程序包名称 笔记:
apt-cache rdepends $Pkg
旨在供人眼并且在apt的未来版本中可能会更改。dpgk
历史日志文件是不可靠的,因为它们在达到一定容量后将被轮换出来。apt-chache
apt-cache rdepends ...
很慢,大概是因为每个调用都是通过迭代所有依赖项来计算的。因此,以上脚本从最新安装开始,以为用户提供尽可能多的即时满足感。--installed
后面的标志apt-cache
检查dpkg安装的软件包是否也已正确安装。如果用户或其他安装软件绕过apt并直接使用dpkg,则有可能。这种情况还没有经过测试,但是我认为标准输出或错误输出中都会打印一些值得注意的东西/home
包括所述第三方软件的备份目录中设置恢复的linux的基础,则此输出将是合适的。如果要运行,请查看所有已安装的东西:
sudo apt-get install [package]
而且您没有弄乱bash历史记录,也不想查看其他用户(或所有用户)的这种安装类型的历史记录,那么您可以运行:
history | grep "apt-get install"
这应该可以为您带来最相关的结果。
apt-get install
其中的的.bash_history
文件,或删除该文件,则该命令会显示所有的情况下,当你执行用字符串命令apt-get install
对您的用户帐户中它(即使你以root身份运行命令,因此不完全以您的用户帐户身份运行-使用来运行命令sudo
。
如果需要apt-get install
命令历史记录,请使用以下命令:
grep "apt-get install" .bash_history
输出:
ravan@ravan:~$ grep "apt-get install" .bash_history
sudo apt-get install --no-install-recommends ubuntu-mate-core ubuntu-mate-desktop
sudo apt-get install xfce4
sudo apt-get install xfce4.12
sudo apt-get install pgadmin
sudo apt-get install touchegg
sudo apt-get install aptitude
sudo apt-get install aptitude
sudo gedit .bash_history | grep "apt-get install"
sudo apt-get installvim
grep "apt-get install" .bash_history
cat .bash_history | grep "apt-get install"
有关其他信息,请参阅其他信息。
还有在更详细的信息/var/log/apt/
在history.log
与history.log.X.gz
文件和term.log
与term.log.X.gz
文件
如果您只想要apt-get
包含命令的历史记录,则
history | grep apt-get
apt-mark showmanual
显示了同时安装了操作系统的所有软件包,而不仅仅是实际手动安装的软件包。这是一种奇怪的行为方式!
/var/log/apt/history.log
类似文件。您只会获得手动选择和自动选择的软件包的列表。您不会从此答案中给出安装时间,删除时间,升级时间等的任何时间顺序历史记录。
apt -mark showmanual
?我在Ubuntu 16.04 LTS手册页上找不到以下内容apt
:< manpages.ubuntu.com/manpages/xenial/en/man8/apt.8.html >。
请注意,可以在安装前设置一些参数,例如在安装过程中virtualmin脚本所做的设置:apt-get -y install packagename。
因此,如果要捕获所有安装命令,则需要更改正则表达式查询。
zcat -qf /var/log/apt/history.log* | grep -Po '^Commandline: apt-get.*install (?!.*--reinstall)\K.*'