Установка програм в linux з вихідних кодів

Установка програм в Linux з вихідних кодів

Установка софта з початкових кодів має
деякі позитивні моменти, але і
чимало негативних.

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

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

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

отримання початкових кодів
Закачуємо вихідні. Тут зазвичай є два варіанти:
1. Закачати готовий архів в форматі tar.gz
2. Взяти файли з CVS репозиторію. У CVS зазвичай знаходиться софт "в процесі розробки", свіжіший, а й менш протестований.
Інструкції по користуванню CVS-репозиторіями зазвичай знаходяться на сайті розробника.

Розпаковуємо тарболи. Це можна зробити за допомогою будь-якого графічного архиватора (наприклад File Roller в Гнома), або ж з консолі:
* Для архіву '.tar.gz':
tar xvzf імя.архіва.tar.gz
* Для архіву '.tar.bz2':
tar xvjf імя.архіва.tar.bz2

Конфігурація і компіляція
Якщо інструкції вимагають запуску скрипта з назвою configure в якості першого кроку, спочатку проганяє
./ Configure --help

і уважно читаємо, які опції можна послати скрипту configure для правильного конфігурації програми.
потім запускаємо
./ configure

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

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

Якщо make пройшов нормально, ми майже у мети.
Думаєте, тепер треба проганяти make install? По суті, можна і так (не забудьте стати рутом для цього).
Але Правильний Шлях ™ полягає в тому, щоб зробити тепер з скомпільованого исходника пакет для нашого дистрибутива і поставити його засобами штатного менеджера пакетів.

checkinstall
Це одна з чималої кількості програм для побудови пакетів з вихідних. Вона не дістроспеціфічна і генерує пакети для найпоширеніших пакетних менеджерів (на відміну від paco, який теж всім хороший, крім того, що тримає свою базу пакетів).
У класичній схемі збірки додатку з початкових кодів, які використовують automake (./configure make make install) ', ця утиліта замінює собою' make install. Роблячи в принципі те ж саме, але при цьому реєструючи встановлюється програму в пакетної базі дистрибутива.
checkinstall -R

Побудує і встановить RPM пакет (для Fedora, Mandriva, SuSe, Alt, ASP.)
checkinstall -D

Створить і встановить DEB-пакет (для Debian, Ubuntu.)
checkinstall -S

Створить і встановить TGZ-пакет (для Slackware, Zenwalk, DeepStyle, Vektorlinux, Mops; в постачанні десятеро є checkinstall, Патчений самим Патріком.)

Ім'я пакета за замовчуванням буде myNewUtil.
Версія: 1.2.3. Після запуску checkinstall завжди просить ввести опис пакета, а також дає можливість змінити ім'я, версію і т.д.

Створюємо в домашній директорії нашого користувача директорію foo, а в ній - директорії usr і usr / local
Тепер стаємо рутом і пишемо
make install prefix = / home // foo / usr / local
cd foo
makepkg foo.tgz

В результаті отримуємо Слакварний пакет, який можна тепер встановити програмою installpkg.

qpkg -a імя_нужной_программи

3. Виконуємо
qpkg -p імя_нужной_программи

(Ця команда сама завантажить PKGBUILD, вихідні коди, збере програму в пакет і встановить її).

Створення власного пакета в ArchLinux
(На випадок, якщо навіть в AUR його не знайшлося).
Як було сказано, для побудови пакета в Арче потрібен PKGBUID файл.
Розкладемо його по поличках.
Перш за все варто відзначити, що, щоб не захаращувати дерево ABS власними пакетами, краще виділити для цього окремий каталог (у мене - / var / abs / local), в цьому каталозі створюємо підкаталог, де, власне, все й буде відбуватися. Копіюємо туди файл '' / var / abs / PKGBUILD.proto '' (прототип, який є в дереві ABS) і перейменовуємо його в "PKGBUILD". Далі потрібно підправити файл. Спочатку потрібно підправити опис пакета:
* 'Pkgname' - назва пакета,
* 'Pkgver' - версія пакету,
* 'Pkgrel' - версія збірки,
* 'Url' - зазвичай домашня сторінка додатка,
* 'License' - ліцензія, під якою випускається додаток,
Далі слід вказати залежності, конфлікти і джерело початкових кодів зібраного пакета:
* 'Depends' - список залежностей пакета, назви повинні бути укладені в одинарні лапки і розділені пробілами. Якщо важлива версія залежності - її можна вказати
(Наприклад, kdelibs> = 3.5.1),
* 'Makedepends' - список пакетів, необхідних на етапі складання (наприклад, якщо пакет збирається який-небуть нестандартною системою збирання типу cmake),
* 'Conflicts' - список пакетів, з якими може конфліктувати збирається
* 'Replaces' - список пакетів, які замінює збирається,
* 'Backup' - список файлів, які необхідно буде зберегти при установці зібраного пакета,
* 'Install' - ім'я інсталяційного скрипта (в ньому - додаткові кроки, необхідні для завершення установки пакета),
* 'Source' - вказує шлях, звідки будуть забиратися вихідні пакета.
Якщо для побудови необхідно кілька файлів (наприклад, додаткові патчі), їх вказують через пробіл,
* 'Md5sums' - md5 суми викачаних початкових кодів. Якщо не заповнювати цю строчку, нічого страшного не станеться, makepkg лише зверне на це увагу. До речі, makepkg може згенерувати ці контрольні суми і додати їх у PKGBUILD. Для цього необхідно виконати
makepkg -g >> PKGBUILD

Далі слід скрипт збірки, який представляє собою все ті дії, які довелося б виконати, якщо пакет збирався б вручну. Зазвичай це стандартна послідовність
./ configure make make install
однак тут варто звернути увагу на префікс, куди буде встановлюватися пакет і опції скрипта ./configure.
Тепер про прапори 'makepkg'.
Про '-f' вже говорилося, ще два корисних прапора - це '-c', очищающий каталог пакета після складання і '-i', який дозволяє відразу ж встановити зібраний пакет.

У каталозі / usr / src / rpm / SOURCES повинен з'явитися архів з вихідними кодами потрібної нам програми, а в каталозі '' / usr / src / rpm / SPECS - файл 'імя_программи.spec' '' (це файл, що описує правила складання).
* 3. Переходимо в директорію / usr / src / rpm / SPECS і там виконуємо:
rpmbuild -bb -target = архітектура_процессора названіе_программи.spec
(Запускаємо збірку програми)
Замість "архітектура_процессора" підставляємо архітектуру процесора, під яку збираємо пакет (в більшості випадків підійде i686), 'названіе_программи.spec' - це '' spec-файл '' для нашої програми. Якщо не задоволені якісь залежності, 'rpmbuild' скаже про це - тоді доведеться доустановити відсутні пакети.
* 4. Якщо все пройде вдало, на виході отримаємо rpm-пакет нашої програми, він буде лежати в '' / usr / src / rpm / RPMS / архітектура_процессора_под_которую_собірался_пакет ''. Переходимо в цю директорію і звідти робимо:
rpm -ivh імя_программи.rpm

Все, програма встановлена.

Stow
Stow - це програма управління пакетами, яка тримає їх на "окремих поличках" (наприклад / usr / local / stow / emacs але '' / usr / local / stow / perl '') і в той же час "вдаючи", що вони встановлені в одному і тому ж місці (/usr/local).Почітать мануал по Stow можна тут.
Stow - це скрипт на Перл, який не буде запинатися, якщо у вас встановлений Perl 5.005 і вище. Його треба встановити перед установкою самої Stow.
Приклад використання Stow.
Припустимо, нам потрібно встановити 'abc-1.4', і у нас є 'abc-1.4.tar.gz', і його потрібно встановити в / usr / local / bin. після розпакування
tar -zxvf abc-1.4.tar.gz

переходимо в створений каталог 'abc-1.4'
cd abc-1.4

Спочатку нам потрібно встановити додаток в каталог stow. Нехай це буде / usr / local / stow.
Зробимо рутинні кроки по установці:
[Root @ linuxbox abc-1.4] # ./configure --prefix = / usr / local / stow / abc-1.4
[Root @ linuxbox abc-1.4] # make
[Root @ linuxbox abc-1.4] # make install

Далі, нам потрібно "покласти на поличку" додаток, і створити симв. Посилання всередині цільового каталогу, тобто '' / Usr / local / bin '', за допомогою stow. Ці операції можна проводити з-під користувача.
[UserX @ linuxbox abc-1.4] $ cd / usr / local / stow /
[UserX @ linuxbox stow] $ stow -t / usr / local / bin abc-1.4

Додаток 'abc-1.4' тепер розташувалося в своєму каталозі, abc-1.4, всередині каталогу stow, а
відповідні йому посилання - в цільовому каталозі, /usr/local/bin.Еслі нам знадобиться перекофігуріровать або апгрейдити додаток 'abc-1.4', ми можемо просто зробити відповідні зміни в його власному каталозі, а після цього знову "покласти на поличку", оновивши символьне посилання:
[UserX @ linuxbox stow] # $ stow -R abc-1.4

Щоб видалити програму, нам потрібно буде просто "прибрати з полички" 'abc-1.4':
[UserX @ linuxbox stow] # $ stow -D abc-1.4

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

Схожі статті