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

나는 컴파일하여 우분투 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.



답변

다음 명령은 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환경 의 기초 로만 사용되므로 정상적인 경로에 있지는 않습니다.


답변

@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 옵션을 사용하여 각 종료 확인).


답변

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

find /usr/local/ -type f -newer <some latest old file>


답변