Для любой системы упаковки Linux Distro найдите максимальное количество одновременно устанавливаемых пакетов

Некоторые пакеты конфликтуют, поэтому невозможно установить все доступные пакеты одновременно. Каково максимально возможное количество устанавливаемых пакетов для данной системы? Метод проб и ошибок методом грубой силы будет:

  1. составьте список всех возможных имен пакетов, например, dglob -a > list
  2. Исходя из этого, составьте подсписки slist1 slist2 slist3... из всех возможных комбинаций пакетов. В моей системе dglob -a | wc -l dglob -a | wc -l возвращает 91327, что потребует неоправданно большого количества (1,467 × 10 ^ 27492) файлов.
  3. запустите apt-get install в каждом списке и rm те, которые вызывают конфликты.
  4. сортировать оставшиеся списки по количеству строк и показывать самый длинный. wc -l slist* | head -n -1 | sort -g | tail -1 wc -l slist* | head -n -1 | sort -g | tail -1.

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

Из этого вытекают различные связанные вопросы, такие как:

  • с учетом пакета 'foo' как найти максимальное количество устанавливаемых пакетов, которые не конфликтуют с 'foo'?

  • Для всех возможных пакетов, у которых наименьший такой максимум (что делает его наиболее "ссорящимся" пакетом)?

(Примечание. Этот вопрос относится к Debian, Red Hat и любым дистрибутивам или ОС с системой упаковки, которая отображает конфликты пакетов. Ответы для любой применимой платформы будут действительными.)


Фон:

Debian имеет десятки тысяч пакетов. dglob (из пакета oodies debian -g) удобен для быстрого подсчета:

# show how many packages installed and available on the current system
echo $(dglob    | wc -l) packages installed of \
     $(dglob -a | wc -l) packages.

Пример вывода (оба числа могут периодически колебаться после обновлений и обновлений и будут различаться в зависимости от системы):

5107 packages installed of 91327 packages.

Число 5107 не максимум, конечно, но максимум должен быть.

Ответ 1

apt list > tmp.file vi tmp.file Затем нажмите G в vi. Это даст вам количество доступных пакетов, но, к сожалению, оно не учитывает конфликты.