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

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

컴파일하여 Ubuntu 14.04에 Python 2.7.9를 설치했습니다.그 기원, .configre, make, 및 make altinstall. make altinstall기본 Python 2.7.6을 덮어쓰고 싶지 않기 때문입니다. 내가 설치한 2.7.9 /usr/local/bin/python2.7와 다른 디렉토리의 다른 많은 파일은 /usr/local.읽어보기 파일소스 코드 설치 패키지에서:

Unix 및 Mac 시스템에서 동일한 설치 접두사(구성 스크립트의 --prefix 인수)를 사용하여 여러 버전의 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. 다행스럽게도 아직 소스 코드가 남아 있지만, 안타깝게도 파일 생성제거 부분 없음

    $ sudo make uninstall
    make: *** No rule to make target `uninstall'.  Stop.
    
  2. 그런 다음 다른 접근 방식을 시도했습니다. 먼저 소스에서 deb를 생성하고 컴파일하고 deb를 설치한 다음(설치 파일을 덮어쓰길 바랍니다 make altinstall) deb를 제거합니다.

    하지만 checkinstall.make altinstallmake 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. 아니면 Python 2.7.9를 제거하는 방법은 무엇입니까?

setup.py참고: 를 제외한 첫 번째 링크의 소스 코드 패키지입니다 install-sh.README

답변1

다음 명령은 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/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마이크로 번호(세 번째 위치)만 다른 경우에는 제대로 작동하지 않습니다. 이 번호는 설치된 바이너리에서 제외되며 두 가지 버전의 pythonX.Y가 됩니다. 이것은 항상 문제가 되어 왔지만, 2.7이 Python2 시리즈의 마지막 버전으로 간주되었기 때문에 배포판이 2.7.X 기반 시스템 유틸리티를 출시하기 시작하면서 더욱 심각해졌습니다.

IMO에서 이 문제를 해결하는 가장 좋은 방법은 문제가 발생하지 않도록 방지하는 것입니다. 다른 Python에서 사용하지 않는 디렉토리에 Python이 설치되도록 구성합니다. 내 시스템에서는 삭제되었습니다 /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(현재 최신 버전입니다. 새로운 Python 버전을 다운로드, 빌드 및 설치하는 과정에서 /opt/python/2.7.9최신 버전과 기타 마이너 버전의 링크를 유지하여 약간 다른 설정을 사용합니다)

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

답변2

@Anthon의 목록에서 시작하여 @bin-s 제안을 적용하여 최신 파일을 검색한 후 Python-3.6.6(이미 source 에서 설치됨 )을 rm완전히 정리하기 위해 다음 bash 스크립트를 생각해 냈습니다 .make altinstall

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

rm -rf \
    $HOME/.local/lib/Python${pyver} \
    ${prefix}bin/python${pyver} \
    ${prefix}bin/python${pyver}-config \
    ${prefix}bin/pip${pyver} \
    ${prefix}bin/pydoc \
    ${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
rm -rI ${prefix}bin/pydoc ## WARN: skip if other pythons in local exist.

주의해서 사용하십시오(예: 모든 킬을 확인하기 위해 -I명령에 옵션을 추가하십시오 rm).

답변3

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

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

답변4

나는 결국 다음을 수행했습니다.

  1. 다음과 같이 사용자 지정 접두사를 사용하여 제거하려는 Python을 다시 빌드하고 설치합니다 $HOME/opt/Python-3.8.0.tar tJf Python-3.8.0.tar.xz && cd Python-3.8.0 && ./configure --prefix $HOME/opt/Python-3.8.0 && make && make install
  2. cd $HOME/opt/Python-3.8.0 && find * -type f | perl -pe's(^)(/usr/)' | sudo xargs rm
  3. rm -rf ~/opt/Python-3.8.0

관련 정보