Лучше ли скомпилировать из исходного кода или установить из пакета .deb?

18

Иногда при загрузке программного обеспечения из Интернета я обнаруживаю, что готов пакет .deb для моего Debian / Ubuntu, а также tarball для компиляции. В начале я просто использовал пакет для простоты установки и даже не посмел попытаться скомпилировать. Даже звук этого меня немного напугал. Однако в настоящее время, когда у меня есть возможность, я иногда сталкиваюсь с дилеммой: есть ли непопулярное преимущество при компиляции из исходного кода по сравнению с пакетом .deb? Я надеюсь узнать здесь, спасибо.

the_midget_17
источник

Ответы:

24

Преимущество компиляции из исходного кода состоит в том, что вы можете компилировать пакеты с определенными флагами / опциями, которые могут отсутствовать / отключаться в стандартных пакетах Ubuntu. Кроме того, это позволяет легко иметь несколько версий одной и той же программы. Кроме того, вы можете выбрать точную версию пакета, который может быть уже удален или еще не представлен в репозиториях Ubuntu (пример: у меня есть несколько версий Python 2.4.x в моем / opt / каталоге, так как он мне нужен для запуска некоторых старых програмное обеспечение).

Недостаток компиляции из исходного кода состоит в том, что, если вы не скомпилируете .deb, а затем не установите его, обычная процедура "./configure; make; sudo make install" не дает менеджеру пакетов Ubuntu полностью ничего не знать о внесенных вами изменениях, поэтому не собираемся получать обновления для скомпилированного вручную программного обеспечения; и вполне возможно, что менеджер пакетов позже переопределит / сломает ваш пакет, если вы не будете осторожны, чтобы установить его в отдельном месте.

Короче говоря: всегда сначала рассматривайте возможность установки из стандартных репозиториев Ubuntu, затем подумайте об установке .deb; Компилируйте только из источников, если вы точно знаете, зачем вам это нужно.

Сергей
источник
Я также читал, что производительность пакета может отличаться, когда он скомпилирован, что-то вроде лучшей совместимости с текущим ядром. Не оценивал лично.
Федир РЫХТИК
@Fedir: Я не уверен, что ядро ​​как-то связано с этим, это скорее архитектура процессора - например, в старые времена многие дистрибутивы содержали пакеты, скомпилированные с набором инструкций 80386 для максимальной совместимости, в то время как ручная компиляция программы для Pentium позволяла бы это использовать более эффективные инструкции. По этой причине существуют целые дистрибутивы, такие как Gentoo, которые скомпилированы из исходного кода на хост-машине. Разница, однако, обычно минимальна и может быть замечена только в очень специфических приложениях.
Сергей
1
Обратите внимание, что использование checkinstall вместо make install устраняет многие из упомянутых недостатков. См. Help.ubuntu.com/community/CompilingEasyHowTo
ndemou
1
Извините за придирки, @EliahKagan, но, несмотря на то, что virtualenv великолепен, он больше подходит для поддержки нескольких сред Python с разными установленными библиотеками . Если вам нужна конкретная версия Python, возможно, скомпилированная с конкретными настройками - вам все равно нужно будет установить реальный двоичный файл - либо из .deb, либо скомпилировать с нуля.
Сергей
@ Сергей Ты прав. (И я не вижу ничего, что вы сказали как придирки - если что, я должен извиниться за мой неправильный и вводящий в заблуждение комментарий!) Насколько я понимаю, менеджеры пакетов, например conda, автоматически создадут виртуальные среды и установят для них различные установки Python , создание и поддержка версий для каждого проекта. Но, как вы говорите, virtualenv сама по себе этого не сделает.
Элия ​​Каган
1

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

Эдик Мкоян
источник
0

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

AFAIK, нет никакой реальной пользы в том, чтобы собрать его самостоятельно, если только вы не планируете сначала его изменить. Если вы просто хотите, чтобы программное обеспечение было как есть, то установите .deb

Крис Уэйн
источник