make install을 통해 설치된 라이브러리 제거

make install을 통해 설치된 라이브러리 제거

라이브러리를 설치하고 소스에서 컴파일한 후 make install이것이 /usr/local/나쁜 생각(파일 충돌 등)이라는 것을 발견하고 작업을 되돌리고 싶습니다. 이 패키지는 제공되지 않습니다 make uninstall. 전체 운영 체제를 다시 설치하지 않고도 이것이 가능합니까? 현재 운영 체제 Tumbleweed를 실행 중입니다.

답변1

예, 이를 수행하는 방법에는 여러 가지가 있습니다( OS가 자체 목적으로 사용되는 경우 (예: *BSD가 이를 패키지 또는 포트의 대상으로 사용하는 경우) /usr/local더 복잡할 수 /usr/local있으며 설치로 인해 실제로 공급업체가 중단됩니다. 제공된 파일 있는 공급업체 파일을 대체하지 마십시오 /usr...)

  • /usr/local라이브러리에 의해 설치된 알려진 파일과 수정 시간이 거의 동일한 파일을 드릴다운합니다 .
  • make install어떤 파일이 괴롭힘을 당했는지 기록하는 것을 다시 실행하세요 .strace -o installlog -e trace=file -ff make install

그런 다음 발견된 파일을 옆으로 이동할 수 있습니다(대부분 lib bininclude디렉토리 아래의 파일). make install공급업체에서 제공한 파일을 변경하거나 교체하는 경우 해당 원본 파일을 복원하려면 특정 패키지를 다시 설치해야 할 수 있습니다.

(대규모 사용자 정의 버전의 소프트웨어를 설치하는 경우 공급업체의 관리 공간 외부(예: 홈 디렉토리)에 있는 소프트웨어 저장소를 사용하는 방법을 배우는 것이 도움이 될 수 있습니다.)

답변2

당신은 당신의 소프트웨어를 사용합니까 autotools? 그렇다면 표준 대상이 아닌 다른 위치에 설치를 설정할 수 있습니다.

./configure --prefix=/somewhere/else/than/usr/local

최상의 결과를 얻으려면 이 목적으로 처음에 생성된 비어 있는 디렉터리를 사용하십시오. 그러면 설치한 모든 파일이 표시되며 목록을 탐색하고 내부에서 해당 파일을 삭제할 수 있습니다 /usr/local. 이러한 파일이 많은 경우 스크립트를 통해 이 프로세스를 자동화할 수 있습니다.

그렇지 않은 경우에도 대상이 하드코딩되지 않는 한 소프트웨어 Makefile을 사용하여 비슷한 작업을 수행할 수 있습니다.

autotools일반적으로 사용 가능 make uninstall하므로 소프트웨어에서 이를 사용하지 못할 수도 있습니다 autotools.

일반적으로 로컬 설치는 문제가 될 수 있습니다. 부분적으로는 이미 발견한 이유 때문입니다. 로컬 설치는 추적하기 어렵고 기존 파일을 덮어쓸 수 있습니다. 항상 운영 체제나 배포판에 적합한 바이너리 패키지를 찾으십시오. 로컬로 설치하는 것은 최후의 수단으로 간주되어야 합니다. 간단한 소프트웨어의 경우 바이너리 패키지를 생성하는 것이 어렵지 않으며 이를 수행하는 데 도움이 되는 도구가 있습니다.

관련 정보