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

10

Некоторая справочная информация :

Как вы, возможно, знаете, в пакете Debian могут быть альтернативные зависимости, записанные, например, в файле CONTROL Depends: apache2|something-else. Как aptвыбрать, какие зависимости выбрать, и как я могу переопределить это, чтобы я мог минимизировать размер загрузки?

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

Изменить: я не спрашиваю о пропуске рекомендует.

Редактировать 2: я не спрашиваю о пропуске зависимостей. Я пытаюсь получить все зависимости, только в наименьшем общем размере, особенно отмечая и тщательно выбирая package1|package2варианты.

Редактировать 3: grepили другой сценарий оболочки является приемлемым.

К сожалению, так как текущие ответы на самом деле не отвечают на вопрос, они не могут получить щедрость. Это все еще для того, кто хочет написать скрипт bash!

Редактировать 4: Хотя награда была присуждена за хороший ответ, который я призываю вас поддержать, я все еще ищу более конкретный ответ . Если он также элегантно обрабатывает виртуальные пакеты, предоставляемые одним или несколькими пакетами, то я, возможно, предоставлю еще одну награду за факт, чтобы присудить этот ответ .

нФ
источник

Ответы:

3

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

Дэвид
источник
Это может помочь, но мне нужно что-то более конкретное, чем это. Попробуйте дополнить ваш пост более подробной информацией или сценарием оболочки, пока вы там, и добро пожаловать в Ask Ubuntu !.
нанофарад
1
@ ObsessiveSSOℲ Честно говоря, у меня нет времени, однако, если вы хотите это сделать, введите следующую команду: VAR = $ (apt-cache show gedit | grep "Size" | grep -Ev 'I' | sed 's / Size: // g ') даст вам размер пакета, который вы можете использовать для сравнения со значениями в массиве, заполненном этой командой. Извините, я не мог помочь больше.
Дэвид
Если ничего не получится, вы действительно победитель этой награды.
нанофарад
@ ObsessiveSSOℲ Не могли бы вы привести пример пакета с альт-зависимостями
Дэвид
Что-то так просто, как wordpress, что предполагает apache2|httpd. Также обратите внимание, что httpdэто виртуальный пакет. Я также дам тебе награду. Я пока не приму.
нанофарад
1

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

Если вы знаете, что делаете (например, вы уже установили foo, но он говорит, что вам нужно переустановить его), и хотите оставить все зависимости отключенными при установке файла, добавьте флаг --no-install-recommends.
Некоторые ответы на этот вопрос объясняют, как устанавливать определенные пакеты без зависимостей. Они охватили это немного глубже, чем я, поэтому, если у вас все еще есть проблема или мой ответ не решил вашу проблему, я бы рекомендовал взглянуть на эту тему.

JamesTheAwesomeDude
источник
-2

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

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

knope
источник
6
Вы действительно не поняли вопрос. Он знает зависимости. Но вы должны знать, что может быть два пакета, удовлетворяющих одной зависимости. в этом случае он хотел меньшего размера
Анвар
ИМО, к сожалению, эти ответы должны терпеть отрицательные голоса. Это хорошие ответы, и я надеюсь, что никто не был обескуражен. Просто убедитесь, что вы ответите на вопрос.
нанофарад
@ как ты для разъяснения и информирования. :) (Я не возражаю против голосов.)
knope
Сначала я тебя не понизил, просто объяснил. но теперь, я дал, потому что ответ не касался вопроса @ ObsessiveSSOℲ говорил в своем вопросе
Анвар