¿Puede 'sudo apt-get remove [write]' destruir mi Ubuntu?

59

Quería eliminar mi aplicación 'escribir', así que encontré esto en un sitio: Para eliminar un tipo de paquete:

sudo apt-get remove [package_name]

Entonces escribí:

sudo apt-get remove [write]

Y luego acepté el mensaje: '¡sí, haz lo que te digo!' o algo así. ¡Y voilá! ¡Mi Ubuntu estaba borrando! ¿Puede alguien decirme por qué?

Jesper Joachim Sørensen
fuente
29
Un momento de enseñanza sobre la lectura de la salida completa. Muchos de nosotros hemos hecho algo similar ... una vez.
user535733
77
Un buen consejo si no está seguro de lo que sucederá es usar la bandera --simulateo -sdebajo apto apt-getprimero - Ejemplo: en sudo apt -s remove php7.2-pspellrealidad no elimina eso. Solo le muestra lo que se eliminaría / afectaría (si está instalado). Lo mismo para 'instalar'.
bshea
touch wprimero para ahorrarte algo de pena ;-).
Stephen Kitt
@ B. Tanner Me alegra saber que mi respuesta realmente ayuda en lugar de solo polarizar. Siempre eres bienvenido en la sala de chat general de la UA en caso de que tengas más (u otras) preguntas o simplemente quieras saludar.
postre
También una buena lección sobre las convenciones de notación en las páginas de manual.
Chrylis -en huelga-

Respuestas:

92

El comando correcto para eliminar un paquete llamado writees:

sudo apt remove write

[write]es un conjunto de caracteres que coincide con los caracteres "w", "r", "i", "t" y "e" y como la coincidencia se realiza mediante la subcadena por apt. El comando que ejecutó coincidió con todos los paquetes con uno de estos caracteres , que por supuesto son muchos . Para citar aptel listado de salida solo los esenciales:

WARNING: The following essential packages will be removed.
This should NOT be done unless you know exactly what you are doing!
  apt adduser (due to apt) gpgv (due to apt) ubuntu-keyring (due to apt) libapt-pkg5.0 (due to apt) libc6 (due to apt) libgcc1 (due to apt) libgnutls30 (due to apt) libseccomp2 (due to apt)
  libstdc++6 (due to apt) base-files base-passwd libdebconfclient0 (due to base-passwd) bash libtinfo5 (due to bash) debianutils (due to bash) bsdutils libsystemd0 (due to bsdutils) coreutils
  libacl1 (due to coreutils) libattr1 (due to coreutils) libselinux1 (due to coreutils) dash dpkg (due to dash) diffutils libbz2-1.0 (due to dpkg) liblzma5 (due to dpkg) libzstd1 (due to dpkg)
  zlib1g (due to dpkg) tar (due to dpkg) e2fsprogs libblkid1 (due to e2fsprogs) libcom-err2 (due to e2fsprogs) libext2fs2 (due to e2fsprogs) libss2 (due to e2fsprogs) libuuid1 (due to e2fsprogs) fdisk
  libfdisk1 (due to fdisk) libmount1 (due to fdisk) libncursesw5 (due to fdisk) libsmartcols1 (due to fdisk) findutils grep libpcre3 (due to grep) install-info (due to grep) gzip hostname init
  systemd-sysv (due to init) init-system-helpers (due to init) perl-base (due to init-system-helpers) libc-bin login libaudit1 (due to login) libpam0g (due to login) libpam-runtime (due to login)
  libpam-modules (due to login) mount util-linux (due to mount) ncurses-base ncurses-bin sed sysvinit-utils libudev1 (due to util-linux)
0 upgraded, 0 newly installed, 2503 to remove and 0 not upgraded.
After this operation, 7238 MB disk space will be freed.
You are about to do something potentially harmful.
To continue type in the phrase 'Yes, do as I say!'

Las advertencias múltiples, así como la necesidad de escribir literalmente

¡Sí, haz lo que te digo!

son medios de seguridad para evitar que destruya su sistema, ya que el administrador de paquetes del sistema aptes perfectamente capaz de hacerlo. Cualquier comando que se ejecute sudodebe ejecutarse con cuidado y cuidado, pero no se preocupe: casi todos los usuarios experimentados de Ubuntu rompieron su sistema al menos una vez, de hecho, eso es parte de la diversión si me preguntas.

Otras lecturas

postre
fuente
1
Los comentarios no son para discusión extendida; Esta conversación se ha movido al chat .
Thomas Ward
15

Para agregar a lo que otras personas han dicho, verá la sintaxis que el blogger usó en su publicación con bastante frecuencia.

Existen estándares bastante consistentes que se usan al escribir documentación sobre cómo usar los comandos. En cada página del manual, verá más o menos la misma estructura.

Si algo es opcional , generalmente está entre paréntesis. ls [folder](no es necesario que le dé a ls una carpeta, pero puede hacerlo. Por lo tanto, opcional).

Si algo es un archivo o correo electrónico , generalmente lo verá entre paréntesis angulares.<likeThis.php>

Si puede elegir entre un número finito de cosas (es decir, Meses), lo verá entre llaves como esta:{September,October,November,December}

Con cualquiera de estos, puede ver ...qué denota que se puede dar un múltiplo de esto.

Y finalmente, si algo es absolutamente obligatorio, verá su documentación listada y probablemente subrayada. Por ejemplo, man mvel manual de mv dice esto:

mv [OPTION]... [-T] SOURCE DEST

Técnicamente hablando, el nombre del paquete (escritura) no es una parte obligatoria del comando. Intentalo. apt-get installo apt-get removesimplemente se ejecutará y saldrá del programa con éxito. Esa es una razón por la que podría presentarse entre paréntesis en ese blog.

Nathaniel Pisarski
fuente
9

Antes de hacer un sudo apt-get, es aconsejable hacer una simulación:

$ apt-get remove [write] -s | wc -l
65280

Hay casi 65,280 paquetes que califican para su eliminación si están instalados en su sistema. [write]es un patrón de búsqueda para la coincidencia de expresiones regulares que hace que se seleccione cada paquete si contiene:

  • La letra wo ro io toe

La salida se canaliza al comando Word Count con | wc -l. Las líneas de salida de apt-getson suprimidas por wc. El -lconmutador indica wcque solo se imprima el recuento de líneas y no el recuento de palabras o el recuento de caracteres.

La simulación se especifica con la -sbandera. También puede usar la --simulatebandera para una mayor legibilidad. Otra ventaja de una simulación es que no necesita sudopoderes que muchos de nosotros hemos aprendido que a veces pueden ser peligrosos.

Para tener una idea de los nombres de los paquetes involucrados, la salida de la tubería al lesscomando:

$ apt-get remove [write] --simulate | less

NOTE: This is only a simulation!
      apt-get needs root privileges for real execution.
      Also keep in mind that locking is deactivated,
      so don't depend on the relevance to the real current situation!
Reading package lists...
Building dependency tree...
Reading state information...
Package 'libpam-pin' is not installed, so not removed
Package 'activity-log-manager-common' is not installed, so not removed
Package 'libnet-patricial-perl' is not installed, so not removed
Package 'pe' is not installed, so not removed

   (.... Plus 65,269 more packages ....)
WinEunuuchs2Unix
fuente