在测试一些保护时做了一个 oupsie 并执行 rm /usr/bin/clang*

在测试一些保护时做了一个 oupsie 并执行 rm /usr/bin/clang*

我删除了叮当声。我尝试使用 apt 卸载 clang,然后重新安装它,但出现此错误:

Setting up clang (1:3.8-33ubuntu3.1) ...
update-alternatives: error: alternative path /usr/bin/clang++ doesn't 
exist
dpkg: error processing package clang (--configure):
 subprocess installed post-installation script returned error exit 
status 2
Errors were encountered while processing:
 clang
E: Sub-process /usr/bin/dpkg returned an error code (1)

我也尝试过使用 apt 删除 llvm 并重新安装它,因为我知道它也应该安装 clang。

我使用的是 Ubuntu 16.04,因为其他版本对我来说存在无法运行的错误。

以下是更多信息:

main@ws001:~$ whereis clang
clang: /usr/bin/clang #this is obviously broken
main@ws001:~$ which clang

apt-cache 依赖于 clang

clang
  Depends: clang-3.8
  Breaks: <clang-3.2>
  Breaks: <clang-3.3>
  Breaks: <clang-3.4>
  Breaks: clang-3.5
  Replaces: clang
  Replaces: <clang-3.2>
  Replaces: <clang-3.3>
  Replaces: <clang-3.4>
  Replaces: clang-3.5

答案1

您可以使用以下标志重新安装软件包--force-overwrite

dpkg -i --force-overwrite /var/cache/apt/archives/clang*

在使用之前查看旧版本的缓存clang*

答案2

问题是 Clang 已经安装但与其他名称链接。

如果该代码给你这样的错误:

cd /var/lib/dpkg/info/
./clang.postinst
update-alternatives: ошибка: альтернативный путь /usr/bin/clang++ не существует

解决方案是编辑 clang.postinst。改变一下:

update-alternatives --quiet \
   --install /usr/bin/c++ \
        c++ \
        /usr/bin/clang++ \
        $prio

update-alternatives --quiet \
    --install /usr/bin/cc \
        cc \
        /usr/bin/clang \
        $prio

对此:

update-alternatives --quiet \
   --install /usr/bin/clang++ \
        clang++ \
        /usr/bin/c++ \
        $prio

update-alternatives --quiet \
    --install /usr/bin/clang \
        clang \
        /usr/bin/cc \
        $prio

运行它并测试 clang:

./clang.postinst

clang
clang: fatal error: no input files
compilation terminated.

答案3

通过重装操作系统解决。如果有人遇到此问题并设法解决它,请告诉我如何解决。

相关内容