Встановлення з джерела. Як вирішити залежності, не руйнуючи менеджера пакунків


19

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

Багато необхідного мені наукового програмного забезпечення не поширюються як пакети. Я розумію, що "./configure" встановлює змінні компіляції і перевіряючи залежності "make" робить компіляція "sudo make install" ставить усі бібліотеки та біни на свої місця. Однак це ніколи не працює. Я рідко виходжу зі стадії a) "./configure", не входячи в пекло залежності, і якщо я це зробив, б) "sudo make install", ймовірно, загрожує моїм коробкою.

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

б) Я розумію, що "зробити встановлення" замінить деякі бібліотеки та змінить налаштування, не знаючи про це мого менеджера пакунків. Тому деякі програми не працюватимуть, інші не можуть бути оновлені. Отже, якщо я не використовую "make install", а просто зберігаю скомпільований двійковий файл у своєму каталозі користувачів із символічним посиланням, доданим до PATH, я буду в чистоті?

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


3
Ви не кажете, який дистрибутив використовуєте, це був би цікавий фрагмент інформації. Якщо ви використовуєте дериват Debian, ви можете використовувати apt-get build-dep <package>для автоматичної установки необхідних залежностей.
Марко

Я використовую CentOS 6 (щоб мати те, що використовує супергуру в нашій лабораторії), але я використовував Ubuntu.
Ленц

Ласкаво просимо до життя пакувального обладнання. Зробити все це відстеження залежності не особливо важко, але це зухвало.
Жил "ТАК - перестань бути злим"

Див. Диспетчери пакетів, що не входять до кореня, та, можливо, інші питання з тегом " не-root", що стосуються встановлення програмного забезпечення та управління пакетами.
Жил "ТАК - перестань бути злим"

Відповіді:


16

Більшість пакетів матимуть <package>-dev(на базі Debian) або <package>-devel(на основі Red Hat), які будуть бібліотеками, необхідними для з'єднання для побудови.

Так, наприклад, якщо джерело каже, що це вимагає libxml, в системах на базі Debian ви знайдете libxml2та libxml2-dev(використовуйте apt-cache search <dependancy>для їх пошуку).

Вам потрібно libxml2-devбуде створити його та libxml2запустити його.

./configureКрок зазвичай підтримує прапори люблять --with-libxml=/usr/lib/вказувати його на правильні бібліотеки ( ./configure --helpповинні перерахувати всі варіанти). Зазвичай він також підтримує зміну місця установки за допомогою --prefix=$HOME/sw. Використання префіксу поза тим, що контролює ваш менеджер пакунків, є найкращим способом уникнути конфліктів із встановленим програмним забезпеченням менеджера пакунків.

Про Debian і похідних з використанням --prefixв /usr/local/або /opt/local/повинні бути безпечними.

Якщо потрібна вам бібліотека (або версія) недоступна у менеджері пакунків, просто завантажте джерело та компілюйте його, використовуючи подібні параметри. Найголовніше використовувати за --prefixмежами свого менеджера пакунків і при компілюванні програмного забезпечення, яке ви дійсно хочете використовувати --with-<library>=/<path/to/installed/library>.


5

Є інструмент, auto-aptякий можна використовувати для цього.

Від людини автопридатність :

auto-apt - програма, яка перевіряє доступ до файлів програм, що працюють в автоматичних умовах. Якщо програма отримає доступ до файлу невстановленого пакету, програма auto-apt встановить пакет, що містить файл, використовуючи apt-get.

Він використовується наступним чином:

auto-apt run ./configure

Інший спосіб - використання apt-get build-dep <package>в дистрибутивах на базі Debian.


apt-get build-dep <package>працював на мене. Перешкоджало ./configureзнову і знову засвоювати ще один необхідний пакет!
HeatfanJohn

2

Для розподілів на основі RPM, ви можете спробувати свої сили в створенні власних пакетів (це не що важко ...).

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

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