Как сделать зеркало репозитория ubuntu

Добавил пользователь Евгений Кузнецов
Обновлено: 04.10.2024

Установим пакет для скачивания файлов и создания локального зеркала Ubuntu:

Создадим скрипт mirror.sh для запуска стого пакета и скачивания дистрибутивов и наборов пакетов, в которых нуждаемся:

И спокойно идем ложиться спать… В зимнюю спячку.
На третьи сутки у меня скрипт отработал.
Все это время он грузил мой анлим на 120%
(без шуток - проверено iptraf!) и после себя оставил 23 гига в каталоге ~/ubuntu
в котором будут каталоги .temp dists pool и project
Первый и последний - это каталоги, служебные для debmirror , а в dists и pool будут размещены индексы пакетов и сами пакеты - соответственно.
(для любопытных сообщу по секрету, что .temp - это временный dists , а project - хранит файл с именем моего компа и временем последней закачки).

Устанавливаем операционную систему Astra Linux.

Для репозитория желательно предусмотреть отдельный раздел на диске. Как сделать отдельный раздел можно прочесть тут.

И устанавливаем необходимые пакеты (для управления сервером пакеты ssh и xrdp, веб сервер Apache, утилиту создания локальных копий репозиториев):

Далее создаем директорию под размещение локального репозитория (зеркала) и устанавливаем владельца директории.

Если при установке системы был предусмотрен отдельный раздел под размещения репозитория, то необходимо указать его.

Настраиваем источники синхронизации репозитория и директорию размещения,

указываем нашу директорию для размещения репозитория, меняя строку


также меняем источники на требуемые, для примера будем использовать официальные репозиторий Astra Linux Common Edition:


и для очистки локальной копии (например: устаревшие пакеты) при обновлении укажем в конце


Сохраняем нажав "Cntr+O" и ввод, и выходим из редактора "Cntr+X".

Создаем публикуемую директорию для веб-сервера

Примечание: если планируется публиковать все содержимое mirror (без разбора), то можно создать символическую ссылку на него (sudo ln -s /repo /var/www/html/repo)

Меняем настройки веб-сервера

и устанавливаем главную страницу


и добавляем сведения о директории с репозиторием

Сохраняем нажав "Cntr+O" и ввод, и выходим из редактора "Cntr+X".

Создадим директорию под файлы конфигурации и добавим ссылку в веб-сервер

В данной директории удобно разместить новый sources.list для скачивания пользователями с указанием уже своего развернутого репозитория. Разместим такой лист sources.list

И вставим (для нашего примера):

Сохраняем нажав "Cntr+O" и ввод, и выходим из редактора "Cntr+X".

Выполняем синхронизацию выбранных разделов репозиториев

После индексации утилита покажет объем пакетов для скачивания и прогресс выполнения задачи.


Дожидаемся завершения синхронизации (данный процесс может занять длительное время из-за скорости интернета).

Можно синхронизировать репозитории вручную, убедившись что источник синхронизации исправен и не содержит "некорректных" пактов, либо установить задание в планировщик cron например раз в неделю в 4:00 по воскресеньям.

Если вы системный администратор, то вам нужно часто устанавливать новый софт, обновления безопасности и другие патчи в ваших системах. Если бы компьютер был один, то это бы не вызвало проблем, но обычно в сети несколько компьютеров и всем им нужны обновления. Это может снизить пропускную способность сети. В каждой системе приложения будут скачиваться и устанавливаться непосредственно из репозиториев Ubuntu.

Но есть выход, можно сохранить все приложения на сервере в локальной сети, а затем распространять их на другие компьютеры этой сети когда потребуется. Локальный репозиторий Ubuntu - действительно быстрый и эффективный способ развертывания приложений, так как все необходимые приложения будут мгновенно получены с локального сервера на большой скорости. Таким образом, можно снизить трафик интернет и в итоге уменьшить ежегодные расходы на оплату интернета.

В этой инструкции я расскажу как настроить локальный репозиторий Ubuntu 16.04 двумя способами.

Способ 1. Apt-mirror

В этом способе мы скачаем все пакеты из публичного репозитория на жесткий диск сервера Ubuntu. Сначала нужно установить веб-сервер Apache. Он необходим для распространения пакетов по локальной сети:

Теперь установите apt-mirror:

Создайте директорию куда будут скачиваться все пакеты:

Теперь откройте файл /etc/apt/mirror.list и добавьте следующую строчку:

Здесь /myrepo - адрес только что созданной папки. Также в этом конфигурационном файле можете указать репозитории, которые хотите использовать, мы будем использовать стандартные, но вы можете добавить и PPA. Если вы хотите использовать обе архитектуры и x64 и x32, репозитории для них нужно указать в файле отдельно.

Например, для x32 строчка будет начинаться deb-i386 а для х64: deb-amd64. Когда завершите с настройкой запустите загрузку пакетов командой:

В терминал будет выведено что-то вроде:

Сейчас все пакеты из публичного репозитория Ubuntu загружаются и сохраняются в локальной папке. В нашем случае в папке /myrepo. В зависимости от вашей скорости интернет это может занять несколько часов. Отменить загрузку можно в любое время, когда вы ее возобновите она продолжится там, где вы ее прервали.

Не нужно вручную запускать эту команду каждый день для обновления репозитория, можно запланировать задание Cron. Для этого раскоментируйте следующую строчку в файле /etc/cron.d/apt-mirror:

В этом примере Cron будет запускать обновление пакетов в четыре утра каждый день.

После заввершения загрузки проверим есть ли пакеты в каталоге /myrepo

Теперь нужно сделать пакеты доступными по сети. Для этого создадим символическую ссылку:

Конфигурация клиентов

Настройка на клиентской машине не вызовет никаких трудностей. Просто откройте файл /etc/apt/sources.list и добавьте свой локальный репозиторий, так же как вы добавляли удаленный, только используйте ваш ip адрес вашей машины:

Вот и все, здесь 192.168.1.102 - адрес сервера с репозиторием. Теперь обновим списки пакетов:

Для установки программы достаточно выполнить стандартную команду:

Настройка apt-mirror ubuntu 16.04 завершена. Теперь клиентам не нужно подключение к интернету для загрузки пакетов. Они будут получать все пакеты и обновления с локального репозитория Ubuntu.

Способ 2: APT-Cacher

Создание локального репозитория ubuntu возможно не только одним способом. Apt-cacher немного отличается от apt-mirror. Он не скачивает все пакеты из репозитория, а только сохраняет и делает доступными для всех, те которые были один раз запрошены.

Сначала установите сервер Apache:

Выберите способ запуска - daemon и нажмите ок:


Теперь нужно отредактировать /etc/default/apt-cacher, установив параметр autostart в 1.

Также можно настроить с каких ip можно будет получить доступ к кэшу, для этого откройте файл /etc/apt-cacher/apt-cacher.conf и отредактируйте соответствующую строчку: Например, разрешим подключение только компьютерам с ip от 192.168.1.20 до 192.168.1.30:

После завершения настроек перезапустите apache:

Настройка на стороне клиента

Создайте файл sudo nano /etc/apt/apt.conf.d/01proxy и добавьте в него следующую строчку:

Здесь 192.168.1.102 адрес нашего локального репозитория. Осталось обновить списки пакетов:

Здесь мы не добавляем локальный репозиторий Ubuntu, а всего лишь используем прокси для загрузки пакетов.

Выводы

Вот и все. Эта технология будет очень полезной системным администраторам, а также обычным пользователям, у которых слабый интернет. Если у вас остались вопросы, спрашивайте в комментариях!

Понимание работы сетей на базовом уровне имеет очень важное значение для каждого администратора сервера или веб-мастера. Это необходимо для правильной

Когда-нибудь задумывались, почему 127.0.0.1 IP-адрес назначается на localhost? Почему не какой-то другой IP-адрес, такой как 121.9.1.1 или что-то еще? Ответ на

Вы когда-нибудь задумывались, почему 127.0.0.1 является локальным IP адресом? Почему не какой-то 121.9.1.1 или что-нибудь другое? Дело в том, что в 1981 году

В данной статье я расскажу о настройке шлюза на Debian для раздачи интернета в небольшой локальной сети. Для получения доступа к интернет, на сервере

Как альтернативный способ передачи данных между ними, вы можете попробовать использовать Ubuntu One на вашем ПК и на мобильном устройстве (планшет или телефон).

Лично я считаю, что лучший способ выбрать лучшие зеркала репозиториев Ubuntu - использовать GUI-метод:

составить список лучших / предпочтительных зеркал; есть много зеркал, как вы можете видеть здесь, здесь или здесь, если вы нашли хорошее зеркало, добавьте его в список, если зеркало было сломан или сломан иногда, это означает, что это не хорошее зеркало, и вы должны удалить его из в списке вы можете использовать netselect, apt-spy или apt-fast и другие, в зависимости от ваших требований.

составить список лучших / предпочтительных зеркал; есть много зеркал, как вы можете видеть здесь, здесь или здесь После запуска gedit ~/bin/change_sources.sh - это создаст новый файл change_sources.sh в gedit. , если вы нашли хорошее зеркало, добавьте его в список

или скрипт, использующий netselect (скачайте здесь, установите инструкции здесь), поскольку izx объяснил правду в этом ответе:

После запуска gedit ~/bin/change_sources.sh - это создаст новый файл change_sources.sh в gedit. Вернитесь в терминал и запустите: chmod +x ~/bin/change_sources.sh - чтобы предоставить доступ для выполнения сценария. , если зеркало иногда было сломанным или сломанным, это означает, что это не хорошее зеркало, и вы должны удалить его из списка Отредактируйте файл crontab корневого пользователя с помощью команды sudo crontab -e и добавьте следующую строку: [ ! d30] Вернитесь в терминал и запустите: chmod +x ~/bin/change_sources.sh - чтобы предоставить доступ для выполнения сценария. Сохраните файл и проверьте новую запись crontab с помощью sudo crontab -l. ПРИМЕЧАНИЕ. Чтобы отменить изменения, выполненные этим сценарием, удалите задание cron и следуйте указаниям, приведенным выше, или используйте следующую команду в терминале:

файл будет динамически изменен после того, как он найдет изменение IP-адреса.

Это может быть не лучшее решение, но, на мой взгляд, хорошее решение может быть дано таким образом, как в сценариях выше.

Читайте также: