'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
.deb
apt
synaptic
aptitude
dpkg
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
.
'Programing' 카테고리의 다른 글
CocoaPods를 사용한다면 .gitignore에 무엇이 들어가나요? (0) | 2020.02.27 |
---|---|
부울을 토글하는 방법? (0) | 2020.02.27 |
스프링 : @Component 대 @Bean (0) | 2020.02.27 |
Bash의 삼항 연산자 (? :) (0) | 2020.02.27 |
파이썬에서 문자열에서 숫자를 추출하는 방법은 무엇입니까? (0) | 2020.02.27 |