Страницы

Поиск по вопросам

пятница, 13 декабря 2019 г.

Компиляция из исходников и установка из пакетов в чем разница?

#linux #компиляция #установка


Нередко читаю комментарии в интернете, что компиляция и установка приложений из исходников
лучше (по быстродействию приложения), чем установка из пакетов.

Подскажите пожалуйста в чем разница? (в качестве примера можно взять установка nginx
на голой Ubuntu 16.04)
    


Ответы

Ответ 1



Установка с пакета обычно подразумевает, что Вам предоставляют готовое скомпилированное приложение (но это не обязательно так, бывает по-всякому). А значит, что будет собрано ровно то, что решил автор пакета. А это может не подходить для конкретного случая. Когда код собирается вручную, то можно поотключать часть функционала, а часть включить. Это может дать некий прирост производительности. А может и наоборот. Можно включить экспериментальную функциональность, а можно выключить ту, в которой нашли уязвимость. А можно заплату быстро накатить. Это все требует хорошего знания продукта и системы сборки. К тому же сборка вручную пакета на системах с готовыми пакетами сопряжена с разными проблемами - например, при обновлении может перетереть самособранный пакет (все можно настроить, но ...). Возвращаясь к nginx. В нем часть модулей часто не идет "из коробки" (то есть, не включены в пакет). Это обычно редкие модули, но иногда они бывают нужны. Я встречал, к примеру, что распаковка тела запроса, зажатого gzip, по умолчанию не включена, и пришлось учить пхп распаковывать. Почему же гуляет этот миф? Просто раньше, да и сейчас почему-то считается, что дистрибутивы типа gentoo очень сложны, но с другой стороны суперпроизводительны (надо же как-то оправдать постоянные пересборки мира). А если они сложны, значит, должны хорошо работать (если, конечно, их правильно настроить). По факту, получить плюс можно, но только для ядра и некоторых пакетов (например, vlc или ffmpeg). Выводы: нужна ли Вам пересборка nginx на убунте? Вряд ли. Маловероятно, что Вы получите какой-то прирост производительности. а если сильно хочется пересобирать? разверните тестовую систему и пробуйте. Делайте бенчмарки. А ещё хорошо взять дистрибутив, который это поддерживает из коробки - gentoo, funtoo, LFS.

Ответ 2



плюсы вы научитесь выполнять команду $ make && sudo make install или что-нибудь подобное (в зависимости от того, как задуман процесс сборки/установки разработчиком программы). осознаете, что если в вашем дистрибутиве используется пакетный менеджер, то при очередном обновлении пакетов процесс может застопориться из-за конфликтов с теми файлами/каталогами, которые щедро разбросала по файловой системе процедура «установки», реализованная разработчиками этой программы (которые вряд ли заморачивались необходимостью «вписываться» в требования политик всех существующих на свете дистрибутивов). узнаете, что не все разработчики предусматривают средства удаления всех разбрасываемых в процессе «установки» по файловой системе файлов/каталогов. научитесь вручную находить и удалять все эти артефакты, и править сборочные скрипты на предмет избежания подобных конфликтов в будущем. задумаетесь: а не лучше ли было всего лишь пересобрать существующий пакет, подложив в него новую версию исходников, и подправив нужные для вас опции сборки. научитесь собирать пакеты для вашего дистрибутива. узнаете, что пересобранный и установленный вами в систему пакет может быть перезаписан дистрибутивным при очередном обновлении пакетов. воспользуетесь средствами пакетного менеджера, препятствующими такому перезаписыванию. научитесь автоматизировать процесс пересборки вашего пакета после выхода очередной версии программы. и т.д. и т.п. минусы да, практически, и нет, с такими-то плюсами.

Комментариев нет:

Отправить комментарий