Каковы преимущества строительных инструментов / библиотек из исходного кода?

8

Получая выгоду от строительства из источника? Код лучше оптимизирован под вашу аппаратную архитектуру? Оптимизировано ли оно вообще?

Почему кто-то выбрал бы сборку из исходного кода вместо использования системы управления пакетами, такой как APT / yum? Если есть какой-то выигрыш от оптимизации, когда это перевешивает выгоду от системы управления пакетами?

Дуг Т.
источник
Ваши два варианта не являются взаимоисключающими. Вы можете настроить источники пакета или даже упаковать его самостоятельно.
Фахим Митха

Ответы:

11

Сборка из исходного кода предоставляет следующие параметры, которые недоступны при использовании версии из менеджера двоичных пакетов.

Компиляция из исходного кода позволяет:

  • использовать специфичные для процессора оптимизации
  • используйте самую последнюю версию
  • узнать, как работает компиляция и компоновка (предложение от @mattdm)
  • исправление ошибок, разработка
  • установить параметры времени компиляции (например, включить функции X в vim)
Шон Дж. Гофф
источник
1
для обычного пользователя настольного компьютера выигрыш в оптимизации для конкретного процессора стоит затрат на сложность ручного управления зависимостями между частями программного обеспечения? Это как увеличение на 2% или удвоение производительности?
Дуг Т.
1
@Doug Для программного обеспечения с интенсивным использованием процессора разница может составлять 10,20%, для типичного программного обеспечения для настольных компьютеров разница равна нулю. Если вы хотите попробовать скомпилировать программное обеспечение из исходного кода, я бы порекомендовал дистрибутив на основе исходного кода (например, Gentoo). Это очень плохая идея - устанавливать программное обеспечение из исходного кода (кроме стороннего программного обеспечения, установленного в / opt) в двоичном дистрибутиве.
Шимон Тот
Я думаю, что производительность не стоит выходить за пределы зависимостей менеджера пакетов. Однако существуют системы управления пакетами на основе исходного кода, которые отслеживают зависимости и позволяют выполнять компиляцию из исходного кода. Перечисленное выше преимущество, которое вы не получите, это «самая последняя версия» - у менеджера пакетов выбрана версия, которая будет работать с остальной частью дистрибутива.
Шон Дж. Гофф
5
Я хотел бы добавить одну вещь: узнать больше о том, что происходит под капотом. Это может стоить само по себе.
Mattdm
7

Я сделал это точно совсем недавно.

Я скомпилировал openssl-1.0.something из исходного кода в Linux-системе Slackware 11.0. Я хотел залатать логин по паролю, чтобы сделать паузу на 7 секунд при неудачном входе в систему, чтобы заполучить раздражающих китайских угадателей паролей ssh.

Я скомпилировал Apache httpd 2.2.17 в той же системе Slackware 11.0, потому что он поставлялся с Apache 2.0.something, и я хотел использовать 2.2.x httpd.conf из другой системы.

Если подумать, я также скомпилировал Alpine 2.0 (почтовый клиент, продолжение пользователя) для той же системы. Почему Slackware 11.0? Он работает на компьютере 2003 года с графикой Intel "Brookdale", и любой более поздний Slackware просто не поддерживает плохо документированную графику Intel.

На другом компьютере я получил поддержку беспроводной микросхемы TI ACX111 от github и скомпилировал новый драйвер, что позволило мне использовать беспроводную карту за 9 долларов.

Я также обычно перекомпилирую ядра Linux, чтобы сделать их специфичными для машины, на которой они работают.

Так что в моем случае это разные причины настройки, аппаратная поддержка и «просто потому что».

Учитывая то, что мы знаем об эпидемиологии в однородной популяции (http://www.usenix.org/publications/login/2005-12/openpdfs/geer.pdf), почему не все компилируют из исходного кода в своих собственных системах, какими бы ни были опции компиляции они выбирают? Это сделало бы для значительно большей устойчивости к вирусам и червям.

Брюс Эдигер
источник
Существуют более простые способы замедления этих злоумышленников, использующих ssh: ищите ограничение скорости iptables. Это решение имеет более широкое применение и, кроме того, не аннулирует вашу гарантию.
vonbrand
Как правило, Linux не поставляется с гарантией. На данный момент Slackware 11 уже несколько лет. Вы задаете вопрос с FUD, в частности, «страх». "О, нет! Не делай этого! Ты аннулируешь свою гарантию!" Сколько раз можно рассчитывать на гарантию? Очень мало. Мы все хотели бы, чтобы кто-то другой взял на себя ответственность (особенно моральную, но в основном финансовую) за все наши действия, но это просто не может произойти без множества негативных последствий для отдельных людей и общества. Я придерживаюсь своего совета и многого другого: соберите источник самостоятельно и возьмите на себя всю ответственность. Не вините никого в этом.
Брюс Эдигер
О, давай. Если это RHEL или SLES (или даже Ubuntu LTS с контрактом на поддержку), то, безусловно, гарантия аннулируется. Если это был Debian или Fedora, сообщение об ошибке для вашего взломанного OpenSSH будет просто закрыто, не смотря дважды.
vonbrand