Come escludo pacchetti specifici dall'installazione con apt-get?


12

Vorrei escludere pacchetti specifici dall'installazione con apt-get, cioè, installare un metapacchetto senza l'elenco di pacchetti specifici, preferibilmente con una chiamata di apt-get.

Ad esempio, nella riga di comando di Ubuntu 14.04 LTS, sto installando l'ambiente desktop MATE. In 14.04 LTS MATE non è un sapore ufficiale, quindi sto aggiungendo 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

quindi installando:

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

Anche senza gli extra consigliati, mate-coreinstalla 3 emulatori di terminale: xterm, uxterme mate-terminal , quest'ultimo privo caratteri localizzati mentre installato in questa configurazione minima.

Supponiamo che io decida che 3 programmi terminali sarebbero troppi e che vorrei installare xorge mate-core senza xterm e mate-terminal. Potrei fare

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

ma è possibile farlo in una volta sola? C'è qualche sintassi simile

sudo apt-get install xorg mate-core --without xterm mate-terminal

Sei sicuro di poter rimuovere xterme mate-terminal? Nel 15.04, mate-terminalc'è una forte dipendenza di mate-desktop-environment-core, che è una forte dipendenza di mate-core, e suppongo che il PPA mate-terminalnon fornisca x-terminal-emulator(cosa che fa il pacchetto in 15.04).
muru,

Forse hai ragione , a meno che un asterisco accanto ai nomi dei pacchetti non significhi qualcosa di speciale qui. Inoltre, sorprendentemente poco spazio verrà liberato. Ad ogni modo, la mia domanda è sulla rimozione di tutto ciò che può essere rimosso, diciamo, XTerme forse UXTerm(non sono sicuro del nome del pacchetto per quest'ultimo)
Nickolai Leschov,

1
E 'questo quello che stai cercando? askubuntu.com/questions/75895/…
Seth,

@Seth Non proprio: mi piacerebbe se ci fosse una sintassi similesudo apt-get install xorg mate-core --without xterm mate-terminal
Nickolai Leschov,

Se si utilizza aptitude(o qualche gestore di pacchetti grafico), è possibile (de) selezionare quali pacchetti installare e, se si ottiene una dipendenza interrotta, verrà (di solito) fornita una spiegazione.
saiarcot895,

Risposte:


7

Quindi, compagno-core dipende su mate-desktop-environment-coreche a sua volta dipende su mate-terminal. Una dipendenza non può essere rotta facilmente. Né apt-getaptitudesupporta una --withouto --excludel'opzione e "azienda" i pacchetti non sarà di aiuto:

$ echo "mate-terminal hold" | sudo dpkg --set-selections
$ sudo apt-get install mate-core
[...]
Alcuni pacchetti non possono essere installati ...
I seguenti pacchetti hanno dipendenze non soddisfatte:

Certo, si può usare dpkg --force-dependsper installare un pacchetto, ma forse non è quello che vuoi.

Una possibilità sarebbe quella di riempire la Depends:bandiera con un pacchetto fittizio:

$ sudo apt-get install equivs
$ equivs-control mate-terminal
$ vi mate-terminal
Sezione: misc
Priorità: facoltativa
Versione standard: 3.9.2
Pacchetto: mate-terminal
Versione: 1.8.0
Descrizione: pacchetto fittizio per mate-terminal
:X

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

Ora mate-coredovrebbe essere in grado di installare senza mate-terminal. Ripetere lo stesso per gli altri pacchetti da escludere.

Certo, questo è piuttosto uno sforzo e --withoutun'opzione sarebbe piacevole. Forse un bug di wishlist può essere aperto per fornire tale funzionalità in futuro, ma dubito in qualche modo che questo verrà implementato.

Tuttavia, un'opzione più realistica sarebbe quella di presentare una petizione al proprietario di PPA per fornire un altro meta pacchetto per MATE con Dependspacchetti minori impostati.


4

Se si utilizza aptitudeo un gestore di pacchetti grafico (Synaptic, ecc.), È possibile deselezionare quali pacchetti devono essere installati purché non causino un problema di dipendenza.

Nel caso di aptitude, prima di installare un pacchetto (nella vista grafica), ti mostrerà perché viene installato un pacchetto dipendente. Nel mio caso, utilizzo KDE e quindi non ho pacchetti MATE. Se gli dico di installare mate-core, ottengo quanto segue:

inserisci qui la descrizione dell'immagine

Si noti che mate-coreè contrassegnato come installato manualmente e che molti altri pacchetti vengono installati. Per il mate-terminalpacchetto, in fondo, dice " mate-desktop-environment-core[universo] dipende da mate-terminal(> = 1.0.0)". Passando alla voce per mate-desktop-environment-core,

inserisci qui la descrizione dell'immagine

" mate-core[universo] dipende da mate-desktop-environment-core(> = 1.8.0 + 9)". Questo è il motivo per cui mate-terminalviene installato.

Se invece viene installato un pacchetto consigliato (piuttosto che qualcosa che dipende da un altro pacchetto), te aptitudelo dirà e puoi dirgli di non installare quel pacchetto senza dipendenze interrotte. Per esempio:

inserisci qui la descrizione dell'immagine


2

Un altro metodo

Scarica il pacchetto principale che dipende dall'altro. Estrarre il pacchetto, rimuovere le dipendenze indesiderate, reimballarlo. Ora apri il nuovo pacchetto con il programma di installazione dei pacchetti gdebi . Installerà nuove dipendenze per te.

  • L'elenco delle dipendenze è disponibile in DEBIAN / control -> dipende
  • Per assistenza sulla sostituzione di deb, vedere la mia risposta su come creare un PPA

0

Esiste una aptsintassi speciale per scenari come questo: l'aggiunta di un trattino (segno meno) a un pacchetto lo rimuoverà / non lo installerà, quindi il più vicino al tuo sudo apt-get install xorg mate-core --without xterm mate-terminal è sudo apt-get install xorg mate-core xterm- mate-terminal- (notato su /ubuntu//a/1011439/182923 )

In questo caso non sarà d'aiuto, poiché ti imbatterai in

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.

ma sembra essere la risposta alla tua domanda specifica. Quindi, per riferimento, questo incrocio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.