Чи краще компілювати з джерела чи встановити з пакета .deb?


18

Іноді, завантажуючи програмне забезпечення з Інтернету, я виявляю, що є пакет .deb, готовий як для мого Debian / Ubuntu, так і для збирання тарболу. На початку я просто використовував би пакет для його простоти установки, і навіть не наважувався б скомпілювати його. Навіть звук цього мене трохи налякав. Однак сьогодні, коли у мене є варіант, я часом опиняюся перед дилемою: чи є непопулярна перевага для компіляції з джерела порівняно з пакетом .deb? Я сподіваюся, що дізнаюся тут, дякую.

Відповіді:


24

Перевага компіляції з джерела полягає в тому, що ви можете компілювати пакети з певними прапорами / параметрами, які можуть бути відсутніми / відключеними у стандартних пакетах Ubuntu. Крім того, це легко встановити кілька версій однієї програми. Крім того, ви можете вибрати точну версію пакета, який, можливо, вже видалений або ще не присутній у сховищах Ubuntu (приклад: у мене в каталозі / opt / каталог є кілька версій Python 2.4.x, оскільки мені потрібно, щоб запустити деякі старіші програмне забезпечення).

Недоліком компіляції з джерела є те, що, якщо ви не створили .deb і не встановите його, нормальна процедура "./configure; make; sudo make install" не дозволяє менеджеру пакунків Ubuntu повністю не знати про внесені вами зміни. не отримуватимуть оновлень для ручно складеного програмного забезпечення; і можливо, менеджер пакунків пізніше скасує / порушить ваш пакет, якщо ви не будете обережні, щоб встановити його в окремому місці.

Коротше кажучи: завжди спочатку розглядайте питання про встановлення зі стандартних сховищ Ubuntu, наступне - розглянути можливість встановлення .deb; компілюйте лише з джерел, якщо ви точно знаєте, для чого це потрібно робити.


Я також читав, чим може відрізнятися продуктивність пакета при його компіляції, що краще сумісність з поточним ядром. Не оцінював це особисто.
Федір РИХТИК

@Fedir: Я не впевнений, що ядро ​​пов'язане з цим, це швидше архітектура процесора - наприклад, за старих часів багато дистрибутивів, що містять пакунки, складені з набору інструкцій 80386 для максимальної сумісності при ручному складанні програми для Pentium, це дозволить використовувати більш ефективні інструкції. Є цілі дистрибутиви, такі як Gentoo, які зібрані з джерела на хост-машині з цієї причини. Однак різниця, як правило, мінімальна і її можна помітити лише у дуже конкретних програмах.
Сергій

1
Зауважте, що використання checkinstall замість make install усуває багато згаданих недоліків. Дивіться help.ubuntu.com/community/CompilingEasyHowTo
ndemou

1
Вибачте за nitpicking, @EliahKagan, але, хоча virtualenv є приголомшливим, це більше для підтримки декількох середовищ Python із встановленими різними libs. Якщо ви хотіли певної версії Python, можливо, компільованої з певними налаштуваннями - вам все одно потрібно буде встановити фактичний бінарний файл - або з .deb, або зібраний з нуля.
Сергій

@Sergey Ти маєш рацію. (І я не бачу нічого, що ви сказали, як нітпікінг - якщо що-небудь, я повинен вибачитися за свій неправильний та оманливий коментар!) Як я розумію, менеджери пакетів, як-от conda, автоматично зроблять віртуальні середовища та встановлюватимуть для них різні установки Python , створення та підтримка версій для проектів. Але, як ви кажете, virtualenv сам цього не зробить.
Eliah Kagan

1

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


0

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

AFAIK не має реальної користі складати його самостійно, якщо ви не плануєте його змінити спочатку. Якщо ви просто хочете, щоб програмне забезпечення було таким, яким є, тоді встановіть .deb

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.