CentOS7 python3 삭제 - CentOS7 python3 sagje

리눅스에서 yum으로 패키지를 설치할 수 있습니다. 반대로 삭제도 물론 가능한데요

Centos7 기반에서 패키지를 삭제하는 방법에 대해서 알아보겠습니다.

CentOS7 python3 삭제 - CentOS7 python3 sagje

패키지 설치확인

yum list installed 패키지이름

패키지 삭제

CentOS7 python3 삭제 - CentOS7 python3 sagje

yum에서 remove 옵션을 이용해서 패키지를 삭제할 수 있습니다.

yum remove ntp
remove도 질문을 받지 않으려면 앞에 -y 옵션을 붙여 사용할 수 있습니다.

CentOS7 python3 삭제 - CentOS7 python3 sagje

yum list installed ntp

패키지 확인 명령어를 이용해서 패키지가 삭제된 것을 확인하실 수 있습니다.

공지 목록

공지글

글 제목작성일

공지 [규칙] 2018.10.7. 기호 표시 의미

2018. 10. 7.

공지 [규칙] 2018.6.13. 글 제목, 말머리

2018. 6. 14.

[개인] 2018.11.24. make install 로 설치한 프로그램 삭제 방법 정리

CentOS7 python3 삭제 - CentOS7 python3 sagje
날랜돌이2018. 11. 24. 12:30

<2018.11.24.> Linux, 리눅스, CentOS

<2020.7.1.>

https://kldp.org/node/24917

소스 코드를 통하여(make install) 프로그램 설치 한 경우에는 yum 명령어나 rpm 커맨드를 이용하여 패키지 설치한 것이 아니기 때문에 yum list installed 또는 rpm -q 에 의하여 나타나지 않는다. 그런데 프로그램을 설치하면 실행 바이너리 파일 말고 문서, 라이브러리 등이 주렁 주렁 딸려 오는 경우가 태반이다. 그래서 프로그램 삭제할 때는 이런 파일들도 깔끔히 제거해야 하는데 마땅한 방법이 없을까 하여 다음과 같이 네 가지 방법을 알아 보았다.

- make uninstall

- diff 커맨드를 이용하여 손수 직접 삭제하는 방법

- stow utility 이용한 프로그램 관리 - 추천

- 미리 작업을 해놓지 못한 경우 shell script를 이용한 삭제

1. make uninstall

소스 코드 자체에서 make uninstall을 지원하는 경우에는 make uninstall 커맨드를 이용하여 깔끔하게 제거 가능.

따라서 삭제를 대비하여 설치할 때 복제해 온 디렉터리(ex. ~/vim/src/)에서 uninstall 기능을 하는 파일은 남겨주어야 한다(그 외에 컴파일 한 나머지 파일은 지워줘도 됨 make distclean).

wget 등으로 압축파일을 받아서 설치한 경우에는 소스 폴더는 지우고 압축 파일은 그대로 두면 된다.

나중에 제거하고 싶을 때 ./configure만 한 다음 make uninstall 하면 끝! (make uninstall을 자체적으로 지원하는 경우)

2. diff 커맨드를 이용하여 손수 직접 삭제하는 방법

이 방법은 프로그램을 설치하기 전에 어떤 파일들이 있었는지 기록해 놓아야 한다.

autoRecord_src.sh

# <2018.11.11.> <11.26.> date=`date "+%Y%m%d"` find /* > "diff_src_$date.txt"

# <2018.11.11.> <11.26.> date=`date "+%Y%m%d"` find /* > "diff_dst_$date.txt"

# <2018.11.11.> <11.24.> <11.26.> date=`date "+%Y%m%d"` diff "diff_src_$2.txt" "diff_dst_$3.txt" | grep -vE "proc|[0-9]+[acd][0-9]+" \ > "$1_res_$date.txt" echo -e "\n\n# hereinafter src of diff result is printed\n\n" \ >> "$1_res_$date.txt" diff "diff_src_$2.txt" "diff_dst_$3.txt" >> "$1_res_$date.txt"

이런식으로 shell script를 작성하여 보았다.

프로그램 설치 전에 autoRecord_src.sh 파일을 실행하여 존재하는 모든 파일명과 경로를 diff_src_[기록 날짜].txt 파일에 기록하고, 프로그램을 설치하고 나서는 autoRecord_dst.sh 를 실행하여 변경 내용을 diff_dst_[기록 날짜].txt 파일에 기록되게 한다.

이후 autoDiff.sh를 실행하여 비교 결과를 py_res_[기록 날짜].txt 에 기록되게 한다. diff 결과에 proc 관련된 파일들이 무진장 섞여 나오므로 제외하는 스크립트를 작성해 보았다. 그리고 혹시 몰라서 hereinafter src of diff result is printed 문구 이하로는 diff 결과 원본이 출력되게 해 놓았다.

#> ./autoDiff.sh [program name] [src date] [dst date]

ex)

if 다음과 같은 파일이 있다면 (by autoRecord_src.sh 및 autoRecord_dst.sh)

diff_src_20181111.txt

diff_dst_20181112.txt

#> ./autoDiff.sh py 20181111 20181112

-> 현재 작업 디렉터리에 py_res_[today date].txt

head -[num] py_res_[today_date].txt | grep ">" | grep -iE "*python*3\.5*"

~> 여기서 num은 vi 에디터로 파일을 열어서 hereinafter 를 검색하여 해당 줄 수를 알아내고, 그 줄 수를 입력하면 됨.

생성된 파일들만 왕창 정리되서 출력되면 직접 찾아서 지워주면 된다. 또는 아래 4번 방법처럼 또 shell script 작성하여 해결.

3. stow utility 이용한 프로그램 관리 - 추천

(1) stow 설치

http://www.gnu.org/software/stow/

#> wget http://ftp.gnu.org/gnu/stow/stow-latest.tar.bz2 #> yum install perl-Test-Output.noarch

#> tar xvfj stow-latest.tar.bz2 #> cd stow-latest #> ./configure #> make #> make install

(2) stow를 이용한 다른 package 설치

Basically, in this typical usage, you install locally built packages to /usr/local/stow/${PKGNAME}-{PKGVERSION} and then from /usr/local/stow/ you run # stow ${PKGNAME}-${PKGVERSION} and the program generates symbolic links to all the programs' files into the appropriate places under /usr/local/.

Then, when you uninstall a program via Stow, you don't have to worry about any stray files that you or a provide Makefile may have missed.

http://brandon.invergo.net/news/2012-05-26-using-gnu-stow-to-manage-your-dotfiles.html

소스 코드 설치 환경 체크하기 위하여 ./configure 할 때에 ./configure --prefix="/usr/local/stow/${PKGNAME}-${PKGVERSION}" [other options...] 후 make, make install 해 준다. 그리고 나서 # stow ${PKGNAME}-${PKGVERSION} 커맨드를 실행한다(stow 실행파일에 대하여 환경변수 경로 설정 해놓지 않았다면 해당 패키지 설치 경로로 이동한 뒤 본 명령어 실행). 그러면 stow 프로그램은 설치한 프로그램의 필요한 symbolic link 파일들을 /usr/local/ 디렉터리 이하의 적절한 곳(ex. /usr/local/bin, /usr/local/share 등)에 만들어 준다.

#> ./configure --prefix="/usr/local/stow/vim-8.2" #> make #> make install #> cd /usr/local/stow #> stow vim-8.2

언인스톨 하는 경우 # stow --delete ${PKGNAME}-${PKGVERSION} 해 주면 /usr/local/stow/${PKGNAME}-${PKGVERSION}/ 을 원본으로 하여 생성된 symbolic link 파일들을 깔끔히 삭제해 준다. -> 이후 /usr/local/stow/${PKGNAME}-${PKGVERSION}/ 만 삭제해주면 됨.

#> stow --delete /usr/local/stow/vim-8.2 #> rm -rf /usr/local/stow/vim-8.2

4. 미리 작업을 해 놓지 못한 경우 프로그램 삭제

이 경우에는 인터넷을 샅샅히 뒤져서 프로그램 설치할 때 딸려온 파일들이 어디 위치하는지, 무엇인지 알아내야 한다. 그리고는 shell script를 작성하여 해결하는 모습을 볼 수 있었다.

Python 수동 삭제의 예

https://unix.stackexchange.com/questions/190794/uninstall-python-installed-by-compiling-source

# <2018.11.11.> # https://unix.stackexchange.com/questions/190794/uninstall-python-installed-by-compiling-source prefix='/usr/local/' pyver='3.5' rm -rfI \ ${prefix}bin/python${pyver} \ ${prefix}bin/pip${pyver} \ ${prefix}bin/pydoc \ ${prefix}bin/include/python${pyver} \ ${prefix}lib/libpython${pyver}.a \ ${prefix}lib/python${pyver} \ ${prefix}bin/python${pyver} \ ${prefix}bin/pip${pyver} \ ${prefix}bin/include/python${pyver} \ ${prefix}lib/libpython${pyver}.a \ ${prefix}lib/python${pyver} \ ${prefix}lib/pkgconfig/python-${pyver}.pc \ ${prefix}lib/libpython${pyver}m.a \ ${prefix}bin/python${pyver}m \ ${prefix}bin/2to3-${pyver} \ ${prefix}bin/python${pyver}m-config \ ${prefix}bin/idle${pyver} \ ${prefix}bin/pydoc${pyver} \ ${prefix}bin/pyvenv-${pyver} \ ${prefix}share/man/man1/python${pyver}.1 \ ${prefix}include/python${pyver}m # ${prefix}bin/pydoc ## WARN: skip if other pythons in local exist. echo "Remove complete"

실제로 위 스크립트 내용을 작성한 후 실행파일로 만들어 실행시켜서 python-3.5 버전을 제거하였다. 이런식으로 처음에 계획 없이 무작정 프로그램을 설치하면 굉장히 고생하게 된다. 그래도 최후의 수단은 이렇게 일일이 찾아서 지우는게 아닐까 싶다.