라이브러리를 설치하고 소스에서 컴파일한 후 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
bin
및 include
디렉토리 아래의 파일). make install
공급업체에서 제공한 파일을 변경하거나 교체하는 경우 해당 원본 파일을 복원하려면 특정 패키지를 다시 설치해야 할 수 있습니다.
(대규모 사용자 정의 버전의 소프트웨어를 설치하는 경우 공급업체의 관리 공간 외부(예: 홈 디렉토리)에 있는 소프트웨어 저장소를 사용하는 방법을 배우는 것이 도움이 될 수 있습니다.)
답변2
당신은 당신의 소프트웨어를 사용합니까 autotools
? 그렇다면 표준 대상이 아닌 다른 위치에 설치를 설정할 수 있습니다.
./configure --prefix=/somewhere/else/than/usr/local
최상의 결과를 얻으려면 이 목적으로 처음에 생성된 비어 있는 디렉터리를 사용하십시오. 그러면 설치한 모든 파일이 표시되며 목록을 탐색하고 내부에서 해당 파일을 삭제할 수 있습니다 /usr/local
. 이러한 파일이 많은 경우 스크립트를 통해 이 프로세스를 자동화할 수 있습니다.
그렇지 않은 경우에도 대상이 하드코딩되지 않는 한 소프트웨어 Makefile을 사용하여 비슷한 작업을 수행할 수 있습니다.
autotools
일반적으로 사용 가능 make uninstall
하므로 소프트웨어에서 이를 사용하지 못할 수도 있습니다 autotools
.
일반적으로 로컬 설치는 문제가 될 수 있습니다. 부분적으로는 이미 발견한 이유 때문입니다. 로컬 설치는 추적하기 어렵고 기존 파일을 덮어쓸 수 있습니다. 항상 운영 체제나 배포판에 적합한 바이너리 패키지를 찾으십시오. 로컬로 설치하는 것은 최후의 수단으로 간주되어야 합니다. 간단한 소프트웨어의 경우 바이너리 패키지를 생성하는 것이 어렵지 않으며 이를 수행하는 데 도움이 되는 도구가 있습니다.