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

Я хотел бы установить самую последнюю версию boto , которую я делаю через python setup.py install

. Однако, когда я пытаюсь удалить старую версию, следующие пакеты также удаляются:

apt-get remove python-boto
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages will be REMOVED:
  cloud-init cloud-utils euca2ools python-boto

Как я могу сказать менеджеру пакетов удалить boto, и они помечают его как установленный снаружи (или что-то в этом роде), чтобы apt не попыталась исправить отсутствующую зависимость? 117] Спасибо,
Максим.

48
задан 16 December 2010 в 21:00

6 ответов

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

15
ответ дан 16 December 2010 в 21:00

Именно для этого и предназначена apt-mark hold.

apt-mark hold package_name

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

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

чтобы удержать пакет:

apt-mark удерживает имя_пакета

15
ответ дан 16 December 2010 в 21:00

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

sudo dpkg -r --force-depends "packagename-version"

или

sudo dpkg -r --force-depends "packagename"
68
ответ дан 16 December 2010 в 21:00

Для завершения ответа João Pinto, вы можете использовать мой маленький скрипт, чтобы исправить сломанный пакет, этот скрипт создаст фиктивный пакет с эквивами и установить его. Вы можете найти статью в моем блоге на французском.

или непосредственно в gist code .

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

$ ./gen-dummy-package.sh --install|i [packageName]+
# e.g. :
$ ./gen-dummy-package.sh -i rfkill nome-bluetooth bluez
1
ответ дан 16 December 2010 в 21:00

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

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

Как вы в моем случае я вижу, что это 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-страницей для получения более подробной информации

17
ответ дан 16 December 2010 в 21:00

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

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

3
ответ дан 16 December 2010 в 21:00

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

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