apt-get install з '-' (мінус / дефіс) видаляє пакети


22

Я шукав якийсь пакет ( nautilus-terminal), і випадково зробив це:

$ sudo apt-get install nautilus-
Reading package lists... Done                                                                                                                                                                                                 
Building dependency tree                                                                                                                                                                                                      
Reading state information... Done                                                                                                                                                                                             
The following packages were automatically installed and are no longer required:                                                                                                                                               
  apturl apturl-common libgail-3-0 linux-headers-4.4.0-57 linux-headers-4.4.0-57-generic linux-image-4.4.0-57-generic linux-image-extra-4.4.0-57-generic                                                                      
Use 'sudo apt autoremove' to remove them.                                                                                                                                                                                     
The following packages will be REMOVED:                                                                                                                                                                                       
  gnome-session-flashback nautilus nautilus-sendto nautilus-share ubuntu-desktop                                                                                                                                              
0 upgraded, 0 newly installed, 5 to remove and 69 not upgraded.                                                                                                                                                               
After this operation, 2 031 kB disk space will be freed.                                                                                                                                                                      
Do you want to continue? [Y/n] ^[[^C                                                                                                                                                                                          

Це досить небезпечно, оскільки видалити його набагато складніше, ніж простий штрих від невдалого автозавершення.

Це еквівалент apt-get remove? Я не зміг знайти жодної документації на це. Редагувати: окрім того, що не переглядати сторінку людини ...


1
Чому це небезпечніше apt-get remove? Apt-get навіть повідомляє вам, що це буде робити, і просить підтвердити.
marcelm

3
@marcelm тому remove, що набагато складніше ввести помилку, ніж простий тире від невдалого автозавершення.
stebu92

@ stebu92 Ідеальне формулювання, я додаю, що якщо ви не заперечуєте.
Ondra Žižka

Я думаю, що принаймні Y / n слід змінити на y / N при -використанні.
Ondra Žižka

Можливо, я неправильно трактую, але це здається більше скористанням / скаргою, ніж питанням. На яке питання ви сподіваєтесь отримати відповідь у результаті публікації?
thomasrutter

Відповіді:


28

Від man apt-get:

встановити
   Установка супроводжується одним або декількома пакетами, необхідними для
   встановлення або модернізація. Кожен пакет - це ім'я пакету, а не
   повноцінне ім'я файлу (наприклад, у системі Debian,
   APT-утиліти були б аргументом, але не
   apt-utils_1.2.10_amd64.deb). Всі пакунки, необхідні для
   пакет (и), визначений для встановлення, також буде отриманий та
   встановлено. Файл /etc/apt/sources.list використовується для пошуку
   бажані пакети. Якщо до назви пакету додається дефіс (з
   немає місця, що втручається), ідентифікований пакет буде видалений, якщо він є
   встановлено. Аналогічно знак плюс може бути використаний для позначення а
   пакет для встановлення. Ці останні функції можуть бути використані для перевизначення
   рішення, прийняті системою вирішення конфліктів apt-get.

Отже, OP повинен робити: sudo apt install nautilus && sudo apt install nautilus-terminalде ОП пройшов removeкоманду в іншому: sudo apt install nautilus-terminalякщо НІ було обрано?
Джордж Удосен

3
Обґрунтуванням цієї функції є те, що іноді ви хочете встановити пакет, який суперечить одному, який уже встановлений, але один з них потрібен іншим іншим пакетом, тому обидві дії потрібно проводити в одному ході. Напр. apt install sysvinit-core systemd-sysv-(Або потрібен пакет Essential init) або apt install msmtp postfix-(багато пакунків залежать від MTA).
Саймон Ріхтер

1
@SimonRichter, який пробує apt -s install upstart-sysv16.04, вказує apt, що автоматично видаляється systemd-sysv(оскільки вони конфліктують). Дітто для msmtp-mtaі postifx. Можливо, знадобиться більш складний приклад, де aptможна вибрати неправильний пакет для видалення.
муру

Дякую, що виправили моє сліпе око. Помічено, що apt-get remove foo+встановлюється foo.
Ondra Žižka

Це якась акуратна особливість. : D
Андреа Лацаротто

0

Наступні два означають те саме:

# apt-get remove nautilus
# apt-get install nautilus-

Отже, якщо ви просто встановлюєте або видаляєте одне, то насправді немає підстав вибирати одне над іншим, і removeкоманда може бути використана.

Якщо оператор "мінус" стане в нагоді - це у випадках, коли ви хочете видалити один пакет і встановити інший в тій же операції :

# apt-get install php5-cgi libapache2-mod-php5- 

Я не міг придумати кращого прикладу, але є деякі ситуації, коли видалення однієї та додавання іншої в окремі операції може викликати додаткові непотрібні установки або видалення, тоді як виконання їх обох в одній операції негайно задовольнить деякі залежності і зробить це загальна простіша операція.

Що стосується того , робить додавання мінус простіше випадково видалити що - то ненавмисно, я в першу чергу направити вас до того, як легко створити пошкодження системи ненавмисно в командному рядку в будь-якому випадку . Він не був створений для захисту від себе, і є мільярди навіть більш простих команд, які можуть шлангувати вашу систему. Але по-друге, в цьому випадку він точно говорить вам, що ви робите, і підтверджує, що ви дійсно хочете це зробити. Це низький ризик.

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