GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Cómo elige Apt el paquete específico para instalar con el fin de proporcionar un paquete virtual necesario como dependencia?

Por ejemplo, awk es un paquete virtual proporcionado por original-awk , mawk y gawk .

Intentar instalarlo directamente 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

Sin embargo, se necesitan muchos paquetes virtuales como dependencias de los paquetes instalados de forma predeterminada, por ejemplo, awk en sí mismo es necesario para base-files , que verifica los registros de APT se instala junto con un montón de otros paquetes a través de apt-get --yes; de alguna manera, APT termina eligiendo uno de los tres automáticamente (estoy bastante seguro de que es mawk , pero ese no es el punto de la pregunta).

¿Cómo elige APT el paquete específico para instalar en este caso?

Respuesta aceptada:

¿Cómo elige APT el paquete específico para instalar en este caso?

APT no selecciona un paquete. Dice:

Debe seleccionar explícitamente uno para instalar.

Si intenta seleccionar manualmente un paquete, no se instalará.

En el caso de archivos base que dependen de awk, es irrelevante. Primero, en realidad depende de awk, lo que obliga a dpkg a instalar awk antes de comenzar a instalar los archivos base; en segundo lugar, mawk tiene prioridad requerida que se instalan en la instalación del sistema, y ​​​​apt lo molesta si intenta eliminarlo. Entonces, simplemente no lo hagas.

Ahora, según las fuentes, apt primero intenta satisfacer la dependencia antes de intentar con paquetes virtuales (es decir, si las dependencias son firefox | www-browser , verifica si alguno de los paquetes está instalado, luego intente instalar Firefox si ninguno lo está). Si el paquete no virtual no está disponible, parece iterar sobre todos los paquetes que proporcionan el paquete virtual, si no se rompen otras dependencias. Otros comentarios que evidencian este comportamiento son los que conducen a la función GrpIterator::FindPreferredPkg.

Relacionado:¿Configurar permisos de ejecución en una imagen montada?
Ubuntu
  1. Cómo instalar Webmin en Ubuntu 20.04

  2. ¿Cómo usar yum para instalar una versión específica de un paquete?

  3. ¿Cómo instalar un archivo Deb, por Dpkg -i o por Apt?

  4. ¿Cómo instalar termitas?

  5. ¿Cómo hacer que Synaptic sea el predeterminado para instalar archivos .deb?

Cómo instalar Ubuntu 22.04 en Virtual Box

Cómo instalar una versión específica del paquete en Ubuntu y Debian

Cómo instalar Ulauncher en Ubuntu 20.04

¿Cómo indicar a Yum que instale una versión específica del paquete X?

¿Cómo habilitar el botón Editar en el obturador?

Cómo instalar KVM en Ubuntu 22.04