Встановити make ubuntu. Ubuntu Make - розробнику на допомогу. Завантажуємо вихідні джерела ядра

💖 Подобається?Поділися з друзями посиланням

Суть зводиться до того, що цю команду у вигляді make install» або «sudo make install» використовувати у сучасних дистрибутивах не можна.

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

Ліричний відступ

Як відомо, для нормальної роботи більшість софту повинні бути не тільки скомпільовані, а й правильно встановлені в системі. Програми очікують знайти потрібні їм файли в певних місцях, і ці місця в більшості *nix-систем зашиті в код на етапі компіляції. Крім цього аспекту основною відмінністю процесу установки в linux/freebsd/whatever від такої в Windows і MacOS є те, що програма не просто складає купу файлів в окрему директорію в Program Files або /Applications, а розмазує себе по всій файловій системі. Бібліотеки йдуть в lib, виконувані файли в bin, конфіги в etc, різні дані в var і так далі. Якщо вам раптом знадобиться її оновити, все це треба спочатку якось вичистити, т. до. при використанні нової версіїзалишки файлів від старої можуть призвести до абсолютно непередбачуваних наслідків, Найчастіше поганим. Імовірність цієї події не така велика, але вона вам потрібна на бойовому сервері?

І що з того?

Так от, якщо ви робили установку безпосередньо через make install, то нормально видалити або оновити софтину ви, швидше за все, не зможете. Більше того, встановлення нової версії поверх старої, швидше за все, затре ваші зміни в конфігах. make install робить рівно те, що йому сказано – здійснює установку файлів у потрібні місця, ігноруючи той факт, що там щось уже є. Після цього процесу абсолютно ніякої інформації про те, що й куди ставилося, отримати в зручному вигляді неможливо. Іноді, звичайно, Makefile підтримує дію uninstall, але це зустрічається не так часто, та й не факт, що коректно працює. Крім цього зберігати для деінсталяції розпаковане дерево вихідників і правил збирання якось дивно.

Як боротись?

Оскільки в дистрибутивах пакети мають властивість іноді таки оновлюватися, для вирішення цієї проблеми придумали таку штуку як пакетний менеджер. При його використанні установка відбувається приблизно так:
  1. береться певним чином сформований архів
  2. з нього витягується інформація про те, що це взагалі таке, якої версії, від чого залежить, з чим конфліктує, чи потрібно для установки/видалення/налаштування запускати якісь скрипти, etc.
  3. Виконуються дії щодо безпосереднього встановлення
  4. Всі дані про те, куди і що було поставлено додаються до бази даних пакетного менеджера.

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

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

Що робити?

Можна, звичайно, сконфігурувати дерево вихідників так, щоб установка всього і вся йшла кудись у /opt/mycoolapp/, а потім при необхідності руками видалити, але тут може вилізти маса неприємних речей, починаючи з того, що програма очікує, що зможе завантажити свої бібліотеки, а завантажувач про директорію, де вони лежать нічого не знає, закінчуючи тим, що автор програми може розраховувати, що наприклад, якщо він кладе файл, скажімо $prefix/share/xsessions/, то його підхопить менеджер дисплея. Не кажучи вже про шляхи для pkgconfig та інше.

Тож треба збирати пакет.

У мене немає часу, щоб з цим, краще ще раз зроблю make install, все просто і зрозуміло!

Спокійно, спокійно. Він у нас за ноги прив'язаний. Все не так страшно і складно, як здається на перший погляд.
checkinstall
Ця чудова утиліта, будучи запущеною замість make install, поставить кілька питань, після чого сама збере і встановить пакет. Все, при оновленні жодних проблем з вичищенням старого мотлоху у вас не буде.
Складання deb-пакету вручну
Якщо ви не схильні довіряти такій автоматиці (яка іноді все ж таки косить) або ж хочеться внести пару змін, але розбиратися з нормальним процесом складання пакетів все-таки ліниво, то можна зібрати пакет ручками. Я наводжу спосіб, як спорудити його для систем на базі Debian, тому що найкраще знайомий саме з ними. Він не є ідеологічно правильним, але на виході виходить коректний пакет без залучення додаткових сутностей. Робиться це так.
Для початку збираємо софт із попередньо вказаними для configure або autogen.sh параметрами --prefix=/usr та --exec-prefix=/usr.
Далі робимо установку в тимчасову директорію. Пишемо:

Fakeroot make install DESTDIR=`pwd`/tempinstall
Після чого отримуємо в новоствореній директорії весь той набір файлів. До речі, ми зараз знаходимося в fakeroot-оточенні, тобто можна без змін міняти власника і права доступу файлів, але фізично в системі власником залишитеся ви самі. Софт усередині fakeroot-сесії отримуватиме змінену інформацію, що дозволить запакувати в архів файли з коректними правами.
Далі створимо в корені пакета директорію DEBIAN і складемо в DEBIAN/conffiles список всіх файлів, які повинні потрапити в /etc:

CD tempinstall mkdir DEBIAN find etc | sed "s/^/\//" > DEBIAN/conffiles
Після чого створюємо файл DEBIAN/control наступного змісту:

При необхідності там можна створити скрипти preinst, postinst, prerm і postrm.

Все, що робимо dpkg -b tempinstall і отримуємо на виході tempinstall.deb, на який можна нацькувати dpkg -i і який коректно встановиться, оновиться або видаляється.

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

Висновок

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

Всім привіт!

Це невелика замітка для лінуксоїдів-початківців, про те що ж означають ці три чудові команди і для чого одні потрібні. Почнемо, як то кажуть, із початку. Більшість програм перед використанням треба скомпілювати, тобто перетворити з тексту зрозумілою людині на набір одиниць та нулів, зрозумілих комп'ютеру. Процес умовно поділений на три етапи: конфігурування (configure), складання (make) та встановлення (make install). Подробиці під катом 🙂

./configure

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

Виконати налаштування параметрів конфігуратора можна за допомогою ключів і аргументів цих ключів, наприклад:

./configure --prefix=/opt/my_program

За допомогою ключа --prefix= Ви можете вказати директорію, яка надалі виступатиме як префікс для вашої програми (тобто коренева директорія). Це пов'язано з тим, що в світі Linux і не тільки, існує спеціальна Ієрархія Файлової Системи (HFS) відповідно до якої будь-яка програма, щоб працювати без помилок, повинна бути зібрана та встановлена.

У файловій системі є три основні префікси, щодо яких більшість програм конфігурується, а саме:

  • / - коренева директорія операційної системи, так званий ROOT
  • /usr - директорія, в якій знаходяться програми користувача оточення
  • /usr/local - додаткова директорія для програм користувача, що збираються вручну, спеціально для того, щоб операційна система не перетворилася на звалище

Якщо відкрити будь-яку з цих директорій, можна побачити дуже схожу структуру, як мінімум там будуть папки: bin, etc, include, libs, sbin.

Якщо запустити ./configureбез ключів, то префіксом за замовчуванням (директорія, в яку буде встановлена ​​програма, що збирається) буде /usr/local, пам'ятайте це якщо не можете запустити свою програму, можливо у Вас не прописаний шлях PATH.

Крім ключа --prefixв конфігураторі, як правило, є ще безліч інших ключів, подивитися їх все можна якщо виконати:

./configure --help

make

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

make install

Ця команда виконує безпосередню установку програми у вказану, на етапі конфігурування, директорію, після виконання команди make install ви можете запустити нову програму.

Післямова

Щоб не писати три команди по черзі, можна написати їх в один рядок:

./configure && make && make install

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

Насправді make install так само може виконати складання, тому що завдання install залежить від задачі all (тобто безпосередньо складання програми), це означає, що етап make можна пропустити і виконати всього дві команди, якщо записати їх в один рядок вийде:

./configure && make install

Удачі вам! І дякую за те, що дочитали!

А також інших систем доводиться встановлювати додаткові програми. У операційні системи Windows все дуже просто, як правило, є установщик setup.exe, який допомагає встановити софт. А ось у лінуксі справи трохи інакше. Як інсталювати програми в Linux?Нині розглянемо це питання.

У лінуксі є кілька типів настановних пакетів і кожен дистрибутив має свій формат пакетів. У дистрибутивах Fedora, Mandriva, Red Hat та Suse використовується стандартне встановленнядля лінукс RPM, розроблена компанією Red Hat. Файл пакета RPM зазвичай має назву ім'я_програми-версія.rpm.

Ще один із дуже популярних форматів це DEB. Використовується в Debian, Ubuntu, Knoppix та Mepis. Має назву ім'я_програми-версія.deb.

І підійшли ми до архівів. Зазвичай це .tar, .tar.gz, .tgz розширення. Їх слід розпакувати, а потім уже встановлювати/компілювати.

Виконувати процедуру встановлення програм потрібно від імені суперкористувача.

Швидка навігація

Встановлення програм на Debian, Ubuntu

Для роботи з пакетами формату DEB є безліч інструментів, але найчастіше використовують apt-get, він входить до стандартного набору інструментів. Для встановлення програми вводимо команду:

apt-get install имя_пакета

Для видалення:

apt-get remove имя_пакета

APT зберігає локальну базу даних всіх доступних для встановлення пакетів і посилань, де їх брати. Цю базу необхідно оновлювати час від часу, командою:

apt-get update

Для оновлення застарілих пакетів на комп'ютері набираємо наступні команди:

apt-get update; apt-get upgrade

Встановлення програм на Fedora, Red Hat

Утиліта, аналогічна APT - yum. Завантажити та встановити пакет із налаштованого сховища пишемо команду:

yum install имя_пакета

yum remove ім'я_пакету

Локальна база yum не зберігається, тому не потрібно оновлювати. Для встановлення оновлень скористаємося командою:

yum update

Вибрати щось для оновлення:

yum update имя_пакета

Встановлення програм в Mandriva

Mandriva має свій набір інструментів для роботи з пакетами, називається urpmi. Для установки:

urpmi имя_пакета

Щоб видалити:

urpme имя_пакета

Оновити локальну базу зі списком пакетів:

urpmi. update -a

Щоб інсталювати оновлення:

urpmi --auto- select

Встановлення програм з архівів (тарболів)

Для архівів стислих за допомогою GZIP (gz, gz2 і т.д.) робимо так:

tar -xvz f ім'я_файлу

Для архівів стислих за допомогою BZIP (bz, bz2 і т.д.) дещо інакше:

tar -xvjf ім'я_файлу

Команди Tar:

  • x – витягуємо файли з архіву;
  • v - докладний висновок інформації на екран;
  • f – Обов'язкова опція. Якщо не вказати, Tar намагатиметься використовувати магнітну стрічку замість файлу;
  • z – обробити архів стислий за допомогою gzip;
  • j – обробити архів стислий за допомогою bzip.

Після виконання команди буде створено папку з ім'ям, аналогічним назві пакета. Потім потрібно відкрити цю створену папку командою:

cd ім'я_папки

Далі в розпакованому архіві читаємо інструкцію у файлі README, якщо є. У будь-якому випадку, якщо програма зібрана у вигляді файлу, що виконується, то в пакеті буде файл .sh , як правило називається install.sh

Матеріал із Bryansk Linux Users Group та www.rm.pp.ru

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

  1. Примітка
  2. Накладаємо патчі
  3. Конфігурування ядра
  4. Компіляція ядра
  5. Встановлення нового ядра
  6. Проблеми
  7. Посилання

Примітка

Буде описано два способи збирання ядра. Першим буде описано варіант складання.deb пакетів, які можуть бути встановлені у Вашій чи іншій системі. Другий метод, так званий "традиційний" шлях.

Спосіб перший. Складання ядра в.deb пакети

Встановлення необхідних пакетів для компіляції ядра

Для початку оновимо списки пакетів:

# apt-get update

Встановимо потрібні нам пакети:

# apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential

Завантажуємо вихідні джерела ядра

Переходимо до каталогу /usr/src, йдемо на www.kernel.org та вибираємо потрібну версію ядра. В даному випадку буде розглянуто версію linux-2.6.23.1.tar.bz2. Завантажуємо:

# cd /usr/src # wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.1.tar.bz2

Розпакуємо вихідні джерела та створимо символьне посилання:

# tar xjf linux-2.6.23.1.tar.bz2 # rm linux (видалимо попередній симлінк) # ln -s linux-2.6.23.1 linux # cd /usr/src/linux

Накладання патчів

Опціонально і без потреби не робіть цього!

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

Отже, припустимо ви завантажили необхідний патч (наприклад назвемо patch.bz2) в /usr/src. Застосуємо завантажений патч на наші вихідні коди (Ви повинні бути все ще в каталозі /usr/src/linux):

# bzip2 -dc /usr/src/patch.bz2 | patch -p1 --dry-run # bzip2 -dc /usr/src/patch.bz2 | patch -p1

Перша команда – лише тест та жодні зміни не будуть застосовані до вихідників. Якщо після першої команди не видано жодних помилок, можна виконати другу команду для застосування патча. У жодному разі не виконуйте другу команду, якщо після першої були видані помилки!

Таким чином, Ви можете накладати патчі на вихідні ядра. Наприклад, є деякі особливості, які доступні тільки в 2.6.23.8 ядрі, а вихідні джерела не містили необхідної функціональності, але випущений патч patch-2.6.23.8.bz2. Ви можете застосувати цей патч до вихідних джерел ядра 2.6.23, але не 2.6.23.1 або 2.6.23.3 і т.д. Докладніше про це можна прочитати на:

Передвиправлення (препатчі) – еквівалентні альфа релізам; патчі повинні бути застосовані до вихідних версій повного попереднього релізу з 3-х значною версією (наприклад, патч 2.6.12-rc4 може бути застосований до вихідних версії 2.6.11, але не до версії 2.6.11.10.)

Це означає, якщо ми хочемо зібрати ядро ​​2.6.23.8, необхідно завантажити вихідні версії 2.6.23 (http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.tar.gz) стосовно другого способу "traditonal" шлях!

Застосовуємо патч patch-2.6.23.8.bz2 до ядра 2.6.23:

# cd /usr/src # wget http://www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.22.8.bz2 # cd /usr/src/linux # bzip2 -dc /usr/ src/patch-2.6.23.8.bz2 | patch -p1 --dry-run # bzip2 -dc /usr/src/patch-2.6.23.8.bz2 | patch -p1

Конфігурування ядра

Непоганою ідеєю буде використання існуючого конфігураційного файлупрацюючого ядра і для нового. Тому копіюємо існуючу конфігурацію /usr/src/linux:

# make clean && make mrproper # cp /boot/config-`uname -r` ./.config # make menuconfig

після якої завантажиться графічне менюзміни ядра. Вибираємо в меню конфігуратора пункт "Load an Alternate Configuration File" та натискаємо "Ok". Потім (якщо потрібно) зробіть необхідні зміни в конфігурації ядра, переміщаючись по меню (подробиці конфігурації ядра можна знайти в www.google.com). Коли закінчите та натиснете "Exit", буде поставлено питання "Do you wish to save your new kernel configuration?", відповідаємо ствердно "Yes".

Компіляція ядра

Складання ядра виконується всього в дві команди:

# make-kpkg clean # fakeroot make-kpkg --initrd --append-to-version=-cybermind kernel_image kernel_headers

Після --append-to-version=, можна написати будь-яку назву, яку Вам завгодно, але вона має починатися зі знака мінус (-) і не мати прогалин.

Процес компіляції та складання.deb пакетів може зайняти досить тривалий час. Все залежить від конфігурації ядра та можливостей Вашого процесора.

Вирішення проблеми зі створенням initrd.img

З недавнього часу в Debian з'явився баг, що після встановлення пакетів із зібраними описаним тут способом ядрами, не створюється відповідний файл /boot/initrd.img. Для виправлення стосовно вже встановленого ядра доведеться створити initrd.img вручну:

update-initramfs -c -k<полная-версия-ядра>

Для вирішення проблеми «на майбутнє» – закоментувати, як показано, другий з нижченаведених рядків у файлі /etc/kernel/postinst.d/initramfs-tools:

# kernel-package passes an extra arg; hack to not run under kernel-package #[ -z "$2" ] || exit 0

Встановлення нового ядра

Коли вдало завершиться складання ядра, у каталозі /usr/src буде створено два.deb пакети:

# cd /usr/src # ls -l

linux-image-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb - власне саме актуальне ядро ​​і linux-headers-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00 ядра, необхідні для збирання інших модулів (наприклад при збиранні модулів драйвера nVidia). Встановлюємо їх:

# dpkg -i linux-image-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb # dpkg -i linux-headers-2.6.23.1-cybermind_2.6.23.1-cybermind-10

(Ці пакети тепер можуть бути встановлені на іншій системі і збирати їх знову вже не буде потреби.)

Все, встановлення завершено, меню завантажувача, встановлення нового RAM-диска та ядра будуть зроблені автоматично. Залишається тільки перезавантажитися:

# reboot

Спосіб другий. "traditional" way

Виконуємо всі пункти, описані вище До пункту "Компіляція ядра".

# make all # make modules_install # make install

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

Основний недолік цього методу - якщо ви часто оновлюєте ядра, то через деякий час їх накопичиться велика кількість і захочеться видалити невикористовувані. Щоб це було зробити простіше, можна зібрати ядро ​​та інші файли, які встановлюються в систему за командами "make modules_install" і "make install" у deb-пакет (а точніше в два починаючи з ядра 2.6.27) подібно до першого способу, але скористаємося тут скриптами самого ядра:

# make all # make deb-pkg

У каталозі на рівень вище за каталог вихідників з'являться два.deb-файли. Я збирав ядро ​​в каталозі /usr/src/linux-2.6.27.10, і у мене в каталозі /usr/src/ з'явилися файли

# linux-2.6.27.10_2.6.27.10-1_amd64.deb # linux-firmware-image_2.6.27.10-1_all.deb

Ядро встановлюється командою

# dpkg -i linux-2.6.27.10_2.6.27.10-1_amd64.deb

Старі ядра можна видаляти, наприклад, із synaptic"a

Наступні кроки

Ядро зібрано та встановлено, але ще тепер необхідно створити RAM-диск (без якого ядро ​​просто не завантажиться) та необхідно оновити завантажувач GRUB. Для цього виконаємо таке:

# depmod 2.6.23.1 # apt-get install yaird

Встановимо RAM-диск:

# mkinitrd.yaird -o /boot/initrd.img-2.6.23.1 2.6.23.1

Обновимо легко і безболісно завантажувач:

# update-grub

Все, завантажувач і нове ядро ​​готові, залишається тільки перезавантажитись:

# reboot

Проблеми

Якщо після перезавантаження, обране вами нове ядро ​​не завантажується, перезавантажтеся і виберіть Ваше попереднє ядро ​​і можна спробувати зробити весь процес заново, щоб зібрати робоче ядро. Не забувайте в такому випадку видалити рядки неробочого ядра в /boot/grub/menu.lst.

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

Розпакування

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

.tar.gz (іноді.tgz) .tar.bz2

Потрібно розуміти різницю між архіватором і пакувальником.

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

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

Програма tarвміє розпаковувати, тому не потрібно викликати gunzip, а можна просто вказати програмі tar, що файл потрібно спочатку розпакувати. Наприклад, команда

tar-xvf< some_app_name>.tar.gz

відразу розпакує та розархівує. Відмінність файлів із розширеннями

.tar.gz

.tar.bz2

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

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

cd< имя_пакета>*

Складання пакету

Для складання програм у GNU/Linux використовується (в основному) програма make, яка запускає інструкції з MakefileАле оскільки дистрибутивів GNU/Linux багато, і вони всі різні, то для того щоб зібрати програму, потрібно для кожного дистрибутива окремо прописувати шляхи, де які лежать бібліотеки та заголовні файли. Програмісти не можуть вивчати кожен дистрибутив та для кожного окремо створювати Makefile. Тому вигадали конфігуратори, які «вивчають» систему, і відповідно до здобутих знань створюють Makefile. Але на конфігураторі вони не зупинилися і вигадали конфігуратори конфігураторів ...на цьому вони зупинилися

Для збирання нам потрібні компілятори: вони прописані у залежностях пакету build-essentialтак що досить встановити його з усіма залежностями. Ще потрібні autoconfі automake.

Отже, щоб зібрати щось із вихідних джерел, потрібно спочатку зібрати конфігуратор; як зібрати конфігуратор описано у файлі configure.in. Для складання конфігуратора необхідно виконати

./ bootstrap ./ autogen.sh

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

aclocal autoheader automake --gnu --add-missing --copy --foreign autoconf -f -Wall

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

./configure

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

./configure --help

Також є набір стандартних опцій, на кшталт

Prefix=

Яка вказує, який каталог використовуватиме установки. Для Ubuntu зазвичай

--prefix =/ usr --prefix =/ usr/ local

БЕЗслеша в кінці! Тепер можна запустити процес складання самої програми командою

make

Для складання достатньо привілеїв звичайного користувача. Закінченням складання можна вважати момент, коли команди в консолі перестануть "безладно" виконуватися і не буде слова error. Тепер все скомпільовано та готове для встановлення.

Встановлення

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

Правильна установка (Варіант №1)

Установка за допомогою утиліти checkinstall. Для встановлення виконайте

sudo apt-get install checkinstall

Мінус даного способу: checkinstallрозуміє не всі вихідники, оскільки автор програми може написати особливі скрипти з встановлення та checkinstallїх не зрозуміє.

Для створення та встановлення deb-пакету необхідно виконати

sudo checkinstall

Правильна установка (Варіант №2)

Швидке створення deb-пакету «вручну».

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

    Виробляємо установку в тимчасову директорію, де отримуємо весь набір файлів, що встановлюються:

fakeroot make install DESTDIR = `pwd` / tempinstall

    Створимо в корені пакета директорію DEBIAN і складемо в DEBIAN/conffiles список всіх файлів, які повинні потрапити в /etc:

сd tempinstall mkdir DEBIAN find etc | sed "s/^/\//" > DEBIAN/ conffiles

    Після чого створюємо файл DEBIAN/control наступного змісту:

Package: имя_пакета Version: 1.2.3 Architecture: amd64/i386/armel/all Maintainer: Можете вписати своє ім'я, можете дрібень, але якщо залишити порожнім, то dpkg буде лаятися Depends: Тут можна вписати список пакетів через кому. Priority: optional Description: Теж треба щось вписати, щоб не кидало попередження

    При необхідності там можна створити скрипти preinst, postinst, prerm і postrm.

    Створюємо deb-пакет, для чого виконуємо:

dpkg -b tempinstall

    Отримуємо на виході tempinstall.deb, який і встановлюємо

sudo dpkg -i tempinstall.deb

Встановлення (варіант №3)

Неправильне встановлення

Мінус цього способу полягає в тому, що якщо ви встановлюєте безпосередньо через make install, то нормально видалити або оновити пакет ви, швидше за все, не зможете. Більше того, встановлення нової версії поверх старої, швидше за все, зачепить ваші зміни в конфігах. make install робить рівно те, що йому сказано – здійснює установку файлів у потрібні місця, ігноруючи той факт, що там щось уже є. Після цього процесу абсолютно ніякої інформації про те, що й куди ставилося, отримати в зручному вигляді неможливо. Іноді, звичайно, Makefile підтримує дію uninstall, але це зустрічається не так часто, та й не факт, що коректно працює. Крім того, вам буде необхідно зберігати для деінсталяції розпаковане дерево вихідників та правил збирання.

Для встановлення необхідно виконати

sudo make install

Для видалення пакета, встановленого цим способом, необхідно виконати в кореневій директорії вихідників програми (там де ви запускали make install).

sudo make uninstall

Помилки

Часто на етапі конфігурації конфігуратор повідомляє, що не вистачає тієї чи іншої бібліотеки. Назва бібліотеки, яку він повідомляє, не завжди відповідає назві пакету в Ubuntu. З власного досвіду можу порадити пошукати в Синаптиці потрібний пакет, виключивши префікс lib, якщо знайшлося кілька пакетів, які розрізняються приставкою -dev в назві, то вам потрібно встановити саме -dev пакет (зазвичай він тягне за собою і не -dev пакет). Можна ще пошукати за допомогою http://packages.ubuntu.com/ , ввівши ім'я бібліотеки у пошук за вмістом пакетів, аналогічно, якщо знайдеться dev і не dev, потрібні обидва . Ну або просто пошукати в Google.

Необхідне програмне забезпечення

Пакети з літерами mm наприкінці опису – це пакети для C++ програм. Список для bmpx, але підійде майже для будь-якої програми GTK2/Gnome. Так що якщо не вдається зібрати, то подивіться на цей список і звірте з тим, що у вас встановлено.

Compile:Runtime:
Xlibx11-devlibx11-6
GlibMMlibglibmm-2.4-devlibglibmm-2.4-1c2a
GTK+libgtk2.0-dev,gtk-doc-toolslibgtk2.0-0
GTKMMlibgtkmm-2.4-devlibgtkmm-2.4-1c2a
Gladelibglade2-devlibglade2-0
GladeMMlibglademm-2.4-devlibglademm-2.4-1c2a
XMLlibxml2-devlibxml2
XML ++libxml++2.6-devlibxml++2.6c2a
DBuslibdbus-1-dev,libdbus-glib-1-devlibdbus-1-2,libdbus-glib-1-2
Alsalibasound2-devlibasound2
HALlibhal-dev,libhal-storage-devlibhal1,libhal-storage1
Gaminlibgamin-devlibgamin0
Neonlibneon25-devlibneon25
TagLiblibtagc0-devlibtagc0
Startup-Notifylibstartup-notification0-devlibstartup-notification0
Boostlibboost-dev,libboost-filesystem-devlibboost-filesystem1.33.1
MusicBrainzlibmusicbrainz4-devlibmusicbrainz4c2a
GStreamerlibgstreamer0.10-dev,libgstreamer-plugins-base0.10-devlibgstreamer0.10-0,libgstreamer-plugins-base0.10-0


Розповісти друзям