如何卸载从源代码安装的git?[关闭]


21

我使用本文安装了git 。现在我要卸载git。怎么做?


1
您是否仍然拥有下载并make install使用的源代码?
Hennes

是的,我有源代码
Mikhail

make make的输出是什么?并非所有的Makefile都具有此选项,但许多文件都有。
Hennes 2012年

1
make:***没有使目标“卸载”的规则。停止。
米哈伊尔(Mikhail)

1
为什么-1?解释
Mikhail 2012年

Answers:


15

我在这里找到了解决方案。

更新了2.11.2012

如果您足够聪明,并且在配置Git时使用了一些非标准的前缀,以便已将其安装在特定的层次结构下(例如/ opt / git下),则只需递归删除该层次结构即可。

如果没有,那么您可以这样:

1)提取与您构建和安装的版本完全相同的源tarball,然后解压缩。

2)在安装位置(前缀,exec-prefix等)方面完全像原始安装一样进行配置;据说您不应该覆盖任何内容。

3)创建一个临时目录以执行安装,如下所示:$ mkdir / var / tmp / git

4)安装Git,并传递适当的DESTDIR变量以使:$ make DESTDIR = / var / tmp / git install Git层次结构最终将在该临时目录下创建。

5)使用创建的层次结构确定要在实际层次结构(“ /”本身)下删除的文件。

最后一步是发生“魔术”的地方,因此需要更多的解释。例如,您可以运行

$ find /var/tmp/git -type f -printf '/%P\n' | xargs -n 10 rm -f

(以root用户身份)确实将第一次误安装所安装的文件删除到root文件系统中。上面的说明使用/ var / tmp / git层次结构来打印找到的文件列表,但是它将其中的“ / var / tmp / git”前缀替换为“ /”,以便将“ / var / tmp / git”输出中的“ / usr / bin / git”将最终列为“ / usr / bin / git”。该列表将通过管道输送到xargs它运行rm 在其上的十个包读取文件名(只减少调用次数rm由一个数量级)。

处理完文件后,运行

$ find /var/tmp/git -type d -printf '/%P\n'

检查已安装目录的列表。这些需要手动处理,因此只需查看生成的列表,然后考虑可以安全地rmdir从系统中选择哪些列表(这些目录将是“ / usr / libexec / git”之类的目录或类似的目录;您可能不想删除“ / usr / share / man / mann”或其他内容(即使为空)。

PS将来永远不要通过运行将任何东西安装到系统中 make install!如今,大多数makefile都不支持“卸载”目标,因为它们习惯于安装到专用的暂存位置进行测试或制作软件包(.rpm,.deb等),然后软件包管理器负责清理。如果需要安装某些软件,请尝试找到一个官方软件包,或者尝试从较新版本的操作系统中向后移植另一个官方软件包(如果有)。作为最后的选择,请尝试使用checkinstall尝试在运行时创建二进制包的工具make install。这很烂,但仍然比光秃秃的要好make install


请展开此处找到的一些详细信息。发生位腐烂,这时答案就变得毫无用处。
sysadmin1138

好的,我更新了我的答案
Mikhail

尊重。它有效
dotlash

摘要:./configuresudo make && sudo make DESTDIR=/var/tmp/git installsudo find /var/tmp/git -type f -printf '/%P\n' | sudo xargs -n 10 rm -f
Vahid

3

我刚刚浏览了2691行的Makefile。确实没有make卸载。德拉特

在这种情况下,解决方法可能是使用该make rpm选项。安装rpm(覆盖所有已安装的文件,该文件应与已安装的文件相同)。然后卸载rpm。

在所有将来的情况下,请构建一个程序包(RPM,yum等)。它使维护变得非常容易。


1
除了通常make install将东西放在前缀中,/usr/local而rpm / deb / your-package-here在这里./configure使用不同的参数运行,因此它们安装的文件以prefix结尾/usr
ptman '11

我是CentOS的新手。我应该运行什么命令?您能解释更多吗
Mikhail

我执行了make rpm命令。接下来我该怎么办?
米哈伊尔(Mikhail)

man rpm或开头'rpm --help。它可能会告诉您使用rpm -i packagename.rpm。但是,最好在伞网请求系统管理员帮助您。我们只能在远处做很多事情。
Hennes
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.