rpm: 패키지가 이전 패키지를 업데이트할지 아니면 별도로 설치할지 결정하는 요소

rpm: 패키지가 이전 패키지를 업데이트할지 아니면 별도로 설치할지 결정하는 요소

그냥 설치 경로인가요? 이 경우 이름/경로에 버전이 있는 패키지는 다른 패키지를 업데이트하지 않으므로 그럴 수 없습니다. 수동 종속성 정보에는 이에 대한 언급이 없습니다. RPM을 생성할 때 /usr/lib 아래에 새 경로를 생성하고 기존 패키지를 무시하는 대신 설치 시 cAPI-2.1.7-x86_64.rpm이 업데이트되어야 함을 cAPI-3.1.6-x86_64.rpm에 어떻게 알릴 수 있습니까?

답변1

기본적으로 동의함@msuchy관련 기능은 패키지의 조합입니다.이름그리고건축학, 이는 몇 가지 개요를 제공하는 데 도움이 됩니다.

정보를 찾는 곳은 "업그레이드"가 아닙니다.여러 버전 설치하나의 패키지:

여러 설치 버전(rpm.org)에서는 좋은 개요를 제공합니다.

모든 패키지 관리 도구는 특정 키를 사용하여 패키지/프로그램을 참조합니다. 일반적으로 핵심은 패키지입니다. 이름 또는 포장 이름 그리고 포장 아치

즉, 일반적으로 패키지 이름 자체 또는 패키지 이름과 아키텍처의 조합이라는 두 가지 옵션이 있습니다. 그것은 계속해서 말한다

커널 패키지는 한 버전의 커널에서 다음 버전으로 충돌하는 파일을 제공하지 않도록 특별히 제작되었습니다.

즉, (패키지 개발자)는 Linux 커널 패키지의 모든 파일이 서로 다른 이름을 가지고 있음(파일 이름에 버전이 포함되어 있거나 파일이 버전이 포함된 디렉터리에 있음)을 알고 있기 때문에 커널을 특별하게 취급합니다. . 이것은 특별한 상황입니다. 특수한 경우가 너무 많으면 RPM 유지관리자가 업무를 수행하는 것이 불가능해집니다.

또한 이러한 버전 번호를 패키지의 일부로 사용하여 장기간 안정적인 프로그램 버전으로 패키지를 빌드하는 방법을 보여줍니다.이름, 동일한 시스템에 여러 버전의 프로그램을 설치할 수 있습니다. 주어진 예제는 Python에 대한 것입니다. 동일한 체계를 사용하는 다른 프로그램으로는 apache, autoconf, gcc, java가 있습니다. Fedora22의 몇 가지 예는 다음과 같습니다.

SDL2-2.0.3-5.fc22.x86_64
openjpeg2-2.1.0-6.fc22.x86_64
pygobject2-2.28.6-13.fc22.x86_64
pygobject3-3.16.2-1.fc22.x86_64
pygobject3-base-3.16.2-1.fc22.x86_64
python3-3.4.2-6.fc22.x86_64
qt5-qtbase-5.5.0-15.fc22.x86_64
vte291-0.40.2-1.fc22.x86_64
vte3-0.36.4-1.fc22.x86_64
webkitgtk3-2.4.9-1.fc22.x86_64
webkitgtk4-2.8.5-2.fc22.x86_64

이러한 패키지를 보면 패키지 이름에 어떤 숫자가 포함되어 있고 어떤 숫자가 포함되어 있는지 혼동하기 쉽습니다.버전그리고풀어 주다. RPM은 대시( -)를 사용하여 구분합니다. 대시가 없으면 숫자는 이름의 일부입니다.

답변2

이것이 바로 %{name}.%{arch}조합입니다. 동일하다면 업그레이드입니다. 다르다면 또 다른 설치입니다.

즉, 둘 다 갖고 cAPI-3.1.6-x86_64설치할 수 있습니다. 하지만 cAPI-3.1.6-i386시스템에 cAPI-3.1.6-x86_64AND를 사용할 수는 없습니다 cAPI-2.1.7-x86_64(정말 지저분한 트릭을 사용하지 않는 한).

관련 정보