问题描述
有没有人知道在使用aptitude
(或apt-get
)时是否有一种简单的方法可以找到已安装的软件包列表,按日期排序?
我安装了一堆软件包来尝试新的东西,但它没有用完。我想删除所有这些软件包,以获取一些磁盘空间。
我试过看一下下载的.deb文件列表,但这似乎是一种倒退的方式(虽然它确实有效)。
最佳解决办法
不幸的是,dpkg(包处理程序aptitude工作在上面)并没有专门保存包的安装日期,尽管有添加它的想法。但是,可以通过查看写入目录/var/lib/dpkg/info
的文件的日期戳来找到安装日期。
次佳解决办法
我已将aptitude配置为写入日志(/var/log/aptitude
)。它产生这样的输出;
Aptitude 0.4.11.11: log report
Mon, Feb 9 2009 13:21:28 +0100
IMPORTANT: this log only lists intended actions; actions which fail due to
dpkg problems may not be completed.
Will install 6 packages, and remove 0 packages.
4096B of disk space will be used
===============================================================================
[UPGRADE] apt 0.7.20.1 -> 0.7.20.2
[UPGRADE] apt-utils 0.7.20.1 -> 0.7.20.2
[UPGRADE] base-passwd 3.5.19 -> 3.5.20
[UPGRADE] libgnutls26 2.4.2-5 -> 2.4.2-6
[UPGRADE] libpq5 8.3.5-1 -> 8.3.6-1
[UPGRADE] ucf 3.0015 -> 3.0016
===============================================================================
Log complete.
这显示了aptitude安装的确切日期和包。要配置它,请遵循aptitude参考;
Option:Aptitude::Log
Default:/var/log/aptitude
Description: If this is set to a nonempty string, aptitude will log the package
installations, removals, and upgrades that it performs. If the value of
Aptitude::Log begins with a pipe character (ie, ``|''), the remainder of its
value is used as the name of a command into which the log will be piped: for
instance, |mail -s 'Aptitude install run' root will cause the log to be emailed
to root. To log to multiple files or commands, you may set this option to a list
of log targets.
您将在aptitude手册页中找到指向aptitude参考的链接。
第三种解决办法
有一种简单的方法可以查看所有包的安装日期。只需执行:
grep " install" /var/log/dpkg.log*
因此,您将获得具有确切日期和时间的所有已安装软件包的列表。
感谢您的评论引导我找到解决方案。
第四种办法
我在网上发现了这个。它从dpkg日志文件中创建dpkg的历史记录。
看起来很简单。
function apt-history(){
case "$1" in
install)
cat /var/log/dpkg.log | grep 'install '
;;
upgrade|remove)
cat /var/log/dpkg.log | grep $1
;;
rollback)
cat /var/log/dpkg.log | grep upgrade | \
grep "$2" -A10000000 | \
grep "$3" -B10000000 | \
awk '{print $4"="$5}'
;;
*)
cat /var/log/dpkg.log
;;
esac
}
编辑
我在Ubuntu 8.10 Server上尝试过这个脚本,效果很好。你能提供一些信息吗,你是如何解决问题的?
第五种办法
-
使用dpkg日志
locate dpkg.log | xargs cat {} | grep " install "
-
或者,如果您没有
locate
find /var/log/ -name 'dpkg.log' | xargs cat {} | grep " install "
-
使用
sort
确保基于时间的正确订购locate dpkg.log | xargs cat {} | grep " install " | sort
-
使用
tac
(反向cat
)*,例如获取最新的4个条目locate dpkg.log | xargs cat {} | grep " install " | sort | tac | head -n4
例如,对于最后一个命令,我得到:
2014-10-08 18:56:12 install xorg-server-source:all <none> 2:1.16.1-1
2014-10-08 18:49:34 install libelementary-data:all <none> 0.7.0.55225-1
2014-10-08 18:46:57 install e17:i386 <none> 0.17.6-1
2014-10-08 18:46:56 install libedje-bin:i386 <none> 1.8.6-2.1+b1
第六种办法
您还可以通过检查/var/log/apt/term.log和旧文件term.log.1.gz等来追踪以前的操作。它具有时间戳并在安装期间完成消息的记录。