Programing

'make install'의 반대말은 무엇입니까, 즉 Linux에서 라이브러리를 어떻게 제거합니까?

lottogame 2020. 2. 27. 22:04
반응형

'make install'의 반대말은 무엇입니까, 즉 Linux에서 라이브러리를 어떻게 제거합니까?


달리는 동안

./configure --prefix=/mingw 

이전에 실행 한 라이브러리의 MinGW / MSYS 시스템에서

'./configure --prefix=/mingw && make && make install' 

이 메시지를 보았습니다.

경고 : Vamp 플러그인 SDK 버전이 이미 설치되어 있습니다. 이전 버전을 먼저 제거하지 않고 새 버전을 설치하면 걱정과 슬픔을 예상 할 수 있습니다. (계속)

이것은 내가 걱정했다. 'make install'과 반대되는 것, 즉 Linux에서 라이브러리가 어떻게 제거됩니까? '깨끗하게'작업을 수행합니까, 아니면 다른 단계가 있습니까?


make clean소스 / 빌드 트리에서 중간 또는 출력 파일을 제거합니다. 그러나 소스 / 빌드 트리에만 영향을줍니다. 파일 시스템의 나머지 부분을 건드리지 않으므로 이전에 설치된 소프트웨어를 제거하지 않습니다.

운이 좋으면 달리기 make uninstall가 작동합니다. 그러나이를 제공하는 것은 라이브러리 작성자에게 달려 있습니다. 어떤 저자는 uninstall목표를 제공하고 다른 저자는 목표를 제공 하지 않습니다.

운이 좋지 않으면 수동으로 제거해야합니다. 실행 make -n install은 소프트웨어 자체를 설치하는 데 필요한 단계를 보여 주지만 실제로는 아무것도하지 않기 때문에 도움이 될 수 있습니다. 그런 다음 해당 단계를 수동으로 되돌릴 수 있습니다.


경우는 sudo make uninstall사용할 수 없습니다 :

데비안 기반 시스템에서는 (또는 이후 *) 대신 자동으로 설치 되는 파일 을 만들 make install수 있습니다 . 그런 다음 시스템 패키지 관리자를 사용하여 제거 할 수 있습니다 (예 : / / / ). Checkinstall 은 RPM과 같은 다른 유형의 패키지 작성도 지원합니다.sudo checkinstall.debaptsynapticaptitudedpkg

http://community.linuxmint.com/tutorial/view/162일부 기본 checkinstall 사용법debian checkinstall package 도 참조하십시오 .


* : 함께 설치 한 후이 내용을 읽으면 make install위의 지침을 따르고 dpkg -r $PACKAGE_NAME_YOU_CHOSEN나중에 할 수 있습니다 .


당신이있는 경우 manifest에 설치된 모든 파일을 나열 파일 make install내가 다른 답변에서이이 명령을 실행할 수를 :

cat install_manifest.txt | xargs echo rm | sh

sudo make install설치 제거에 sudo를 추가해야하는 경우 :

cat install_manifest.txt | xargs echo sudo rm | sh

문제의 프로그램의 makefile / configure 스크립트 / autofoo 마법이 얼마나 잘 적용되는지에 따라 다음이 문제를 해결할 수 있습니다.

make uninstall

문제는 설치 한 버전의 소스 트리에서 설치에 사용한 것과 정확히 동일한 구성으로이를 실행해야한다는 것입니다.


"make install"후 제거하는 방법

방법 # 1 (제거)

1 단계 : 당신은이 단계를 수행해야 당신은 / 삭제 빌드 디렉토리를 변경했을 경우 / 다운로드 및 메이크업을 사용하여 설치합니다 어떤 방법을 정확하게 당신이 전에했던 것처럼 동일한 절차를.

2 단계 : 제거를 시도하십시오.

cd $SOURCE_DIR 
sudo make uninstall

경우 이 작업이 성공하면 모든 작업이 완료된다. 편집증 환자라면 "방법 # 3" 의 단계를 시도하여 make uninstall파일을 놓치지 않았 는지 확인할 수 있습니다.

방법 # 2 (checkinstall-데비안 기반 시스템에만 해당)

프로세스 개요

데비안 기반 시스템 (예 : Ubuntu) .deb에서는라는 도구를 사용하여 패키지를 매우 쉽게 만들 수 있습니다 checkinstall. 그런 다음 .deb 패키지를 설치하면 (데비안 시스템은 패키지의 모든 부분이 실제로 설치되었음을 알게됩니다.) 패키지 관리자가 시스템을 올바르게 정리할 수 있도록 패키지를 제거합니다.

단계별

sudo apt -y install checkinstall
cd $SOURCE_DIR 
sudo checkinstall

이 시점 checkinstall에서 패키지 이름을 묻는 메시지가 나타납니다. 조금 설명적인 내용을 입력하고 잠시 후에 사용하므로 메모 해 두십시오. 또한 무시할 수있는 몇 가지 데이터를 추가하라는 메시지가 표시됩니다. 허용되지 않는 버전에 대해 불평하는 경우 다음과 같은 합리적인 것을 입력하십시오 1.0. 완료되면 설치하고 마지막으로 제거 할 수 있습니다.

sudo dpkg -i $PACKAGE_NAME_YOU_ENTERED 
sudo dpkg -r $PACKAGE_NAME_YOU_ENTERED

방법 # 3 (install_manifest.txt)

파일 install_manifest.txt이 소스 디렉토리에 존재하면 설치시 작성한 모든 단일 파일의 파일 이름이 포함되어야합니다.

먼저 파일 목록과 모드 시간을 확인하십시오.

cd $SOURCE_DIR 
sudo xargs -I{} stat -c "%z %n" "{}" < install_manifest.txt

오류0으로 표시되고 나열된 파일의 모드 시간이 설치 시간 또는 이후에 있어야합니다 . 모두 OK이면 한 번에 삭제할 수 있습니다.

cd $SOURCE_DIR 
mkdir deleted-by-uninstall
sudo xargs -I{} mv -t deleted-by-uninstall "{}" < install_manifest.txt

그러나 Merlyn Morgan-Graham 사용자는이 방법과 관련하여 다음 사항을 명심해야합니다 (여기서 그대로 복사). "다른 패키지에 의해 설치되었을 수도있는 파일에주의하십시오.이 파일을 삭제하면 [...] 다른 꾸러미를 끊어 라 . 그것이 우리가 deleted-by-uninstall디렉토리를 만들고 파일을 삭제하는 대신 파일을 이동 한 이유입니다 .


이 게시물의 99 %가 다른 답변에 존재했습니다. 방금 (쉽게) 따르기 쉬운 방법으로 유용한 모든 것을 수집하고 xarg 인수 인용 및 삭제 된 파일의 백업 유지와 같은 중요한 세부 사항에 특별한주의를 기울이려고했습니다.


make clean 일반적으로 소스 코드가 포함 된 디렉토리의 빌드 된 파일 만 정리하고 설치된 소프트웨어는 거의 만지지 않습니다.

Makefile에는 일반적으로 제거 대상이 포함되어 있지 않습니다. 일반적으로 파일을 설치 한 디렉토리에서 파일을 제거하여 직접 제거해야합니다. 예를 들어, 당신은 프로그램을 구축하고 (사용하여 설치 make install로) /usr/local당신을 통해보고 싶은 것, /usr/local/bin, /usr/local/libexec, /usr/local/share/man등, 그리고 불필요한 파일을 제거합니다. 때로는 Makefile에 uninstall대상이 포함되어 있지만 항상 그런 것은 아닙니다.

물론 일반적으로 Linux 시스템 에서는 소프트웨어를 "자동으로"제거 할 수 있는 패키지 관리자를 사용하여 소프트웨어를 설치합니다 .


"stow"유틸리티는이 문제를 해결하기 위해 설계되었습니다 : http://www.gnu.org/software/stow/


불행히도 표준은 없습니다. 이것은 소스에서 설치하는 데 따르는 위험 중 하나입니다. 일부 Makefile에는 "제거"가 포함되므로

make uninstall

소스 디렉토리에서 작동 할 수 있습니다. 그렇지 않으면 수행 한 작업을 수동으로 취소해야 할 수도 있습니다 make install.

make clean 일반적으로 소스 디렉토리를 정리하여 생성 / 컴파일 된 파일 등을 제거합니다.


"make uninstall"을 지원하는 패키지는 많지 않지만 단계별 설치를 위해 install install DESTDIR = xxx "를 지원하는 패키지가 많이 있습니다.

이를 사용하여 소스에서 직접 설치하는 대신 설치하는 패키지를 작성할 수 있습니다. 나는 checkinstall과 운이 없었지만 fpm 은 잘 작동합니다.

또한 make install을 사용하여 이전에 설치된 패키지를 제거하는 데 도움이 될 수 있습니다 . 설치된 패키지 위에 빌드 된 패키지를 강제 설치 한 다음 제거하면됩니다.

예를 들어, 나는 최근에 protobuf-3.3.0을 다루기 위해 이것을 사용했습니다. RHEL7에서 :

make install DESTDIR=dest
cd dest
fpm -f -s dir -t rpm -n protobuf -v 3.3.0 \
 --vendor "You Not RedHat" \
 --license "Google?" \
 --description "protocol buffers" \
 --rpm-dist el7 \
 -m you@youraddress.com \
 --url "http:/somewhere/where/you/get/the/package/oritssource" \
 --rpm-autoreqprov \
 usr

 sudo rpm -i -f protobuf-3.3.0-1.el7.x86_64.rpm
 sudo rpm -e protobuf-3.3.0      

가능하다면 yum을 rpm보다 선호하십시오.

데비안 9 :

make install DESTDIR=dest
cd dest
fpm -f -s dir -t deb -n protobuf -v 3.3.0 \
-C `pwd` \
--prefix / \
--vendor "You Not Debian" \
--license "$(grep Copyright ../../LICENSE)" \
--description "$(cat README.adoc)" \
--deb-upstream-changelog ../../CHANGES.txt \
 --url "http:/somewhere/where/you/get/the/package/oritssource" \
 usr/local/bin \
 usr/local/lib \
 usr/local/include

 sudo apt install -f *.deb
 sudo apt-get remove protobuf

가능하면 dpkg를 선호하십시오.

나는 또한 여기 에 답변을 게시했습니다


Make그것이 무엇을 알고 무엇을할지 말할 수 있습니다. 다음과 같은 명령을 실행하는 "install"대상이 있다고 가정하십시오.

cp <filelist> <destdir>/

일반적인 규칙에서 다음을 추가하십시오.

uninstall :; MAKEFLAGS= ${MAKE} -j1 -spinf $(word 1,${MAKEFILE_LIST}) install \
              | awk '/^cp /{dest=$NF; for (i=NF; --i>0;) {print dest"/"$i}}' \
              | xargs rm -f

비슷한 속임수가 제네릭을 할 수 있습니다 make clean.

참고 URL : https://stackoverflow.com/questions/1439950/whats-the-opposite-of-make-install-ie-how-do-you-uninstall-a-library-in-li



반응형