Форумы

GNU.SU - Записки нубо-линуксойда :: Форумы :: LinuxЫ :: Ubuntu
 
<< Предыдущая тема | Следующая тема >>
Создание локального репозитория Ubuntu 10.04
Модераторы: tastelinux, Frizze, andrey, Bender
Автор Добавил
tastelinux
Втр Окт 05 2010, 04:27
andreika

ID пользователя #1
Зарегистрирован: Птн Апр 30 2010, 12:25

Сообщений: 337
Постепенный перевод предприятия на GNU/Linux порождает необходимость соответствующих изменений в инфраструктуре. Сегодня мы решаем проблему глобального обновления клиентских машин путем создания локального репозитория. Процесс изначально документировался как памятка на будущее, потому заранее прошу прощенья за возможные несуразности в тексте. Итак.
Для начала следует определиться, посредством чего лучше сделать это. Интернеты выделяют двух фаворитов rsync и debmirror. Выбрал последний, ввиду его большей гибкости.

1. Получение ключей

Для создания зеркала репозитория необходимо получить ключ « Ubuntu Archive Automatic Signing Key ». Для этого в терминале от суперюзера вводим:
gpg --no-default-keyring --keyring trustedkeys.gpg --recv-keys 437D05B5


2. Подготовка пространства

Создаем папку для репозитория:
sudo mkdir /path/to/repository

Важно! Потрудитесь проследить за наличием свободного места в указанном пути. Даже две архитектуры i386 и amd64 займут его приличное количество.

3. Получение пакетов

Зеркалирование проходит в три этапа:

1. Загрузка индекстых файлов;
2. Удаление неизвестных файлов (отключается опцией --nocleanup ниже);
3. Построение списка по индексным архивам и проверка на наличие в локальном репозитории.Для реализации вышеперечисленного создадим файл repo_update.sh со следующим содержанием.


#!/bin/sh
#Это конфигурация нашего репозитория. В зависимости от параметров, указанных
#здесь, мы получим нужное нам его содержимое.

#Опция cleanup. Включена по умолчанию. После закачки пакетов удаляет ранние
#версии. Для отключения опции необходим параметр --nocleanup
clean=--nocleanup
#Опция source. Закачивает исходные коды пакетов. Если вы не пользуетесь
#исходными кодами для изучения и модификации приложений ( что свойственно для
#бинарных дистрибутивов), смело ставьте опцию --no-source
src=--source

#Host. Имя сервера, откуда мы берем пакеты.
servername=mirror.yandex.ru

#tastelinux. Корневая директория на выбранном нами сервере.
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 --tastelinux=$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 пару строчек.
ru.archive. ubuntu.com
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: Прошу прощения за отсутствие прилагаемых изображений, но в данном случае считаю их наличие просто неуместным.

Взято тут.
Наверх
Создание локального репозитория Ubuntu   create local ubuntu repository   own repository ubuntu   

 

Перейти:     Наверх

Транслировать сообщения этой темы: rss 0.92 Транслировать сообщения этой темы: rss 2.0 Транслировать сообщения этой темы: RDF
Powered by e107 Forum System