OpenSUSE에 추가 ​​Python 설치(기존 Python을 손상시키지 않고)

OpenSUSE에 추가 ​​Python 설치(기존 Python을 손상시키지 않고)

상태

우리 회사에는 내부 서버가 있습니다

  • 오픈수세 도약 15.5
  • 파이썬 3.6(.15)
  • 파이썬 2.7(.18)

자세한 내용은 세부정보를 확인하세요.

Python 3.6이 중단되었으므로최신 Python 설치(3.10 또는 3.11).
~을 위한아무것도 파괴하지 마세요제 생각에는

  1. 새로운 Python을 병렬로 설치
  2. 추가로 설치합니다(기존 설치 또는 별칭을 교체하거나 중단하지 않고).
  3. 어디서나 사용 가능(스크립트)

이 서버는 개발 프로세스에 매우 중요하므로 위험을 최대한 줄이고 싶습니다.

질문

  1. 시스템 안정성, 다른 Python 설치 및 "python" 바이너리/심볼릭 링크 측면에서 다른 Python을 설치하는 것은 얼마나 위험합니까?
  2. 가장 덜 위험한 방법으로 Python을 설치하려면 어떻게 해야 합니까?

세부 사항

***:~> cat /etc/os-release
NAME="openSUSE Leap"
VERSION="15.5"
ID="opensuse-leap"
ID_LIKE="suse opensuse"
VERSION_ID="15.5"
PRETTY_NAME="openSUSE Leap 15.5"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:opensuse:leap:15.5"
BUG_REPORT_URL="https://bugs.opensuse.org"
HOME_URL="https://www.opensuse.org/"
DOCUMENTATION_URL="https://en.opensuse.org/Portal:Leap"
LOGO="distributor-logo-Leap"


***:~> zypper info python
...
Repository     : Update repository with updates from SUSE Linux Enterprise 15
Name           : python
Version        : 2.7.18-150000.51.1
Arch           : x86_64
Vendor         : SUSE LLC <https://www.suse.com/>
Installed Size : 1.4 MiB
Installed      : Yes (automatically)
Status         : up-to-date
Source package : python-2.7.18-150000.51.1.src
Upstream URL   : https://www.python.org/
Summary        : Python Interpreter
...

***:~> zypper info python3
...
Repository     : Update repository with updates from SUSE Linux Enterprise 15
Name           : python3
Version        : 3.6.15-150300.10.48.1
Arch           : x86_64
Vendor         : SUSE LLC <https://www.suse.com/>
Installed Size : 141.3 KiB
Installed      : Yes (automatically)
Status         : up-to-date
Source package : python3-3.6.15-150300.10.48.1.src
Upstream URL   : https://www.python.org/
Summary        : Python 3 Interpreter
....

답변1

이 솔루션은 openSUSE에서만 작동합니다. SUSE Linux Enterprise Server에서도 사용할 수 있지만 현재는 지원되지 않습니다. 자신의 책임하에 사용하십시오!

당신은 시도 할 수 있습니다피엔브, 특정 사용자가 다른 Python 버전을 사용할 수 있도록 허용합니다. 나는 그것을 몇 달 동안 사용해 왔으며 매우 만족하고 있습니다.

귀하의 정책이 이를 허용하는지 잘 모르겠습니다. 그러나 이 솔루션은 시스템에 미치는 영향이나 중단을 최소화합니다. 시스템을 망칠 필요가 없습니다.

이는 다음에만 적용된다는 점을 기억하세요.특정한사용자. 다른 사용자는 이 변경 사항을 볼 수 없으며 영향을 받지 않습니다. 이는 장점일 수도 있고 아닐 수도 있습니다.

시스템 준비

특정 Python 버전을 사용하기 전에 해당 버전을 설치하고 구성해야 합니다 pyenv.

다음과 같이 진행해주세요:

  1. 통합개발: 언어: Python: 백포트귀하의 시스템으로 환매하십시오.

  2. pyenv 패키지를 설치합니다.

     $ sudo zypper install --details pyenv
    
  3. Python을 빌드하는 데 필요한 다음 개발 패키지를 설치합니다.

     $ sudo zypper install -y gcc automake bzip2 libbz2-devel \
       xz xz-devel openssl-devel ncurses-devel readline-devel \
       zlib-devel tk-devel libffi-devel sqlite3-devel \
       gdbm-devel make findutils patch
    
  4. ~/.bashrc 파일에 다음 줄을 추가합니다.

     echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
     echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
     echo 'eval "$(pyenv init -)"' >> ~/.bashrc
    

    다른 셸을 사용하는 경우 다음을 참조하세요.https://github.com/pyenv/pyenv#set-up-your-shell-environment-for-pyenv

  5. 재시작 셸을 사용 exec $SHELL하거나 콘솔을 닫고 새 콘솔을 엽니다.

다른 Python 버전 설치

이제 시스템이 준비되었습니다. 이 pyenv명령은 요청된 버전을 다운로드하고 컴파일한 후 에 저장합니다 ~/.pyenv/versions/. 이 작업이 완료되면 셸에서 새 Python 버전을 사용할 수 있습니다.

특정 Python 버전을 설치하려면 다음 단계를 따르세요.

  1. Python 버전(예: 3.11)을 설치합니다.

     $ pyenv install 3.11
    
  2. 특정 사용자에 대해 이 버전을 설정하십시오.

     $ pyenv global 3.11
    

    현재 디렉토리로 제한하려면 다음을 사용하십시오.

     $ pyenv local 3.11
    
  3. pip3로컬 설치로 해결되는지 확인하십시오 .

     $ pip3.11 --version
     pip 23.1.2 from /home/tux/.pyenv/versions/3.11.4/lib/python3.11/site-packages/pip (python 3.11)
    

    대신 사용자를 가리키는 디렉터리가 표시되어야 합니다 /usr/.

시스템을 준비한 후 pyenvPython 라이브러리를 로컬 설치에 설치할 수 있습니다. 예를 들어:

$ pip3.11 install <LIBRARY>

결론

이 방법은 RPM 시스템과 zypper를 우회한다는 점을 명심하십시오. 당신은 그들로부터 어떤 업데이트도 받을 수 없습니다. 그러나 최신 Python 버전이 필요한 경우 pyenv최신 버전에 액세스하려면 패키지를 업데이트해야 합니다 .

또한 RPM에서 제공되는 Python 버전에 주의해야 합니다. 비슷한 이름( pip3.11vs. ) 이 있어서 헷갈릴 수도 있어요 pip3-3.11.

관련 정보