<
  • Главная
Статьи

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

  1. Матеріал з Xgu.ru Структура сховища Ubuntu в основному аналогічна Debian'у, опис російською мовою...
  2. [ правити ] Список серверів
  3. [ правити ] Копіювання сховища
  4. [ правити ] Копіювання за допомогою rsync
  5. [ правити ] Копіювання за допомогою debmirror
  6. [ правити ] Проблема bz2 gz
  7. [ правити ] Цифрові підписи
  8. [ правити ] Надання доступу до сховища
  9. [ правити ] http
  10. [ правити ] Apache2
  11. [ правити ] lighttpd
  12. [ правити ] ftp
  13. [ правити ] BIND
  14. [ правити ] Дивись також
  15. [ правити ] Неофіційні джерела

Матеріал з Xgu.ru

Структура сховища Ubuntu в основному аналогічна Debian'у, опис російською мовою можна знайти тут [1] .

Якщо ви хочете зробити невеликий репозиторій з тих файлів, які у вас вже є - вам сюди [2] (Команда dpkg-scanpackages). Якщо ви хочете "розкидати" файли по ієрархічної структурі pool'а, можна скористатися утилітою reprepro [3] .

Debian використовує « проштовхувати Віддзеркалення », Ubuntu також використовує цю технологію [4] .

[ правити ] Типи репозиторіїв

Є два типи репозиторіїв [5] :

Повні архіви займають близько 320 Гб і поступово збільшуються. Оновлюються мінімум один раз в 24 години, але не частіше ніж раз на 4 години.

Релізи Ubuntu займають близько 40 Гб і залишаються відносно незмінними в розмірах. Зазвичай оновлюються кілька разів на рік з перевіркою кожні 24 години.

[ правити ] Список серверів

Свіжий список можна взяти тут https://launchpad.net/ubuntu/+archivemirrors

4.10 Warty Warthog 5.04 Hoary Hedgehog 5.10 Breezy Badger 6.06 LTS Dapper Drake 6.10 Edgy Eft 7.04 Feisty Fawn 7.10 Gutsy Gibbon 8.04 LTS Hardy Heron 8.10 Intrepid Ibex 9.04 Jaunty Jackalope 9.10 Karmic Koala 10.04 LTS Lucid Lynx 10.10 Maverick Meerkat 11.04 Natty Narwhal 11.10 Oneiric Ocelot 12.04 LTS Precise Pangolin 12.10 Quantal Quetzal 13.04 Raring Ringtail 13.10 Saucy Salamander 14.04 Trusty Tahr

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

[ правити ] Копіювання сховища

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

[ правити ] Копіювання за допомогою rsync

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

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

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

RSYNCSOURCE = rsync: //archive.ubuntu.com/ubuntu BASEDIR = / path / to / your / mirror / rsync --recursive --times --links --hard-links \ --stats \ --exclude "Packages * "--exclude" Sources * "\ --exclude" Release * "\ $ {RSYNCSOURCE} $ {BASEDIR} rsync --recursive --times --links --hard-links \ --stats --delete --delete -after \ --exclude "project / trace / $ {HOSTNAME}" \ $ {RSYNCSOURCE} $ {BASEDIR}

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

--exclude "* _alpha.deb" --exclude "* _arm.deb" --exclude "* _mips.deb" \ --exclude "* _mipsel.deb" --exclude "* _s390.deb" \ --exclude "* _ia64.deb" --exclude "* _powerpc.deb" --exclude "* _lpia.deb" \ --exclude "* _armel.deb" --exclude "* _sparc.deb" --exclude "* _hppa. deb "

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

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

[ правити ] Копіювання за допомогою debmirror

Якщо не потрібно піднімати все дзеркало, можна скористатися утилітою 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 /".

Приклад для релізу 10,04, архітектури i386 та amd64 і вихідних кодів. Копіювання за допомогою rsync. Шлях "/ mirror_ubuntu" поміняйте на потрібний:

debmirror --progress --verbose --nocleanup --source \ --md5sums --host = mirror.yandex.ru --root =: ubuntu \ --dist = lucid, lucid-backports, lucid-proposed, lucid-security , lucid-updates \ --section = main, restricted, universe, multiverse \ --method = rsync --arch = i386, amd64 / mirror_ubuntu

[ правити ] Проблема bz2 gz

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

[ правити ] Цифрові підписи

Якщо створювати в Ubuntu копію іншими пакунками Debian, то debmirror буде лаятися на відсутність ключів.

gpgv: Підпис створена Сбт 30 Січ 2010 4:18:35 YEKT ключем RSA з ID 55BE302B gpgv: Не можу перевірити підпис: відкритий ключ не знайдений gpgv: Підпис створена Сбт 30 Січ 2010 4:25:01 YEKT ключем DSA з ID F42584E6 gpgv : Не можу перевірити підпис: відкритий ключ не знайдений gpgv: підпис створена Сбт 30 Січ 2010 4:18:35 YEKT ключем RSA з ID 55BE302B gpgv: Не можу перевірити підпис: відкритий ключ не знайдений gpgv: підпис створена Сбт 30 Січ 2010 04: 25:01 YEKT ключем DSA з ID F42584E6 gpgv: Не можу перевірити підпис: відкритий ключ не знайдений gpgv: підпис створена Пон 03 Май 2010 3:27:09 YEKST ключем RSA з ID 55BE302B gpgv: Не можу перевірити підпис: відкритий ключ н е знайдений gpgv: Підпис створена Пон 03 Май 2010 3:27:09 YEKST ключем RSA з ID 55BE302B gpgv: Не можу перевірити підпис: відкритий ключ не знайдений gpgv: Підпис створена Пон 03 Май 2010 3:26:25 YEKST ключем RSA з ID 55BE302B gpgv: Не можу перевірити підпис: відкритий ключ не знайдений gpgv: підпис створена Пон 03 Май 2010 3:26:25 YEKST ключем RSA з ID 55BE302B gpgv: Не можу перевірити підпис: відкритий ключ не знайдений

Ключі потрібно додати. Встановлюємо пакет debian-archive-keyring:

sudo apt-get install debian-archive-keyring

Після цього у нас з'явиться GnuPG сховище ключів Debian в / usr / share / keyrings /. Імпортуємо їх від імені того ж користувача, від якого буде запущений debmirror (процес добре описаний в man debmirror):

gpg --keyring /usr/share/keyrings/debian-archive-keyring.gpg --export \ | gpg --no-default-keyring --keyring trustedkeys.gpg --import

Якщо ж debmirror запущений в тій операційній системі, де немає можливості встановити GnuPG сховище ключів Debian, можна їх додавати вручну по їх ID (також описано в man debmirror):

gpg --no-default-keyring --keyring trustedkeys.gpg \ --keyserver keyring.debian.org --recv-keys <key ID>

Оптимальним є приміщення в cron скрипта, регулярно перевіряє вміст файлу http://mirror.yandex.ru/ubuntu/project/trace/mirror.yandex.ru (Або того дзеркала, з якого ви будете копіювати) в якому знаходиться час і дата останньої синхронізації. Якщо вміст змінилося, то запустити синхронізацію.

[ правити ] Надання доступу до сховища

рекомендується [9] надати доступ до сховища по http, ftp і rsync.

[ правити ] http

Роздавати можна за допомогою Apache, nginx, lighttpd.

[ правити ] Apache2

Мінімальна конфігурація Apache2 для видачі файлів і формування списків файлів (за мотивами статті Захищаємо Apache 2. Крок за кроком ):

[ правити ] lighttpd

[ правити ] nginx

[ правити ] ftp

[ правити ] rsync

Якщо у вас своя мережа, в якій є DNS сервер, можна "схитрувати" і призначити на імена «* .archive.ubuntu.com» і "security.ubuntu.com" ip-адреса вашого сховища. Так як сервер діє тільки у вашій мережі, ці зміни отримають тільки ваші клієнти. При установці дистрибутива буде досить вказати країну "Росія", щоб Ubuntu виставила в якості сховища "ru.archive.ubuntu.com" який, завдяки "хитрощі", буде посилатися на ip-адреса вашого локального сховища. Адреси, на які звертається вже встановлена ​​система, можна подивитися у файлі /etc/apt/sources.list.

Можна аналогічно змінити зону для "ru.releases.ubuntu.com", якщо у вас є копія http://mirror.yandex.ru/ubuntu-releases з ISO-образами дисків.

[ правити ] BIND

У файл конфігурації named.conf прописуємо:

zone "archive.ubuntu.com" {type master; file "master / all_to_192.168.1.1.master"; allow-update { "none";}; zone "security.ubuntu.com" {type master; file "master / all_to_192.168.1.1.master"; allow-update { "none";}; };

Створюємо файли з зонами. Замість "admin.my.domain." підставте ваш e-mail, замінивши символ "@" на точку. Замість «192.168.1.1» підставте ip-адреса вашого сервера з репозиторієм. Такий файл, якщо вказати його для будь-якої зони, буде "повертати" користувачеві ip-адреса «192.168.1.1» на саму зону і будь-які піддомени.

Файл master / all_to_192.168.1.1.master:

$ TTL 86400; 1 day @ IN SOA ns admin.my.domain. (2009091701; Serial 10800; Refresh 3600; Retry 604800; Expire 3600; Minimum TTL) A 192.168.1.1 * A 192.168.1.1

застосовуємо налаштування командою

rndc reconfig

Для того, щоб бути в курсі офіційних новин, можна підписатися на розсилку [10] .

Можна збирати наступну статистику:

  • Завантаження каналу (upload, download);
  • Версії ОС (apt при закачуванні "підписується", наприклад: "Ubuntu APT-HTTP / 1.3 (0.7.20.2ubuntu6)" - це 9.04)
  • Кількість унікальних ip-адрес за добу

[ правити ] Дивись також

[ правити ] Офіційні рекомендації

[ правити ] Неофіційні джерела

[ правити ] Ліцензія на текст

Текст доступний на умовах ліцензії Creative Commons Attribution / Share-Alike Текст доступний на умовах ліцензії   Creative Commons Attribution / Share-Alike



Новости
  • Виртуальный хостинг

    Виртуальный хостинг. Возможности сервера распределяются в равной мере между всеми... 
    Читать полностью

  • Редизайн сайта

    Редизайн сайта – это полное либо частичное обновление дизайна существующего сайта.... 
    Читать полностью

  • Консалтинг, услуги контент-менеджера

    Сопровождение любых интернет ресурсов;- Знание HTML и CSS- Поиск и обновление контента;-... 
    Читать полностью

  • Трафик из соцсетей

    Сравнительно дешевый способ по сравнению с поисковым и контекстным видами раскрутки... 
    Читать полностью

  • Поисковая оптимизация

    Поисковая оптимизация (англ. search engine optimization, SEO) — поднятие позиций сайта в результатах... 
    Читать полностью