我正在编译一个名为操纵杆所以我安装了一些软件包和依赖项。但现在我不再需要它们了,所以我删除了这些软件包。运行apt-get
显示我有一些自动安装的软件包,不再需要。
但我对 的使用体验并不好apt-get autoremove
。前段时间我卸载 wine 时,它破坏了我的桌面环境。幸运的是,当时我有一个 clonezilla 分区备份,但这次我没有备份。所以我很谨慎。运行apt-get
显示这些包是孤立的
gir1.2-gtk-2.0 libasound2-dev libavahi-client-dev libavahi-common-dev
libcaca-dev libcairo-script-interpreter2 libdbus-1-dev libdrm-dev
libexpat1-dev libfontconfig1-dev libfreetype6-dev libgl1-mesa-dev
libglu1-mesa-dev libharfbuzz-dev libharfbuzz-gobject0 libice-dev
libpcre3-dev libpcrecpp0 libpixman-1-dev libpng12-dev libpthread-stubs0-dev
libslang2-dev libsm-dev libx11-dev libx11-doc libx11-xcb-dev libxau-dev
libxcb-dri2-0-dev libxcb-dri3-dev libxcb-glx0-dev libxcb-present-dev
libxcb-randr0-dev libxcb-render0-dev libxcb-shape0-dev libxcb-shm0-dev
libxcb-sync-dev libxcb-xfixes0-dev libxcb1-dev libxcomposite-dev
libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev
libxft-dev libxi-dev libxinerama-dev libxrandr-dev libxrender-dev
libxshmfence-dev libxxf86vm-dev mesa-common-dev x11proto-composite-dev
x11proto-core-dev x11proto-damage-dev x11proto-dri2-dev x11proto-fixes-dev
x11proto-gl-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev
x11proto-record-dev x11proto-render-dev x11proto-xext-dev
x11proto-xf86vidmode-dev x11proto-xinerama-dev xorg-sgml-doctools xtrans-dev
zlib1g-dev
我不确定是否应该运行apt-get autoremove
。我搜索了与每个包相关的详细信息,以便了解需要哪些包,但它们似乎都很重要,例如
gir1.2-gtk-2.0
我安装了 Cinnamon、GNOME 和 Unity,我觉得apt-get autoremove
可能会破坏某些东西。任何帮助都将不胜感激。
谢谢阅读。
答案1
正如其他人提到的,autoremove
应该注意安全,不过话又说回来,你说你有不好的经历,而且我也记得autoremove
删除了一些不应该删除的东西。
似乎autoremove
某些元软件包可能会出现问题。假设您安装了gnome
整个 gnome-desktop 的元软件包(或者在设置系统时安装了元软件包),其中还包括诸如evolution
和许多游戏之类的程序,您可能想要删除它们,因为您正在使用thunderbird
并且不想拥有这些游戏等。这要求您也删除gnome
元软件包,因为它依赖于所有这些软件包。但这将使所有其他作为依赖项安装的软件包成为gnome
“自动可删除”,例如gnome-shell
,如果您想继续使用该桌面,您很可能希望保留这些软件包。
因此,检查建议自动删除的软件包始终是个好主意。如果您使用的是图形软件包管理器(如)synaptic
,则可以轻松执行此操作并取消选中要保留的软件包的“自动安装”标志(如上gnome-shell
例所示)。这还将删除所有软件包那些依赖于自动删除列表,因此您可能只需要“修复”其中的几个,而不是全部。
尽管如此,应该不会删除对您的系统真正重要的任何内容,因此即使您不小心删除了桌面,您仍然可以启动并登录到您的系统并使用命令行恢复这些更改。
更新:最近,在进行 dist 升级(Debian)后,autoremove
实际上删除了一些与硬盘加密相关的内容(仍然不确定具体是什么,可能与所述问题有关这里),导致我的系统无法解密硬盘并使用最新内核启动。幸运的是,它仍然可以使用仍安装的旧内核,我可以重新安装之前自动删除的所有内容,否则我的系统就会被破坏,包括我的数据。
apt
我认为和朋友中没有“撤消上次更改”选项。synaptic
有一个菜单选项可以查看上次更改(文件 -> 历史记录;似乎只显示一些日志文件,尽管我找不到日志本身;另外,我不确定这是否只列出了在 Synaptic 中所做的更改,还是也列出了在等等中所做的更改apt
),所以我从这些日志中复制了自上次成功重启(幸运的是,我每天都重启)以来我自动删除的所有软件包的名称,然后重新安装它们,然后重启。
答案2
令人惊讶的是,还没有人提到--dry-run
和等效选项:
来自apt-get
手册页:
-s、--模拟、--just-print、--dry-run、--recon、--no-act
不采取任何行动。模拟将要发生的但实际上不会改变系统的事件。配置项:APT::Get::Simulate。Simulate
打印出一系列行,每行代表一个 rpm 操作:配置 (Conf)、删除 (Remv)、解包 (Inst)。
此选项似乎适用于apt
和apt-get
命令。
示例输出:
sudo apt-get autoremove --dry-run
[...]
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
linux-headers-5.8.0-36-generic linux-hwe-5.8-headers-5.8.0-36 linux-image-5.8.0-36-generic
linux-modules-5.8.0-36-generic linux-modules-extra-5.8.0-36-generic
0 upgraded, 0 newly installed, 5 to remove and 13 not upgraded.
Remv linux-headers-5.8.0-36-generic [5.8.0-36.40~20.04.1]
Remv linux-hwe-5.8-headers-5.8.0-36 [5.8.0-36.40~20.04.1]
Remv linux-modules-extra-5.8.0-36-generic [5.8.0-36.40~20.04.1]
Remv linux-image-5.8.0-36-generic [5.8.0-36.40~20.04.1]
Remv linux-modules-5.8.0-36-generic [5.8.0-36.40~20.04.1]
因此,我建议人们可以选择运行autoremove
该--dry-run
选项,冷静地研究输出,并据此决定做什么。
额外的观察是:如果定期运行自动移除,那么可自动移除的软件包就不会堆积起来,因此监督和评估每次试运行的输出就变得更加可行。
答案3
apt-get remove 绝对可以毁掉你的系统。我遇到过两次这种情况,而且我可以重复(在基于 Debian 的发行版上);两次都是在 vbox 上,所以没什么大不了的。我亲眼看着它删除了我整个 XFCE 安装。
答案4
运行此程序应该非常安全,sudo apt-get autoremove
它应该只删除不再使用或不再需要的软件包。如果它是一个必要的软件包,删除后会“破坏”您的系统,则不应将其删除。