# emerge -C с зависимостями

## edge

Подскажите, как удалить пакет из системы вместе с теми, файлами, которые от него зависят? Ну например есть ant-core, если я его удалю, то в системе останутся вот эти пакеты, и при следующем обновлении world они опять потянут ant-core:

dev-java/ant-jsch-1.7.0

dev-java/ant-apache-bcel-1.7.0

dev-java/ant-apache-bsf-1.7.0

Как посмотреть, что от чего зависит, поудалять, то что не нужно (как я считаю)? Просто за 2 года обновлений в системе (судя по emerge --info) появилось большое количество новых USE флагов, которые я собственно и не включал в make.conf, и которые видимо и потянули большое количество пакетов. Как теперь удалить все, то, что насосало? USE-то я с минусами допустим пропишу,  а как систему почистить, только переставляться?

----------

## viy

Тут 2 вопроса как бы:

1) определить пакеты для удаления (которые тебе не нужны). Тут сам, всё своими руками;

2) удалить пакет, да еще чтоб его потом не подсасывали зависимые.

Я делаю так обычно:

1) удаляю пакет

2) прописываю его в /etc/portage/package.mask (причем маскирую текущую и все предыдущие версии, <=);

3) смотрю какие пакеты валятся с неудовлетворенными зависимостями и удаляю их (если они не нужны).

4) удаляю запись и package.mask

И еще. Как так может быть, что "вдруг в системе всего наставилось"?

Я перед запуском emerge всегда делаю следующее:

1) запускаю ее с -p ключом и смотрю, что собственно будет происходить;

2) там же смотрю на use-флаги.

Таким образом пакеты не появляются случайным образом в системе.

----------

## ArtSh

В системе portage нет средств для удаления пакета с зависимостями! Это надо делать вручную. На gentoo.ru есть достаточно подробное обсуждение вариантов автоматизации этого процесса.

Вобще portage не ставит никаких дополнительных флагов, просто то что Вы видите в выводе emerge --info содержит и некоторые расширения (use-expand), например VIDEO_CARDS - поддержка каких видео карт включена, и т.п.

----------

## edge

 *viy wrote:*   

> 
> 
> И еще. Как так может быть, что "вдруг в системе всего наставилось"?
> 
> Я перед запуском emerge всегда делаю следующее:
> ...

 

Ну вот и я не совсем понимаю, но при каждом обновлении вылезает 5-10 новых пакетов, при следующем обновлении видимо они что-то начинают тянуть за собой и так получается в прогрессии система распухла до 1000 пакетов в world:

[ebuild     U ] app-text/acroread-7.0.9-r1 [7.0.8] LINGUAS="-en%"

[ebuild  N    ] dev-java/ant-trax-1.7.0

[ebuild  N    ] dev-java/ant-tasks-1.7.0  USE="-jai -javamail -noantlr -nobcel -nobsf -nocommonslogging -nocommonsnet -nojdepend -nojmf -nojsch -nolog4j

----------

## Laitr Keiows

 *ArtSh wrote:*   

> В системе portage нет средств для удаления пакета с зависимостями!

 

Есть замечательный файлик 

```
/var/lib/portage/world
```

В котором вручную удаляются все ненужные пакеты, и делается emerge --depclean.

Делов то.

----------

## ArtSh

 *Quote:*   

> Есть замечательный файлик ... В котором вручную удаляются все ненужные пакеты, и делается emerge --depclean.

 

И Вы считаете что это штатное средство? Если даже так, то зачем оно выводит такое предупреждение:

```

*** WARNING ***  Depclean may break link level dependencies.  Thus, it is

*** WARNING ***  recommended to use a tool such as `revdep-rebuild` (from

*** WARNING ***  app-portage/gentoolkit) in order to detect such breakage.

*** WARNING ***

*** WARNING ***  Also study the list of packages to be cleaned for any obvious

*** WARNING ***  mistakes. Packages that are part of the world set will always

*** WARNING ***  be kept.  They can be manually added to this set with

*** WARNING ***  `emerge --noreplace <atom>`.  Packages that are listed in

*** WARNING ***  package.provided (see portage(5)) will be removed by

*** WARNING ***  depclean, even if they are part of the world set.

*** WARNING ***

*** WARNING ***  As a safety measure, depclean will not remove any packages

*** WARNING ***  unless *all* required dependencies have been resolved.  As a

*** WARNING ***  consequence, it is often necessary to run

*** WARNING ***  `emerge --update --newuse --deep world` prior to depclean.

```

и собирается удалить  virtual/x11 ? По моему штатное средство так поступать не должно...

----------

## Laitr Keiows

 *ArtSh wrote:*   

> и собирается удалить  virtual/x11 ? По моему штатное средство так поступать не должно...

 

Там все написано. Сделай emerge --noreplace virtual/x11 и потом еще раз emerge --depclean -vp

Компьютеры к сожалению читать мысли пока не умеют... Кое-что приходится делать руками.

Исходники portage есть, найди ошибку, опиши баг, добавь фичу - всем будет лучше.

----------

## lefsha

 *ArtSh wrote:*   

> В системе portage нет средств для удаления пакета с зависимостями! Это надо делать вручную.

 

А я считаю что есть! И пользуюсь этим. И кто из нас неправ?   :Cool: 

----------

## lefsha

 *Laitr Keiows wrote:*   

>  *ArtSh wrote:*   В системе portage нет средств для удаления пакета с зависимостями! 
> 
> Есть замечательный файлик 
> 
> ```
> ...

 

Зачем так страшно? Какой смысл удалять нечто из world?

----------

## lefsha

 *ArtSh wrote:*   

> 
> 
> и собирается удалить  virtual/x11 ? По моему штатное средство так поступать не должно...

 

А по моему должно.

Я не вижу ничего в этом предосудительного.

Может Вы мне объясните свои опасения?

----------

## lefsha

 *viy wrote:*   

> Тут 2 вопроса как бы:
> 
> 1) определить пакеты для удаления (которые тебе не нужны). Тут сам, всё своими руками;
> 
> 2) удалить пакет, да еще чтоб его потом не подсасывали зависимые.
> ...

 

Мне стало страшно.... 

Если бы, когда я начинал знакомиться с Gentoo, мне кто-то рассказал

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

к такому дистрибутиву.

Слава богу я знаю, что все не так плохо и поэтому кроме как кошмаров

на ночь серьезно такое не воспринимаю...

Одно только непонятно, новичков зачем пугать?

----------

## lefsha

 *edge wrote:*   

>  *viy wrote:*   
> 
> И еще. Как так может быть, что "вдруг в системе всего наставилось"?
> 
> Я перед запуском emerge всегда делаю следующее:
> ...

 

Система не заставляет прописывать ненужные Вам USE флаги.

Если же Вы это делаете, то некого винить, что будет установлено то что

ВЫ просили!!!

Если не нравятся установки по умолчанию - отмените их все разом

путем прописвывания -* в качестве первого слова.

Далее все зависит от Вашей фантазии.

P.S. Относительно всех моих сообщений в этом треде.

Портаж убог, крив, медленен, но к нему не относится НИЧЕГО!!!

из того что написано в данном треде!!!

Нет желания разбираться - ставь Fedora или Ubuntu

Тут к сожалению надо знать хоть что-то.

----------

## lefsha

 *viy wrote:*   

> 
> 
> 1) запускаю ее с -p ключом и смотрю, что собственно будет
> 
> 

 

P.S. Флаг -p самый бесполезный во всем portage.

В нем нет никакого смысла для людей которые умеют сказать нет.

----------

## viy

lefsha, ты не сказал ни слова по существу.

Если сказать нечего, то помолчи. Твои взгляды на мир давно известны.

----------

## lefsha

 *viy wrote:*   

> lefsha, ты не сказал ни слова по существу.
> 
> Если сказать нечего, то помолчи. Твои взгляды на мир давно известны.

 

А тут нет существа. Все работает.

----------

## ArtSh

 *Laitr Keiows wrote:*   

> Исходники portage есть, найди ошибку, опиши баг, добавь фичу - всем будет лучше.

 

То есть Вы согласны, что в portage нет штатных средств удаления пакета с зависимостями. 

Штатное средство должно проверять зависимости только того пакета, который пользователь хочет удалить. Наличие неприятностей в виде неописанных косвенных зависимостей (что можно заключить из необходимости делать revdep-rebuild) говорит и о наличие некоторых недоработок в ebuild'ах, и о некоторых принципиальных проблемах.

Ещё одна проблема: удаление meta пакетов....

Фактически система portage идеальна для установки ПО, а при удалении возникают некоторые проблемы...

P.S. конечно я рад что работа depclean'a за последнее время улучшилась, однако штатного инструмента так и нет....

----------

## edge

 *lefsha wrote:*   

> 
> 
> Система не заставляет прописывать ненужные Вам USE флаги.
> 
> Если же Вы это делаете, то некого винить, что будет установлено то что
> ...

 

Здрассте.. а кто б прописывал ненужные-то? Все 2 года стоят одни и те же. Только вот система почему-то каждый раз решает сама добавить мне какие-то пакеты, которые возможно соответствуют этим флагам, но которые я совсем не заказывал..

----------

## lefsha

 *ArtSh wrote:*   

>  *Laitr Keiows wrote:*   Исходники portage есть, найди ошибку, опиши баг, добавь фичу - всем будет лучше. 
> 
> То есть Вы согласны, что в portage нет штатных средств удаления пакета с зависимостями. 
> 
> Штатное средство должно проверять зависимости только того пакета, который пользователь хочет удалить. Наличие неприятностей в виде неописанных косвенных зависимостей (что можно заключить из необходимости делать revdep-rebuild) говорит и о наличие некоторых недоработок в ebuild'ах, и о некоторых принципиальных проблемах.
> ...

 

0. Gentoo это система сделанная не на production. Т.е. она могла бы там работать при наличии администратора.

1. Штатное средство не должно запрещать пользователю удалить тот или иной

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

работоспособности системы.

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

как это обойти.

3. Если после удаления хочется проверить насколько нужен пакет системе,

достаточно сделать обновление всего набора пакетов.

Дабы не тратить время на пересборку пакета перед удалением можно создать

его бинарный дистрибутив, который при необходимости встанет на место

в течении 2 минут.

 *ArtSh wrote:*   

> 
> 
> Ещё одна проблема: удаление meta пакетов....
> 
> Фактически система portage идеальна для установки ПО, а при удалении возникают некоторые проблемы...
> ...

 

Да. Возникают. Но совершенно не те, которые тут описаны.

----------

## lefsha

 *edge wrote:*   

>  *lefsha wrote:*   
> 
> Система не заставляет прописывать ненужные Вам USE флаги.
> 
> Если же Вы это делаете, то некого винить, что будет установлено то что
> ...

 

Я не вижу тут ничего удивительного.

К примеру у Вас стоял флаг F и Вы имели установленным пакет P.

Через некоторое время автор P решил добавить возможность F в свою

программу. У этой программы естесственно появляется флаг F,

который у Вас установлен. Если этому флагу соотвествует некая программа,

которая не инсталлирована на системе, то она тоже будет поставлена.

Все течет все изменяется!!! Вам никто не мешает установить для каждой программы

именно те флаги, которые Вам лично нужны.

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

без учета Ваших желаний. И тут тоже ничего ненормального нет.

Не нравится - не устанавливай ту программу, которая вызывает дополнительную

зависимость.

Так что сорри, но я никак не могу ни понять ни принять этих притязаний

к portage. Тем более что _именно это_ к нему ну _никак_ не относится.

Жалуйтесь авторам программ введшим новые зависимости.

Это явление будет происходит одинакого на всех существующих Linux-ах.

Другое дело не все дадут Вам возможно настроить все под себя.

----------

## Balancer

Если нужно снести какой-то пакет, который потом могут поднять другие, то я просто маскирую его. И делаю потом emerge -auvN world. И смотрю, кто стал материться на невозможность установки этого пакета.

----------

## Rikz

 *Balancer wrote:*   

> Если нужно снести какой-то пакет, который потом могут поднять другие, то я просто маскирую его. И делаю потом emerge -auvN world. И смотрю, кто стал материться на невозможность установки этого пакета.

 

Для этой цели еще хорошо ключик -t к emerge использовать. В виде дерева хорошо видно, кто кого хочет.

----------

## edge

 *Rikz wrote:*   

> 
> 
> Для этой цели еще хорошо ключик -t к emerge использовать. В виде дерева хорошо видно, кто кого хочет.

 

А вот это действительно правильный ключик. Сразу видно зависимости. Вполне можно вычислить что и чего хочет. Спасибо!

----------

