Чим відрізняється побудова від джерела та використання пакета встановлення?


46

Мені було цікаво: при встановленні чогось є простий спосіб подвійного клацання на встановлений виконуваний файл, а з іншого боку, є спосіб його побудови з джерела.

Останній, завантажуючи вихідний пакет, справді громіздкий.

Але в чому полягає принципова відмінність цих двох методів?

Відповіді:


44

Все програмне забезпечення - це програми , які також називаються вихідними пакетами . Таким чином , всі вихідні пакети , повинні бути побудовані першим, щоб працювати на вашій системі.

Ці бінарні пакети є один, які вже будує з джерела хто - то з загальними функціями і параметрами, в програмному забезпеченні , так що велика кількість користувачів може встановити і використовувати його.

Бінарні пакети прості в установці .
Але можуть бути не всі параметри з висхідного пакету.

Тож для установки з вихідного коду вам потрібно створити вихідний код самостійно. Це означає, що вам потрібно подбати про залежності самостійно. Також вам потрібно знати про всі особливості пакету, щоб ви могли його скласти відповідно.

Переваги установки з джерела:

  • Ви можете встановити останню версію та завжди можете оновлюватись, будь то патч безпеки чи нова функція.
  • Дозволяє обрізати функції під час встановлення так, щоб відповідати вашим потребам.
  • Аналогічно можна додати деякі функції, які можуть не надаватися у двійковому файлі.
  • Встановіть його в потрібне місце.
  • У разі використання певного програмного забезпечення ви можете надати конкретну інформацію про обладнання для відповідної установки.

Коротше кажучи, встановлення з джерела дає вам велику можливість налаштування, водночас це вимагає великих зусиль, тоді як установка з двійкового файлу простіша, але ви не зможете налаштувати за своїм бажанням.

Оновлення : додавання аргументу, пов’язаного із безпекою, у коментарі нижче. Так, це правда, що при установці з двійкового файлу ви не маєте цілісності вихідного коду. Але тоді це залежить від того, звідки ви отримали двійковий файл. Є багато надійних джерел, з яких ви можете отримати бінарні дані будь-якого нового проекту, єдиний мінус - це час . Може знадобитися певний час, щоб двійкові дані оновлень або навіть новий проект з'явилися в наших надійних сховищах.

І перш за все, щодо безпеки програмного забезпечення, я хотів би висвітлити цю веселу сторінку в лабораторіях, що надаються Джо в коментарях нижче.


4
джерело також може бути скомпільовано оптимізованим способом для вашої системи (що .. може не бути гарною ідеєю, оскільки тоді складений матеріал є "специфічним" для системи і може не працювати на резервній копії ... але у вас є джерело, ви можете перекомпілювати (якщо у вас є час на це))
Олів'є Дулак

Це залежить від того, чи є у вас "резервна система" взагалі. Якщо ви просто робите якісь дослідження, зазвичай цього не робите.
h22

1
Для гіперпараноїда однією з переваг установки з джерела є безпека та можливість перегляду коду, якщо ви в змозі і хочете: коли ви встановлюєте з джерела, ви фактично знаєте, що у вас є двійковий файл із цього вихідного коду, а не двійковий файл з невідомими модифікаціями (якщо ви спочатку довіряєте джерелу).
LawrenceC

6
@ultrasawblade - Ви, очевидно, недостатньо параноїчні! <G> - див. Cm.bell-labs.com/who/ken/trust.html для повного монтування.
Джо

32

Вихідний файл містить оригінальний код, написаний розробником будь-якою мовою, яку він обрав (C, C ++, Python тощо), і є загальним. Він не характерний для будь-якого дистрибутива і в багатьох випадках для будь-якої операційної системи.

Пакет (RPM або DEB, наприклад) - це двійковий виконуваний файл (або інтерпретований сценарій тощо), попередньо підготовлений для вашого конкретного дистрибутива. Завдання підготовки джерела до компіляції (додавання будь-яких необхідних патчів тощо), власне компіляція, створення конфігураційних файлів для дистрибутива, створення сценаріїв перед і після встановлення тощо виконує для вас сервіс, що підтримує пакет.

Іншими словами, усі роботи з ослами були зроблені для вас в пакеті, тоді як вам потрібно буде зробити це самостійно, якщо ви вирішите встановити з джерела.

Набагато простіше використовувати пакет майже у всіх випадках, як:

  • Їх набагато простіше встановити
  • Вони спеціально розроблені для роботи з вашим дистрибутивом
  • Їх іноді виправляють сервісні пакети, щоб виправити конкретні помилки
  • Менеджер пакунків видалить їх
  • Менеджер пакунків керуватиме всіма залежностями для вас
  • Менеджер пакунків подбає про оновлення
  • Вам не потрібно встановлювати інструменти для розробників у вашу систему (компілятори, make тощо)

Однак іноді упакована версія - це стара версія, а ще гірше, не існує упакованої версії; в такому випадку ваш єдиний варіант - скласти себе. Якщо це зробити, вам потрібно врахувати наступне:

  • Вам потрібно буде встановити всі інструменти для розробників у вашій системі
  • Ви несете відповідальність за перевірку оновлення та перекомпіляції
  • Вам потрібно буде переконатися, що всі залежності встановлені, включаючи devпакети - їх може бути багато.
  • Можливо, вам доведеться налагоджувати проблеми, якщо він не працює, як очікувалося у вашому дистрибутиві

Якщо ви готові докласти додаткових зусиль, то компіляція з джерела може принести вам переваги:

  • Доступ до останньої доступної версії
  • Варіант оптимізації процесу складання для продуктивності / стабільності
  • Насолоджуйтесь!

Зауважте, що хоча попередньо вбудовані пакети дистрибутивів надають бінарні виконувані файли, які готові встановити та запустити (RPM та DEB - приклади), інші дистрибутиви надають пакети, які просто автоматизують процес збирання.

ebuildsПриклад цього - Gentoo - це в основному інструкції керівнику пакунків, що описують, як скласти та встановити виконуваний файл. Це має багато переваг традиційних менеджерів пакетів (автоматичні оновлення, видалення тощо), але все ж дозволяє користувачеві оптимізувати процес компіляції під свій смак.

Arch Linux має систему упаковки, де основні пакети є двійковими, тоді як багато додаткових пакетів збираються в системі за допомогою PKGBUILDфайлів.


19

Окрім інших відповідей, я хотів би додати щось:

Якщо ви вирішили скласти програму самостійно, вам потрібно подумати, що компіляція - це не те, що ви робите лише один раз. Ймовірно, вам потрібно буде підписатися на розсилку розсилки розробок програм, які ви вирішили скласти і бути в курсі нових версій і, особливо, оновлень безпеки.

Щоразу, коли додаток оновлюється, вам доведеться перекопіювати нову версію, тому пам’ятайте, що вам доведеться витрачати частину свого часу щотижня.

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


6

Побудова з джерела дозволяє вказати архітектуру саме вашої машини. Нові процесори мають додаткові інструкції, які компілятори розуміють, знижуючи трохи продуктивності. Пакети попереднього збирання зазвичай розраховують на найбільш архаїчний процесор, який все ще використовується.

Це в основному важливо для критично важливих проектів додатків, які дуже активно використовують процесор, наприклад, інструменти біоінформатичного конвеєра, наприклад, або інструменти геофізичного моделювання. Таке програмне забезпечення працює в дуже контрольованому середовищі, не має власного контролю доступу, тому рідко є помилки безпеки настільки нагальні, що їх потрібно виправити за кілька днів або годин. Майже ніколи його не потрібно працювати на іншій машині з спочатку невідомою архітектурою.

Так, я знаю, що комп'ютери зараз дуже-дуже швидкі, і будь-які зусилля чи дії, які ви вживаєте, дуже дуже дорогі, але на третій день сидіти і чекати, коли ваша програма завершиться (саме про цю ситуацію я говорю) такі правди почати виглядати сумнівно.

По-іншому, такі програми, як веб-переглядачі тощо, слід краще використовувати з репозитарію технічного обслуговування (а не з деяких завантажених попередньо вбудованих пакетів), оскільки дуже важливо постійно оновлювати їх.


Якщо такі налаштування максимально ефективно використовувати ваш процесор, це має значення (це актуально лише в деяких дуже спеціалізованих кодах; приказка полягає в тому, що 95% часу витрачається на 5% коду, щоб оптимізувати інші 95% не робить помітної різниці; і більшість сучасних програм у 99% часу чекають, коли користувач все-таки зробить свою думку), програми пропонують різний код для включення залежно від процесора при запуску.
vonbrand

0

Один із способів отримати найкраще з обох світів (сучасне програмне забезпечення, проста установка / видалення, включення більшості налаштувань і адаптацій дистрибуції, можна оптимізувати для місцевих потреб), при цьому витрати (повинні бути в курсі самих себе, стежте за помилками) і виправлення в останню хвилину, слідкуйте за розробкою, ви самостійно щодо виправлень помилок та несумісності між версіями) не можна пом'якшити (багато), це створити власні пакунки, починаючи з вихідних пакетів з вашого розповсюдження. Так, це більше роботи, ніж просто побудова та встановлення.


1
Це здається цікавою відповіддю ("кращий з обох країн"), але я не можу повністю зрозуміти, що ви тут маєте на увазі: "це створити власні пакунки, починаючи з вихідних пакетів з вашого розповсюдження". Ви б не заперечили переформулювання / пояснення?
Ян Żankowski
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.