Как удалить 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 ответов

Вы можете создать фиктивный пакет .deb с помощью утилиты equivs, он будет обеспечивать зависимость без установки каких-либо файлов. Затем просто замените установленный пакет на фиктивную версию, используя dpkg -i fake.deb.

15
ответ дан 25 May 2018 в 23:56

Вы можете создать фиктивный пакет .deb с помощью утилиты equivs, он будет обеспечивать зависимость без установки каких-либо файлов. Затем просто замените установленный пакет на фиктивную версию, используя dpkg -i fake.deb.

15
ответ дан 25 July 2018 в 22:44

Вы можете создать фиктивный пакет .deb с помощью утилиты equivs, он будет обеспечивать зависимость без установки каких-либо файлов. Затем просто замените установленный пакет на фиктивную версию, используя dpkg -i fake.deb.

15
ответ дан 2 August 2018 в 04:09

Вы можете создать пакет dummy .deb с помощью утилиты equivs , он будет обеспечивать зависимость без установки каких-либо файлов. Затем просто замените установленный пакет на фиктивную версию, используя dpkg -i fake.deb .

15
ответ дан 4 August 2018 в 20:13

Вы можете создать пакет dummy .deb с помощью утилиты equivs , он будет обеспечивать зависимость без установки каких-либо файлов. Затем просто замените установленный пакет на фиктивную версию, используя dpkg -i fake.deb .

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

Вы можете создать пакет dummy .deb с помощью утилиты equivs , он будет обеспечивать зависимость без установки каких-либо файлов. Затем просто замените установленный пакет на фиктивную версию, используя dpkg -i fake.deb .

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

Вы можете создать пакет dummy .deb с помощью утилиты equivs , он будет обеспечивать зависимость без установки каких-либо файлов. Затем просто замените установленный пакет на фиктивную версию, используя dpkg -i fake.deb .

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

Вы можете создать пакет dummy .deb с помощью утилиты equivs , он будет обеспечивать зависимость без установки каких-либо файлов. Затем просто замените установленный пакет на фиктивную версию, используя dpkg -i fake.deb .

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

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

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

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

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

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

uman@mango:~$ sudo aptitude purge zabbix-server-mysql zabbix-frontend-php
The following packages will be REMOVED:  
  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 packages upgraded, 0 newly installed, 20 to remove and 0 not upgraded.
Need to get 0 B of archives. After unpacking 44.9 MB will be freed.
Do you want to continue? [Y/n/?]

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

uman@mango:~$ aptitude search ^apache2
i A apache2        - Apache HTTP Server metapackage
<snip>

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

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

uman@mango:~$ sudo aptitude unmarkauto apache2 mysql-server php5
No packages will be installed, upgraded, or removed.
0 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B of archives. After unpacking 0 B will be used.

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

uman@mango:~$ sudo aptitude purge zabbix-server-mysql zabbix-frontend-php
The following packages will be REMOVED:  
  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 packages upgraded, 0 newly installed, 12 to remove and 0 not upgraded.
Need to get 0 B of archives. After unpacking 16.6 MB will be freed.
Do you want to continue? [Y/n/?] 

Пожалуйста, посмотрите man-страницу для aptitude для более подробной информации

12
ответ дан 25 May 2018 в 23:56

Это именно то, что apt-mark hold для.

apt-mark hold package_name

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

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

Чтобы отменить пакет:

apt-mark unhold package_name

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

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

Ссылка: http://www.debian.org/doc/manuals/apt-howto /ch-apt-get.en.html

3
ответ дан 25 May 2018 в 23:56

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

Или прямо на мой блог на французском .

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

$ ./gen-dummy-package.sh --install|i [packageName]+
# e.g. :
$ ./gen-dummy-package.sh -i rfkill nome-bluetooth bluez
0
ответ дан 25 May 2018 в 23:56

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

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

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

Ссылка: http://www.debian.org/doc/manuals/apt-howto /ch-apt-get.en.html

3
ответ дан 25 July 2018 в 22:44

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

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

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

uman@mango:~$ sudo aptitude purge zabbix-server-mysql zabbix-frontend-php The following packages will be REMOVED: 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 packages upgraded, 0 newly installed, 20 to remove and 0 not upgraded. Need to get 0 B of archives. After unpacking 44.9 MB will be freed. Do you want to continue? [Y/n/?]

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

uman@mango:~$ aptitude search ^apache2 i A apache2 - Apache HTTP Server metapackage <snip>

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

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

uman@mango:~$ sudo aptitude unmarkauto apache2 mysql-server php5 No packages will be installed, upgraded, or removed. 0 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Need to get 0 B of archives. After unpacking 0 B will be used.

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

uman@mango:~$ sudo aptitude purge zabbix-server-mysql zabbix-frontend-php The following packages will be REMOVED: 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 packages upgraded, 0 newly installed, 12 to remove and 0 not upgraded. Need to get 0 B of archives. After unpacking 16.6 MB will be freed. Do you want to continue? [Y/n/?]

Пожалуйста, посмотрите man-страницу для aptitude для более подробной информации

12
ответ дан 25 July 2018 в 22:44

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

Или прямо на мой блог на французском .

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

$ ./gen-dummy-package.sh --install|i [packageName]+ # e.g. : $ ./gen-dummy-package.sh -i rfkill nome-bluetooth bluez
0
ответ дан 25 July 2018 в 22:44

Это именно то, что apt-mark hold для.

apt-mark hold package_name

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

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

Чтобы отменить пакет:

apt-mark unhold package_name

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

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

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

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

Ссылка: http://www.debian.org/doc/manuals/apt-howto /ch-apt-get.en.html

3
ответ дан 2 August 2018 в 04:09

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

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

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

uman@mango:~$ sudo aptitude purge zabbix-server-mysql zabbix-frontend-php The following packages will be REMOVED: 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 packages upgraded, 0 newly installed, 20 to remove and 0 not upgraded. Need to get 0 B of archives. After unpacking 44.9 MB will be freed. Do you want to continue? [Y/n/?]

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

uman@mango:~$ aptitude search ^apache2 i A apache2 - Apache HTTP Server metapackage <snip>

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

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

uman@mango:~$ sudo aptitude unmarkauto apache2 mysql-server php5 No packages will be installed, upgraded, or removed. 0 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Need to get 0 B of archives. After unpacking 0 B will be used.

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

uman@mango:~$ sudo aptitude purge zabbix-server-mysql zabbix-frontend-php The following packages will be REMOVED: 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 packages upgraded, 0 newly installed, 12 to remove and 0 not upgraded. Need to get 0 B of archives. After unpacking 16.6 MB will be freed. Do you want to continue? [Y/n/?]

Пожалуйста, посмотрите man-страницу для aptitude для более подробной информации

12
ответ дан 2 August 2018 в 04:09

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

Или прямо на мой блог на французском .

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

$ ./gen-dummy-package.sh --install|i [packageName]+ # e.g. : $ ./gen-dummy-package.sh -i rfkill nome-bluetooth bluez
0
ответ дан 2 August 2018 в 04:09

Это именно то, что apt-mark hold для.

apt-mark hold package_name

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

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

Чтобы отменить пакет:

apt-mark unhold package_name

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

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

  sudo dpkg -r --force-depends "package"  
44
ответ дан 4 August 2018 в 20:13

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

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

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

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

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

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

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

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

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

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

9
ответ дан 4 August 2018 в 20:13

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

Если вы установили пакет через 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
ответ дан 4 August 2018 в 20:13

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

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

3
ответ дан 4 August 2018 в 20:13

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

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

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

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

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

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

9
ответ дан 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
ответ дан 6 August 2018 в 04:15

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

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