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


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