LINUX.ORG.RU

Debian Gnome, APT/Aptitude — как удалить пакет, не смотря на зависимости (аналог `pacman -Rdd` в ArchLinux)?

 , , , ,


0

1

Здравствуйте.

TL/DR: как удалять пакеты в Debian, не обращая внимания на зависимости; как заставить APT/Aptitude симулировать наличие пакета?

Я установил себе браузер (Vivaldi) и хочу удалить Firefox. На что APT любезно предлагает мне установить епифань, хромиум либо вообще снести весь гном нафиг и поставить LXDE. Епифань, конечно, не критична, но это мусор, ей никто не пользуется. А при попытке удалить епифань APT предлагает установить хромиум или обратно лису. Нафиг надо…

Что я хочу сделать:

  1. Удалить лису. (это я могу)
  2. Поставить епифань и снести аналогом арчевой команды pacman -Rdd, игноря зависимости и вообще все, тупо снося пакет. (как?)
  3. Создать ссылки на вивальди с названиями firefox-esr, firefox, epiphany, epiphany-browser. (это я могу)
  4. Как-то сделать так, чтобы APT симулировал присутствие реальной епифани/лисы и устанавливал пакеты, их требующие. (как?)
  5. Перезагрузить систему, обновиться. Должен быть профит. (это я могу)

Подобное я хотел бы проделать и с gnome-terminal, заменив на lxterm.

А символические ссылки:

  • /etc/alternatives/x-www-browser,
  • /etc/alternatives/www-browser и
  • /etc/alternatives/gnome-www-browser

куда указывают?

И что выводит update-alternatives --config gnome-www-browser?

Вообще, во-первых, тебе нужно курить man update-alternatives. Это как минимум.

Во-вторых, возможно, нужно будет создать некий синтетический пакет, который будет предоставлять gnome-www-browser и зависеть от vivaldi-stable. Ну или написать в багтрекер авторам браузера, чтобы они у себя в пакете поле Provides: поправили.

В-третьих, в желании иметь GNOME и нежелании ставить Epiphany («это мусор, ей никто не пользуется») наблюдаю взаимоисключающие параграфы.

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

Симлинки потом дам. Сам не могу посмотреть.

> Вообще, во-первых, тебе нужно курить man update-alternatives. Это как минимум.
Покурю.

> Ну или написать в багтрекер авторам браузера, чтобы они у себя в пакете поле Provides: поправили.
Его нет в репах дебиана, он в своей репе. И поэтому я сомневаюсь, что оно будет учитываться.

> В-третьих, в желании иметь GNOME и нежелании ставить Epiphany («это мусор, ей никто не пользуется») наблюдаю взаимоисключающие параграфы.
Где эти параграфы? Объясните, почему я должен держать епифань, если мне нравится интерфейс гнома?

tongubin ()
Последнее исправление: tongubin (всего исправлений: 1)

А я думал я один такой. Правда, сталкивался на Xfce.
Браузеры требует пакет gnome-core https://packages.debian.org/buster/gnome-core
dep:
firefox-esr (>= 30)
or chromium
or epiphany-browser
На убунте тоже. Но Xfce не обязателен gnome-core.
Даже не знаю, что придумать. Ох уж эти дебиановские зависимости. Можно, конечно, выкачать пакет gnome-core, распаковать, убрать зависимость, запаковать и установить локально. Чтобы он не обновился из реп можно указать версию намного больше (но перестанут приходить обновы безопасности на этот пакет). Делается это примерно так (желательно под рутом, чтобы права были нормальные):

su -
mkdir tmp
dpkg-deb -R original.deb tmp
nano DEBIAN/control
dpkg-deb -b tmp fixed.deb

Нужно подправить файл DEBIAN/control.
Кстати, если будешь модифицировать другие файлы, надо обновить также md5sums (подсчитать новую и вставить).

Или можно создать пакет-пустышку firefox-esr or chromium or epiphany-browser. Это решение более правильное.
Попроси форумчан, они создадут легко.

gnome-core ведь ты не можешь удалить?

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

я сомневаюсь, что оно будет учитываться

Будет. Поэтому можешь подправить и Vivaldi, указав Provides: chromium-browser (именно с таким именем его нет в репах buster, так что конфликтовать с chromium не будет, а может и будет, если, например, chromium предоставляет chromium-browser и ты захочешь его также поставить).
Но в этом случае обновлять (без модификации) нельзя будет уже Vivaldi.

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

Локально пакеты ставятся одним из трех способов:

sudo apt install package.deb
sudo dpkg -i package.deb
sudo gdebi packages.deb

В чем отличия? Первый по умолчанию ставит рекомендованные пакеты (чтобы было без них надо добавить --no-install-recommends). Второй низкоуровневый и поставит, даже если сломаются зависимости. Потом их надо чинить sudo apt -f install (это может удалить проблемную дебку). Третий gdebi по умолчанию не ставит рекомендованные зависимости, а также gdebi требует для работы python. gdebi из коробки может не быть, ставится sudo apt install gdebi.

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

Как я узнал? В Synaptic можно посмотреть обратные зависимости.

artenaki ()

Что-то я вообще не понял ничего. Вы предлагаете писать в багтрекер. А у меня вопрос: как удалить пакет, не смотря на зависимости? Мне нужно просто удалить пакет!

tongubin ()

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

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

Делает-делает, мой компьютер гарантирует это. Только что снёс пакет. Перезагрузился. Вижу ядерную консоль. Крещусь и ставлю gnome обратно.

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

gnome-core я уже поставил себе.

У меня уже есть план действий для замены. Сначала сделать пустышку с версией over9000, потом удалить лису, установить епифань и удалить, игноря зависимости. Потом установить пустышку, которая слинкует Вивальди с псевдоепифанью, псевдолисой и сделает браузером по умолчанию. Обновиться, перезагрузиться.

И как бы да, это больше не ‘выстрелил себе в ногу’, а ‘заменил помутневший зрачок’.

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

WTF?! У меня открывается и с логином и без. Debian как безопасно удалить мета пакет?

Ну вот для твоего случая пилюля:

apt-mark manual $(apt-cache depends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances gnome-core | sed s/.*://)

apt-get remove gnome-core
Только убедись, что кроме gnome-core ничего не удаляет перез тем как Y нажимать.

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

gnome-core — это метапакет, предлагающийся по рекомендациям, которые apt по умолчанию считает подлежащими выполнению (типа защита от дурака, мне она тоже никогда не нравилась).
Создаёшь в /etc/apt/apt.conf.d/ файл настройки (например, 10-no-recommends) и вписываешь:

APT::Install-Recommends "false";

А дальше как Kolins сказал чуть выше — поскольку (опять же, по умолчанию) apt считает, что поставленные по зависимостям от метапакета пакеты надо сносить вместе с этим пакетом, надо эти пакеты пометить как установленные вручную, после чего метапакет и всё ненужное можно спокойно сносить. Собственно, именно это его команда и делает.
Я, например, в своё время в эти премудрости не погружался, и все настройки и пометки пакетов сделал через Synaptic. Да и до сих пор иногда им пользуюсь, чертовски удобный гуй.

dogbert ★★★★★ ()

У bullseye в зависимостях для gnome-core такое:

firefox-esr (>= 30) | firefox (>= 30) | chromium | chromium-browser | epiphany-browser

Просто поставь альтернативу и снеси лису, если нужно удалить лису. Или собирай метапакет как написали выше, но не факт, что что-нибудь не сломается.

PRN ()
Последнее исправление: PRN (всего исправлений: 1)

ОМГ, насоветовали…

  1. gnome и gnome-core – это метапакеты, удаление которых не приведёт к проблемам.

  2. При удалении метапакета современный apt поступает в зависимости от того, из-за чего он удаляется:

    • Если он удаляется явно пользователем, то его зависимости остаются пакетами-сиротами, которые далее будут удалены apt autoremove.

    • Если он удаляется неявно по зависимостям, то все его зависимости будут помечены как установленные вручную и не будут автоматически удалены.

  3. Ваша ошибка в том, что вы используете aptitude. Она сразу пытается удалить пакеты-сироты, и не в курсе про особую обработку метапакетов.

В вашем случае есть несколько вариантов:

  • Удалить Firefox помощью apt, отказавшись от установки альтернатив:
apt remove firefox-esr chromium- epiphany-browser-

Метапакеты будут удалены без последствий.

  • Предварительно пометить зависимости метапакетов как установленные вручную:
aptitude unmarkauto '?reverse-depends(<метапакет>)'

Тогда и в aptitude эти метапакеты можно удалить без последствий.

  • Создать пакет-пустышку с помощью equivs.
Rootlexx ★★ ()
Ограничение на отправку комментариев: только для зарегистрированных пользователей