LINUX.ORG.RU
ФорумAdmin

Как насильно удалить один пакет, не удаляя зависимый от него?

 , , , ,


0

2

Речь идет об debian-based системе управления пакетами.

Вот предположим, что есть две программы, «А» и «Б». Пакет «Б» имеет пакет «А» как свою зависимость. Но я сам на 200% уверен, что кое-кто просто по своему произволу решил прибить гвоздями пакет «А» к пакету «Б», хотя технически программа «Б» может прекрасно обходиться без программы «А».

Возникает вопрос: как удалить программу «А» не удаляя программу «Б» и при этом свести издевательства над системой пакетов к минимому? В идеале, должен быть способ приказать менеджеру пакетов не удалять программу «Б» даже если будет удалена программа «А».

Deleted

Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от olibjerd

"--no-install-recommends"

Я знаю про эту опцию. Проблема в том, что это именно самая натуральная ЗАВИСИМОСТЬ.

Deleted
()
Ответ на: комментарий от olibjerd

Нет. Речь и идёт о том, что есть нужный пакет и прибитый к нему жесткой зависимостью левый, который при удалении за собой тянет нужный.

Valkeru ★★★★
()
Ответ на: комментарий от olibjerd

Без проблем. Это пакеты abrowser(тот же firefox без брэнда) и xul-ext-ubufox(расширение для abrowser). Самое обидное, что целый браузер удаляется, если я решаю удалить это расширение. И смех, и грех -))

Deleted
()
Ответ на: комментарий от olibjerd

Сабжевая ситуация: устанавливаем пакет «нужная-штука». Он тянет за собой пакет «ненужная-дрянь». При последующем выполнении

apt-get remove ненужная-дрянь
тянется на удаление «нужная-штука».

По сабжу - могу подбросить костыльный вариант - взять deb с левым пакетом, посмотреть, куда что из него кидается и вычистить руками. Только я не уверен, что это будет правильно.

Valkeru ★★★★
()
Ответ на: комментарий от Valkeru

А так ли ненужна это ненужная штука? Помню, много хлама софт притаскивал, это по рекомендациям, жёсткие зависимости часто только у либ.

olibjerd ★★★★★
()
Ответ на: комментарий от olibjerd
abrowser
  Depends: lsb-release
  Depends: xul-ext-ubufox
  Depends: libasound2
  Depends: libatk1.0-0
  Depends: libc6
  Depends: libcairo2
  Depends: libdbus-1-3
  Depends: libdbus-glib-1-2
  Depends: libfontconfig1
  Depends: libfreetype6
  Depends: libgcc1
  Depends: libgdk-pixbuf2.0-0
  Depends: libglib2.0-0
  Depends: libgstreamer-plugins-base0.10-0
  Depends: libgstreamer0.10-0
  Depends: libgtk2.0-0
  Depends: libnspr4
  Depends: libnss3
  Depends: libpango1.0-0
  Depends: libstartup-notification0
  Depends: libstdc++6
  Depends: libx11-6
  Depends: libxext6
  Depends: libxrender1
  Depends: libxt6
  Suggests: <latex-xft-fonts>
  Suggests: libthai0
  Suggests: abrowser-gnome-support
  Recommends: abrowser-globalmenu
  Recommends: libcanberra0
Deleted
()
Ответ на: комментарий от Deleted

«Depends: xul-ext-ubufox»

Как видите, это именно ЖЕСТКАЯ зависимость. Когда я говорю «прибить гвоздями», то я не преувеличиваю.

Deleted
()
Ответ на: комментарий от olibjerd

А так ли ненужна это ненужная штука?
Depends: xul-ext-ubufox

Расширение огнелиса для взаимодействия с юнити, судя по всему. Ну и нафига?

А в самом браузере его снести/выключить?

Valkeru ★★★★
()
Ответ на: комментарий от Deleted

Печальбеда. Предлагаю два варианта:

1) написать мейнтейнеру, что xul-ext-ubufox тебе вообще не впёрся и зря он жёстко завязывает;

2) забить на бренд и использовать браузер с лисичкой.

olibjerd ★★★★★
()

Вывод «aptitude show xul-ext-ubufox»:

Adds Trisquel-specific modifications to Abrowser. 
 
 Integrates the browser with Trisquel to: 
 * Enable searching for missing plugins from Trisquel software catalog - Trisquel Release Notes 
 * Set homepage to Trisquel Start Page 
 * Display a restart notification after upgrading Abrowser 
 * Add Duck Duck GO! to the search engines.
Homepage: https://launchpad.net/ubufox
Deleted
()
Ответ на: комментарий от olibjerd

2) забить на бренд и использовать браузер с лисичкой.

Он его за собой тоже притащит. В бубунтовой лисе по умолчанию такое расширение стоит (возможно, что это же самое)

Valkeru ★★★★
()
Ответ на: комментарий от Deleted

«А в самом браузере его снести/выключить?» Выключить можно, но вот снести нельзя!

В принципе это для меня не критичная проблема, но мне просто интересен сам принцип избавления от таких «прибитых» пакетов.

Deleted
()
Ответ на: комментарий от Valkeru

А вот и нет, а вот и неправда.

$ apt-cache depends firefox
firefox
  Depends: lsb-release
  Depends: libasound2
  Depends: libatk1.0-0
  Depends: libc6
  Depends: libcairo2
  Depends: libdbus-1-3
  Depends: libdbus-glib-1-2
  Depends: libfontconfig1
  Depends: libfreetype6
  Depends: libgcc1
  Depends: libgdk-pixbuf2.0-0
  Depends: libglib2.0-0
  Depends: libgtk2.0-0
  Depends: libpango1.0-0
  Depends: libstartup-notification0
  Depends: libstdc++6
  Depends: libx11-6
  Depends: libxext6
  Depends: libxrender1
  Depends: libxt6
  Suggests: ttf-lyx
  Suggests: firefox-gnome-support
  Recommends: xul-ext-ubufox
  Recommends: firefox-globalmenu
  Recommends: libcanberra0
  Replaces: kubuntu-firefox-installer

olibjerd ★★★★★
()
Ответ на: комментарий от olibjerd

«написать мейнтейнеру» Вряд ли это поможет. Тут нужно учитывать специфик дистрибутива Trisquel. Девелоперы заключили сделку с поисковиком DuckDuckGo. Они прибили его в качестве поисковика по умолчанию с помощью этого расширения, а в обмен получают небольшую долю прибыли этого поисковика.

Но мне не нравится качество этого поисковика. Я предпочитаю использовать Google.

Deleted
()
Ответ на: комментарий от Deleted

Только письма сопровождающим и раскуривание матчасти (а мало ли, вдруг приблуду назвали как-то по-особенному и она походит на ненужную программу).

olibjerd ★★★★★
()
Ответ на: комментарий от Deleted

Переделай трисквель в убунту, ну или дебутстрапом поставь.

olibjerd ★★★★★
()
Последнее исправление: olibjerd (всего исправлений: 1)
Ответ на: комментарий от Deleted

Тогда жуй кактус, ну или скачай тарболл с сайта мозиллы и так запускай.

olibjerd ★★★★★
()

И никто не посоветовал пересобрать. Фу какие. Скачайте deb-src для браузера своего, поправьте зависимости, соберите пакет, поставьте его и грохните с чистой совестью расширение.

strangeman ★★★★
()
Ответ на: комментарий от LongLiveUbuntu

«Пересобери его с новыми зависимостями»

Я знаю об таком способе. Но мне казалось, что возможно apt-get/aptitude/synaptic/etc умеет по приказу не удалять какой-либо пакет, даже если его зависимости удалены.

Deleted
()

Кстати, я слышал, что бывает так, что расширение могут встроить в браузер еще на стадии его компиляции. В таких случаях расширение можно отключить(не удалить, а именно отключить) в самом браузере?

Deleted
()
Ответ на: комментарий от Deleted

Ну уж нет, для этого они слишком умные.

Пересобери пакет, пакет сам не пересоберется.

LongLiveUbuntu ★★★★★
()
Ответ на: комментарий от xsektorx

В принципе это для меня не критичная проблема, но мне просто интересен сам принцип избавления от таких «прибитых» пакетов.

Deleted
()

У меня родился такой вариант (проверять не на чем, поэтому только теория).

Промаркировать пакет с помощью dpkg как неудаляемый:

dpkg hosd <package-name>

hold A package marked to be on hold is not handled by dpkg, unless forced to do that with option --force-hold.

Затем удалить ненужную тебе зависимость:

apt-get remove <fucking-package-name>

При этом apt должен ругнуться на то, что неплохо бы удалить <package-name> и посоветует применить apt-get autoremove. На это пофиг - теоретически маркированный пакет останется в системе, а apt просто не сможет его удалять.

Проверь и отпишись если работает.

anonymous
()
Ответ на: комментарий от anonymous

Конкретно этот метод мне не помог. Но он натолкнул меня на мысль. В результате я добился своего следующей коммандой:

dpkg --ignore-depends=xul-ext-ubufox -i abrowser_21.0+build2-0ubuntu0.12.04.3+6.0trisquel4_i386.deb 

apt-get действительно ругается, но несколо иначе. Вот что он говорит:

You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
 abrowser : Depends: xul-ext-ubufox but it is not installed
E: Unmet dependencies. Try using -f.

А теперь минусы подобного хода:

1.Приходится вручную скачивать пакет, чтобы указать его dpkg(подозреваю, что возможно он может понимать интернет-ссылки на файл. Хотя это лишь смягчит проблему, но не решит ее).

2.При установке нового софта в apt-get просыпается жажда крови, и он непременно хочет удалить abrowser одновременно с установкой нового софта. Как обойти этот его выкрутас - не знаю.

Deleted
()
Ответ на: комментарий от anonymous

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

Что касается решения, то самое лучшее решение, что я смог найти в данном случае:

0.Устанавливаем xul-ext-ubufox, если он еще не установлен.

1.Скачиваем deb-пакет xul-ext-ubufox

2.Запускаем Midnight Commander и заходим с помощью него в этот deb-пакет.

3.Просматриваем содержимое папки CONTENTS. В ней лежат все файлы устанавливаемые из данного пакета. К тому же каталоги структуированы в ней таким образом, что можно без проблем понять, где будут лежать эти файлы в системе, если этот пакет установить.

4.Выходим из пакета и удаляем эти файлы от имени root

5.Теперь глупый пакетный менеджер будет думать, что пакет установлен в системе, хотя это не так. Проблем с браузером при этом быть не должно. Кстати, сам браузер будет считать, что никакого расширения нет и в помине. То есть, мы одурачили только пакетный менеджер. Впрочем, нам именно это и требовалось.

Deleted
()

Страшные вещи рассказываете, господа. В дебианеубунту и правда всё так плохо, или это целиком на совести мейнтейнеров?

wakuwaku ★★★★
()
Ответ на: комментарий от wakuwaku

Пакеты собирает мейнтейнер, а не каноникал. Тем более здесь форк со своим репозиторием.

Valkeru ★★★★
()

Это про невозможность принудительного удаления и опциональные пакеты в виде жёстких зависимостей, скорее утверждение. Понятно, что каноникал тут ни при чём, но дистрибутив - ubuntu-based, следовательно, также имеет отношение. Вот, скажем, в gentoo можно удалить любой критически важный пакет без каких бы то ни было проблем.

wakuwaku ★★★★
()
Ответ на: комментарий от wakuwaku

«и опциональные пакеты в виде жёстких зависимостей»

Тут просто есть своя специфика.

Во-первых, девелоперы Trisquel заключили сделку с поисковиком DuckDuckGo. Они прибили его «гвоздями» в качестве поисковика по умолчанию с помощью этого расширения, а в обмен получают небольшую долю прибыли этого поисковика.

Во-вторых, чтобы отвечать строгим критериям FSF, надо чтобы ни сами программы, ни документация к ним, не содержали инструкций/рекоммендаций/предложений по установке несвободного ПО. В связи с этим разработчики использовали это расширение для того, чтобы Firefox, упаси Столлман, не предложил пользователю скачать и установить Adobe Flash плагин, если у него не будет работать этот самый Flash. Такая вот свобода, добровольно-принудительная =))

Deleted
()
Ответ на: комментарий от Deleted

Ах вот в чём дело. И как же они относятся к тому, что флеш предлагают поставить все сайты, его использующие? Или s/Adobe Flash/GnashLightspark/g? Тем более, что у них свой брендованный фуррифокс. Странные люди.

wakuwaku ★★★★
()
Ответ на: комментарий от wakuwaku

«флеш предлагают поставить все сайты, его использующие? » В стандартной поставке идет Gnash. Я лично предпочитаю использовать HTML5-версию плэйера Youtube и Zoomby.ru . А кое-то даже его не хочет использовать из-за того, что там используются проприетарные javascipt'ы. Эти люди тоже не остаются без Ютуба, они используют специальный скрипт под названием Literna Magica (http://linterna-magica.nongnu.org/). А тот же Zoomby.ru можно вполне смотреть с помощью mplayer, надо только нужную ссылку выдрать из исходного кода страницы.

Что касается меня, то мне этот плагин не нравится только из-за навязывания услуг DuckDuckGo. Что касается флэша, то я его не использую. И поверьте мне на слово, это может довольно быстро надоедать, когда браузер назойливо предлагает установить флэш-плагин. В результате мне пришлось так изменить его настройки через about:config, чтобы он прекратил предлагать мне флэш-плагин.

«у них свой брендованный фуррифокс» Вы напутали. Не брендованный, а скорее БЕЗбрендовый. Если бы я переводил на русский слово Abrowser, я бы назвал его «безымянный». Ибо это просто «a browser». Это фактически браузер по имени «браузер» =)

Deleted
()
Ответ на: комментарий от Deleted

БЕЗбрендовый

У них своя сборка, при желании можно модифицировать её как угодно, если не использовать символику лисы. И мне даже кажется, что дело не в профите с DuckDuckGo, просто этот поисковик позиционирует себя как свободный.

проприетарные javascipt'ы

Ну да, в интернет ни ногой. Однако странно при этом смотреть проприетарный, или даже нелицензионный контент.

Gnash по моему опыту подходит разве что для ютуба, и повезёт, если не зависнет или не вытечет, с другими сайтами сложнее.

И, кстати, есть ли какие дополнения/скрипты для вставки embed версии видео на основной странице ютуба? Мне очень не нравится, что 70% видео хотят флеш, и не смотря на это отлично работают из html5 в embed.

wakuwaku ★★★★
()

dpkg -r --force-all <pkgname>

тред не читал

demidrol ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.