npm
(javascript의 경우) 또는 (python의 경우) 와 같은 패키지 관리자를 사용하여 패키지를 설치하면 pip
내가 작성 중인 소프트웨어의 이상한 동작이나 예상치 못한 버그를 피하기 위해 패키지 버전을 매우 구체적으로 지정하는 방법을 배울 수 있습니다.
나는 apt
패키지 관리자가 매우 다른 동물이라는 것을 알고 있지만 매우 정확해도 나쁠 것은 없다고 생각했습니다. 내가 틀렸어!
며칠 전까지만 해도 다음 명령이 작동했던 것 같습니다.
"단계"에서 특정 버전의 apt 패키지를 설치하는 스크립트를 만들었습니다. 단계의 예는 다음과 같습니다.
apt-get install git=1:2.20.1-2+deb10u1
하지만 지금은 다음과 같은 결과를 얻습니다.
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Version '1:2.20.1-2+deb10u1' for 'git' was not found
설치를 완료하려면 다음 버전을 설치해야 합니다.
apt-get install git=1:2.20.1-2+deb10u3
동일한 스크립트를 사용하여 다른 컴퓨터에 동일한 소프트웨어를 설치하는 방법이 있을 것입니다. 그렇죠? 아마도:
apt-get install git=1:2.20.1-2*
이 일을 올바른 방법으로 할 수 있도록 도와주세요.
미리 감사드립니다.
답변1
언급한 도구 또는 해당 도구가 액세스를 제공하는 저장소 간에는 근본적인 철학적 차이가 있습니다.
주소가 지정된 저장소를 통해 npm
다음 pip
에 대한 액세스를 제공합니다.모두배포하는 패키지의 릴리스 버전. 이러한 패키지를 사용하는 프로젝트의 개발자로서 귀하는 프로젝트에 적합한 버전을 선택할 수 있습니다. 범위, 특정 버전 또는 "최신" 여부는 귀하에게 달려 있으며 선택에 대한 책임은 귀하에게 있습니다. .
주소 지정 저장소 apt
(Debian과 같은 배포판에 사용됨)는 배포하는 패키지 버전 중 소수(대부분의 경우 하나)에만 액세스를 제공합니다. 배포판 개발자는 귀하를 위해 버전을 선택하고 해당 선택에 대한 책임을 집니다. 이 선택에는 일부 약속 또는 적어도 의도가 있습니다. 특히 대부분의 버전 기반 배포판을 사용하면 특정 패키지를 설치하면 배포판 수명 동안 항상 동일한 기능이 제공됩니다.
따라서 데비안 10을 사용하고 있으므로 적절한 주문은 다음과 같습니다.
apt install git
git
데비안 10의 수명 동안 동일한 기능을 가진 버전이 설치됩니다. 유일한 변경 사항은 심각한 버그 및 보안 문제를 해결하는 것입니다(예 git
: 나열된 두 버전 간의 변경 사항은 두 가지 보안 문제를 해결합니다).
물론 실수는 발생하지만, 실수가 발생하면 배포판에서는 이를 심각하게 받아들입니다. 특정 버전의 배포판에서 패키지 업그레이드로 인해 발생하는 회귀를 설명하는 버그를 신고하면 곧 해결될 것으로 기대합니다. (주어진 패키지가 안정 릴리스에서 업그레이드된다는 사실은 누군가가 운전대를 잡고 있다는 것을 의미합니다.)
(정말로 모든 책임을 지고 싶다면 다음을 사용할 수 있습니다.snapshot.debian.org특정 버전의 패키지를 설치합니다. )