Howto репозиторій debian
Сховище Debian - це набір пакунків Debian, розміщених в спеціальному дереві каталогів, в яких також є кілька додаткових файлів з індексами і контрольними сумами пакетів. Якщо користувач додасть репозиторій в свій /etc/apt/sources.list файл, то він зможе легко переглядати і встановлювати пакунки з репозиторію, так як ніби пакети зберігаються в Debian.
Репозиторій може бути доступний постійно, а може і ні (наприклад компакт-диск), хоча перший випадок більш поширений.
Цей документ пояснює як працюють сховища Debian, як їх створювати, і як їх правильно додавати до вашого sources.list.
Зворотній зв'язок
Як працюють сховища
Репозиторій складається як мінімум однієї теки, що містить деякі DEB пакунки та два спеціальні файли: Packages.gz для бінарних та Sources.gz для пакунків.
Якщо ваше сховище правильно в sources.list (про це пізніше), то apt-get завантажить індекси Packages.gz для бінарних пакетів (ключове слово deb) і файл Sources.gz для пакунків (ключове слово deb-src) .
Packages.gz містить назву, версію, розмір, короткий і довгий описи і залежності для кожного пакета, плюс деяку додаткову інформацію, яка нам не цікава. Вся ця інформація Новомосковскется (і використовується) програмами керування пакунками Debian, наприклад dselect або aptitude.
Sources.gz містить назву, версію і залежності для збірки (пакети, які потрібні для збірки програми) кожного пакета (плюс деяку додаткову інформацію, яка нецікава для нас). Ця інформація використовується apt-get source і подібними програмами.
Крім цього може існувати необов'язковий файл Release. що містить інформацію про ваше сховище, яка використовується механізмом Фиксации. цікавою речі, але тут це розглянута не буде. Про фіксації ви можете прочитати в APT HOWTO.
Таким чином, ви налаштували ваше сховище, ви можете переглядати та встановлювати пакунки нарівні з іншими пакунками Debian; якщо ви оновлюєте пакунок, він оновиться коли користувач виконає apt-get upgrade; крім цього кожен користувач зможе легко переглянути короткий опис та іншу важливу інформацію про ваші пакунки.
Крім того, правильному налаштуванні сховища можуть запропонувати різні пакети для кожного підтримуваного дистрибутива і для кожної (в даний момент одинадцятої) архітектур; apt автоматично завантажуватиме саме для машини користувача, якому навіть не потрібно нічого знати про різні архітектури. Також ви можете групувати ваші пакунки, точно також як пакунки Debian поділені між main. non-free і contrib. Через це, особливо якщо ваше програмне забезпечення на Отже ви полюбите сховища пакунків.
Налаштування сховища
Існує два типи репозиторіїв: складні, де користувачу доведеться вказати лише базовий шлях до сховища, а й та бажані збірку (якщо є вибір, apt автоматично завантажить пакунки для необхідної архітектури), і прості, де користувачеві потрібно вказати тільки повний шлях (і apt не потрібно з'ясовувати чи підходять пакети в даному випадку). Перші є дещо складнішими в налаштуванні, але простіші у використанні, і їм потрібно користуватися завжди при складних і / або міжплатформенних сховищ; другого типу налаштовувати простіше, але їх використання обмежується малими або одноархітектурними сховищами.
Хоча це і не зовсім правильно, але я буду називати перші Автоматичні сховища. а другі Тривіальні сховища.
автоматичні сховища
Структура тек автоматичного сховища зі стандартними для Debian архітектурами та розділами виглядає так:
Приклад 1. Типове сховище Debian
Вільні пакети лежать в каталозі main; невільні в non-free. і вільні, які залежать від невільних в contrib. На даний момент в Debian підтримує 11 архітектур; я опустив більшість з них задля стислості не показані.
У кожному каталозі binary- * знаходиться файл Packages.gz і необов'язковий файл Release; в кожному каталозі source містить Sources.gz і необов'язковий файл Release. Помітьте, що пакунки не повинні знаходитись в тому ж каталозі, що й індексні файли, оскільки в індексних файлах вказуються шляхи для кожного пакету; фактично, вони можуть знаходитись в сховищі будь. Це робить можливим створення пулів.
Ви можете створювати багато збірок і розділів та називати їх як завгодно; то, що показано в прикладі просто використовується в Debian. Ви можете, приміром, створити збірки current і beta (замість стабільний (stable). Тестований (testing) і нестабільний (unstable)), і компоненти foo. bar. baz і qux (замість main. contrib і non-free).
Хоча ви і можете використовувати будь-які назви компонент, звичайно краще дотримуватися стандартних назв Debian, так як їх призначення вже зрозуміло користувачам Debian.
звичайні репозиторії
Звичайні сховища складаються з однієї кореневої теки та стількох підтек. Оскільки користувачам доведеться вказувати шлях до кореневого сховища та відносний шлях між кореневим і каталогом з індексним файлом, ви вільні робити все як завгодно (навіть покласти все в один кореневий каталог; відносним шляхом буде просто "/").
Приклад 2. Звичайний сховище з двома підтеками
Створення індексних файлів
dpkg-scanpackages створює файл Packages. а dpkg-scansources файл Sources.
Результат обох програм спрямовується в stdout (стандартний вихідний потік); таким чином, для стиснення файлів ви можете використовувати ланцюжок команд: dpkg-scanpackages аргументи | gzip -9c> Packages.gz.
Ці утиліти працюють схожим чином; вони обидві приймають два параметра (насправді є й інші, але вони тут не показані, і ви можете прочитати про них в сторінках керівництва); перший параметр каталог з пакетами, а другим файл override. Для простих сховищ файли override не потрібен, але, оскільки цей параметр є обов'язковим тому ми просто вказуємо / dev / null.
dpkg-scanpackages сканує .deb пакети; dpkg-scansources сканує .dsc файли. Потрібно поміщати файли .orig.gz. .diff.gz і .dsc разом. Файли .changes не.
Припустимо, ми маємо тривіальне сховище, в Приклад 2, «Звичайний сховище з двома підтеками». Щоб створити для нього два індексні файли наступним чином:
Якщо у вас складне сховище Приклад 1, "Типове сховище Debian». то вам буде написати деякі сценарії для автоматизації процесу.
Також, ви можете скористатися параметром pathprefix для спрощення синтаксису; Новомосковсктелю залишмо це, як вправу. (Це описано в її довідці).
Створення файлів Release
Якщо ви хочете надати користувачам вашого сховища можливість використовувати механізм Фиксации. вам потрібно включити файл Release до кожної теки з індексними файлами. (Ви можете дізнатись про фіксацію викладені в APT HOWTO).
Файли Release є простими і короткими файлами наступної форми:
Назва збірки Debian, до якої належать цьому каталозі (або для якого призначені), наприклад стабільний (stable). тестований (testing) або нестабільний (unstable).
Компонент, до якої належать каталозі, наприклад main. non-free. або contrib.
Будь-яка інформація про пакунки або ваше сховище. Дайте волю уяві.
Архітектура машин, для яких пакунків з цієї теки, наприклад i386. sparc або source.
Дуже важливо вказати правильні Archive та Architecture. так як вони використовуються для фіксації. Решта поля менш важливі.
створення пулів
У випадку автоматичних сховищ, розподіл пакунків по різноманітних теках дуже швидко до неприємностей. Це також тягне за собою марні витрати дискового простору та пропускної здатності мережі, так як багато пакунків (наприклад, документація) відносяться однаковими для різних архітектур.
В таких випадках можливим вирішенням проблеми є пул. Пул - це додатковий кореневої теки сховища, що містить всі пакети (двійкові для усіх архітектур, збірок та розділів все джерельні пакунки). У комбінуючи дії файлів override (які не розглядаються в даному документі) і за допомогою сценаріїв багатьох проблем вдається уникнути. Чудовим прикладом сховища з використанням пулу є сам сховище Debian.
Пули корисні тільки для великих сховищ; я поки ніколи не займався і не думаю, що це знадобиться в найближчому майбутньому, і тому я не пояснюю тут яким чином створювати. Якщо ви думаєте, що такий розділ необхідно додати, напишіть його і зв'яжіться зі мною.
Інструменти
Існують різні інструменти для автоматизації та спрощення створення архівів Debian; я склав список найвідоміших з них.
apt-ftparchive - використовується для переміщення набору пакунків Debian належної структури, яку мають офіційні сховища Debian. Дана програма є частиною пакета apt-utils.
apt-move - використовується для переміщення набору пакунків Debian в сховища належної структури, яку мають офіційні сховища Debian.
Використання сховищ
Використовувати сховища дуже просто, але це залежить від типу створеного сховища: двійкове чи вихідними текстами, автоматичне чи тривіальне.
Кожне сховище займає один рядок в sources.list; для двійкових сховищ використовуйте команду deb. а для сховища з вихідними текстами команда deb-src.
Кожна рядок повинен виглядати так:
Для автоматичних сховищ ви повинні вказати одну збірку і один або більше розділів; збірки не можна завершувати косою рискою.
Приклад 3. Два автоматичних сховища з мого sources.list
Дві показані рядки вказують на автоматичний бінарний і репозиторій з вихідними текстами мають корінь ftp://sunsite.cnlab-switch.ch/mirror/debian/. дистрибутив нестабільний (unstable) і компоненти main. contrib та non-free.
Якщо сховище не автоматичне, то distribution вказує відносний шлях до індексних файлів і повинно завершуватись косою риси, а компоненти вказуватися не повинні.
Приклад 4. Два звичайних сховища з мого sources.list
Перший рядок підключає бінарний репозиторій / home / aisotton / rep-exact / binary. що зберігається на моїй локальній машині; другий рядок підключає сховище з вихідними текстами / home / aisotton / rep-exact / source.