Библиотека сайта rus-linux.net
Создание локального репозитория в Ubuntu 13.04 Server
Оригинал: Create a Local Repository on Ubuntu 13.04 Server
Автор: Senthilkumar
Дата публикации: 30 мая 2013 года
Перевод: А. Кривошей
Дата перевода: июнь 2013 г.
Если вы часто устанавливаете программы или обновления на большом количестве машин в локальной сети, эффективным способом облегчить себе жизнь будет создание локального репозитория Ubuntu, так как все требуемые пакеты будут скачиваться по быстрому соединению с локального сервера, поэтому вы уменьшите внешний траффик и сократите время, требуемое на установку.
В этом руководстве я покажу вам два способа установки локального репозитория в Ubuntu 13.04 server. Если вы используете внешний жесткий диск, то у вас будет переносной репозиторий, которым вы сможете пользоваться не только в своей сети.
Способ 1: APT-Mirror
В данном случае мы собираемся скачать все пакеты из публичного репозитория (Ubuntu main server) и сохранить их на нашем локальном жестком диске.
Сначала установите веб-сервер Apache. Он необходим, чтобы раздавать пакеты по сети:
$ sudo apt-get install apache2
Теперь установите APT-Mirror:
$ sudo apt-get install apt-mirror
Вам понадобится по крайней мере 50 Гб (может быть больше) дискового пространства. Для примера давайте создадим директорию "/myrepo". Мы будем сохранять все пакеты в этой директории:
$ sudo mkdir /myrepo
Теперь откройте файл /etc/apt/mirror.list и отредактируйте его, как показано ниже. Правки выделены красным цветом:
$ sudo vi /etc/apt/mirror.list ############# config ################## # ## Uncomment and Set the path of your repository folder ## set base_path /myrepo # # set mirror_path $base_path/mirror # set skel_path $base_path/skel # set var_path $base_path/var # set cleanscript $var_path/clean.sh # set defaultarch <running host architecture> # set postmirror_script $var_path/postmirror.sh # set run_postmirror 0 ## The no of download threads ## set nthreads 20 set _tilde 0 # ############# end config ############## deb http://archive.ubuntu.com/ubuntu raring main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu raring-security main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu raring-updates main restricted universe multiverse [...]
В приведенном выше конфигурационном файле вы можете добавить любые источники приложений для Ubuntu. Я использовал обычный список из 13.04. Отредактируйте его в соответствии со своими потребностями.
Если вы используете как 32-битную, так и 64-битную архитектуры, это необходимо отразить в строках с описанием репозиториев в конфигурационном файле. То есть, для 32-битной архитектуры строки должны начинаться с deb-i386, а для 64-битной - deb-amd64. Теперь сохраните конфигурационный файл и начните заполнение своего репозитория с помощью следующей команды:
$ sudo apt-mirror [sudo] password for sk: Downloading 2028 index files using 20 threads... Begin time: Wed May 29 23:23:09 2013 [20]...
Сечас все пакеты из публичных репозиториев сохранены в вашем локальном репозитории.
В зависимости от скорости вашего подключения процесс может занять часы или даже дни. Что, если это будет слишком долго? Вы можете прервать процесс в любое время и продолжить закачку, когда будет такая возможность.
Нужно ли запускать эту команду каждый день, чтобы получать новые программы/обновления? Нет, проще добавить этот процесс в планировщик, чтобы система автоматически ежедневно запускала команду apt-mirror и поддерживала ваш репозиторий в актуальном состоянии. Откройте файл /etc/cron.d/apt-mirror и раскомментируйте следующую строку:
$ sudo vi /etc/cron.d/apt-mirror
#
# Regular cron jobs for the apt-mirror package
#
## Uncomment ##
0 4 * * * apt-mirror /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log
Эта задача для cron запускается каждый день в 4 часа утра и скачивает пакеты.
Как уже отмечалось выше, все пакеты сохраняются в директории "/myrepo" на локальном сервере. Проверьте содержимое этой директории:
$ ls /myrepo/ mirror skel var
Содержимое должно быть доступно для наших клиентов по протоколу http. Просто создайте символическую ссылку на этот каталог:
$ cd /myrepo/ sk@server:/myrepo$ sudo ln -s /myrepo/mirror/us.archive.ubuntu.com/ubuntu/ ubuntu
Настройка клиента
На стороне клиента все настраивается достаточно просто. Просто откройте файл /etc/apt/sources.list на клиентской машине и добавьте путь к своему локальному репозиторию:
$ $ sudo vi /etc/apt/sources.list [...] deb http://192.168.1.200/ubuntu raring universe deb http://192.168.1.200/ubuntu raring main restricted deb http://192.168.1.200/ubuntu raring-updates main restricted [...]
Это все.
Способ 2: APT-Cacher
APT-Cacher отличается от APT-Mirror. Он не делает полного зеркала репозитория, а просто сохраняет все запрашиваемые клиентами сети пакеты и делает их доступными для всех клиентов.
Сначала установите веб-сервер Apache. Он необходим, чтобы раздавать пакеты по сети:
$ sudo apt-get install apache2
Теперь установите APT-Cacher.
$ sudo apt-get install apt-cacher
Выберите автономную работу демона и кликните OK.
После окончания установки откройте файл /etc/default/apt-cacher и задайте значение autostart=1, если оно было до этого равно 0:
$ sudo vi /etc/default/apt-cacher
# apt-cacher daemon startup configuration file
# Set to 1 to run apt-cacher as a standalone daemon, set to 0 if you are going
# to run apt-cacher from /etc/inetd or in CGI mode (deprecated). Alternatively,
# invoking "dpkg-reconfigure apt-cacher" should do the work for you.
#
AUTOSTART=1
# extra settings to override the ones in apt-cacher.conf
# EXTRAOPT=" daemon_port=3142 limit=30 "
~
Вы также можете разрешить или запретить хостам доступ к кэшу (пакетам). Чтобы сделать это, откройте файл /etc/apt-cacher/apt-cacher.conf. Раскомментируйте и отредактируйте значения allowed_hosts для соответствия индивидуальным хостам. После внесения изменений перезапустите сервис:
$ sudo vi /etc/apt-cacher/apt-cacher.conf [...] ## Uncomment and set the IP range ## allowed_hosts = 192.168.1.20 - 192.168.1.30 #denied_hosts = [...]
Теперь создайте файл с названием /etc/apt/apt.conf.d/90-apt-proxy.conf и добавьте в него следующую строку:
$ vi /etc/apt/apt.conf.d/90-apt-proxy.conf Acquire::http::Proxy "http://192.168.1.200:3142";
Замените IP-адрес на свой.
Это все.
Заключение
Выберите ли вы первый, или второй способ, оба они позволят вам существенно сэкономить интернет-траффик. Кроме того, оба способа просты в настройке и поддержке.