いくつかの保護機能のテスト中に問題が発生し、rm /usr/bin/clang* を実行しました。

いくつかの保護機能のテスト中に問題が発生し、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)

私はclangもインストールする必要があることを知っているので、aptを使用してllvmを削除して再インストールしてみました。

他のバージョンには動作しないバグがあったため、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.postinst

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

答え3

オペレーティングシステムを再インストールすることで修正されました。誰もがこの問題が発生して解決した場合は、方法を教えてください。

関連情報