apt-get 업그레이드에 대한 종속성 변경 사항 나열(패키지가 보류되는 이유)

apt-get 업그레이드에 대한 종속성 변경 사항 나열(패키지가 보류되는 이유)

바로 오늘 Ubuntu 14.04 업데이트를 시도하고 있습니다.

$ sudo apt-get update # ...
$ sudo apt-get upgrade 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  phablet-tools ubuntu-sdk ubuntu-sdk-ide
The following packages will be upgraded:
  cgroup-lite curl libcurl3 libcurl3-gnutls python3-update-manager
  update-manager update-manager-core xserver-xorg-core-lts-xenial
8 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
Need to get 2,305 kB of archives.
After this operation, 13.3 kB of additional disk space will be used.
Do you want to continue? [Y/n] ^C

좋아, 여기에서 를 수집했고 phablet-tools패키지 ubuntu-sdk에는 ubuntu-sdk-ide이번 업데이트에서 종속성이 변경되었으므로 dist-upgrade; 그래서 나는 이렇게 한다:

$ sudo apt-get dist-upgrade 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
  at dctrl-tools devscripts distro-info-data dput intltool
  libcommon-sense-perl libdistro-info-perl libexporter-lite-perl
  libio-stringy-perl libjson-perl libjson-xs-perl libparse-debcontrol-perl
  unity-scope-tool
Use 'apt-get autoremove' to remove them.
The following NEW packages will be installed:
  autopilot-desktop gir1.2-gconf-2.0 gir1.2-upstart-app-launch-2
  libautopilot-gtk libautopilot-qt liblxc1 libseccomp2 libxpathselect1.4
  lxc-common lxcfs lxd lxd-client python-autopilot python-autopilot-trace
  python-autopilot-vis python-contextlib2 python-decorator python-evdev
  python-extras python-fixtures python-junitxml python-mimeparse python-psutil
  python-subunit python-testscenarios python-testtools squashfs-tools
  ubuntu-sdk-tools uidmap
The following packages have been kept back:
  ubuntu-sdk
The following packages will be upgraded:
  cgroup-lite curl libcurl3 libcurl3-gnutls python3-update-manager
  ubuntu-sdk-ide update-manager update-manager-core
  xserver-xorg-core-lts-xenial
9 upgraded, 29 newly installed, 0 to remove and 1 not upgraded.
Need to get 50.2 MB of archives.
After this operation, 66.9 MB of additional disk space will be used.
Do you want to continue? [Y/n] ^C

하나는 ubuntu-sdk여전히 보류되어 있지만 이제는 "더 이상 필요하지 않음"으로 제거해야 할 패키지가 많고 설치해야 할 패키지도 많습니다. 그리고 이런 종류의 말은 나를 짜증나게 합니다. 왜냐하면 나는 말할 수 없기 때문입니다.어느특히 패키지(종속성)로 인해 새 패키지가 설치되거나 이전 패키지가 "더 이상 필요하지 않음"으로 인해 제거됩니다.

그래서 내 질문은 - 현재 버전에서 새 버전으로의 종속성 변경 사항을 나열하는 일종의 장황한 모드나 스위치 또는 유사한 프로그램이 있습니까 apt-get? aptitude나는 내가 할 수 있는 일을 안다:

$ apt-cache depends ubuntu-sdk
ubuntu-sdk
  Depends: autopilot-desktop
  Depends: intltool
  Depends: phablet-tools
  Depends: ubuntu-device-flash
  Depends: ubuntu-sdk-ide

...하지만 나는 이것을 현재 버전의 상태로 읽었습니다. 내가 원하는 것은 (의사 코드)와 같은 것입니다

$ apt-command --show-dependency-changes ubuntu-sdk
ubuntu-sdk:
  Installed: 1.126.2~0ubuntu1~trusty2 # as in 'apt-cache policy ubuntu-sdk'  
  Candidate: 1.266~0ubuntu1~0trusty
Depends: autopilot-desktop (installed v. XXX, candidate no longer required)
Depends: intltool (installed v. XXX, candidate v. YYY)
Depends: dctrl-tools (installed no dependency, candidate v. YYY)
...

... 즉, 특정 패키지가 새로 설치되거나 제거되는 이유에 대한 자세한 설명을 원합니다.

밖에 이런 게 있나요?

답변1

의 맨 페이지에서 apt-get다음 upgrade명령을 수행하십시오 .

... 현재 사용 가능한 새 버전으로 설치된 패키지가 검색되고 업그레이드됩니다. 어떠한 경우에도 현재 설치된 패키지가 제거되거나 아직 설치되지 않은 패키지가 검색되어 설치되지 않습니다. 다른 패키지의 설치 상태를 변경하지 않고는 업그레이드할 수 없는 현재 설치된 패키지의 새 버전은 현재 버전으로 유지됩니다.

즉, apt-get upgrade업그레이드하는 동안 패키지를 설치하거나 제거하지 않습니다. 패키지에 더 높은 버전이 있는 경우에도 마찬가지입니다. 이 경우 해당 특정 패키지(및 이에 필요한 관련 패키지)가 보류됩니다. 이는 시스템의 안전을 위한 것입니다.

그러나 의 맨페이지에서는 다음과 같습니다 apt-get.dist-upgrade

dist-upgrade는 업그레이드 기능을 수행하는 것 외에도 새 버전의 패키지에 대한 종속성 변경을 지능적으로 처리합니다. apt-get에는 "스마트한" 충돌 해결 시스템이 있으며 필요한 경우 덜 중요한 패키지를 희생하여 가장 중요한 패키지를 업그레이드하려고 시도합니다. 따라서 dist-upgrade 명령은 일부 패키지를 제거할 수 있습니다.

그래서 여기에서 볼 수 있듯이 dist-upgradeupgrade. 최신 버전의 설치를 시도합니다.중요한일부 패키지를 제거하거나 최신 패키지를 설치해야 하는 경우에도 마찬가지입니다. 그렇기 때문에 dist-upgrade가 문제의 상황과 같은 다른 패키지의 설치/제거를 트리거할 수 있습니다.

또한 패키지는 held-back고정과 같은 다른 경우에도 사용될 수 있습니다. 패키지를 고정하면 해당 패키지는 업그레이드되지 않습니다.

held-back하나 이상의 종속성 패키지가 부족하여 최신 버전의 패키지를 설치할 수 없는 경우에도 발생할 수 있습니다.

특정 패키지가 새로 설치되거나 제거되는 이유에 대한 자세한 설명을 원합니다.

유용한 기술은 설치될 패키지 이름을 기록하고 버전 간 종속성 변경 사항을 수동으로 확인하는 것입니다.

특별한 경우에는 및 ubuntu-sdk사용 의 종속성 변경을 확인할 수 있습니다 . 추가 패키지가 필요한 최신 버전이 표시됩니다.apt-cache depends ubuntu-sdk=<version-installed>apt-cache depends ubuntu-sdk=<version-candidate>

aptitude safe-upgrade(for upgrade) 또는 aptitude full-upgradefor ( ) 를 사용할 수도 있으며 dist-upgrade설치 및/또는 제거할 패키지 목록이 표시되는 동안 다음을 누릅니다.종속성 정보를 보려면 또는 full-upgrade을 사용하는 동안영형제안된 종속성 해결 솔루션을 확인하세요. 그러면 패키지가 설치되거나 제거되는 이유가 표시됩니다.

자세한 내용은 다음 링크를 확인하세요.

관련 정보