Posso rimuovere apt con apt?


45

So che posso usare apt-get remove <package>per rimuovere un programma.

Ma aptè un programma stesso. Potrei usarlo apt-get remove aptper rimuoverlo o sarebbe confuso a metà?


2
È una domanda reale o solo ipotetica? Nel caso 1: provalo. Altrimenti: penso che dovrebbe essere in grado di eliminare se stesso se non tenta di avviare nessuno dei suoi componenti dopo averli rimossi. I file già aperti possono essere rimossi senza problemi.
Byte Commander

@ByteCommander È entrambi, ma non riesco davvero a provarlo adesso.
Tim

13
È possibile , ma probabilmente non dovrebbe . Linux chiede raramente perché il suo utente vuole spararsi al piede, presume solo che tu abbia una buona ragione e ti permette di
premere

1
Per completezza, il dnf di Fedora non ti permetterà di farlo. # dnf remove dnf Dependencies resolved. Error: The operation would result in removing the following protected packages: dnf.
Davidmh,

Che domanda interessante e malvagia! Un follow-up logico è: puoi recuperare da quello o richiede una reinstallazione completa?
KlaymenDK,

Risposte:


78

APT ti consente di simulare i tuoi comandi usando l'opzione -s. Puoi provare tu stesso, eseguendo il comando apt-get -s remove apt(non sudonecessario).

Ciò produce il seguente output:

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  apturl-common xul-ext-ubufox
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
  apt apt-utils apturl nautilus-share python3-software-properties
  software-properties-common software-properties-gtk ubuntu-desktop
  unattended-upgrades
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
  apt
0 upgraded, 0 newly installed, 9 to remove and 0 not upgraded.
Remv ubuntu-desktop [1.341]
Remv nautilus-share [0.7.3-1ubuntu5]
Remv apturl [0.5.2ubuntu9]
Remv software-properties-gtk [0.96.13.1]
Remv software-properties-common [0.96.13.1]
Remv python3-software-properties [0.96.13.1]
Remv unattended-upgrades [0.86.2ubuntu1]
Remv apt-utils [1.0.10.2ubuntu1]
Remv apt [1.0.10.2ubuntu1]

Quindi la risposta dovrebbe essere: sì, puoi.


8
Non sono sicuro che la modalità di simulazione di apt copra l'intero fallout per qualcosa del genere. Sicuramente questo sarebbe un caso limite che il codice potrebbe o meno affrontare.
Sparhawk,

12
Questo non richiede sudo(la -smodalità non apporta alcuna modifica), quindi è probabilmente meglio eseguirla senza sudo precauzione.
Nome falso

3
Apt potrebbe essere in grado di determinare come rimuovere apt. Ma può davvero farlo? È facile immaginare che potrebbe eliminare un file da cui dipende in seguito, lasciando l'installazione in uno stato incoerente.
user253751

1
@immibis Ne sarei più preoccupato per la rimozione di dpkg. Apt stesso dice a dpkg cosa fare, dpkg è ciò che esegue effettivamente le (un) installazioni.
Casuale 832

1
Quindi, se apt dice a dpkg cosa fare, cosa succede quando si rimuove dpkg ... lol
SuperSluether

30

Puoi...

sudo apt-get remove apt
Reading package lists... Done
Building dependency tree      
Reading state information... Done
The following packages will be REMOVED:
  apt apt-utils apturl nautilus-share python3-software-properties
  software-center software-properties-common software-properties-gtk
  ubuntu-desktop ubuntu-extras-keyring ubuntu-minimal unattended-upgrades
WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
  apt
0 upgraded, 0 newly installed, 12 to remove and 0 not upgraded.
After this operation, 9,031 kB disk space will be freed.
You are about to do something potentially harmful.
To continue type in the phrase 'Yes, do as I say!'
?] Yes, do as I say!
(Reading database ... 179817 files and directories currently installed.)
Removing ubuntu-desktop (1.327) ...
Removing nautilus-share (0.7.3-1ubuntu5) ...
Removing apturl (0.5.2ubuntu4) ...
dpkg: warning: while removing apturl, directory '/usr/lib/python3/dist-packages/AptUrl/gtk/backend' not empty so not removed
Removing software-properties-gtk (0.94) ...
dpkg: warning: while removing software-properties-gtk, directory '/usr/lib/python3/dist-packages/softwareproperties/gtk' not empty so not removed
Removing software-properties-common (0.94) ...
Removing python3-software-properties (0.94) ...
Removing unattended-upgrades (0.82.8) ...
Removing ubuntu-minimal (1.327) ...
Removing apt-utils (1.0.9.2ubuntu2) ...
Removing software-center (13.10-0ubuntu4.1) ...
Removing ubuntu-extras-keyring (2010.09.27) ...
OK
Removing apt (1.0.9.2ubuntu2) ...
Processing triggers for man-db (2.7.0.2-2) ...
Processing triggers for gconf2 (3.2.6-2ubuntu1) ...
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for shared-mime-info (1.2-0ubuntu3) ...
Processing triggers for gnome-menus (3.10.1-0ubuntu2) ...
Processing triggers for desktop-file-utils (0.22-1ubuntu2) ...
Processing triggers for bamfdaemon (0.5.1+14.10.20140925-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Processing triggers for mime-support (3.55ubuntu1) ...
Processing triggers for dbus (1.8.8-1ubuntu2) ...
Processing triggers for libc-bin (2.19-10ubuntu2) ...

e ti avvertirai che stai per fare qualcosa di molto distruttivo. Devo dire ... l'elenco dei pacchetti sembra orribile per un risparmio di spazio inferiore a 6000kb: D

Termina ma non è possibile tornare indietro usando "apt-get". Ubuntu Software Center non funzionerà più e sarà necessario utilizzare "dpkg" per reinstallare un gestore di pacchetti (e anche manualmente installare tutte le dipendenze).


12
avrebbe bisogno di usare "dpkg" per reinstallare un gestore di pacchetti (e anche manualmente per installare tutte le dipendenze) , quindi in altre parole,sudo apt-get remember-what-2002-was-like
user1717828

Non potresti avviare un Live CD, quindi chroote apt-get, proprio come fa Arch?
Sparhawk,

1
@Sparhawk Non sei sicuro di cosa stai puntando; dopo aver fatto il chroot, sei nella radice del tuo normale sistema e stai cercando apt-get there, che hai rimosso. Penso che apt-get (o forse sia dpkg) consenta di specificare una directory radice alternativa, ma non riesco a trovare rapidamente come lo faresti.
un CVn

Nessuno dei pacchetti che rimuove è particolarmente "spaventoso" IMO tranne, ovviamente, adatto a se stesso.
Casuale 832

@ MichaelKjörling Pensavo che avresti potuto eseguire il percorso manuale per apt-get, installando nel nuovo "root", ma ho dimenticato che avresti bisogno anche di tutti i file di configurazione / cache. Il tuo possibile suggerimento sarebbe sicuramente più pulito (se esiste questa opzione).
Sparhawk,

12

Una volta, quando ho eseguito CoreUbuntu, ho installato un pacchetto difettoso dalla fonte che ha aptdeciso di diventare obsoleto apt. La prossima volta che ho corso apt autoremove, in realtà non ho guardato l'elenco dei software da rimuovere ed aptera nell'elenco.

Immagina la mia sorpresa la prossima volta che ho digitato apt install <package-name>e ottenuto The program 'apt' is currently not installed. You can install it by typing: sudo apt-get install apt.

Fortunatamente, per qualche ragione, autoremovenon rimuovere alcun apt's dipendenze in modo tutto quello che dovevo fare era wget apt' s .debarchivio e reinstallazione utilizzando dpkg -i.


Come mostrato nelle altre risposte, se rimuovi apt con apt , avrai più problemi a causa delle dipendenze che tenta di risolvere.

Lo trovo interessante, ma è vero che (certamente per Debian, e forse Fedora / openSUSE in una certa misura?) Molte distro moderne sono definite e costruite in gran parte sull'infrastruttura fornita dal loro gestore di pacchetti preferito.


5
Scommetto che il motivo per cui aptnon sono state rimosse le dipendenze è che il pacchetto buggy che hai installato le ha elencate come richiesto. Ha senso se quel pacchetto fosse inteso come sostituto.
Dmitry Grigoryev il

5

Tecnicamente, apt non può rimuovere apt ... perché apt non sa come rimuovere, installare o aggiornare i pacchetti. Le attività di installazione, rimozione, aggiornamento e configurazione dei pacchetti sono lasciate a dpkg. Sebbene si possa dire a apt di rimuovere il pacchetto chiamato "apt", ciò che fa è controllare le dipendenze inverse del pacchetto apt, prendere nota di quei pacchetti e ordinare a dpkg di rimuoverli. Questo è ciò che può essere visto nelle altre risposte .

Anche senza apt è possibile utilizzare dpkg per installare, rimuovere o aggiornare i pacchetti, solo che sarà più doloroso tenere traccia delle dipendenze e degli aggiornamenti necessari, che è la ragion d'essere di apt.


Sì, apt è davvero solo un frontend più semplice per dpkg, e se lo rimuovi dpkgallora è davvero più Ubuntu?
gatto

@cat Penso che sarà ancora ... fintanto che non spurghi il pacchetto o rimuovi il /var/lib/dpkg/statusfile. Puoi recuperare dpkg se vuoi.
Braiam,

1

Certo che puoi. Apt e dpkg sono essi stessi pacchetti e sono pensati per poter essere aggiornati da soli, quindi ci sono disposizioni per la rimozione; altrimenti /var/lib/dpkg/info/dpkg.prerme /var/lib/dpkg/info/dpkg.postrmnon avrebbe motivo di esistere :)

Se li hai rimossi accidentalmente in un modo che ti ha lasciato senza dpkg, potresti comunque decomprimere manualmente l'archivio .deb per dpkg a meno che non ti sbarazzi anche di binutils, tar, gzip / bzip2.

--purgesu qualsiasi pacchetto coinvolto con la toolchain apt potrebbe darti problemi spiacevoli; difficile dire in cosa appartengono determinati file /var/lib/dpkg. Se /var/lib/dpkg/statusfosse stato eliminato e non vi fosse alcun backup corrente, allora sì, il gestore pacchetti sarebbe irreparabile su quel sistema.


-1

Giuro di aver visto i aptbinari /usr/local/binsu un sistema basato su Ubuntu non molto tempo fa, ma non sono lì sul mio attuale sistema Ubuntu MATE 15.04 (sono presenti /usr/bincon la maggior parte degli altri binari). Se fosse presente /usr/local/bin, probabilmente non sarebbe possibile disinstallarlo aptperché i file in /usr/local/bindovrebbero essere ignorati dal gestore pacchetti. Devo ammettere che mettere apt(e dpkganche) sotto /usr/local/binsarebbe una buona idea.

Una domanda più interessante è: cosa succede se si disinstalla dpkg? Abbastanza sicuro, dpkgè elencato come un pacchetto da apt, ma non proverò a disinstallarlo ora (non ho una macchina virtuale configurata al momento). Teoricamente si potrebbe anche disinstallarlo con dpkgse stesso. Ho intenzione di ipotizzare che l'unico modo per reinstallarlo sarebbe quello di farlo manualmente, quindi spero che raccolga i file di configurazione esistenti (quindi non devi ripetere manualmente il sistema di nuovo quali pacchetti sono installati) e quindi dire che il pacchetto dpkgè ora installato nuovamente.


(Uno scherzo :) L'equivalente di un utente Debian # rm -rf /è # apt-get purge ".*".


Se qualcosa proveniente da un pacchetto di distribuzione ufficiale finisce in / usr / local / bin, invia un bug a quel pacchetto.
rackandboneman,

Il fatto è che non proveniva da un pacchetto; è stato installato separatamente dal gestore pacchetti con lo scopo esplicito di evitare i problemi "apt-get remove apt" e "apt-get remove dpkg". Penso che in realtà fosse Linux Mint, che usavo come sistema principale.
Micheal Johnson,
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.