소스를 컴파일하여 설치된 Python을 제거 하시겠습니까?


18

나는 컴파일하여 우분투 14.04에 파이썬 2.7.9을 설치 소스를 함으로써 .configre, make하고 make altinstall. make altinstall기본 Python 2.7.6을 덮어 쓰지 않기 때문입니다. 내 자체 설치 2.7.9는 /usr/local/bin/python2.7다른 디렉토리의 다른 많은 파일에 /usr/local있습니다. 에서 README 소스 설치 패키지 :

Unix 및 Mac 시스템에서 동일한 설치 접두사 (--prefix 인수를 configure 스크립트에 사용)를 사용하여 여러 버전의 Python을 설치하려는 경우 다른 버전을 설치해도 기본 Python 실행 파일을 덮어 쓰지 않도록주의해야합니다.

"make altinstall"을 사용하여 설치된 모든 파일과 디렉토리는 주 버전과 부 버전을 포함하므로 나란히 살 수 있습니다. "make install"은 $ {prefix} /bin/pythonX.Y를 참조하는 $ {prefix} / bin / python도 작성합니다.

동일한 접두사를 사용하여 여러 버전을 설치하려는 경우 "기본"버전을 결정해야합니다 (있는 경우). "make install"을 사용하여 해당 버전을 설치하십시오. "make altinstall"을 사용하여 다른 모든 버전을 설치하십시오.

예를 들어, 2.6을 기본 버전으로 사용하여 Python 2.5, 2.6 및 3.0을 설치하려면 2.6 빌드 디렉토리에서 "make install"을 실행하고 다른 버전에서는 "make altinstall"을 실행합니다.

이제 자체 설치된 2.7.9를 제거하고 싶습니다.

  1. 다행히도 여전히 소스 코드가 있지만 불행히도 Makefile 에는 제거 섹션이 없습니다.

    $ sudo make uninstall
    make: *** No rule to make target `uninstall'.  Stop.
    
  2. 그런 다음 다른 방법으로 시도했습니다. 먼저 소스 및 컴파일에서 deb를 만들고 deb를 설치하고 (설치된 파일을 덮어 make altinstall쓰십시오) deb를 제거하십시오.

    내가하여 DEB 파일을 만들 때 checkinstall하지 않도록 만약 내가 다르게 어떻게해야하는지, 나는 make altinstall대한의 make install. 내가 시도한 것은 :

    $ checkinstall altinstall
    
    ...
    
    Installing with altinstall...
    
    ========================= Installation results ===========================
    /var/tmp/tmp.4ZzIiwqBNL/installscript.sh: 4: /var/tmp/tmp.4ZzIiwqBNL/installscript.sh: altinstall: not found
    
    ...
    

    deb를 설치하면 설치 프로세스가 복제되도록 deb를 만드는 방법이 궁금합니다 make altinstall.

  3. 또는 파이썬 2.7.9를 제거하는 방법은 무엇입니까?

참고 : 첫 번째 링크에서 소스 패키지도있다 setup.py, install-sh게다가 README.


파이썬은 너무 많은 곳에 설치되지 않습니다. 파일을 수동으로 제거합니다.
Faheem Mitha

고마워. 그곳이 많지 않은 곳은 무엇입니까?
대한 StackExchange

바이너리 패키지 중 하나를 살펴보십시오. 그것은 본질적으로 동일한 장소이며, /usr/local대신에 사용되는 것을 제외하고 는 생각 /usr합니다. dpkg -L python2.7그리고 dpkg -L python2.7-minimal. 그리고 무엇이 필요 2.7.9합니까?
Faheem Mitha

기본적으로 핍이 있다고 들었습니다. 그러나 설치 후 pip가없는 것을 알 수 없습니다.
모두에 대한 StackExchange

pip를 설치할 수 있습니다 apt-get install python-pip.
Faheem Mitha

답변:


20

다음 명령은 make altinstall-ed python 을 제거합니다 .

rm -f /usr/local/bin/python2.7
rm -f /usr/local/bin/pip2.7
rm -f /usr/local/bin/pydoc
rm -rf /usr/local/bin/include/python2.7
rm -f /usr/local/lib/libpython2.7.a
rm -rf /usr/local/lib/python2.7

당신은 또한해야 할 수도 있습니다

rm -f /usr/local/share/man/python2.7.1
rm -rf /usr/local/lib/pkgconfig
rm -f /usr/local/bin/idle
rm -f /usr/local/bin/easy_install-2.7

make altinstall"시스템 파이썬"에 설치 한 것과 다른 major.minor 번호가있는 경우 나에게 도움이 되었지만 마이크로 번호 (세 번째 위치) 만 다른 경우에는 제대로 작동하지 않습니다. 이 숫자는 설치된 바이너리에서 제외되며 두 가지 버전의 pythonX.Y로 끝납니다. 이것은 항상 문제가되었지만 일단 배포판이 2.7.X 기반의 시스템 유틸리티와 함께 ​​제공되기 시작하면 2.7이 Python2 시리즈의 마지막 버전이어야하므로이 문제는 더욱 심각해졌습니다.

IMO는이 문제를 해결하는 가장 좋은 방법은 하나가되는 것을 방지하는 것입니다. 파이썬이 다른 파이썬이 사용하지 않는 디렉토리에 설치하도록 구성하십시오. 내 시스템에서 그들은 아래에 간다 /opt/python/X.Y.Z.

설치된 Python을 사용하려면 [virualenv][1]새로운 환경을 만드는 데 사용 합니다.

virtualenv --python=/opt/python/2.7.9/bin/python2.7 venv
source venv/bin/activate

또는을 사용하십시오 [virtualenvwrapper][2]. 내가 사용하는 시리즈의 최신 버전에 대한 별칭이 있습니다.

tox여러 버전에 대한 테스트에 사용 하는 경우 다음과 같은 별칭이 다양한 버전을 찾는 데 도움이됩니다.

alias tox='PATH=/opt/python/2.7.9/bin:/opt/python/2.6.9/bin:/opt/python/3.4.3/bin:/opt/python/3.3.6/bin:/opt/python/3.5-dev/bin:$PATH tox'

(이것은 현재 최신 버전이므로 /opt/python/2.7최신 /opt/python/2.7.9python 버전을 다운로드하고 빌드하고 설치하는 프로세스 내에서 최신 링크를 유지 하고 다른 부수를 위해 약간 다른 설정을 사용합니다 )

이러한 설치는 직접 사용되지 않습니다. 그들은 항상 virtualenv환경 의 기초 로만 사용되므로 정상적인 경로에 있지는 않습니다.


2
/usr/local/lib/python2.7을 삭제하지 마십시오! pip가 설치 한 모든 전역 파이썬 모듈은 /usr/local/lib/python2.7/dist-packages에 있습니다. 모든 모듈이 고장납니다!
abhaga

2
@abhaga 당신과 함께 설치하면 안 pip(A)의 외부 virtualenv있는 리눅스 설치
안톤

또한 파일과 디렉토리를 수동으로 제거하여 패키지를 제거해서는 안됩니다. :) 이것들은 좋은 습관이며 우리가 그것을 깨뜨릴 필요가있는 경우가 항상 있습니다. 그러나 해당 디렉토리를 제거하는 것이 안전하지 않다는 것을 아는 것이 중요합니다.
abhaga

CentOS7에는 다음과 같은 차이점이 있습니다. 1. include는 다음과 같아야합니다. 2. man 파일은 /usr/local/share/man/man1/python2.7.1입니다. 3. 다른 파일 : /usr/local/bin/python2.7-config
Bin S

7

@Anthon의 rm목록 에서 시작 하여 @ bin-s 조언을 적용하여 최신 파일을 검색하면이 bash-script를 사용하여 Python-3.6.6 (에서 소스로 설치됨)을 완전히 지 웁니다 make altinstall.

prefix='/usr/local/'
pyver='3.6'

rm -rf \
    ${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.

주의해서 사용하십시오 (예 : -Irm cmd의 add 옵션을 사용하여 각 종료 확인).


아주 좋아요 python3을 입력하고 탭을 눌렀을 때 python3.X가 표시되지 않음
Prometheus

1

일반적으로 모든 파일은 거의 1 분 안에 설치됩니다. "찾기"를 사용하여 설치된 모든 파일을 거의 같은 시간에 확인한 다음 수동으로 "rm"할 수 있습니다. 도움이 되길 바랍니다.

find /usr/local/ -type f -newer <some latest old file>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.