Modifiche alle dipendenze dell'elenco per l'aggiornamento apt-get (motivi per cui i pacchetti vengono trattenuti)

4

Proprio oggi, provando un aggiornamento su 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

Ok, quindi da questo ho raccolto phablet-tools , ubuntu-sdk e ubuntu-sdk-ide pacchetti hanno avuto cambiamenti di dipendenza in questo aggiornamento, e quindi dovrei chiamare dist-upgrade ; così faccio:

$ 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

Per uno, ubuntu-sdk è ancora trattenuto - ma ora ho anche un sacco di pacchetti da rimuovere, come "non più necessario", così come una tonnellata di pacchetti da installare. E questo mi irrita, perché non posso dire a quale pacchetto (dipendenza), in particolare, causa l'installazione di nuove o la rimozione dovuta "non più necessaria" dei vecchi pacchetti.

Quindi la mia domanda è - esiste una sorta di modalità dettagliata, o un interruttore, di apt-get , aptitude o programmi simili, che elencherebbe le modifiche di dipendenza dalla versione corrente a quella nuova? So che posso fare:

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

... ma leggo questo come stato della versione corrente; quello che vorrei è qualcosa di simile (pseudocodice)

$ 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)
...

... Vorrei una spiegazione dettagliata del motivo per cui un particolare pacchetto sarebbe stato appena installato o rimosso.

Qualcosa di simile là fuori?

    
posta sdaau 08.09.2016 - 11:08

1 risposta

0

Dalla pagina man di apt-get , un comando upgrade fa

  
    

... I pacchetti attualmente installati con le nuove versioni disponibili sono recuperati e aggiornati; in nessun caso vengono rimossi pacchetti correntemente installati, o pacchetti non ancora installati recuperati e installati. Le nuove versioni dei pacchetti attualmente installati che non possono essere aggiornati senza modificare lo stato di installazione di un altro pacchetto rimarranno alla versione corrente.

  

Ciò significa che apt-get upgrade non installerà o rimuoverà un pacchetto durante l'aggiornamento. Anche quando un pacchetto ha una versione più alta disponibile. In quel caso, quel particolare pacchetto (e tutti i pacchetti associati che sono richiesti da questo) saranno trattenuti. Questo è per la sicurezza del sistema.

Ma, dalla pagina man di apt-get , dist-upgrade è

  
    

dist-upgrade oltre ad eseguire la funzione di aggiornamento, gestisce anche in modo intelligente le dipendenze con le nuove versioni dei pacchetti; apt-get ha un sistema di risoluzione dei conflitti "intelligente" e tenterà di aggiornare i pacchetti più importanti a scapito di quelli meno importanti, se necessario. Il comando dist-upgrade può quindi rimuovere alcuni pacchetti.

  

Quindi, qui vediamo, dist-upgrade è più brutale di upgrade . Tenterà di installare la versione più recente dei pacchetti importanti anche se ciò richiede la rimozione di alcuni pacchetti e / o l'installazione di pacchetti più recenti. Ecco perché dist-upgrade può attivare l'installazione / rimozione di altri pacchetti come la tua situazione nella domanda.

Si noti inoltre che un pacchetto può essere held-back anche per altri casi, come il blocco. Se pin un pacchetto, questo non verrà aggiornato.

held-back può anche verificarsi quando non è possibile installare la versione più recente del pacchetto a causa della mancanza di uno o più pacchetti di dipendenze.

  

Vorrei una spiegazione dettagliata del motivo per cui un particolare pacchetto sarebbe stato appena installato o rimosso.

Una tecnica utile noterebbe i nomi dei pacchetti che verranno installati e controllerà manualmente le loro modifiche di dipendenza tra le versioni.

Per il tuo caso particolare, puoi controllare la variazione di dipendenza di ubuntu-sdk usando apt-cache depends ubuntu-sdk=<version-installed> e apt-cache depends ubuntu-sdk=<version-candidate> . Vedrai versioni più recenti che richiedono pacchetti aggiuntivi.

Puoi anche utilizzare aptitude safe-upgrade (per upgrade ) o aptitude full-upgrade per ( dist-upgrade ) e mentre mostra gli elenchi di pacchetti da installare e / o rimuovere, premi d per vedere le informazioni sulla dipendenza. O mentre stai utilizzando full-upgrade , puoi premere o per vedere la soluzione di risoluzione delle dipendenze proposta. Questo ti mostrerà il motivo per cui un pacchetto verrà installato o rimosso.

Controlla questi link per ulteriori -

risposta data Anwar 08.09.2016 - 12:22

Leggi altre domande sui tag