rpm 설치/업그레이드 방법에 대한 질문

rpm 설치/업그레이드 방법에 대한 질문

패키지 이름 지정 규칙을 설명할 때 내 교과서에서 인용한 내용은 다음과 같습니다(예: packagename-abc-x.arch.rpm).

버전 번호:버전 번호(x) 뒤의 숫자는 빌드 번호입니다. 많은 배포 관리자는 자신의 패키지를 다른 패키지와 구별하기 위해 빌드 번호에 문자 코드를 추가합니다. 이 수치는 패키지 관리자 간에 비교할 수 없습니다. George의 패키지 빌드 번호 5가 반드시 동일한 패키지의 Susan의 빌드 번호 4에 비해 개선된 것은 아닙니다.

패키지 업그레이드를 설명하는 인용문은 다음과 같습니다.

경고하다: 동일한 프로그램을 다른 이름으로 배포할 수 있습니다. 이 경우 업그레이드가 실패하거나 중복 설치로 인해 이상한 프로그램 관련 결함이 발생할 수 있습니다. Red Hat은 이러한 문제를 방지하기 위해 공식적인 패키지 명명 시스템을 설명했지만 여전히 가끔 발생합니다. 따라서 원래 패키지를 제공한 사람이나 조직의 후속 버전을 사용하여 패키지를 업그레이드하는 것이 가장 좋습니다.

Q-1따라서 quote-1에 따르면 빌드 번호는 해당 릴리스와 관련된 특정 문자와 연관되어 있습니다. 관리자님, 이름이 달라서 업그레이드가 실패할 수도 있나요? 현재 설치의 업그레이드 버전인지 확실하지 않습니까?

Q-2그러나 릴리스/이름이 동일한 경우 rpm은 업그레이드된 버전인지 어떻게 판단합니까? 패키지 이름을 구문 분석하고 이름에서 버전 번호를 선택합니까? 그렇다면 다른 배포판의 경우 왜 실패합니까? 게다가?

답변1

빌드 번호를 릴리스라고 합니다. 예를 들어 python-qt5-5.10-3.fc28.x86_64이름은 "python-qt5", 버전은 "5.10", 릴리스는 "3.fc28", 마지막 아키텍처는 "x86_64"입니다.

George나 Susan이 보낸 편지를 흔히 "dist 태그"라고 합니다. 위의 예에서는 ".fc28"입니다. 동일한 버전 및 릴리스의 여러 패키지를 구별하는 데 사용됩니다. 예를 들어 Fedora 28의 python-qt5는 파일을 에 저장 하지만 디렉터리에 python 모듈이 /usr/lib64/python2.7/site-packages필요하기 때문에 RHEL6에서는 작동하지 않습니다 . /usr/lib64/python2.6따라서 RHEL6 버전의 동일한 패키지는 다음과 같습니다.python-qt5-5.10-3.el6.x86_64

RPM 자체는 이름, 버전 및 릴리스만 비교합니다. Fedora 28 패키지를 RHEL7에 설치할 수 없는 이유는 없습니다. 일반적으로 다른 종속성으로 인해 작동하지 않습니다. 예를 들어, python-qt5-5.10-3.fc28.x86_64버전을 업그레이드하려고 하면 python-qt5-5.10-4.el7.x86_64libQT*.so의 SONAME이 RHEL7에서 다르기 때문에 작동하지 않을 수 있습니다. 그러나 요구 사항이 없는(또는 매우 느슨한 요구 사항) 일부 패키지에 대해 이 작업을 수행하면 "4.el7"이 "3.fc28"보다 크기 때문에 rpm 자체에서 업그레이드를 허용합니다. 문제는 rpm 패키지 작성자가 자신의 패키지를 다른 플랫폼에 설치할 의도가 없다는 것입니다(테스트도 하지 않습니다). 거의 작동하지 않지만 대부분의 경우 작동하지 않습니다.

관련 정보