【问题标题】:How to remove a broken installation of glibc如何删除损坏的 glibc 安装
【发布时间】:2015-10-11 21:07:32
【问题描述】:

我刚刚尝试将glibc 版本2.19 安装到我的计算机上,如下所示:

1) 我用

克隆了glibc git repo
$ cd ~
$ git clone git://sourceware.org/git/glibc.git

2) 我签出了2.19 的版本

$ git co tags/glibc-2.19

3) 我在我的主目录中创建了一个目录objdir,并在那里构建了安装

$ cd ~/objdir
$ ~/glibc/configure --prefix=$HOME
$ make

4) 我用

测试了make
$ make check

这给了我一个错误,但是我通过 Google 搜索找到的一些网页告诉我这个特定的错误并不是什么大问题。 (我希望我能记住错误和网页是什么,但我不记得了,而且我使用我现在无法访问的计算机找到了该网页,所以它不在我现在正在输入的网络历史记录中.)

5) 我尝试用

安装glibc
$ make install

这就是我疯狂的地方。安装中途失败,现在使用损坏的glibc,我的用户帐户完全停止工作。

幸运的是,我的系统管理员能够移动我的.bashrc——它指向我的主目录下损坏的glibc——并将我恢复为默认的.bashrc。这样我就可以再次登录我的帐户并做一些事情了。

我的问题是,我应该怎么做才能完全删除位于我的主目录下的 glibc 的损坏安装?

【问题讨论】:

    标签: linux installation makefile gnu glibc


    【解决方案1】:

    我应该怎么做才能完全删除驻留在我的主目录下的 glibc 的损坏安装

    cd && ls -lrt
    

    将显示已安装的文件和目录。可能你有include/lib/(或lib64/)、etc/,可能还有更多。只需删除这些目录,就可以了。

    您可能还想阅读this answer

    更新:

    该命令显示了我的主目录中的所有目录,其中有很多。

    它按时间顺序(最新最后)列出它们,因此最近修改的所有文件都在底部。这些是您要删除的。

    鉴于我已经在我的主目录中安装了 glibc 以外的东西

    我希望你现在意识到将 anything 安装到你的主目录是一个坏主意(TM)。

    假设您在失败的 glibc 安装之后没有安装任何东西,并且失败的 glibc 安装发生在最近 3 天内,以下命令可能会产生令人满意的结果:

    find include lib etc -mtime -3 | egrep -v '^(include|etc|lib)$' |
      tee /tmp/to-delete
    

    现在检查 /tmp/to-delete 是否有任何您不想删除的文件(如果我的假设成立,则不应该有任何此类文件)。

    最后,删除它们:

    cat /tmp/to-delete | xargs rm -rf 
    

    更新2:

    不幸的是,我认为您的“最后 3 天”启发式方法在这里行不通。我昨天安装了一堆 C 库——MPFC、GMP、MPC 和 glibc——我完全不清楚哪些文件是 glibc 的一部分而不是其他文件。

    那好吧。您要做的是找到属于 glibc 安装一部分的文件列表。你可以这样做:

    cd glibc-2.19-src; mkdir build;
    cd build; ../configure --prefix `pwd`/../install
    make -j12 all && make install
    

    您现在在glibc-2.19-src/install 中有一个“干净安装”的目录。您可以在那里获取文件列表:

    cd ../install; find . -type f > /tmp/to-delete
    

    终于可以清理了:

    cd; cat /tmp/to-delete | xargs rm -f
    

    这可能仍然会留下一些空目录,但这通常没什么大不了的。如果您也想删除它们:

    cd ~/glibc-2.19-src/install
    find . -type d > /tmp/dirs-to-delete
    cd; cat /tmp/dirs-to-delete | xargs rm 2>/dev/null
    

    (最后一个命令将无法删除任何非空目录,这正是您想要的。)

    【讨论】:

    • 该命令向我显示了我的主目录中的所有目录,其中有很多。 includelibetc 存在,但是,考虑到我已经在我的主目录中安装了除 glibc 之外的东西,我猜这些目录不仅仅包含与 glibc 相关的东西。如果是这种情况,我不想删除其中的所有内容。有什么建议吗?
    • 谢谢,这应该让我继续前进。有一点要狡辩:你说,“在你的主目录中安装任何东西都是一个坏主意。”什么?那是疯话。我不是这个系统的管理员。我无法在全球范围内安装东西。我可以安装东西的唯一地方是我的主目录。
    • 另外,我不知道你为什么说你提供的没有解释的命令“当然”显示了我的主目录中的所有目录。它这样做并不明显。该命令不称为“hey-show-me-the-directories-in-my-home-directory”。我想我应该研究过这个命令,但最好在答案中链接到它的手册页。
    • 我还要指出,如果我能够在全球范围内安装 glibc,并且如果我这样做了,我现在的麻烦会比现在大得多。
    • @dbliss “这太疯狂了”——不,不是。不要永远$HOME 中安装任何东西。安装到$HOME/glibc-2.19-install$HOME/foobar-install等。你做到了吗,删除就像rm -rf glibc-2.19-install一样简单。
    猜你喜欢
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 2014-01-17
    相关资源
    最近更新 更多