【发布时间】:2011-10-25 17:30:52
【问题描述】:
我需要使用命令和/或脚本来卸载最近安装的应用程序 deb 。在这种情况下,我不能使用 apt-get ,而是使用 dpkg --purge 或类似的东西,例如 dpkg --remove (最近安装的应用程序),但不提供应用程序的名称。
谢谢
【问题讨论】:
标签: linux ubuntu debian deb dpkg
我需要使用命令和/或脚本来卸载最近安装的应用程序 deb 。在这种情况下,我不能使用 apt-get ,而是使用 dpkg --purge 或类似的东西,例如 dpkg --remove (最近安装的应用程序),但不提供应用程序的名称。
谢谢
【问题讨论】:
标签: linux ubuntu debian deb dpkg
ls -tl /var/lib/dpkg/info/*.list | head -n 1 | awk '{print $8}' | xargs -n1 basename | sed -e "s/.list//"
ls -tl /var/lib/dpkg/info/*.list : 给你按日期排序的包列表
head -n 1 : 给你第一个项目
awk '{print $8}' :为您提供完整路径文件名
xargs -n1 basename : 给出文件名,比如 curl.list
sed -e "s/.list//" |给你包名
【讨论】:
ls -tl /var/lib/dpkg/info/*.list | head -n 1 | awk '{print $8}' | xargs -n1 basename | sed -e "s/.list//" echo $LAST_PACKAGE 现在你有了一个变量。
awk 可以做head 和basename 可以删除后缀,但如果没有ls 的-l 选项,则不需要awk。最后一条评论中的语法是错误的,可能是因为标记吃掉了反引号。试试LAST_PACKAGE=$(ls -t /var/lib/dpkg/info/*.list | sed -e 's%.*/%%' -e 's%\.list$%%' -ep -eq); echo $LAST_PACKAGE
查找最后安装的包相对简单。这是 /var/lib/pkg/info 中的最新条目。
但是,卸载它不一定会将系统恢复到之前的状态。
安装一个包也会安装它的所有依赖项。因此,要真正撤消安装,您还需要撤消这些依赖项。您可以看到“libfoo”与“appbar”几乎同时更新。但是,信息文件不会告诉您之前的状态是不是“libfoo”,还是只是旧版本的“libfoo”。
【讨论】: