"sudo apt-get install foo-" вызывает удаление пакета foo и всего, что от него зависит [дубликат]

Во время работы в командной строке я случайно набрал следующую команду:

sudo apt-get install python3-

и ubuntu начал удалять python3 и все, что от него зависит (включая Firefox и многое другое). К счастью, я немедленно закрыл этот терминал и все отменил, проверив файл журнала dpkg , но мне было интересно, почему команда install должна действовать как удаление?

Это ошибка. ?

Представьте ситуацию, когда вы ищете имя пакета (дважды нажимаете Tab) и проходите через h, нажав клавишу Enter, и эти клавиши остаются в буфере клавиатуры и .... youhaaaa ... apt-get удаляет всю установку на ваших глазах.

10
задан 8 April 2019 в 08:59

2 ответа

Просто попробуйте этот знак минус (или тире) после пакета и да, apt-получите действие как remove.

Забавно, что я не знал эту функцию apt-get . Этот знак минуса действителен для каждого пакета . Я пытался с помощью smplayer- с помощью firefox- и всегда действовал как remove. Так что единственное, о чём я могу думать, это то, что тире в конце пакета, рассматриваемого командой apt-get как минус, и командой install, преобразованной в remove.

Если вы хотели установить все, что связано с python3 , то вам нужно было добавить звездочку после этого тире

sudo apt-get install python3-*

Вначале я думал, что это просто конфликтная проблема, но это не так. Иногда, когда вы устанавливаете какой-то пакет и конфликтуете с другим пакетом, то уже установленный пакет будет удален из-за нового установленного пакета, но это не наша ситуация.

Сегодня мы узнали кое-что полезное.

Из man-страницы apt-get . Чтобы прочитать man-страницу через ваш терминал, дайте man apt-get

Если к имени пакета добавлен дефис (-) (не вмешиваясь пробел), идентифицированный пакет будет удален, если он в настоящее время установленный. Точно так же знак плюс (+) может быть использован для обозначения пакет для установки. Эти последние возможности могут быть использованы для переопределения Решения, принятые системой разрешения конфликтов apt-get.

В конце концов, это не новый вариант или что-то странное, просто мы не внимательно читаем man-страницы.

10
ответ дан 8 April 2019 в 08:59

Это, по-видимому, особенность apt.

Из manpage для команды apt-get Manpage icon,

Если к имени пакета добавляется дефис (с помощью без промежуточного пространства), идентифицированный пакет будет удален, если он установлен. Точно так же знак плюс может быть использован для обозначения пакет для установки. Эти последние возможности могут быть использованы для переопределения Решения, принятые системой разрешения конфликтов apt-get.


Моделирование с установленным пакетом и дефисом, приложенным к концу пакета, дает мне этот вывод:

$ apt-get install -s retext-
NOTE: This is only a simulation!
      apt-get needs root privileges for real execution.
      Keep also in mind that locking is deactivated,
      so don't depend on the relevance to the real current situation!
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following package was automatically installed and is no longer required:
  retext-wpgen
Use 'apt-get autoremove' to remove it.
The following packages will be REMOVED:
  retext
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
Remv retext [3.1.3-1]

Аналогично, с удаленным пакетом и знаком плюса, приложенным к концу пакета, я получаю этот вывод:

$ apt-get remove -s googlecl+
NOTE: This is only a simulation!
      apt-get needs root privileges for real execution.
      Keep also in mind that locking is deactivated,
      so don't depend on the relevance to the real current situation!
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  python-gdata
Suggested packages:
  python-gdata-doc
The following NEW packages will be installed:
  googlecl python-gdata
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Inst python-gdata (2.0.17-1 Ubuntu:12.10/quantal [all])
Inst googlecl (0.9.13-1.1 Ubuntu:12.10/quantal [all])
Conf python-gdata (2.0.17-1 Ubuntu:12.10/quantal [all])
Conf googlecl (0.9.13-1.1 Ubuntu:12.10/quantal [all])
11
ответ дан 8 April 2019 в 08:59

Другие вопросы по тегам:

Похожие вопросы: