Найти минимальный эквивалент установленных пакетов

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

Я забыл, где найти этот инструмент. Как это называется?

7
задан 17 February 2011 в 23:33

3 ответа

Я написал небольшой скрипт на Python для этого, опубликованный здесь как .

Вы задаете ему набор имен пакетов в командной строке, и он должен предоставлять вам меньший минимальный набор пакетов, которые подразумевают все остальные, которые вы указали в качестве аргументов. Здесь x11-proto-fixes-dev подразумевается (зависимость) от libgtk2.0-dev:

fuwaad:~$ python mindeps.py x11proto-fixes-dev libgtk2.0-dev
libgtk2.0-dev
0
ответ дан 17 February 2011 в 23:33

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

Однако, на Unix / Linux Stack Exchange я нашел этот ответ , который извлекает список стандартных пакетов для вашей установки из зеркала Ubuntu и фильтрует его. Это привело меня к 404 пакетам, что мне кажется нормальным.

0
ответ дан 17 February 2011 в 23:33

aptitude поможет вам в большинстве случаев с помощью функции поиска. Вот как вы найдете все установленное, которое не было только автоматической зависимостью:

aptitude search -F "%p" "?installed ?not(?automatic)"

Это не будет оптимальным, некоторые из них могут быть удалены, но я не знаю простого способа решить это. , Возможно, ответ лежит в man aptitude.

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

Вы находите иждивенцев с таким запросом:

aptitude search '~i~Dpackage'

Я бы попробовал написать сценарий, но я набираю его на крошечной телефонной клавиатуре. Даже у меня есть пределы.

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

orig=$(aptitude search -F "%p" "?installed ?not(?automatic)")
newlist="";
for p in $orig; do
    depended=0;
    for dependant in `aptitude search -F "%p" "~i~D$p"`; do
        if [[ $orig == "* $dependant *" ]]; then
            depended=1;
        fi;
    done;
    if [[ $depended == 0 ]]; then
        newlist="$newlist $p";
    fi;
done;
echo $newlist

Обратите внимание, что для выполнения этого процесса требуется действительно много времени, и это может быть чрезмерным (например, он удалит то, что вы установили вручную, которые вы хотите установить вручную, если они зависят от чего-то еще в списке $ orig, который вы, возможно, установили позже).

0
ответ дан 17 February 2011 в 23:33

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

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