최근 일주일 정도 UI에서 자동 업데이트를 실행하면 위의 메시지가 나타납니다. "이렇게 하려면 인증되지 않은 소스에서 패키지를 설치해야 합니다."라는 메시지가 계속 표시됩니다. 에게 추천한다는 글을 읽었습니다 apt-upgrade
. 그러나 이것이 의도된 솔루션인 이유에 대한 설명을 찾지 못했습니다.
apt-upgrade
매우 안정적인 시스템을 그런 식으로 다루기 전에 지금 당장 필요한 이유와 관련하여 자동 업데이트 릴리스 프로세스를 이해하고 싶습니다 . 지난 몇 년간 내 시스템에 이 기능을 요구하는 업데이트가 기억나지 않습니다.
우분투 14.04 LTS.
감사해요!
답변1
왜 이런 일이 발생하는지 이해하려면 먼저 Stock apt(즉, 우선순위가 설정되지 않은 apt)가 어떻게 작동하는지 이해해야 합니다. 다음을 사용하여 업그레이드를 실행한다고 가정해 보겠습니다. apt upgrade
(에 대한 정보를 찾을 수 없기 때문에 이것이 apt-upgrade가 의미하는 것이라고 가정합니다 apt-upgrade
.) 먼저 apt는 설치된 모든 소프트웨어의 로컬 버전을 저장소의 원격 버전과 함께 확인하고 패키지 업그레이드가 필요한지 확인하십시오. 설명을 위해 패키지 1개 sayhello
를 업그레이드해야 하는 가상 시나리오를 만들어 보겠습니다 .
다음은 가상의 변경 로그입니다.
sayhello 1.1 now depends on libhello (>= 1.0) to print "hello."
이제 source.list에 두 개의 소스가 나열되어 있다고 상상해 보십시오. 하나는 기본 Ubuntu 저장소이고 다른 하나는 Jim's amazing taco repo
.
Jim의 저장소에는 다음 3가지 패키지가 포함되어 있습니다.
jimplayer 2.5 (No depends)
jimsbetterhello 1.0 (Depends on libhello (>= 2.0))
libhello 2.0 (No depends)
얼마 전에는 이 저장소를 사용하여 jimplayer를 설치했지만 나중에 Jim이 저장소에 jimsbetterhello를 추가하기로 결정한 것 같습니다. 이제 상황이 흥미로워집니다.
Ubuntu의 저장소는 호환성 이유로 여전히 libhello 1.5를 사용합니다(일부 패키지는 아직 새 libhello 버전에서 작동하지 않기 때문에).
이제 apt가 업그레이드로 이동하면 sayhello
수수께끼에 직면하게 됩니다. libhello
설치할 수 있는 버전이 2개 있습니다 ! 어느 것을 선택해야 할까요? 글쎄, 기본적으로 apt는 최신 버전의 패키지를 선택합니다. doesn't conflict with other currently installed packages.
이제 일반적으로 이 프로세스는 사용자에게 투명하지만 타사 저장소에 대한 GPG 키를 추가하지 않았거나 키가 변경되었거나 기타 사항이 있는 경우 , 기본 Ubuntu 리포지토리에서 설치했더라도 sayhello
libhello 2.0은 신뢰할 수 없는 패키지가 될 것이며 apt는 이에 대해 경고할 것입니다. 이는 apt가 이에 대해 경고할 수 있는 다양한 변형 중 하나일 뿐입니다. 추가한 타사 저장소에서만 사용할 수 있는 패키지가 누락되었기 때문일 수도 있습니다. 가장 좋은 해결 방법은 기본 저장소를 더 높은 우선순위로 설정하고, 신뢰할 수 있는 키체인에 키를 추가하지 않고 불필요한 타사 저장소를 정리하는 것입니다.