Все программное обеспечение является программами , которые также называются исходными пакетами . Таким образом, все исходные пакеты должны быть собраны в первую очередь для запуска в вашей системе.
Эти бинарные пакеты являются один, которые уже строит из источника кто - то с общими функциями и параметрами, в программном обеспечении , так что большое количество пользователей может установить и использовать его.
Бинарные пакеты просты в установке .
Но, возможно, не все варианты из пакета upstream.
Таким образом, для установки из исходного кода вам необходимо создать исходный код самостоятельно. Это означает, что вам нужно заботиться о зависимостях самостоятельно. Также вам необходимо знать все функции пакета, чтобы вы могли его соответствующим образом собрать.
Преимущества установки из источника:
- Вы можете установить последнюю версию и всегда оставаться в курсе, будь то исправление безопасности или новая функция.
- Позволяет вам обрезать функции при установке в соответствии с вашими потребностями.
- Точно так же вы можете добавить некоторые функции, которые могут отсутствовать в двоичном файле.
- Установите его в желаемом месте.
- В случае некоторого программного обеспечения вы можете предоставить информацию о вашем оборудовании для соответствующей установки.
Короче говоря, установка из исходного кода дает вам возможность большой настройки, в то же время это требует больших усилий, в то время как установка из бинарного файла проще, но вы не сможете настроить ее так, как хотите.
Обновление : добавление аргумента, относящегося к безопасности, в комментариях ниже. Да, это правда, что при установке из двоичного файла у вас нет целостности исходного кода. Но тогда это зависит от того, откуда у вас бинарный файл. Существует множество надежных источников, из которых вы можете получить бинарный файл любого нового проекта, единственным минусом является время . Для того, чтобы бинарный файл обновлений или даже новый проект появился в наших доверенных репозиториях, может потребоваться некоторое время.
И, прежде всего, о безопасности программного обеспечения, я хотел бы выделить эту веселую страницу в Bell-Labs, предоставленную Джо в комментариях ниже.
Исходный файл содержит исходный код, написанный разработчиком на любом языке, который он / она выбирает (C, C ++, Python и т. Д.), И является универсальным. Это не относится ни к одному дистрибутиву, а во многих случаях к любой операционной системе.
Пакет (например, RPM или DEB) - это двоичный исполняемый файл (или интерпретируемый скрипт и т. Д.), Предварительно подготовленный для вашего конкретного дистрибутива. Задача подготовки исходного кода для компиляции (добавления необходимых исправлений и т. Д.), Фактической компиляции, создания специфических для дистрибутива конфигурационных файлов, создания сценариев до и после установки и т. Д. Выполняется для вас сопровождающим пакета.
Другими словами, вся работа с ослом была выполнена для вас в пакете, в то время как вам придется делать это самостоятельно, если вы решите установить из исходного кода.
Практически во всех случаях использовать пакет намного проще:
Однако иногда упакованная версия является старой версией или, что еще хуже, упакованной версии не существует; в этом случае ваш единственный вариант - собрать себя. Если вы это сделаете, вам нужно учитывать следующее:
dev
пакеты - их может быть много.Если вы готовы приложить дополнительные усилия, то компиляция из исходного кода может дать вам следующие преимущества:
Обратите внимание, что, хотя в готовых пакетах некоторых дистрибутивов предусмотрены двоичные исполняемые файлы, которые готовы к установке и запуску (например, RPM и DEB), другие дистрибутивы предоставляют пакеты, которые просто автоматизируют процесс компиляции.
ebuilds
Примером этого является Gentoo - пакет - это в основном инструкции для менеджера пакетов, описывающие, как скомпилировать и установить исполняемый файл. Это имеет много преимуществ традиционных менеджеров пакетов (автоматическое обновление, удаление и т. Д.), В то же время позволяя пользователю оптимизировать процесс компиляции по своему вкусу.Arch Linux имеет систему упаковки, в которой основные пакеты являются двоичными, тогда как многие дополнительные пакеты компилируются в системе с использованием
PKGBUILD
файлов.источник
Помимо других ответов, я хотел бы добавить кое-что:
Если вы решили скомпилировать программу самостоятельно, вам нужно подумать, что компиляция - это не то, что вы делаете только один раз. Вам, вероятно, потребуется подписаться на список рассылки для разработчиков приложений, которые вы решили скомпилировать, и быть в курсе новых версий и, особенно, обновлений безопасности.
Каждый раз, когда приложение обновляется, вам придется перекомпилировать новую версию, так что имейте в виду, что вам придется экономить часть своего времени каждую неделю.
Если вы не можете себе этого позволить, лучше, чтобы сопровождающий пакета выполнил эту работу за вас.
источник
Сборка из исходного кода позволяет указать архитектуру именно вашей машины. Новые процессоры имеют дополнительные инструкции, которые компиляторы понимают, что приводит к снижению производительности. Предварительно собранные пакеты обычно рассчитывают на самый архаичный процессор, все еще широко используемый.
Это в основном важно для критически важных приложений, которые очень интенсивно используют ЦП, таких как, например, инструменты биоинформационного конвейера или инструменты геофизического моделирования. Такое программное обеспечение работает в очень контролируемой среде, не имеет функции контроля доступа само по себе, поэтому редко возникают ошибки безопасности, настолько срочные, что их необходимо исправлять за несколько дней или часов. Почти никогда не требуется запускать на другой машине с изначально неизвестной архитектурой.
Да, я знаю, что компьютеры очень, очень, очень быстрые, и любые предпринимаемые вами усилия или действия очень, очень, очень дороги, но на третий день сидения и ожидания завершения вашей программы (об этой ситуации я говорю) такие истины. начать смотреть сомнительно.
Иными словами, приложения, такие как браузеры и тому подобное, должны лучше использоваться из репозитория сопровождающего (а не из некоторых загруженных предварительно собранных пакетов), так как очень важно поддерживать их в актуальном состоянии.
источник
Один из способов получить лучшее из обоих миров (современное программное обеспечение, простая установка / удаление, включение большинства настроек и адаптаций дистрибутива, возможность оптимизации в соответствии с местными требованиями), а также затраты (приходится постоянно обновляться, следите за ошибками) и патчи в последнюю минуту, следите за разработкой, вы сами по себе в отношении исправления ошибок и несовместимости между версиями) не можете быть смягчены (сильно), это создавать ваши собственные пакеты, начиная с исходных пакетов из вашего дистрибутива. Да, это больше, чем просто сборка и установка.
источник