Як керувати програмним забезпеченням, встановленим з джерела?


14

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

Більш конкретно:

  1. Що ми можемо зробити, щоб забезпечити просту та чисту видалення (включаючи ті залежності, які встановлені безпосередньо перед програмним забезпеченням, встановленим з джерела)?

  2. Що ми можемо зробити для легкої та чистої оновлення того самого програмного забезпечення, яке, ймовірно, буде встановлено знову з джерела?

  3. Що ми можемо зробити, щоб мінімізувати потенційний конфлікт, якщо є пакет за замовчуванням (встановлений за допомогою apt-get), а також (новіша) версія пакета (встановлена ​​з джерела)?

Відповіді:


8

Використання checkinstall make installстворить тимчасовий пакет та встановить його. Це означає, що він записується в менеджер пакунків і може бути видалений.


7

Найкраще зробити, щоб зробити пакети Debian новіших версій самостійно. dpkgа aptінструменти виконують усі три речі, які ви згадуєте, і призначені для цієї мети. Використовуйте їх замість винаходити колесо. Існує безліч путівників по упаковці. Якщо програмне забезпечення вже є у сховищах, ви, ймовірно, можете отримати вихідний пакет ( apt-get src), який ви можете використовувати для вивчення та запуску власного пакету.

Ця відповідь на /ubuntu//a/485230/158442 може бути корисною як загальна настанова.

Хоча checkinstallце чудово для швидкого та брудного рішення, довгостроково слід використовувати належну упаковку.


дякую за пропозиції Коли ви сказали, що "програмне забезпечення вже є у сховищах", я вважаю, що ви маєте на увазі офіційні сховища, які підтримує Ubuntu. Якщо так, то у багатьох випадках ці сховища не надають новіших версій, особливо у старих версіях Ubuntu. Тож, apt-get srcмабуть, не може допомогти в таких випадках.
skyork

@skyork, можливо, цього не роблять. Але ви можете використовувати пакети старих версій для вивчення. Можливо, буде налаштовано певні пакунки, деякі сценарії технічного обслуговування. Немає причини, чому ви повинні ігнорувати все це і починати з нуля. Виявлення колеса, здається, є темою тут.
муру

4

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

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

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

  1. Чисте видалення

    • Я б запропонував створити rem_dep.shсценарій, який би виглядав приблизно так.

      #! /bin/bash
      sudo apt-get remove dep1 dep2 ... depn
      

      де dep1, dep2, depnзалежність.

  2. Чисте та просте оновлення

    • якщо ви отримуєте вихідний код з автоматизованої системи контролю версій , як gitабо bazaarабо якщо посилання передбачувані ви можете створити скрипт , який буде

      #1 make a backup of earlier version
      #2 get new source
      #3 configure, build/make the source
      #5 if make went correctly, remove earlier version.
      #6 make install new version, update dependencies if required.
      
    • В інших випадках теж можна створювати такі сценарії з певною мірою ручною роботою.

  3. Управління конфліктами

    • Найкращим способом є використання --prefixпараметра при встановленні програмного забезпечення та залежностей.
    • Інша важлива річ - постійно оновлювати вашу систему, щоб мінімізувати конфлікти.

ПРИМІТКА. Якщо ви виявите, що ви збираєте більше програмного забезпечення, ніж слід (встановіть max_limitсобі, наприклад, 5 або 10 або 100), краще залишити Ubuntu і перейти до Arch Linux.


3

Побудувати залежності:

  • AFAIK їх слід записувати вручну. Ви можете створити файл типу README для збереження списку встановлених вручну залежностей.

  • Якщо це програмне забезпечення вже має вбудований бінарний файл у сховищах Ubuntu або PPA. Відстеження залежностей під час встановлення має бути простішим:

    sudo apt-get build-dep target_package
    

Очистити видалення:

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

Чиста ізоляція оновлень та встановлених файлів:

Встановіть їх конкретно --prefix(бажано --prefix=/opt/software_name-version/).

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

Більш складний або найкращий спосіб, як @muru відповісти, Створити пакет Debian (Для пакетів, доступних у сховищах Ubuntu / PPA)

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