¿Cómo excluyo paquetes específicos de la instalación con apt-get?

12

Me gustaría excluir paquetes específicos de la instalación con apt-get, es decir, instalar un metapaquete sin la lista de paquetes específicos, preferiblemente con una invocación de apt-get.

Por ejemplo, en la línea de comandos Ubuntu 14.04 LTS, estoy instalando el entorno de escritorio MATE. En 14.04 LTS MATE no es un sabor oficial, así que agrego un PPA:

sudo apt-get install software-properties-common # need them for 'apt-add-repository'
sudo apt-add-repository ppa:ubuntu-mate-dev/ppa
sudo apt-add-repository ppa:ubuntu-mate-dev/trusty-mate
sudo apt-get update

luego instalar:

sudo apt-get install xorg mate-core --no-install-recommends

Incluso sin los extras recomendadas, mate-coreinstala 3 emuladores de terminal: xterm, uxtermy mate-terminal , este último carece de fuentes adecuadas, mientras que instalado en esta configuración mínima.

Supongamos que decido que 3 programas de terminal serían demasiados y me gustaría instalarlos xorgy mate-core sin xterm y mate-terminal. Yo podría hacer

sudo apt-get install xorg mate-core --no-install-recommends
sudo apt-get purge xterm mate-terminal

pero ¿es posible hacer esto de una vez? ¿Hay alguna sintaxis como

sudo apt-get install xorg mate-core --without xterm mate-terminal
Nickolai Leschov
fuente
¿Estás seguro de que puedes eliminar xtermy mate-terminal? En 15.04, mate-terminales una dependencia dura de mate-desktop-environment-core, que es una dependencia dura de mate-core, y supongo que el PPA mate-terminalno proporciona x-terminal-emulator(lo que sí hace el paquete en 15.04).
Muru
Tal vez tengas razón , a menos que un asterisco al lado de los nombres de los paquetes signifique algo especial aquí. Además, sorprendentemente se liberará poco espacio. De todos modos, mi pregunta es sobre eliminar todo lo que se puede eliminar, por ejemplo, XTermy tal vez UXTerm(no estoy seguro de cuál es el nombre del paquete para este último)
Nickolai Leschov
1
¿Es esto lo que estás buscando? askubuntu.com/questions/75895/...
Seth
@Seth No del todo: me gustaría que hubiera alguna sintaxis comosudo apt-get install xorg mate-core --without xterm mate-terminal
Nickolai Leschov
Si usa aptitude(o algún administrador de paquetes gráfico), puede (des) seleccionar qué paquetes instalar, y si uno da como resultado una dependencia interrumpida, se le dará una explicación (generalmente).
saiarcot895

Respuestas:

7

Así, compañero de núcleos depende de mate-desktop-environment-coreque a su vez depende de mate-terminal. Una dependencia no se puede romper fácilmente. Ni apt-gettampoco aptitudees compatible con una --withouto --excludeopción y "mantener" los paquetes no ayuda:

$ echo "mate-terminal hold" | sudo dpkg --set-selections
$ sudo apt-get install mate-core
[...]
Algunos paquetes no se pudieron instalar ...
Los siguientes paquetes tienen dependencias insatisfechas:

Claro, uno puede usar dpkg --force-dependspara instalar un paquete, pero tal vez eso no sea lo que desea.

Una posibilidad sería llenar la Depends:bandera con un paquete ficticio:

$ sudo apt-get install equivs
$ equivs-control mate-terminal
$ vi mate-terminal
Sección: misceláneo
Prioridad: opcional
Versión estándar: 3.9.2
Paquete: mate-terminal
Versión: 1.8.0
Descripción: paquete ficticio para mate-terminal
:X

$ equivs-build mate-terminal
$ sudo dpkg -i mate-terminal_1.8.0_all.deb

Ahora mate-coredebería poder instalar w / o mate-terminal. Repita lo mismo para otros paquetes que se excluirán.

Es cierto que esto es un gran esfuerzo y una --withoutopción sería buena. Tal vez se pueda abrir un error de la lista de deseos para proporcionar dicha funcionalidad en el futuro, pero de alguna manera dudo que esto se implemente.

Sin embargo, una opción más realista sería solicitar al propietario del PPA que proporcione otro metapaquete para MATE con Dependspaquetes de menor tamaño establecidos.

ckujau
fuente
4

Si usa aptitudeun administrador de paquetes gráfico (Synaptic, etc.), puede anular la selección de qué paquetes deben instalarse siempre que no cause un problema de dependencia.

En el caso de aptitude, antes de instalar un paquete (en la vista gráfica), le mostrará por qué se está instalando un paquete dependiente. En mi caso, uso KDE, por lo que no tengo ningún paquete MATE. Si le digo que se instale mate-core, obtengo lo siguiente:

ingrese la descripción de la imagen aquí

Observe que mate-coreestá marcado como instalado manualmente y que se están instalando muchos otros paquetes. Para el mate-terminalpaquete, en la parte inferior, dice, " mate-desktop-environment-core[universo] depende de mate-terminal(> = 1.0.0)". Yendo a la entrada para mate-desktop-environment-core,

ingrese la descripción de la imagen aquí

" mate-core[universo] depende de mate-desktop-environment-core(> = 1.8.0 + 9)". Por eso mate-terminalse está instalando.

Si, en cambio, se está instalando un paquete recomendado (en lugar de algo que depende de otro paquete), aptitudese lo informará y usted puede decirle que no instale ese paquete sin ninguna dependencia rota. Por ejemplo:

ingrese la descripción de la imagen aquí

saiarcot895
fuente
2

Otro método

Descargue el paquete principal que depende del otro. Extraiga el paquete, elimine las dependencias no deseadas y vuelva a embalarlo. Ahora abra el nuevo paquete con el instalador de paquetes gdebi . Instalará nuevas dependencias para usted.

  • La lista de dependencias se puede encontrar en DEBIAN / control -> depende
  • Para obtener ayuda sobre la reparación de deb, vea mi respuesta sobre cómo crear un PPA
totti
fuente
0

Hay una aptsintaxis especial para escenarios como este: agregar un guión (signo menos) a un paquete lo eliminará / no lo instalará, por lo que lo más cercano a usted sudo apt-get install xorg mate-core --without xterm mate-terminal es sudo apt-get install xorg mate-core xterm- mate-terminal- (visto en /ubuntu//a/1011439/182923 )

No ayudará en este caso, ya que se encontrará con

The following packages have unmet dependencies:
 mate-desktop-environment-core : Depends: mate-terminal (>= 1.20) but it is not going to be installed                                                                        
E: Unable to correct problems, you have held broken packages.

pero parece ser la respuesta a tu pregunta específica. Entonces, como referencia, esta publicación cruzada.

eMPee584
fuente