Як швидко створити локальне сховане сховище для випадкових пакетів за допомогою Linux-дистрибутива на основі Debian?


20

Деякі ситуації вимагають встановлення локального пакету вручну за допомогою dpkg -i <packagename>. Іноді може бути корисним використання функціональності aptцього пакету, тому питання:

Як швидко створити локальне сховище для випадкових пакетів, використовуючи Linux-дистрибутив на основі Debian - наприклад, Xubuntu 13.04 / Ubuntu?


Просто FYI. Звичайна річ повинна слідувати dpkg -i <packagename>з apt-get -f installтягнути в необхідних пакетів. Крім того, звичайна річ для створення сприятливих репостів для Debian - це репропро.
Faheem Mitha

Я вважаю репресію корисною
"SO- перестань бути злим"

Дякую за ваші коментарі. @Faheem Mitha: Ви можете, будь ласка, коротко розширити, чому потрібно буде працювати aptз --fix-brokenвстановленням локального пакету dpkg -i? Хіба дпкг не подбав би про це? Я прочитав, що це може знадобитися під час першого запуску apt? @ FM & Gilles: Про репресу . Здається корисним, якби я міг змусити його працювати (не впевнений у структурі dir, вмісті 3-х файлів або парам під час виконання). Спробую ще раз, оновіть або опублікуйте повне запитання.

1
@ iluminÉ: dpkgне вирішує залежності, але aptробить. dpkgбуде попереджати про порушені залежності, але низький рівень, тому не буде намагатися їх виправити. dpkg -i *.debЗ подальшим apt-get -f installє стандартною процедурою. Існує помилка у списку побажань, щоб вона aptсама обробляла справу локальної установки пакету, і навіть є патч, я думаю, але він ще не був реалізований. Дивіться, що apt-get install також може встановлювати локальні файли пакетів , спочатку подані у 1999 році.
Faheem Mitha

@ iluminÉ Виявлення інтересу до цієї функції не зашкодить. Я думаю, що чим більше людей, які (ввічливо) виявляють інтерес, тим більше шансів на те, що він буде реалізований. Зауважте також, що gdebi - це альтернатива, як зазначено у звіті про помилки. Це є причиною того, що воно не було здійснено, я думаю. Хоча наявність такої основної функціональної частини доречно, було б краще, ніж мати цю функціональність як частину іншого пакету.
Faheem Mitha

Відповіді:


29

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

Спочатку складіть каталог для розміщення пакунків:

mkdir <packagedir>

Потім перемістіть туди свої пакунки .deb. Виконайте цю команду з каталогу вище того, що ми створили (переконайтеся, що дозволи дозволяють це!):

dpkg-scanpackages packagedir | gzip > packagedir/Packages.gz

Тепер створіть файл із розширенням .listу /etc/apt/sources.list.d/вмісті:

deb [trusted=yes] file:///path_to_dir_above_packagedir packagedir/

та оновити базу даних apt:

apt-get update

У цей момент пакети в нашому локальному сховищі можна встановити, як і будь-який інший пакет, використовуючи apt-get install <packagename>. Коли нові пакети додаються до локального сховища, dpkg-scanpackagesперед оновленням файлу Packages.gz слід знову видати передбачувану команду та aptоновити до того, як нові пакети стануть доступними. Сподіваємось, це може бути корисним для тестування .


6
З новим apt 1.1 потрібен [trusted=yes]між URI debі file:///URI (див. sources.list(5)Сторінку man), інакше apt-get updateвиходить з ладу через відсутність підпису.
vinc17

2

Якщо ви хочете створити репо з повною структурою, яка вам потрібна для таких інструментів, як debootstrap, найпростіший спосіб, який я знайшов, це:

  1. Створіть каталог репозиторію.

    # mkdir -p /opt/debian
    
  2. Створіть підкаталог конф.

    # mkdir /opt/debian/conf
    
  3. Створіть файл / opt / debian / conf / дистрибуції із таким вмістом (відрегулюйте, як це підходить для використовуваного вами дистрибутива):

    Label: Local APT repository
    Codename: jessie
    Architectures: amd64
    Components: main
    Description: Local APT repository for debootstrap
    
  4. Імпортуйте ваш пакунок з reprepro.

    # reprepro -b /opt/debian includedeb jessie /path/to/package.db
    
  5. Імпортуйте купу пакетів з оболонкою для циклу, наприклад, все з кешу APT:

    # cd /var/cache/apt/archives
    # for DEB in *.deb; do reprepro -b /opt/debian includedeb jessie $DEB; done
    

Це створить безпідписаний архів. Його можна використовувати з debootstrap з опцією --no-check-gpg.

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