Що робить "змусити встановити"?


52

Переходячи з Windows до Linux, я не в змозі зрозуміти процес установки програмного забезпечення в Linux. У Windows, коли ми запускаємо інсталяційний файл, він запитує, де ви хочете встановити програму, швидше за все, лише в папці програмних файлів. Пізніше він редагує реєстр. Це називається встановленням у Windows. Що саме означає "встановлення програмного забезпечення" в Linux?

Припустимо, я завантажив вихідний код, конфігурував його і потім створив двійковий код за допомогою make. Тепер це просто двійкова, ще не корисна програма. Як відбувається його встановлення? За make install? І що саме робить ця команда?


1
Моя відповідь на stackoverflow.com/questions/528399/… дає короткий огляд звичайних видів справ, виконаних make installкроками з точки зору програмістів.
dmckee

Відповіді:


44

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

Коли ви робите щось на кшталт "make all", програма make виконує правило з назвою "all" з файлу в поточному каталозі під назвою "Makefile". Це правило, як правило, вимагає компілятора для складання деякого вихідного коду у бінарні файли.

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


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

2
@grawity Насправді в Windows потрібно редагувати реєстр з багатьох причин, наприклад інтеграції. В Linux інтеграція програмного забезпечення один до одного зазвичай включає лише копіювання файлів або додавання рядків до конфігураційних файлів чимось на зразок сценарію після встановлення.
Каміло Мартін

@sharjeel Було б корисно розповісти, як я можу знайти правило, назване allв Makefileі як виглядає кінцевий маркер цього розділу, щоб я міг бачити, де обробка правила для allзупинок.
Pro резервне копіювання

36

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

Багато проектів використовують автоінструменти GNU, щоб спробувати покращити їх портативність серед апаратних та операційних систем. (У різних варіантах Unix використовується дещо різні заголовки для декларацій функцій, що знаходяться трохи поза звичайним шляхом - за винятком того, що більшості програм потрібна та чи інша з заявлених у різних місцях.)

Коли проект використовує Autotools, звичайна мантра його встановлювати:

./configure
make
make install

./configure, Як правило , дозволяє використовувати параметр командного рядка , як --prefix /opt/apacheабо що - щось подібне , щоб вказати інший шлях до файлу. /usr/local/є загальним замовчуванням prefix. Набагато простіше місцевому програмному забезпеченню жити в одному місці, а програмне забезпечення, що надається для дистрибуції, жити в "основних каталогах": /usr/ /bin/тощо. (Пакувальники дуже обережні, щоб ніколи не торкатися файлів /usr/local/- вони знають, що це виключно для системних адміністраторів.)

У будь-якому випадку, ./configure --prefix /path/to/new/prefixзасіб буде встановлювати змінну, Makefileщо є при компілюванні програми, зміна сторінок керівництва таким чином, щоб вони вказували на правильні місця розташування файлів, зміну конфігураційних файлів тощо. Отже, makeбуде створено програмне забезпечення спеціально для потрібного місця установки та make installвстановить його в тому місці.

Більшість програм може запускатися навіть без останнього make installкроку - просто ./program_nameчасто їх запускати. Це, безумовно, річ, що стосується кожного проекту - деякі, як-то postfixі qmailт. Д., Складаються з безлічі різних рухомих творів і покладаються на них, що вони працюють разом. Інші, як-от lsабо suможуть бути достатньо автономними, щоб виконати штрафи із каталогу, в який вони були вбудовані. (Це не часто корисно, але іноді дуже корисно.)

Однак не всі проекти використовують Autotools - вони величезні , складні та жалюгідні в обслуговуванні. Рукописні Makefiles набагато простіші для запису, і я особисто думаю, що просто розповсюджувати просту Makefileз наявними змінними конфігурації набагато простіше для розробників та користувачів. (Хоча ./configure ; make ; make installмантра дійсно проста для користувачів, коли вона працює.)


19

make installнічого іншого, ніж виконання installфункції / розділу у вашомуMakefile


Правильно, це просто подобається make clean, в основному він просто виконує коди під розділом.
Вульфрік Лі

8

Найважливіше, що слід зазначити щодо встановлення програмного забезпечення на Linux, це те, що це набагато надійніше та простіше в установці програмного забезпечення з вашого дистрибутиву (це його мета!). Використовуйте лише, make installякщо іншого способу немає (розгляньте і альтернативні програми).

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

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

Як додаткове зауваження, хоча дистрибутиви, такі як Ubuntu, завжди містять застарілі пакети, є також такі дистрибутиви, як Arch Linux, які завжди актуальні (хоча вони не пропонують буквально будь-яку програму, випущену для Linux, як Debian / Ubuntu).

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

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