在 Linux 中卸载程序

Ale*_*ack 29 linux ubuntu

过去 5 年我一直在使用 Windows 和 Mac OS,现在我正在考虑每天使用 Linux。我已经在虚拟机上安装了 Ubuntu,并试图了解如何将 Linux 用于我的日常工作(作为 js 程序员/网页设计师)。

很抱歉的新手问题,但它有时当我安装一个程序,通过发生在我make configmake install它改变了我的系统的方式,很容易不可逆的。在 Windows 中,当你安装一个程序时,你可以卸载它,希望如果它按原样播放,文件系统或注册等中不会留下程序的痕迹。在 Mac OS 中,你只需删除一个应用程序,就像一个文件。

但在 Linux 中有apt-get,然后有make. 我不太明白如何保持我的 Linux 安装干净整洁。感觉任何新的应用程序安装都可能破坏我的系统。但是 Linux 以非常健壮着称,所以我不明白应用程序安装和卸载如何影响系统。任何人都可以对此有所了解吗?


更新: 安装应用程序时,它的文件可以传播到任何地方(包管理器处理部分问题),但有一个很酷的技巧:使用 Docker安装应用程序并将它们保存在沙箱中,特别是如果你不打算使用它们过于频繁。也可以完全在 Docker“沙箱”中运行像 Firefox 这样的GUI 应用程序

Sai*_*ire 28

安装很少会破坏你的系统(除非你做了一些奇怪的事情,比如混合源代码和二进制文件)。

如果您在 Ubuntu 中使用预编译的二进制文件,那么您可以删除它们而不必担心破坏您的系统,因为二进制文件应该列出运行所需的内容,而您的包管理器将列出依赖该程序的程序供您查看。

当您使用源代码时,您需要更加小心,以免删除一些关键的东西(例如 glib)。从源代码卸载时没有警告或其他任何内容。这意味着您可以完全破坏您的机器。

如果您想卸载使用,apt-get那么您将使用apt-get remove package如前所述。任何依赖该软件包的程序也将被卸载,您将有机会查看它们。

如果你想卸载,那么通常的过程是make uninstall。没有警告(正如我上面所说)。

make config不会改变你的系统,但make install会。

作为初学者,我建议您使用apt-get或用于二进制包的任何发行版。它使事情保持良好和有条理,除非你真的想要它不会破坏你的系统。

希望,这清除了一切。

  • 对于 *traceless* 卸载,您当然会使用带有 `apt-get` 的 `--purge` 选项 (3认同)

Whi*_*bat 17

从理论上讲,make uninstall应该删除make install添加的内容并且您的系统不会累积垃圾。当然,问题是并非所有的 makefile 都是一样的。

有些人可能会忽略这条uninstall规则,让你自己去弄清楚这条install规则做了什么。更糟糕的是,如果安装规则覆盖了一个链接库,愚蠢的uninstall例程可能会破坏其他程序的依赖关系。

源安装的最佳解决方案是使用与系统打包管理器安装的包不同的前缀。Apt 安装文件,/usr/以便/usr/local/为您的源安装使用层次结构。这使得跟踪哪些文件属于哪些软件包和卸载不会破坏系统变得更加容易。

./configure --prefix=/usr/local适用于许多配置脚本。如果没有,您可以手动编辑 Makefile。或者只是手动复制文件。

Apt 和其他打包管理器会跟踪他们已安装的文件及其反向依赖项,以便他们的卸载功能可以安全使用。


VaT*_*aTo 15

我建议您使用apt-get install在 linux 和apt-get remove(package name) 或apt-get purge(package name) 中安装任何包,这不仅会删除您要卸载的主包,还会删除在安装过程中安装的所有相关包或依赖项。

现在,为了保持系统清洁,我建议您使用apt-get clean https://askubuntu.com/questions/144222/how-do-apt-get-clean-and-apt-get-clean-all-difer#144224(这篇文章很有趣)这将删除在安装过程中下载但不再需要的所有文件。

如果您想删除系统中安装的所有依赖项但在卸载时它们没有被删除,另一个很有用的命令是apt-get autoremove.

如果您通过 make 和 make install 安装软件包,您将负责自己卸载它(下载的软件包中可能包含一个 README 文件,告诉您如何操作)以及尝试卸载与其关联的所有依赖项. 这就是为什么总是建议在 Linux 中安装由发行版的包管理器提供的包,如果你这样做,你可以确保你的包已经过足够的测试,可以与你正在使用的发行版(Linux 风格)一起使用并且不太可能破坏您的系统。此外,您可以确保您的软件包会在需要时得到更新,而如果您自己安装它,则您有责任完成所有这些。

我希望这有帮助 :)


Gil*_*il' 11

在 Linux 下管理已安装应用程序的正常方法是使用包管理器。包管理器的选择是区分发行版的主要因素之一。Ubuntu,像 Debian(它是基于它的)一样,使用dpkgAPT;大多数时候,您只需要与 APT 的接口之一进行交互,例如apt-get(命令行)、aptitude(命令行或文本模式)或 Synaptic (GUI)。

包管理器跟踪哪些文件属于哪个已安装程序。就像在 Windows 上一样,程序可以在安装或卸载过程中执行任意代码,但通常表现良好,不会破坏其他程序。此外,(卸载)安装代码是由包维护者编写的,而不是由上游作者编写的(对于主要发行版中的包)。与 Windows 不同,安装、升级和卸载有一个统一的界面:包管理器。您无需搜索卸载程序(如果有),只需单击图形包管理器中的“卸载”图标,或运行apt-get remove PACKAGENAME.

如果您需要“异国情调”软件,您可能需要手动安装它,方法是解压存档或从源代码编译。以可执行程序形式出现的安装程序在 Linux 世界中很少见。运行make install往往在几个目录(扩频每个程序/usr/local/bin/usr/local/man/usr/local/lib等)。为了保持排序,我建议使用“穷人的包管理器”,例如stow。使用 stow,每个包都安装在自己的目录中,该stow实用程序负责创建符号链接,以便包安装的命令位于命令搜索路径等中。有关更多详细信息,请参阅跟踪程序


PSk*_*cik 8

如果可能,您应该尝试使用您的包管理器(apt-get、aptitude、synaptic 或 aptdcon、software-center、mintinstall 等)。使用 make 任务进行安装是非常原始的,不能保证有uninstall对应的,也不能保证与系统的其余部分一起使用(它只是一个绑定到 make 的构建系统的脚本——与经过审查的包不同,make 任务可以包含任何可执行代码,可能是恶意软件)。

如果您没有找到所需软件的打包版本,您可能会发现checkinstall( checkinstall make install) 有帮助。


jth*_*ill 8

几乎每个发行版都有自己选择的包管理器,有几个流行的。pacman、apt、rpm、emerge、...基于 debian 的发行版使用 apt。

该文档看起来令人生畏,但实际上制作 .debs 供本地使用并不是那么困难,只要继续完成任务即可。