Наши партнеры

UnixForum





Библиотека сайта 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.

Настройка APT-Cacher

После окончания установки откройте файл /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-адрес на свой.

Это все.

Заключение

Выберите ли вы первый, или второй способ, оба они позволят вам существенно сэкономить интернет-траффик. Кроме того, оба способа просты в настройке и поддержке.