Створення сховища ubuntu

Велика частина оновлень сховища - зміни в тестованому дистрибутиві (зараз це 13.10).

Існує кілька способів створення дзеркала сховища. Нижче розглянуті rsync і debmirror. Незважаючи на гадану простоту, віддзеркалення rsync'ом менш керовано, ніж debmirror, який ще й має всі переваги rsync'а.

За допомогою rsync можна створити повне дзеркало репозиторію Ubuntu.

Дотримуючись офіційним рекомендаціям [6]. щоб користувачі мали менше шансів отримати помилку "file not found", необхідно на початку оновити пакети, потім інформацію про них, і тільки після цього видалити застарілі пакети ( "Two Staging mirroring").

Для постійного застосування рекомендується наступний скрипт:

  • При ручному запуску, можна додати до кожної команди --verbose --progress - це дасть більш інформативний висновок в ході копіювання.
  • У разі використання --progress. може пройти багато часу перед першим висновком на екран. Це нормально для дзеркало такого розміру. (Затримка настільки велика, що дочекатися вдалося тільки при синхронізації окремих директорій)
  • Використання --compress не повинно позначитися на процесі копіювання файлів, але значно прискорює процес початкової передачі списку файлів при використанні --progress. який займає багато часу.
  • Якщо додати до кожної команди рядок, зазначену нижче, то будуть скопійовані тільки пакети для i386, amd64 і вихідні коди:

На сторінці [7] дан скрипт, який перезапускає rsync в разі збою, і після завершення копіювання висилає лист зі статистикою. Об'єднаймо його зі скриптом вища ( "Two stage rsync"):

Створіть каталог / var / log / mirror, і виставте відповідні права на нього, щоб скрипт міг писати в нього лог. Не забудьте поміняти "/ path / to / your / mirror /" і шлях до інтерпретатора bash в першому рядку скрипта (шлях у вашій системі можна дізнатися командою whereis bash).

Натисніть на слово праворуч, щоб розгорнути

Якщо не потрібно піднімати все дзеркало, можна скористатися утилітою debmirror, яка дозволяє вибрати дистрибутиви, архітектури та секції. Являє собою скрипт, написаний на perl'е.

Debmirror'у можна вказати не завантажувати вихідні коди, що заощадить місце. А якщо не закачувати пакети для для testing, то сильно зменшиться обсяг змін в сховищі.

Debmirror може працювати через ftp, http, hftp або rsync. У разі, якщо в якості методу копіювання вибрати rsync, debmirror створює йому списки по 300-400 файлів (інформацію бере з індексних файлів), і rsync не витрачає час на створення списку файлів, що знаходяться на віддаленій стороні.

Debmirror розбиває роботу на три етапи:

  1. Завантажує індексні файли Packages.gz (або .bz2) і Sources.gz (або .bz2);
  2. Видаляє невідомі файли (опція --nocleanup дозволяє пропустити цей крок);
  3. Скануються файли Packages і Sources для побудови повного списку файлів, на які вони посилаються. Також до списку додаються деякі інші файли. Після debmirror перевіряє наявність кожного файлу в локальному дзеркалі і його відповідність розміру (або опціонально md5sum). Відсутні файли завантажуються.

Список секцій (--dist =) можна подивитися на вищому дзеркалі, в папці "ubuntu / dists /".

[Ред] Проблема bz2 gz

Патчим debmirror згідно інструкції [8]. після чого можна запускати debmirror з опцією --nopkgbz2.