'Sudo apt-get remove [write]' peut-il détruire mon Ubuntu?


59

Je voulais supprimer mon application 'write', j'ai donc trouvé ceci sur un site: Pour supprimer un type de package:

sudo apt-get remove [package_name]

Alors j'ai tapé:

sudo apt-get remove [write]

Et après je me suis mis d'accord sur l'invite: "oui, fais ce que je dis!" ou quelque chose comme ça. Et le tour est joué! Mon Ubuntu était en train de supprimer! Quelqu'un peut-il me dire pourquoi?


29
Un moment d'apprentissage sur la lecture de la sortie complète. Beaucoup d'entre nous ont fait quelque chose de similaire ... une fois.
user535733

7
Un bon conseil si vous n'êtes pas sûr de ce qui va arriver est d'utiliser le drapeau --simulateou -ssous aptou en apt-getpremier - Exemple: sudo apt -s remove php7.2-pspellne l'élimine pas réellement. Montre juste ce qui serait enlevé / affecté (si installé). Pareil pour 'installer'.
bshea

touch wd'abord pour vous épargner du chagrin ;-).
Stephen Kitt

@ B.Tanner Je suis heureux d'entendre que ma réponse aide réellement au lieu de simplement polariser. Vous êtes toujours le bienvenu dans la salle de discussion générale de l' UA, au cas où vous auriez d'autres questions ou que vous souhaitiez simplement dire bonjour!
dessert

Aussi une bonne leçon sur les conventions de notation dans les pages de manuel.
Chrylis

Réponses:


92

La commande correcte pour supprimer un paquet nommé writeest:

sudo apt remove write

[write]est un jeu de caractères correspondant aux caractères “w”, “r”, “i”, “t” et “e” et comme la correspondance est effectuée par sous-chaîne par apt. La commande que vous avez exécutée a donc fait correspondre tous les paquets contenant l’un de ces caractères , ce qui est bien sûr beaucoup . Pour citer aptla sortie énumérant uniquement les éléments essentiels:

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!'

Les multiples avertissements ainsi que la nécessité de taper littéralement

Oui, fais ce que je dis!

Des moyens de sécurité sont-ils en place pour vous empêcher de détruire votre système, car le gestionnaire de paquets du système aptest parfaitement capable de le faire. Toute commande exécutée avec sudodoit être exécutée avec précaution et attention, mais ne vous inquiétez pas: presque tous les utilisateurs expérimentés d'Ubuntu ont cassé leur système au moins une fois, en fait c'est amusant si vous me le demandez.

Lectures complémentaires


1
Les commentaires ne sont pas pour une discussion prolongée; cette conversation a été déplacée pour discuter .
Thomas Ward

15

Pour ajouter à ce que d'autres personnes ont dit, vous verrez assez souvent la syntaxe utilisée par le blogueur dans son message.

Il existe des normes assez cohérentes qui sont utilisées lors de la rédaction de la documentation sur l'utilisation des commandes. Dans chaque page de manuel, vous verrez à peu près la même structure.

Si quelque chose est optionnel , il est généralement entre parenthèses. ls [folder](vous n'avez pas besoin de donner à ls un dossier, mais vous pouvez le faire. Donc, facultatif).

Si quelque chose est un fichier ou un email , vous le verrez généralement entre crochets.<likeThis.php>

Si vous avez le choix entre un nombre fini d'éléments (c'est-à-dire des mois), vous le verrez entre accolades, comme ceci:{September,October,November,December}

Avec n'importe lequel de ceux-ci, vous pouvez voir ...ce qui indique qu'il est possible d'en donner plusieurs.

Enfin, si quelque chose est absolument obligatoire, sa documentation est répertoriée et probablement soulignée. Par exemple, man mvle manuel de MV, dit ceci:

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

Techniquement, le nom du package (write) n'est pas une partie obligatoire de la commande. L'essayer apt-get installou apt-get removeva simplement exécuter et quitter le programme avec succès. C'est une des raisons pour lesquelles il pourrait être présenté entre parenthèses sur ce blog.


9

Avant de faire une sudo apt-get, il est sage de faire une simulation:

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

Près de 65 280 paquets peuvent être supprimés s’ils sont installés sur votre système. [write]est un modèle de recherche pour la correspondance Regex, qui sélectionne chaque paquet qui contient:

  • La lettre wou rou iou toue

La sortie est dirigée vers la commande Nombre de mots avec | wc -l. Les lignes de sortie de apt-getsont supprimées par wc. Le -lcommutateur demande wcde n'imprimer que le nombre de lignes et non le nombre de mots ou de caractères.

La simulation est spécifiée avec le -sdrapeau. Vous pouvez également utiliser le --simulatedrapeau pour plus de lisibilité. Un autre avantage d’une simulation est que vous n’avez pas besoin de sudopouvoirs que beaucoup d’entre nous ont appris peuvent parfois être dangereux.

Pour avoir une idée des noms de paquet impliqués, dirigez la sortie vers la lesscommande:

$ 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 ....)
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.