일부 보호 기능을 테스트하는 동안 문제를 일으키고 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

운영 체제를 다시 설치하여 해결되었습니다. 누구든지 이 문제가 발생하여 해결했다면 방법을 알려주십시오.

관련 정보