Как удалить deb без удаления его зависимостей

Ниже я покажу вам лучший способ, который я нашел с момента запуска версии Ubuntu Server и использую ifup, а не NetworkManager.

На самом деле для меня это упростило :), / etc / network / interfaces. Те же конфигурации, которые вы написали бы в resolv.conf, теперь могут быть в том же файле, что и конфигурации вашего сетевого адаптера, как в приведенном ниже примере:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.1.2
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.1.255
        gateway 192.168.1.1
        dns-nameservers 75.75.75.75 75.75.76.76
        dns-search local

Я надеюсь, что это поможет и упростит он делает для меня, теперь мы можем создавать статические IP-адреса и добавлять в серверы имен и домен dns все в одном файле:)

35
задан 16 December 2010 в 22:00

48 ответов

AFAIK нет способа удалить пакет с использованием APT, не удаляя также те пакеты, которые зависят от него.

Ссылка: http://www.debian.org/doc/manuals/ APT-HOWTO / ч-кв-get.en.html

3
ответ дан 6 August 2018 в 04:15

Я знаю, что это старый пост, но поскольку у меня недавно была аналогичная проблема, я хотел бы поделиться своим решением в надежде, что кто-то в будущем посчитает это полезным.

Если вы установили пакет через aptitude он автоматически присваивает флаги зависимостям (авто), и когда вы пытаетесь удалить свой пакет снова, он пытается удалить все свои зависимости, которые все еще установлены.

Как вы можете видеть в моем случае это zabbix, который я хочу удалить:

  uman @ mango: ~ $ sudo aptitude purge zabbix-server-mysql zabbix-frontend-php Следующие пакеты будут удалены: apache2 {u} dbconfig-  common {u} fping {u} javascript-common {u} libhtml-template-perl {u} libiksemel3 {u} libjs-prototype {u} libjs-scriptaculous {u} libopenipmi0 {u} libt1-5 {u} mysql-  server {u} mysql-server-5.1 {u} mysql-server-core-5.1 {u} php5 {u} php5-gd {u} php5-mysql {u} snmpd {u} wwwconfig-common {u} zabbix-  frontend-php {p} zabbix-server-mysql {p} Обновлено 0 пакетов, 0 вновь установлено, 20 для удаления и 0 не обновлено  д.  Нужно получить 0 B архивов.  После распаковки будет освобождено 44,9 МБ.  Вы хотите продолжить?  [Y / n /?]  

И если мы посмотрим на пакет Apache, это выглядит так

  uman @ mango: ~ $ aptitude search ^ apache2  i Apache2 - метапакет HTTP-сервера Apache & lt; snip & gt;   

первый флаг «i» сообщает нам, что apache установлен. Следующий флаг «A» означает автоматически установленный

Итак, чтобы исправить это и не иметь apache , mysql и php uninstalled, мы можем просто удалить автоматический флаг с aptitude следующим образом:

  uman @ mango: ~ $ sudo aptitude unmarkauto apache2 mysql-server php5 Пакеты не будут установлены, обновлены,  или удалены.  0 пакетов обновлено, 0 вновь установлено, 0 удалено и 0 не обновлено.  Нужно получить 0 B архивов.  После распаковки будет использоваться 0 B.   

Теперь это выглядит при удалении пакета zabbix:

  uman @ mango: ~ $ sudo aptitude purge zabbix-server-mysql zabbix-frontend-  php Следующие пакеты будут удалены: dbconfig-common {u} fping {u} javascript-common {u} libiksemel3 {u} libjs-prototype {u} libjs-scriptaculous {u} libopenipmi0 {u} libt1-5 {u}  php5-gd {u} wwwconfig-common {u} zabbix-frontend-php {p} zabbix-server-mysql {p} 0 обновлен, 0 вновь установлен, 12 для удаления и 0 не обновлен.  Нужно получить 0 B архивов.  После распаковки будет освобождено 16,6 МБ.  Вы хотите продолжить?  [Y / n /?]  

Подробнее см. Man-страницу для aptitude

12
ответ дан 6 August 2018 в 04:15

Использовать dpkg напрямую, а не apt-get или aptitude:

  sudo dpkg -r --force-depends "package"  
44
ответ дан 6 August 2018 в 04:15

Чтобы выполнить ответ Жоао Пинто, вы можете использовать мой маленький скрипт для исправления сломанного пакета, этот скрипт создаст фиктивный пакет с equivs и установит его.

Или прямо на gist code .

Чтобы использовать его: [ ! d5]

  $ ./gen-dummy-package.sh --install | i [имя_пакета] + # eg  : $ ./gen-dummy-package.sh -i rfkill nome-bluetooth bluez  
0
ответ дан 7 August 2018 в 22:18

Это именно то, что удержание метки apt для.

apt-mark hold имя_пакета

Из документации:

hold используется для маркировки пакета как сдержанного, что предотвратит автоматическую установку, обновление или удаление пакета. Команда - это только обертка вокруг dpkg -set-selection, и поэтому состояние

Чтобы удалить пакет:

apt-mark unhold имя_пакета [ ! d2]

9
ответ дан 7 August 2018 в 22:18

Я знаю, что это старый пост, но поскольку у меня недавно была аналогичная проблема, я хотел бы поделиться своим решением в надежде, что кто-то в будущем посчитает это полезным.

Если вы установили пакет через aptitude он автоматически присваивает флаги зависимостям (авто), и когда вы пытаетесь удалить свой пакет снова, он пытается удалить все свои зависимости, которые все еще установлены.

Как вы можете видеть в моем случае это zabbix, который я хочу удалить:

  uman @ mango: ~ $ sudo aptitude purge zabbix-server-mysql zabbix-frontend-php Следующие пакеты будут удалены: apache2 {u} dbconfig-  common {u} fping {u} javascript-common {u} libhtml-template-perl {u} libiksemel3 {u} libjs-prototype {u} libjs-scriptaculous {u} libopenipmi0 {u} libt1-5 {u} mysql-  server {u} mysql-server-5.1 {u} mysql-server-core-5.1 {u} php5 {u} php5-gd {u} php5-mysql {u} snmpd {u} wwwconfig-common {u} zabbix-  frontend-php {p} zabbix-server-mysql {p} Обновлено 0 пакетов, 0 вновь установлено, 20 для удаления и 0 не обновлено  д.  Нужно получить 0 B архивов.  После распаковки будет освобождено 44,9 МБ.  Вы хотите продолжить?  [Y / n /?]  

И если мы посмотрим на пакет Apache, это выглядит так

  uman @ mango: ~ $ aptitude search ^ apache2  i Apache2 - метапакет HTTP-сервера Apache & lt; snip & gt;   

первый флаг «i» сообщает нам, что apache установлен. Следующий флаг «A» означает автоматически установленный

Итак, чтобы исправить это и не иметь apache , mysql и php uninstalled, мы можем просто удалить автоматический флаг с aptitude следующим образом:

  uman @ mango: ~ $ sudo aptitude unmarkauto apache2 mysql-server php5 Пакеты не будут установлены, обновлены,  или удалены.  0 пакетов обновлено, 0 вновь установлено, 0 удалено и 0 не обновлено.  Нужно получить 0 B архивов.  После распаковки будет использоваться 0 B.   

Теперь это выглядит при удалении пакета zabbix:

  uman @ mango: ~ $ sudo aptitude purge zabbix-server-mysql zabbix-frontend-  php Следующие пакеты будут удалены: dbconfig-common {u} fping {u} javascript-common {u} libiksemel3 {u} libjs-prototype {u} libjs-scriptaculous {u} libopenipmi0 {u} libt1-5 {u}  php5-gd {u} wwwconfig-common {u} zabbix-frontend-php {p} zabbix-server-mysql {p} 0 обновлен, 0 вновь установлен, 12 для удаления и 0 не обновлен.  Нужно получить 0 B архивов.  После распаковки будет освобождено 16,6 МБ.  Вы хотите продолжить?  [Y / n /?]  

Подробнее см. Man-страницу для aptitude

12
ответ дан 7 August 2018 в 22:18

Использовать dpkg напрямую, а не apt-get или aptitude:

  sudo dpkg -r --force-depends "package"  
44
ответ дан 7 August 2018 в 22:18

AFAIK нет способа удалить пакет с использованием APT, не удаляя также те пакеты, которые зависят от него.

Ссылка: http://www.debian.org/doc/manuals/ APT-HOWTO / ч-кв-get.en.html

3
ответ дан 7 August 2018 в 22:18

Использовать dpkg напрямую, а не apt-get или aptitude:

  sudo dpkg -r --force-depends "package"  
44
ответ дан 10 August 2018 в 10:29

AFAIK нет способа удалить пакет с использованием APT, не удаляя также те пакеты, которые зависят от него.

Ссылка: http://www.debian.org/doc/manuals/ APT-HOWTO / ч-кв-get.en.html

3
ответ дан 10 August 2018 в 10:29

Я знаю, что это старый пост, но поскольку у меня недавно была аналогичная проблема, я хотел бы поделиться своим решением в надежде, что кто-то в будущем посчитает это полезным.

Если вы установили пакет через aptitude он автоматически присваивает флаги зависимостям (авто), и когда вы пытаетесь удалить свой пакет снова, он пытается удалить все свои зависимости, которые все еще установлены.

Как вы можете видеть в моем случае это zabbix, который я хочу удалить:

  uman @ mango: ~ $ sudo aptitude purge zabbix-server-mysql zabbix-frontend-php Следующие пакеты будут удалены: apache2 {u} dbconfig-  common {u} fping {u} javascript-common {u} libhtml-template-perl {u} libiksemel3 {u} libjs-prototype {u} libjs-scriptaculous {u} libopenipmi0 {u} libt1-5 {u} mysql-  server {u} mysql-server-5.1 {u} mysql-server-core-5.1 {u} php5 {u} php5-gd {u} php5-mysql {u} snmpd {u} wwwconfig-common {u} zabbix-  frontend-php {p} zabbix-server-mysql {p} Обновлено 0 пакетов, 0 вновь установлено, 20 для удаления и 0 не обновлено  д.  Нужно получить 0 B архивов.  После распаковки будет освобождено 44,9 МБ.  Вы хотите продолжить?  [Y / n /?]  

И если мы посмотрим на пакет Apache, это выглядит так

  uman @ mango: ~ $ aptitude search ^ apache2  i Apache2 - метапакет HTTP-сервера Apache & lt; snip & gt;   

первый флаг «i» сообщает нам, что apache установлен. Следующий флаг «A» означает автоматически установленный

Итак, чтобы исправить это и не иметь apache , mysql и php uninstalled, мы можем просто удалить автоматический флаг с aptitude следующим образом:

  uman @ mango: ~ $ sudo aptitude unmarkauto apache2 mysql-server php5 Пакеты не будут установлены, обновлены,  или удалены.  0 пакетов обновлено, 0 вновь установлено, 0 удалено и 0 не обновлено.  Нужно получить 0 B архивов.  После распаковки будет использоваться 0 B.   

Теперь это выглядит при удалении пакета zabbix:

  uman @ mango: ~ $ sudo aptitude purge zabbix-server-mysql zabbix-frontend-  php Следующие пакеты будут удалены: dbconfig-common {u} fping {u} javascript-common {u} libiksemel3 {u} libjs-prototype {u} libjs-scriptaculous {u} libopenipmi0 {u} libt1-5 {u}  php5-gd {u} wwwconfig-common {u} zabbix-frontend-php {p} zabbix-server-mysql {p} 0 обновлен, 0 вновь установлен, 12 для удаления и 0 не обновлен.  Нужно получить 0 B архивов.  После распаковки будет освобождено 16,6 МБ.  Вы хотите продолжить?  [Y / n /?]  

Подробнее см. Man-страницу для aptitude

12
ответ дан 10 August 2018 в 10:29

Это именно то, что удержание метки apt для.

apt-mark hold имя_пакета

Из документации:

hold используется для маркировки пакета как сдержанного, что предотвратит автоматическую установку, обновление или удаление пакета. Команда - это только обертка вокруг dpkg -set-selection, и поэтому состояние

Чтобы удалить пакет:

apt-mark unhold имя_пакета [ ! d2]

9
ответ дан 10 August 2018 в 10:29

Чтобы выполнить ответ Жоао Пинто, вы можете использовать мой маленький скрипт для исправления сломанного пакета, этот скрипт создаст фиктивный пакет с equivs и установит его.

Или прямо на gist code .

Чтобы использовать его: [ ! d5]

  $ ./gen-dummy-package.sh --install | i [имя_пакета] + # eg  : $ ./gen-dummy-package.sh -i rfkill nome-bluetooth bluez  
0
ответ дан 10 August 2018 в 10:29

Это именно то, что удержание метки apt для.

apt-mark hold имя_пакета

Из документации:

hold используется для маркировки пакета как сдержанного, что предотвратит автоматическую установку, обновление или удаление пакета. Команда - это только обертка вокруг dpkg -set-selection, и поэтому состояние

Чтобы удалить пакет:

apt-mark unhold имя_пакета [ ! d2]

9
ответ дан 13 August 2018 в 16:54
  • 1
    Для моей ситуации это рекомендуемый подход. – Paulo Coghi 10 January 2016 в 10:05
  • 2
    К сожалению, это не позволяет удерживать зависимости. То есть если я устанавливаю пакеты A и B, и они имеют общую зависимость X, то удерживание A не будет содержать X, а удаление B с ошибкой «E: Ошибка, pkgProblemResolver :: Разрешить генерируемые разрывы, это может быть вызвано удерживаемыми пакетами». ; – MSalters 26 October 2017 в 15:30

Чтобы выполнить ответ Жоао Пинто, вы можете использовать мой маленький скрипт для исправления сломанного пакета, этот скрипт создаст фиктивный пакет с equivs и установит его.

Или прямо на gist code .

Чтобы использовать его: [ ! d5]

  $ ./gen-dummy-package.sh --install | i [имя_пакета] + # eg  : $ ./gen-dummy-package.sh -i rfkill nome-bluetooth bluez  
0
ответ дан 13 August 2018 в 16:54

AFAIK нет способа удалить пакет с использованием APT, не удаляя также те пакеты, которые зависят от него.

Ссылка: http://www.debian.org/doc/manuals/ APT-HOWTO / ч-кв-get.en.html

3
ответ дан 13 August 2018 в 16:54

Я знаю, что это старый пост, но поскольку у меня недавно была аналогичная проблема, я хотел бы поделиться своим решением в надежде, что кто-то в будущем посчитает это полезным.

Если вы установили пакет через aptitude он автоматически присваивает флаги зависимостям (авто), и когда вы пытаетесь удалить свой пакет снова, он пытается удалить все свои зависимости, которые все еще установлены.

Как вы можете видеть в моем случае это zabbix, который я хочу удалить:

  uman @ mango: ~ $ sudo aptitude purge zabbix-server-mysql zabbix-frontend-php Следующие пакеты будут удалены: apache2 {u} dbconfig-  common {u} fping {u} javascript-common {u} libhtml-template-perl {u} libiksemel3 {u} libjs-prototype {u} libjs-scriptaculous {u} libopenipmi0 {u} libt1-5 {u} mysql-  server {u} mysql-server-5.1 {u} mysql-server-core-5.1 {u} php5 {u} php5-gd {u} php5-mysql {u} snmpd {u} wwwconfig-common {u} zabbix-  frontend-php {p} zabbix-server-mysql {p} Обновлено 0 пакетов, 0 вновь установлено, 20 для удаления и 0 не обновлено  д.  Нужно получить 0 B архивов.  После распаковки будет освобождено 44,9 МБ.  Вы хотите продолжить?  [Y / n /?]  

И если мы посмотрим на пакет Apache, это выглядит так

  uman @ mango: ~ $ aptitude search ^ apache2  i Apache2 - метапакет HTTP-сервера Apache & lt; snip & gt;   

первый флаг «i» сообщает нам, что apache установлен. Следующий флаг «A» означает автоматически установленный

Итак, чтобы исправить это и не иметь apache , mysql и php uninstalled, мы можем просто удалить автоматический флаг с aptitude следующим образом:

  uman @ mango: ~ $ sudo aptitude unmarkauto apache2 mysql-server php5 Пакеты не будут установлены, обновлены,  или удалены.  0 пакетов обновлено, 0 вновь установлено, 0 удалено и 0 не обновлено.  Нужно получить 0 B архивов.  После распаковки будет использоваться 0 B.   

Теперь это выглядит при удалении пакета zabbix:

  uman @ mango: ~ $ sudo aptitude purge zabbix-server-mysql zabbix-frontend-  php Следующие пакеты будут удалены: dbconfig-common {u} fping {u} javascript-common {u} libiksemel3 {u} libjs-prototype {u} libjs-scriptaculous {u} libopenipmi0 {u} libt1-5 {u}  php5-gd {u} wwwconfig-common {u} zabbix-frontend-php {p} zabbix-server-mysql {p} 0 обновлен, 0 вновь установлен, 12 для удаления и 0 не обновлен.  Нужно получить 0 B архивов.  После распаковки будет освобождено 16,6 МБ.  Вы хотите продолжить?  [Y / n /?]  

Подробнее см. Man-страницу для aptitude

12
ответ дан 13 August 2018 в 16:54

Использовать dpkg напрямую, а не apt-get или aptitude:

  sudo dpkg -r --force-depends "package"  
44
ответ дан 13 August 2018 в 16:54
  • 1
    Правильно, но когда я попытаюсь использовать apt для установки чего-либо, он обнаружит, что пакет, который я удалил с dpkg, отсутствует и переустановит его. Вопрос: Как я могу отказаться от необходимости переустанавливать / игнорировать состояние согласованности? – Maxim Veksler 1 April 2011 в 15:44

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

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