패키지 이름에 버전 번호가 포함되는 이유는 무엇입니까?

패키지 이름에 버전 번호가 포함되는 이유는 무엇입니까?

Ubuntu 및 기타 Debian 기반 배포판을 사용하는 동안 소프트웨어 저장소의 패키지에 주요 버전 번호가 포함되어 있는 경우가 많다는 사실을 발견했습니다.

예를 들어,

  • 아파치:apache2
  • 수코양이:tomcat7
  • PHP:php5
  • 와인:wine1.4
  • MySQL:mysql-server-5.5

그러나 사용 가능한 패키지가 없으며 apache1나머지도 비슷하다는 것을 알았습니다. 소프트웨어가 업데이트되면서 패키지 이름이 변경되면 패키지 관리(손쉬운 업그레이드)의 주요 목표 중 하나를 방해합니까?

apache3Apache 3가 내일 출시되면 업그레이드하려면 패키지를 수동으로 설치해야 합니까?

답변1

패키지 이름 지정은 패키지의 두 가지 주요 버전 간의 전환을 단순화해야 하는 필요성과 비슷하며, 그렇게 하는 데 필요한 시간이 오래 걸릴 것으로 예상됩니다. 전환 기간 동안 이전 버전과 새 버전을 모두 사용할 수 있지만 향후 어느 시점에는 이전 버전이 중단될 예정입니다.

현재 사용 중인 시스템 버전 중에 전환 기간이 발생하는 경우가 있습니다. 일부 패키지의 경우 이런 일이 자주 발생하며 다음에서 전환 패키지 버전을 볼 수 있습니다.모든새로운 시스템이 출시되었습니다. 소프트웨어 개발 도구는 시스템 릴리스와 동일한 일정에 따라 새 도구로 업그레이드하는 것이 실용적이지 않을 수 있기 때문에 종종 이 범주에 속합니다. 회사가 GCC, Autoconf 및 Perl의 특정 버전에 의존하는 기간은 5년 주기인 반면 운영 체제는 3년 주기로 업그레이드될 수 있습니다. 따라서 새 OS가 개발될 당시의 최신 버전 외에 일부 패키지의 이전 버전이 포함된 경우 새 OS를 더 쉽게 채택할 수 있습니다.

다른 경우에는 이러한 주요 버전 변경이 오래 전에 발생하여 지나갔고 이제 모든 사람이 현재 버전을 사용하고 있습니다. 예를 들어 Apache의 경우가 그렇습니다. 호환성 관점에서 볼 때 1.3에서 2.0으로의 변경 사항은 2. Apache 버전보다 훨씬 큽니다. 그러나 모든 사람이 apache2패키지를 사용하고 나면 이름을 다시 바꿀 이유가 없습니다 apache. 이로 인해 불필요한 업그레이드 문제가 발생합니다. 또한, 과거에 일시적으로 두 개의 병렬 버전을 제공해야 할 필요성이 필요하다고 판단된 경우, 향후 다시 필요성이 발생할 수 있습니다.

이 패키지 명명 관행은 일반적으로 라이브러리나 중요한 핵심 패키지에서만 발생합니다. 더 많은 주변 장치 패키지가 필요한 경우 현재 보유하고 있는 패키지로 간단히 업그레이드할 수 있습니다.

라이브러리는 본질적으로 다른 패키지가 이에 의존하기 때문에 애플리케이션보다 이러한 방식으로 처리되는 경우가 더 많습니다. 라이브러리의 인기가 높아질수록 이 전환 기간 없이 라이브러리를 새로운 주요 버전으로 점진적으로 업그레이드할 수 있도록 라이브러리에 의존하는 다른 모든 패키지를 다시 빌드하고 다시 연결하도록 요구하는 것은 실용성이 떨어집니다.

일반적으로 애플리케이션이 이런 방식으로 처리되는 이유는 애플리케이션에 라이브러리 요소가 포함되어 있기 때문입니다. 예를 들어 Apache는 단순한 웹 서버 그 이상이며 플러그인용 개발 API도 제공합니다. ( mod_foo잠깐.) 누군가가 mod_somethingApache 1.3 플러그인 ABI에 대한 이전 링크를 가지고 있고 최신 2.0 API를 사용하도록 업그레이드되지 않은 경우, 모든 플러그인 작성자가 그럴 가능성이 있을 때까지 OS가 이전 Apache 1.3을 계속 제공한다면 다음과 같습니다. 플러그인을 업데이트하는 데 유용할 것입니다.

답변2

내 관찰에 따르면 이러한 상황의 이유는 다음과 같습니다.

  • 주요 버전 패키지 마이그레이션에 도움: PHP 5가 출시되면 PHP 4를 설치해야 할 수 있습니다. 이를 통해 사람들은 버전 중에서 선택할 수 있습니다(적어도 이전 버전이 더 이상 사용되지 않을 때까지).

  • 최신 주요 버전으로 업그레이드하지 않고도 이전 버전의 소프트웨어에 대한 업데이트를 계속 제공합니다(예: Apache 3가 출시된 후 Apache 2에 패치를 적용해야 할 수 있음).

예를 들어, Linux 커널(현재)에는안정 버전3.5, 3.4.7, 3.2.24, 2.6.35.13 등... 시스템에서 2.6.35를 실행하고 있고 최신 상태로 유지하고 싶지만아니요이 커널을 업그레이드하면 충분한 패키지를 설치할 수 있습니다.

관련 정보