GNU/Linux >> Linux Esercitazione >  >> Ubuntu

In che modo Apt sceglie il pacchetto specifico da installare per fornire un pacchetto virtuale necessario come dipendenza?

Ad esempio, awk è un pacchetto virtuale fornito da original-awk , mawk e gawk .

Provare a installarlo direttamente produce:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package awk is a virtual package provided by:
  original-awk:i386 2012-12-20-4
  mawk:i386 1.3.3-17ubuntu2
  gawk:i386 1:4.1.1+dfsg-1
  original-awk 2012-12-20-4
  mawk 1.3.3-17ubuntu2
  gawk 1:4.1.1+dfsg-1
You should explicitly select one to install.

E: Package 'awk' has no installation candidate

Tuttavia, molti pacchetti virtuali sono necessari come dipendenze dai pacchetti installati per impostazione predefinita, ad esempio awk stesso è necessario per base-files , che controllando i log di APT viene installato insieme a una serie di altri pacchetti tramite apt-get --yes; in qualche modo APT finisce per scegliere automaticamente uno dei tre (sono abbastanza sicuro che sia mawk , ma non è questo il punto della domanda).

In che modo APT sceglie il pacchetto specifico da installare in questo caso?

Risposta accettata:

In che modo APT sceglie il pacchetto specifico da installare in questo caso?

APT non seleziona un pacchetto. Dice:

Dovresti selezionarne uno esplicitamente da installare.

Se provi a selezionare manualmente un pacchetto, questo non verrebbe installato.

Nel caso di file di base dipendenti da awk è irrilevante. Innanzitutto, in realtà dipende da awk, costringendo dpkg a installare awk prima di iniziare a installare i file di base; in secondo luogo, mawk ha la priorità richiesta che viene installata durante l'installazione del sistema e apt ti tormenta se provi a rimuoverlo. Quindi, non farlo.

Ora, secondo le fonti, apt prova prima a soddisfare la dipendenza prima di provare con i pacchetti virtuali (cioè, se dipende sono firefox | www-browser , controlla se uno qualsiasi dei pacchetti è installato, quindi prova a installare Firefox se nessuno dei due lo è). Se il pacchetto non virtuale non è disponibile, sembra semplicemente scorrere su tutti i pacchetti che forniscono il pacchetto virtuale, se non vengono interrotte altre dipendenze. Altre prove di commenti di questo comportamento sono queste che portano alla funzione GrpIterator::FindPreferredPkg.

Correlati:impostazione delle autorizzazioni di esecuzione su un'immagine montata?
Ubuntu
  1. Come installare Webmin su Ubuntu 20.04

  2. Come utilizzare yum per installare una versione specifica di un pacchetto?

  3. Come installare un file Deb, da Dpkg -i o da Apt?

  4. Come installare la termite?

  5. Come rendere Synaptic l'impostazione predefinita per l'installazione di file .deb?

Come installare Ubuntu 22.04 su Virtual Box

Come installare una versione specifica del pacchetto su Ubuntu e Debian

Come installare Ulauncher in Ubuntu 20.04

Come istruire Yum a installare una versione specifica del pacchetto X?

Come abilitare il pulsante Modifica in Shutter?

Come installare KVM su Ubuntu 22.04