|
|||||||
Создание локального репозитория Ubuntu 10.04
Время создания: 06.10.2010 18:02
Текстовые метки: linux, ubuntu, репозитарий
Раздел: Компьютер - Linux - Дистрибутив Ubuntu
Запись: xintrea/mytetra_syncro/master/base/0000001621/text.html на raw.github.com
|
|||||||
|
|||||||
Создание локального репозитория Ubuntu 10.04 Постепенный перевод предприятия на GNU/Linux порождает необходимость соответствующих изменений в инфраструктуре. Сегодня мы решаем проблему глобального обновления клиентских машин путем создания локального репозитория. Процесс изначально документировался как памятка на будущее, потому заранее прошу прощенья за возможные несуразности в тексте. Итак. Для начала следует определиться, посредством чего лучше сделать это. Интернеты выделяют двух фаворитов rsync и debmirror. Выбрал последний, ввиду его большей гибкости. 1. Получение ключей Для создания зеркала репозитория необходимо получить ключ «Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>». Для этого в терминале от суперюзера вводим: gpg --no-default-keyring --keyring trustedkeys.gpg --recv-keys 437D05B5 2. Подготовка пространства Создаем папку для репозитория: sudo mkdir /path/to/repository Важно! Потрудитесь проследить за наличием свободного места в указанном пути. Даже две архитектуры i386 и amd64 займут приличное его количество. 3. Получение пакетов Зеркалирование проходит в три этапа:
#!/bin/sh #Это конфигурация нашего репозитория. В зависимости от параметров, указанных #здесь, мы получим нужное нам его содержимое. #Опция cleanup. Включена по умолчанию. После закачки пакетов удаляет ранние #версии. Для отключения опции необходим параметр --nocleanup clean=--nocleanup #Опция source. Закачивает исходные коды пакетов. Если вы не пользуетесь #исходными кодами для изучения и модификации приложений ( что свойственно для #бинарных дистрибутивов), смело ставьте опцию --no-source src=--source #Host. Имя сервера, откуда мы берем пакеты. servername=mirror.yandex.ru #Root. Корневая директория на выбранном нами сервере. rdir=/ubuntu #Имя релиза Ubuntu. Настройки для 10.04 версии. release=lucid,lucid-backports,lucid-proposed,lucid-security,lucid-updates #Секции. section=main,restricted,universe,multiverse #Протокол синхронизации. Debmirror поддерживает следующие способы: http, #hftp, ftp, rsync sync_protocol=rsync #Архитектура. Если используются исключительно 32 или 64х битные системы. #Одну из архитектур можно убрать. Также если используются иные архитектуры, #их следует добавить. arch=i386,amd64 #Местоположение репозитория. Указывайте локальную папку, созданную. в п 2. path=/path/to/repository debmirror --progress --verbose $clean $src --md5sums --host=$servername --root=$rdir \ --dist=$release -s=$section --method=$sync_protocol -a=$arch $path Теперь поместим его в директорию /usr/local/bin и сделаем исполняемым. chmod +x repo_update.sh sudo cp repo_update.sh /usr/local/bin/ Далее запустим получившийся скрипт и дождемся завершения процесса. Процесс достаточно долгий. Время выполнения сильно зависит от ширины вашего интернет-канала. sudo /usr/local/bin/repo_update.sh Внимание! Размер скачиваемого переваливает за десятки гигабайт, а казеный интернет редко бывает безлимитным. Более того, debmirror чувствителен к стабильности соединения, 120 секунд простоя и все придется начинать сначала. 4. Настройка web-сервера Дабы не совершать лишних плясок с бубном выберем протокол http, как традиционный метод предоставления доступа к репозиторию. Выбор web-сервера остается за Вами. Из фаворитов ngnix, apache и lighttpd, выбрал последний ввиду отсутствия опыта работы с оным (приятное с полезным, да). Итак. Установка сервера: sudo apt-get install lighttpd Здесь все просто. Если Вы не планируете использовать в качестве www директории отличную от умолчания, то сервер в настройке не нуждается. Все, что сам нужно сделать, это создать символьную ссылку в директории /var/www ln -s /path/to/repository /var/www/ubuntu Проверим доступность репозитория из браузера: http://<ip_address_repository>/ubuntu/ 5. Настройка клиентов Здесь мы применим маленькую хитрость. Дабы не вносить изменений в /etc/apt/sources.list (мало ли что случится). Добавим в файл /etc/hosts пару строчек. <ip_address_repository> ru.archive.ubuntu.com <ip_address_repository> security.ubuntu.com Примечание. При наличии DNS сервера можно все это прописать в нем, а на сервере репозитория прописать истинные адреса вышеупомянутых имен. 6. Автоматизация А теперь самое сладкое. Заставим все это крутиться самостоятельно. 6.1 Серверная часть В пункте 3 мы создавали скрипт, при помощи которого получали пакеты. Настроим его автозапуск средствами демона cron. sudo crontab -e В который добавим заветную строчку: 0 0 * * * /usr/local/bin/repo_update.sh Теперь ежедневно в 0:00 наш скрипт будет делать за нас всю рутинную работу. 6.2 Клиентская часть На клиентах создадим скрипт system_upd.sh в директории /usr/local/bin следующего содержания: #!/bin/sh apt-get -y update && apt-get -y upgrade && apt-get -y clean Не забудем сделать его исполняемым. sudo chmod +x /usr/local/bin/system_upd.sh После чего открываем cron: sudo crontab -e И добавляем строчку: 40 17 * * * /usr/local/bin/system_upd.sh Теперь каждый день в 17:40 система будет опрашивать наш репозиторий на предмет наличия обновлений и обновляться, если таковые будут найдены. Внимание! При работе с crontab следует не забывать, что после строчек с заданиями обязательно должна быть пустая строка, которая обозначается знаком '#'. p.s: Прошу прощения за отсутствие прилагаемых изображений, но в данном случае считаю их наличие просто неуместным. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|