¿Podría eliminar apt con apt?


45

Sé que puedo usar apt-get remove <package>para eliminar un programa.

Pero aptes un programa en sí mismo. ¿Podría usar apt-get remove aptpara eliminarlo, o se confundiría a la mitad?


2
¿Es una pregunta real o simplemente hipotética? En el caso 1: Pruébalo. De lo contrario: creo que debería poder purgarse si no intenta lanzar ninguno de sus componentes después de haberlos eliminado. Los archivos que ya están abiertos se pueden eliminar sin problemas.
Byte Commander

@ByteCommander Son ambas cosas, pero realmente no puedo probarlo ahora.
Tim

13
Usted puede , pero probablemente no debería . Linux rara vez pregunta por qué su usuario quiere dispararse en el pie, solo asume que tiene una buena razón y le permite apretar el gatillo ...
Shadur

1
Para completar, el dnf de Fedoras no te dejará hacerlo. # dnf remove dnf Dependencies resolved. Error: The operation would result in removing the following protected packages: dnf.
Davidmh

¡Qué pregunta tan malvada es esa! Un seguimiento lógico es: ¿puede recuperarse de eso o requiere una reinstalación completa?
KlaymenDK

Respuestas:


78

APT te permite simular tus comandos usando la opción -s. Puede probar esto usted mismo, emitiendo el comando apt-get -s remove apt(no es sudonecesario).

Esto produce el siguiente resultado:

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]

Entonces la respuesta debería ser: sí, puedes.


8
No estoy seguro de que el modo de simulación de apt cubra las consecuencias de algo como esto. Seguramente este sería un caso extremo que el código puede abordar o no.
Sparhawk

12
Esto no requiere sudo(el -smodo no hace ningún cambio), por lo que probablemente sea mejor ejecutarlo sin sudo precaución.
Nombre falso el

3
Apt bien podría determinar cómo eliminar apt. Pero, ¿puede hacerlo realmente? Es fácil imaginar que podría eliminar un archivo del que más tarde dependa, dejando la instalación en un estado inconsistente.
user253751

1
@immibis Estaría más preocupado por eso para eliminar dpkg. Apt solo le dice a dpkg qué hacer, dpkg es lo que realmente realiza las (des) instalaciones.
Random832

1
Entonces, si apt le dice a dpkg qué hacer, qué sucede cuando elimina dpkg ... lol
SuperSluether

30

Usted puede...

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) ...

y se le advertirá que está a punto de hacer algo muy destructivo. Debo decir ... la lista de paquetes parece horrible para un ahorro de espacio de menos de 6000kb: D

Termina pero no hay manera de volver usando "apt-get". Ubuntu Software Center ya no funcionará y necesitará usar "dpkg" para reinstalar un administrador de paquetes (y manualmente también necesitará instalar todas las dependencias).


12
necesitaría usar "dpkg" para reinstalar un administrador de paquetes (y manualmente también necesitaría instalar todas las dependencias) , por lo tanto, en otras palabras,sudo apt-get remember-what-2002-was-like
user1717828

¿No podrías arrancar en un Live CD entonces , chrooty apt-get, al igual que Arch?
Sparhawk

1
@Sparhawk No estoy seguro de a qué apunta; después de chroot, estás en la raíz de tu sistema normal y estarías buscando apt-get there, que eliminaste. Creo que apt-get (o tal vez es dpkg) permite especificar un directorio raíz alternativo, pero parece que no puedo encontrar rápidamente cómo lo haría.
un CVn

Ninguno de los paquetes que elimina son particularmente IMO "atemorizantes", excepto, por supuesto, apt.
Random832

@ MichaelKjörling Estaba pensando que podría ejecutar la ruta manual hacia la apt-getinstalación en la nueva "raíz", pero olvidé que también necesitaría todos los archivos de configuración / caché. Sin embargo, su posible sugerencia sería más limpia (si existe esa opción).
Sparhawk

12

Una vez, cuando ejecuté CoreUbuntu, instalé un paquete defectuoso de la fuente que aptdecidió obsoleto apt. La próxima vez que corrí apt autoremove, en realidad no miré la lista de software para eliminar y aptestaba en la lista.

Imagina mi sorpresa la próxima vez que escribí apt install <package-name>y obtuve The program 'apt' is currently not installed. You can install it by typing: sudo apt-get install apt.

Por suerte, por alguna razón, autoremoveno eliminar cualquiera de apt's dependencias así que todo lo que tenía que hacer era wget apt' s .debarchivo y volver a instalar usando dpkg -i.


Como se muestra en las otras respuestas, si elimina apt con apt , tendrá más problemas debido a las dependencias que intenta resolver.

Me parece interesante, pero de hecho es el caso que (¿ciertamente para Debian, y quizás Fedora / openSUSE hasta cierto punto?) Muchas distribuciones modernas están definidas y construidas en gran medida sobre la infraestructura proporcionada por su administrador de paquetes de elección.


55
Apuesto a que la razón aptno eliminó las dependencias es que el paquete con errores que ha instalado los enumeró como necesarios. Tiene sentido si ese paquete fue pensado como un reemplazo.
Dmitry Grigoryev

5

Técnicamente, apt no puede eliminar apt ... porque apt no sabe cómo eliminar, instalar o actualizar paquetes. Las tareas de instalación, eliminación, actualización y configuración de paquetes se dejan en dpkg. Aunque puede decirle a apt que elimine el paquete llamado "apt", lo que hace es verificar las dependencias inversas del paquete apt, tomar nota de esos paquetes y ordenar a dpkg que los elimine. Que es lo que se puede ver en las otras respuestas .

Incluso sin apt, puede usar dpkg para instalar, eliminar o actualizar paquetes, solo que será más doloroso rastrear las dependencias y actualizaciones necesarias, que es la razón de ser de apt.


Sí, apt es realmente solo una interfaz más simple dpkg, y si eliminas, ¿ dpkgya es realmente Ubuntu?
gato

@cat Creo que seguirá siendo así ... siempre y cuando no purgue el paquete o elimine el /var/lib/dpkg/statusarchivo. Puede recuperar dpkg si lo desea también.
Braiam

1

Por supuesto que puede. Apt y dpkg son en sí paquetes, y están destinados a poder actualizarse a través de ellos mismos, por lo que hay disposiciones para su eliminación; de lo contrario /var/lib/dpkg/info/dpkg.prermy /var/lib/dpkg/info/dpkg.postrmno tendría razón para existir :)

Si los eliminó accidentalmente de una manera que lo dejó sin dpkg, aún podría desempaquetar manualmente el archivo .deb para dpkg a menos que también elimine binutils, tar, gzip / bzip2.

--purgesin embargo, cualquier paquete relacionado con la cadena de herramientas de apt podría darle problemas desagradables; Es difícil saber qué posee ciertos archivos /var/lib/dpkg. Si /var/lib/dpkg/statusse eliminó y no hubo una copia de seguridad actual, entonces sí, el administrador de paquetes estaría más allá de la reparación en ese sistema.


-1

Juro que vi los aptbinarios /usr/local/binen un sistema basado en Ubuntu no hace mucho tiempo, pero no están allí en mi sistema Ubuntu MATE 15.04 actual (están en la /usr/binmayoría de los otros binarios). Si estaba dentro, /usr/local/binentonces probablemente no sería posible desinstalarlo aptporque el /usr/local/binadministrador de paquetes debe ignorar los archivos . Debo admitir que someterse apt(y dpkgtambién) /usr/local/binsería una buena idea.

Una pregunta más interesante es: ¿qué sucede si desinstala dpkg? Efectivamente, dpkgaparece como un paquete por apt, pero no voy a intentar desinstalarlo ahora (no tengo una máquina virtual configurada en este momento). Teóricamente, uno también podría desinstalarlo consigo dpkgmismo. Voy a adivinar que la única forma de reinstalarlo sería hacerlo manualmente, luego espero que recoja los archivos de configuración existentes (para que no tenga que volver a decirle manualmente al sistema de nuevo qué paquetes están instalados) y luego dígale que el paquete dpkgahora está instalado nuevamente.


(Una broma :) El equivalente de un usuario de Debian # rm -rf /es # apt-get purge ".*".


Si algo que viene de un paquete de distribución oficial termina en / usr / local / bin, presente un error en ese paquete.
rackandboneman

El caso es que no provenía de un paquete; se instaló por separado del administrador de paquetes con el propósito expreso de evitar los problemas "apt-get remove apt" y "apt-get remove dpkg". Creo que fue Linux Mint en realidad, que solía usar como mi sistema principal.
Micheal Johnson
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.