상용 소프트웨어 설치 문서가 선행 패키지로 python-xml 을 요구하는 경우가 있다. 이 이름의 패키지는 RHEL 8 에 없다. RHEL 6 시절 python-libxml2 를 가리키던 옛 이름이거나 다른 배포판의 패키지명이다.
sudo dnf install python-xml
No match for argument: python-xml
Error: Unable to find a match: python-xml
| 요구 사항 | RHEL 8 패키지 |
|---|---|
파이썬 표준 XML 파싱(xml.etree, minidom, sax) |
별도 설치 불필요. python3 에 내장 |
libxml2 바인딩(import libxml2) |
python3-libxml2 |
lxml(import lxml) |
python3-lxml |
xmllint 같은 명령행 도구 |
libxml2 |
먼저 정말로 없는지 확인한다. 표준 모듈만 쓰면 아무것도 설치할 필요가 없다.
python3 -c "import xml.etree.ElementTree as ET; print('stdlib ok')"
python3 -c "import libxml2; print('libxml2 ok')"
python3 -c "import lxml; print('lxml ok')"
sudo dnf install -y python3-libxml2
sudo dnf install -y python3-lxml
sudo dnf install -y libxml2
패키지 이름을 모르면 제공 파일로 역추적한다.
dnf provides '*/libxml2mod*'
dnf provides '*/site-packages/lxml*'
dnf provides '*/bin/xmllint'
SAS 처럼 특정 파이썬 버전을 지정하라고 요구하는 설치 프로그램이 있다. RHEL 8 은 파이썬을 모듈로 제공하므로 원하는 버전을 먼저 켜야 한다.
dnf module list python39
sudo dnf module enable -y python39
sudo dnf install -y python39 python39-libs
경로를 확인해 넣는다.
which python3.9
readlink -f "$(which python3.9)"
ls -d /usr/lib64/python3.9 /usr/lib/python3.9
설치 프로그램이 "Python home" 을 물으면 대개 실행 파일이 아니라 접두 디렉터리 를 넣는다. 배포판 패키지로 설치한 파이썬은 /usr 가 접두 디렉터리다.
python3.9 -c "import sys; print(sys.prefix)"
/usr 를 넣으라고 하면 그대로 넣고, 전용 경로를 요구하면 별도로 빌드해 /opt 아래에 두는 편이 깔끔하다. 시스템 파이썬을 덮어쓰면 dnf 가 망가진다.