Чи може "sudo apt-get remove [write]" знищити мій Ubuntu?


59

Я хотів видалити додаток "написати", тому знайшов це на сайті: Щоб видалити тип пакета:

sudo apt-get remove [package_name]

Тому я набрав:

sudo apt-get remove [write]

А згодом я погодився на підказку: "так, роби те, що я скажу!" чи щось подібне. І вуаля! Мою Ubuntu видаляли! Хтось може мені сказати, чому?


29
Можливий момент прочитання повного результату. Багато хто з нас зробили щось подібне ... колись.
користувач535733

7
Хороший підказок, якщо ви не впевнені, що станеться, - це використовувати прапор --simulateабо -sпід, aptабо apt-getспочатку - Приклад: sudo apt -s remove php7.2-pspellнасправді цього не усунути. Просто показує, що буде видалено / постраждало (якщо його встановлено). Те саме для "встановити".
bshea

touch wспочатку врятуй собі трохи горя ;-).
Стівен Кітт

@ B.Tanner Я радий почути, що моя відповідь насправді допомагає замість просто поляризації. Ви завжди раді в загальній кімнаті чату АС, якщо у вас є додаткові (або інші) питання або просто хочете сказати привіт!
десерт

Також хороший урок про конвенції про позначення на сторінках людини.
хриліс

Відповіді:


92

Правильна команда для видалення пакета з іменем write:

sudo apt remove write

[write]- це набір символів, що відповідає символам "w", "r", "i", "t" і "e", і як відповідність здійснюється за допомогою підрядків apt. Таким чином команда, яку ви виконували, відповідала всім пакункам з одним із цих символів , яких, звичайно, дуже багато . Щоб процитувати aptвихідний список лише найважливіших:

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

Багаторазові попередження, а також необхідність буквально набирати текст

Так, роби, як я кажу!

є засобами безпеки, які не дозволяють вам зруйнувати вашу систему, оскільки менеджер пакунків системи aptцілком здатний це робити. Будь-яку команду, з якою виконується команда, sudoслід запускати обережно і продумано, але не біда: Майже кожен досвідчений користувач Ubuntu хоч раз зламав свою систему, адже це є частиною задоволення, якщо ви запитаєте мене.

Подальше читання


1
Коментарі не для розширеного обговорення; ця розмова переміщена до чату .
Томас Уорд

15

Щоб додати те, що сказали інші, ви побачите синтаксис, який блогер використовував у своїй публікації досить часто.

Існують досить послідовні стандарти, які застосовуються при написанні документації щодо використання команд. На кожній сторінці керівництва ви побачите майже однакову структуру.

Якщо щось є необов’язковим , воно зазвичай в дужках. ls [folder](вам не потрібно давати папку ls, але ви можете. Таким чином, необов’язково).

Якщо щось є файлом або електронною поштою , ви зазвичай бачите це в кутових дужках.<likeThis.php>

Якщо у вас є вибір між обмеженою кількістю речей (тобто місяцями), ви побачите це в дужках, як це:{September,October,November,December}

З будь-яким із них ви можете побачити, ...що позначає, що це може бути задано кратне.

І нарешті, якщо щось є абсолютно обов'язковим, ви побачите його документацію, перелічену та, ймовірно, підкреслену. Наприклад, man mvу посібнику mv йдеться про таке:

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

Технічно кажучи, назва пакету (запис) не є обов'язковою частиною команди. Спробуй це. apt-get installабо apt-get removeпросто запустити та вийти з програми успішно. Це одна з причин того, що його можна було б представити в дужках на цьому блозі.


9

Перш ніж робити sudo apt-get, розумно зробити моделювання:

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

Існує майже 65 280 пакетів, які можуть бути видалені , якщо вони встановлені у вашій системі. [write]- це схема пошуку для відповідності Regex, що призводить до вибору кожного пакету, якщо він містить:

  • Лист wабо rабо iабо tабоe

Вихід передається в команду Word Count за допомогою | wc -l. Вихідні лінії з apt-getпридушуються wc. -lПеремикач інструктує wcтільки кількість копій рядків , а не кількість слів або символів.

Моделювання задається -sпрапором. Ви також можете використовувати --simulateпрапор для більшої читабельності. Ще однією перевагою моделювання є те, що вам не потрібні sudoповноваження, про які багато хто з нас дізналися, що часом можуть бути небезпечними.

Щоб отримати уявлення про назви пакетів, передбачається вихід труби в lessкоманду:

$ 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 ....)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.