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


18

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

Ответы:


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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.