Kann 'sudo apt-get remove [write]' mein Ubuntu zerstören?

59

Ich wollte meine 'Write'-App entfernen, daher habe ich Folgendes auf einer Site gefunden: So entfernen Sie einen Pakettyp:

sudo apt-get remove [package_name]

Also habe ich geschrieben:

sudo apt-get remove [write]

Und danach stimmte ich der Aufforderung zu: "Ja, mach was ich sage!" oder etwas ähnliches. Und voila! Mein Ubuntu wurde gelöscht! Kann mir jemand sagen warum?

Jesper Joachim Sørensen
quelle
29
Ein lernfähiger Moment zum Lesen der gesamten Ausgabe. Viele von uns haben etwas Ähnliches getan ... einmal.
user535733
7
Ein guter Tipp, wenn Sie nicht sicher sind, was passieren wird, ist die Verwendung der Flagge --simulateoder -sunter aptoder apt-getzuerst - Beispiel: sudo apt -s remove php7.2-pspellEntfernt das nicht wirklich. Zeigt Ihnen nur, was entfernt / betroffen wäre (falls installiert). Gleiches gilt für "Installieren".
9.
touch wzuerst, um dir etwas Kummer zu ersparen ;-).
Stephen Kitt
@ B.Tanner Es freut mich zu hören, dass meine Antwort tatsächlich hilft, anstatt nur zu polarisieren. Sie sind im allgemeinen Chat-Raum der AU immer willkommen, wenn Sie weitere (oder andere) Fragen haben oder einfach nur Hallo sagen möchten!
Dessert
Auch eine gute Lektion über die Notationskonventionen in Manpages.
chrylis -on strike-

Antworten:

92

Der richtige Befehl zum Entfernen eines benannten Pakets writelautet:

sudo apt remove write

[write]ist ein Zeichensatz, der mit den Zeichen "w", "r", "i", "t" und "e" übereinstimmt apt. Der Befehl, den Sie ausgeführt haben, hat also alle Pakete mit einem dieser Zeichen abgeglichen , was natürlich eine Menge ist . So zitieren Sie aptdie Ausgabeauflistung nur der wichtigsten:

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

Die mehrfachen Warnungen sowie die Notwendigkeit, buchstäblich zu tippen

Ja, mach was ich sage!

Sind Sicherheitsmittel vorhanden, die Sie davon abhalten, Ihr System zu zerstören, da der Paket-Manager des Systems dazu aptin der Lage ist. Jeder Befehl, mit dem ausgeführt wird, sudosollte sorgfältig und nachdenklich ausgeführt werden, aber keine Sorge: Fast jeder erfahrene Ubuntu-Benutzer hat sein System mindestens einmal kaputt gemacht.

Weitere Lektüre

Dessert
quelle
1
Kommentare sind nicht für längere Diskussionen gedacht. Diese Unterhaltung wurde in den Chat verschoben .
Thomas Ward
15

Um das, was andere Leute gesagt haben, zu ergänzen, sehen Sie die Syntax, die der Blogger in seinem Beitrag ziemlich oft verwendet hat.

Es gibt ziemlich konsistente Standards, die beim Schreiben von Dokumentation zur Verwendung von Befehlen verwendet werden. In jeder Handbuchseite sehen Sie so ziemlich die gleiche Struktur.

Wenn etwas optional ist , steht es normalerweise in Klammern. ls [folder](Sie müssen ls keinen Ordner geben, aber Sie können. Also optional).

Wenn etwas eine Datei oder eine E-Mail ist , wird es normalerweise in spitzen Klammern angezeigt.<likeThis.php>

Wenn Sie zwischen einer begrenzten Anzahl von Dingen wählen können (z. B. Monate), wird dies in geschweiften Klammern angezeigt:{September,October,November,December}

Bei jedem von diesen können Sie sehen, ...was bedeutet, dass ein Vielfaches davon gegeben werden kann.

Und schließlich, wenn etwas absolut obligatorisch ist, werden Sie die Dokumentation aufgelistet und wahrscheinlich unterstrichen sehen. Im man mvHandbuch von mv heißt es beispielsweise:

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

Technisch gesehen ist der Paketname (Schreiben) kein erforderlicher Bestandteil des Befehls. Versuch es. apt-get installoder apt-get removewird nur ausgeführt und das Programm erfolgreich beendet. Das ist einer der Gründe, warum es in diesem Blog in Klammern stehen könnte.

Nathaniel Pisarski
quelle
9

Vor dem Ausführen von sudo apt-getist es ratsam, eine Simulation durchzuführen:

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

Es gibt fast 65.280 Pakete, die entfernt werden können, wenn sie auf Ihrem System installiert sind. [write]ist ein Suchmuster für den Regex-Abgleich , bei dem jedes Paket ausgewählt wird, wenn es Folgendes enthält:

  • Der Brief woder roder ioder todere

Die Ausgabe wird mit dem Befehl Word Count weitergeleitet| wc -l . Ausgangsleitungen von apt-getwerden durch unterdrückt wc. Der -lSchalter weist wcan, nur die Anzahl der Zeilen und nicht die Anzahl der Wörter oder Zeichen zu drucken.

Die Simulation wird mit dem -sFlag angegeben. Sie können das --simulateFlag auch für eine bessere Lesbarkeit verwenden. Ein weiterer Vorteil einer Simulation ist, dass Sie keine sudoKräfte benötigen , von denen viele von uns gelernt haben, dass sie manchmal gefährlich sein können.

Um eine Vorstellung von den beteiligten Paketnamen zu bekommen, leiten Sie die Ausgabe an den lessBefehl weiter:

$ 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
quelle