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

Обновлено: 07.07.2024

Чтобы создать зеркало репозитория, следуйте этим инструкциям

Это не покроет все остальные варианты, но даст возможность поэксперементировать. Чтобы всё прошло успешно, понадобится 8,2 ГБ дискового пространства для основных исходников и бинарных пакетов. Это число со временем возрастёт.

Альтернативная точка зрения

Создание локального репозитария - позволит вам создать локальный репозиторий для пакетов, принесенных на флешке или другом носителе, а потом использовать synaptic/kynaptic (или apt-get install package_name).

apt-mirror - Эта инструкция покажет, как создать зеркало Debian/Ubuntu для вашей локальной сети при помощи утилиты apt-mirror.

Начало процесса создания зеркала

Пожалуйста, заранее убедитесь, что для пакетов, которые вы собираетесь скачать, достаточно места!
(Если вы продвинутый пользователь, то можете создать разные части зеркала на разных носителях, но в этом путеводителе этот вариант не описывается.)
Своё зеркало мы будем создавать в /home/ при помощи

Создайте файл `mirrorbuild.sh`

Чтобы создать файл mirrorbuild.sh
Откройте предпочитаемый вами редактор так

Содержимое скрипта зеркала, пожалуйста адаптируйте его под свои нужды

Как использовать файл

  • Сохраните файл и выйдите из редактора.
  • Теперь поменяйте права и владельца зеркала. Имя группы - ваше имя пользователя:
  • И заключительная часть настраивания зеркала - загрузка файлов

Теперь прогуляйтесь. Вашей машине придётся много чего скачать!

Установите зеркало

Нам нужно установить веб-сервер - Apache2. Вы можете выбрать apache версии 1.3, но это выходит за рамки этого документа.
Обычно это делается так: sudo apt-get install apache2

Затем (для простоты) давайте сделаем ссылку из /home/UbuntuMirror на /var/www/ubuntu.

Создайте cronjob чтобы зеркало обновлялось

Чтобы зеркало оставалось актуальным, добавьте скрипт зеркала в cron. Чтобы отредактировать файл crontab пользователя root, выполните:

И вставьте эту строку:

Она будет запускать скрипт каждые двенадцать часов на второй минуте часа. УБЕДИТЕСЬ что под добавленной строкой есть пустая строка, иначе команда никогда не выполнится. Если вам свойственна педантичность, перезапустите cron:

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

Откройте терминал и введите:

Теперь в редакторе наберите следующие строки:

Затем сохраните и закройте файл.
Если теперь запустить

, обновления будут загружаться с вашего нового сервера!

RussianDocumentation/Debmirror (последним исправлял пользователь toheen 2009-04-18 08:10:52)

The material on this wiki is available under a free license, see Copyright / License for details.

Это основной способ зеркалирования, помимо официального ftpsync, т.к. он гораздо надёжней debmirror.

Создаём каталог /mnt/repo/debian и дополнительные mirror,var,skel. В нём будет создаваться локальный репозиторий пакетов. Желательно чтобы это был примонтированный логический раздел жёсткого диска, чтобы в случае переустановки дистрибутива с нуля, при форматировании корневого раздела (/), не лишиться репозитория совсем.

Настройка apt-mirror

  • Зеркало с готовыми к установке (бинарными) пакетами для amd64 jessie (stable)+ исходные тексты
  • Зеркало с готовыми к установке (бинарными) обновлениями безопасности amd64 jessie (stable)+ исходные тексты
  • Зеркало с готовыми к установке (бинарными) прочими обновлениями amd64 jessie (stable)+ исходные тексты
  • Зеркало Backports, с готовыми к установке (бинарными) пакетами для amd64 jessie (stable)+ исходные тексты
  • Зеркало необходимое для сетевой установки (udebs).

Примечание: Раскомментирование строк лишь заменяет настройки по умолчанию.

Редактируем конфигурационный файл /etc/apt/mirror.list:

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

Далее нужно убедиться что все указанные в файле mirror.list каталоги существуют.

Запуск и автоматизация apt-mirror

Для ручного запуска создания/обновления зеркала выполняем команду:

После загрузки индексных файлов apt-mirror сообщит, какой объём пакетов нужно получить:

Остаётся только дождаться завершения скачивания.

Для автоматической синхронизации и очистки зеркал нужно добавить строку в настройки cron и выставить подходящее время. Обновление официальных зеркал происходит каждые 6 часов: 3:00,9:00,15:00,21:00. Например так:

Настройка доступа к зеркалу

После завершения работы локальные копии всех указанных репозиториев окажутся в каталогах /mnt/repo/debian/mirror/имя_репозитория. Таким образом копия репозитория, которая была определена в файле mirror.list как:

Доступ именно к этому каталогу можно открывать любым удобным для Вас способом - Web или FTP сервером. Для корректной работы обязательно необходимо добавить символические ссылки "stable","testing", "unstable" на те выпуски, которые вы зеркалируете (если они у вас есть).

Далее очень желательно подписать вновь созданный репозиторий.

C помощью утилиты debmirror

Создание каталога /mnt/repo/debian, в нём будет создаваться локальный репозиторий пакетов. Желательно чтобы это был примонтированный логический раздел жёсткого диска, чтобы в случае переустановки дистрибутива с нуля, при форматировании корневого раздела (/), не лишиться репозитория совсем.

Опции

По умолчанию debmirror создаёт зеркало из секций main, contrib, non-free, main/debian-installer.

Можно исключать секции ненужных вам пакетов:

Имя секции обязательно в кавычках, иначе опция проигнорируется, это будет видно по общему объёму необходимых для скачивания пакетов выводимых программой в самом начале своей работы.

Принадлежность к определенной секции вашего пакета можно узнать по команде:

Пример получения бинарного зеркала (без пакетов с исходным кодом) Debian Stable для amd64:

C помощью утилиты reprepro

Создание каталога /mnt/repo/debian, в нём будет создаваться локальный репозиторий пакетов. Желательно чтобы это был примонтированный логический раздел жёсткого диска, чтобы в случае переустановки дистрибутива с нуля, при форматировании корневого раздела (/), не лишиться репозитория совсем.

Cоздание каталога /mnt/repo/debian/conf и пустого конфигурационного файла distributions:

В файл /mnt/repo/debian/conf/distributions указываем следующие параметры (пример для testing, архитектура i386):

Описание параметров

Дополнительные важные опции:

Инициализация репозитория

Создаём каталоги, файлы, ссылки:

Базовый каталог не задан, т.к. мы уже в нём находимся.

Теперь можно добавлять пакеты в локальный репозиторий из кэша уже скачанных вами пакетов:

Параметр -b задаёт базовый каталог репозитория, в нашем случае это /mnt/repo, если вы находитесь уже в нём, то его можно не задавать, т.к. reprepro ищет файл conf/distributions в текущем каталоге.

Добавление Дебиановских исходников в репозиторий. Они состоят обычно из 2-3 файлов, главным (управляющим) из которых является dsc-файл. Чтобы все файлы исходников добавились в репозиторий, нужно использовать includedsc, остальное аналогично.

Параметр --ask-passphrase подпишет ваш репозиторий с помощью вашего ключа GnuPG. Его можно не указывать, если не планируете подписывать репозиторий ключём gnupg. На не подписанные репозитории, aptitude будет выдавать предупреждение, что он ненадежный. Для использования подписанного репозитория, надо сделать выгрузку вашего ключа, а на машине использующей репозиторий:

Добавление пакетов расположенных на CD/DVD Debian

Они уже лежат в иерархии каталога pool на дисках, но reprepro не поддерживает рекурсивный поиск по подкаталогам, но это достаточно легко обойти шаблоном (pool/*/*/*/*.deb). Пример:

Она найдёт и добавит всё пакеты.

Удаление deb-пакета из репозитория

Удаление пакетов вместе с исходниками либо всех пакетов, относящихся к одному собранному приложению (это означает, что данные пакеты в репозитории лежат в одной папке, причем имя папки и будет указывать на имя приложения):

Использование

Для использования репозитория нужно добавить его в файл /etc/apt/sources.list в виде следующей строки (в общем виде):

Генерирование ключа

Чтобы не было проблем с тем, что ключи созданы не там, рекомендуется все делать от учётной записи «root». Для генерирования ключа нужно выполнить команду:

Ответ на вопрос о типе ключа (обычно - 1):

Ответ на вопрос о длине ключа (тоже по умолчанию - 2048):

Ответ на вопрос о сроке истечения ключа (0 - никогда не истекает):

После этого может потребоваться подтвердить выбор:

Далее ввести информацию о себе и подтвердить (буква O (не ноль)). Потом задать пароль и подтвердить его. После этого начинается генерация ключа, в течение которой просят попечатать чего-нить, подвигать мышкой или еще чего поделать. Это нужно для генерации уникального ключа.

Экспорт ключа

Где mylocalkey.asc это имя файла, в который внесен данный экспорт (новый файл, он создатся в процессе).

Добавление ключа в apt

Команда выполняется из того же каталога, что и предыдущая (из того, где находится mylocalkey.asc):

После этого можно проверить наличие ключа в списке apt:

Выведет все ключи, в том числе и созданный.

Если нужно удалить ключ из apt, то это выполняется командой:

В этом случае ID_ключа будет 5A81CBE3 (см.выше).

Подписывание локального репозитория созданным ключом

Сначала нужно убедиться в том, что в локальном репозитории имеется файл Release (находится в каталоге /mnt/repo/debian/dists/ветка_дистрибутива). В этом файле хранится информация о репозитории.

Для любого сервера необходимо иметь возможность оперативно получить актуальное свежее программное обеспечение. Я расскажу, как настраивать список репозиториев в Debian - добавлять, удалять, редактировать разные repository в sources.list. Разберем внимательно эту тему, обратив внимание на различные нюансы, которые присутствуют, как и в любом другом деле.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на . Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Данная статья является частью единого цикла статьей про сервер Debian.

Цели статьи

  1. Рассмотреть различные ветки официальных репозиториев.
  2. Подробно рассказать, как настраивать репозитории в debian.
  3. Показать на примере, как настроить локальный репозиторий.
  4. Составить список актуальных репозиториев для старых версий Debian.

Введение

В первую очередь расскажу, что такое репозиторий (repository) своими словами. В общем случае это место, где хранятся и поддерживаются какие-то данные. Применительно к операционным системам и конкретно к Debian, репозиторий - это файловый сервер, который хранит у себя пакеты для установки на операционную систему . Это могут быть как пакеты программ, так и обновлений для сервера в виде новых ядер, системных утилит и т.д.

Существуют repository не только для операционных систем, но и для программ. Там могут быть как уже скомпилированные и готовые к установке пакеты, так и исходные коды программных продуктов. Большинство репозиториев содержат готовые пакеты. Это относится и к стандартным репозиториям Debian.

Помимо официальных списков реп (транскрипция от сокращения repo), есть сторонние, которые поддерживают производители программ либо энтузиасты. Нужно внимательно относиться к сторонним репозиториям, не добавлять их бездумно. Там может располагаться любое ПО, в том числе не то, что заявлено изначально. Либо они могут быть взломаны для размещения вредоносных программ.

Управлением пакетами и работой с repository lists в Debian занимаются отдельные утилиты:

  • apt
  • apt-get
  • synaptic
  • aptitude и др.

В данной статье мы не будем рассматривать их отличия, так как это тема отдельного повествования. Все они работают со стандартным списком источников, который в общем случае располагается в /etc/apt/sources.list.

Если у вас еще не настроен сервер с Debian, рекомендую мои материалы на эту тему:

Список репозиториев в sources.list

Изначально, содержимое sources.list будет зависеть от того, какой источник для пакетов вы выбрали во время установки debian. К примеру, в моем случае для системы Debian 10 он выглядит следующим образом.

Репозитории Debian в sources.list

Для Debian 11 bullseye немного изменился формат записи для репозитория security. Теперь он выглядит так:

Репозитории Debian 11 Bullseye

В общем случае файл sources.list имеет следующую структуру:

deb и deb-src тип архива, бинарные пакеты (deb) или пакеты с исходным кодом (deb-src)
http://site.example.com/debian url репозитория
distribution псевдоним релиза (bullseye, buster, stretch и т.д.), либо класс релиза (stable, oldstable и т.д.)
component main, contrib или non-free набор пакетов

Про псевдонимы релизов и наборы пакетов мы поговорим ниже более подробно в соответствующем разделе.

Помимо основного файла sources.list, репозитории могут располагаться в отдельных файлах в директории /etc/apt/sources.list.d. Формат файлов такой же, как и у основного. Обычно туда добавляют отдельно в каждый файл набор источников для какой-то определенной программы. Например, proxmox размещает в отдельном файле свой платный репозиторий.

Типы официальных репозиториев в Debian

Как я уже показал выше, в sources.list используются псевдонимы, либо классы релиза, а так же разные ветки наборов пакетов. С псевдонимами релизов все понятно. Они названы в честь персонажей мультфильма История игрушек (Toy story) - Wheezy, Jessie, Stretch, Buster, Bullseye и т.д. А вот насчет классов релизов поговорим отдельно. Существуют следующие официальные классы релизов Debian.

Stable

Стабильная ветка официального текущего релиза Debian. То есть это самая свежая и актуальная версия, которую рекомендуется использовать. Официальный репозиторий стабильной ветки содержит проверенный набор программ, зачастую не очень свежих версий. Это плата за надежность. В production рекомендуется использовать пакеты именно из репозитория stable.

В этом репозитории регулярно публикуются все актуальные обновления текущего релиза. Он формируется из ветки Testing, которая в момент релиза новой версии превращается в Stable.

Oldstable

Oldstable - кодовое имя предыдущего stable repository. Для этого репозитория выпускаются обновления безопасности. Ветка Oldstable формируется из Stable предыдущего релиза на момент публикации нового.

Testing

Testing содержит в себе текущее состояние разработки нового стабильного релиза. После его выхода, testing становится stable. Пакеты в testing попадают из репы unstable. В общем случае использовать репозиторий testing следует только для тестовых целей, чтобы посмотреть на новый релиз.

Для этого можно сделать чистую установку текущего релиза, затем изменить repo со stable на testing и обновиться. Вы получите свежую версию тестового релиза, который готовится к выпуску.

Unstable (sid)

Sid это repository с самым свежим программных обеспечением. Проблема только в том, что оно еще не протестировано достаточным образом для использования. Если вы точно уверены, что вам нужен новый софт и он не сломает вам систему, можете поставить его из unstable репозитория. Но в общем случае, делать это не рекомендуется.

Даже если софт из unstable не повредит работе системы, он может нарушить зависимости пакетов, так что потом может быть затруднительно вернуться на stable repo.

Experimental

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

Backports

Backports repository выступает как некий компромисс между стабильностью основной ветки и свежим набором программ из ветки testing. Репозиторий backports содержит пакеты преимущественно из testing и немного из unstable (только для обновлений безопасности).

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

Если вам нужен софт из веток testing и unstable, лучше использовать backports. Репозиторий создан как раз для того, чтобы не прыгать между этими ветками.

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

Важное замечание. Я не рекомендую в качестве репозиториев указывать классы релизов - stable, oldstable и т.д. Всегда явно указывайте название релиза - bullseye, buster, stretch и т.д. Иначе в случае выхода нового релиза, вы при обычном обновлении получите обновление релиза, даже если не собирались его обновлять.

Security updates

Существует отдельный репозиторий только для security updates. Добавить его можно следующим образом:

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

Stable-updates

Еще один отдельный репозиторий для установки пакетов через механизм stable-updates. Добавить его можно следующим образом.

Через этот repository вы будете по мере выпуска получать обновления, которые готовятся к публикации в очередном обновлении релиза. Так называемые Point Releases - 10.1, 10.2 и т.д. Случаются они не часто, примерно раз в 2-3 месяца, но проверенные для них обновления можно получить ранее как раз с помощью stable-updates.

Ветки main, contrib, non-free

Каждый официальный репозиторий Debian имеет по 3 ветки:

  1. main состоит из DFSG-compliant пакетов, которым не требуется другое ПО из других источников. Эти пакеты считаются частью дистрибутива Debian. Они полностью свободны для любого использования.
  2. contrib пакеты так же содержат DFSG-compliant ПО, но их зависимости могут требовать дополнительное ПО, которое может быть в других источниках, например ветке non-free.
  3. non-free содержит все остальное ПО, которое не соответствует DFSG.

DFSG - Debian Free Software Guidelines, критерии Debian по определению свободного ПО. В любом случае, пакеты из всех трех веток main, contrib и non-free полностью протестированы и подготовлены для работы с дистрибутивом Debian.

Теперь, зная всю теорию по репозиториям в Debian, мы можем проанализировать файл sources.list, который мы получили после установки. В нем подключены 3 репозитория с ветками main.

Это stable repo текущего релиза. Далее идет security repository для установки свежих обновлений безопасности.

И в завершении stable-updates для получения стабильных обновлений до очередного Point Release текущего дистрибутива.

Признаюсь честно, я много лет администрировал сервера с Debian, а до конца не понимал, что у меня записано в sources.list. Разобрался полностью только сейчас, когда писал статью. До этого просто копировал по привычке конфиги с репами. Догадывался о чем там речь, но точно не знал. Теперь восполнил пробел и поделился с вами информацией.

Добавить новый repository в debian

Теперь от теории перейдем к практике. Давайте вручную добавим новый репозиторий в Debian. К примеру, нам нужно установить на сервер стабильную версию MariaDB. Для этого добавим ее репозиторий. Это можно сделать либо в файле sources.list, но лучше создать отдельный в sources.list.d. Назовем его MariaDB.list.

После подключения репозитория, надо добавить его gpg ключ.

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

Добавление репозитория в Debian

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

Новый репозиторий

Как я уже говорил, для настройки нового репозитория, вы могли просто добавить эти же 2 строки с параметрами в sources.list напрямую. Разницы никакой нет.

Зеркало официального репозитория yandex mirror

Repository yandex mirror можно так же использовать для сетевой установки систем.

Sources List Generator (генератор списка репозиториев)

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

Я не знаю, кто ведет подобные List Generator и можно ли им доверять. Всегда проверяйте список репозиториев, который будет сгенерирован для вас. По сути, это обычный текстовый файл, который вы скопируете себе.

К примеру, я указал в List Generator, что мне надо подготовить список репозиториев со следующими параметрами:

  1. Репозиторий Stable
  2. Ветка main (просто отключил ветки contrib и non-free)
  3. Mirror - Russia
  4. Включить репозитории Security и Updates
  5. Добавить repo для софта - Docker, MariaDB, Nginx, NodeJS, Php, Webmin

В итоге получил вот такой sources.list

К нему еще список gpg ключей для импорта. В принципе, к списку у меня претензий нет. Все по делу. Нужно только проверить php и mariadb repository. Мне предложенные не знакомы.

В целом, я бы не рекомендовал использовать такие сервисы по генерации готовых списков. Я не вижу проблем, чтобы вручную все сделать и проконтролировать процесс.

Локальный репозиторий

Есть несколько способов создать локальный репозиторий Debian. Из того, что я пробовал, самым простым и удобным мне показался apt-mirror, но у него есть один баг, если его использовать как зеркало официальных репозиториев. Он не качает переводы в формате .gz и.xz, только .bz2. В итоге, когда будете использовать локальный репозиторий в качестве зеркала официального, получите ошибку:

Дальше создаем каталог для локального репозитория и конфиг.

Конфиг делаем примерно следующего содержания.

Выполняем инициализацию репозитория.

Теперь можно добавлять пакеты в локальный репозиторий следующей командой.

Для того, чтобы подключить локально новый репозиторий, его нужно добавить в sources.list.

После этого выполняете обновление кэша пакетов и увидите в списке репозиториев свой локальный.

Локальный репозиторий Debian

Архив репозиториев для старых версий

Ниже представляю готовые настройки репозиториев для прошлых версий.

Debian 9 stretch

Репозитории Debian 9 stretch пока еще находятся в основных репозиториях:

В скором времени они тоже переедут в архив. Случится это в июне 2022 года, когда кончится период длительной поддержки. Тогда их можно будет подключить по следующим адресам:

Debian 8 jessie

Репозитории Debian 8 jessie:

Debian 7 wheezy

Репозитории Debian 7 wheezy:

Debian 6 squeeze

Репозитории Debian 6 squeeze:

Возможные ошибки

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

Репозиторий не содержит файла Release

Текст ошибки, по идее, дает готовый ответ. В репозитории нет обязательного файла Release. Но суть в том, что он скорее всего есть. Дело тут чаще всего в том, что вы добавили к себе репозиторий, который не содержит указанной вами ветки. К примеру, вы добавили репозиторий в дистрибутив Buster, а в репозитории нет поддержки этого дистрибутива. Предыдущие есть, а этого нет.

Ровно эту же ошибку вы получите, если будете использовать старую, снятую с поддержки версию Debian. В какой-то момент стандартные репозитории перестанут поддерживать вашу версию дистрибутива и вы получите ошибку. Вам надо будет либо обновляться до более свежей версии, либо использовать архивные репозитории.

Заключение

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

Напоминаю, что данная статья является частью единого цикла статьей про сервер Debian.

Когда сегодня трафик и обычная скорость интернета измеряется в десятках гигабайт за мгновение ока даже для обычных интернет-клиентов, вы можете спросить, зачем устанавливать кеш локального репозитория в локальной сети?


Одна из причин - снижение пропускной способности Интернета и высокая скорость извлечения пакетов из локального кеша. Но, кроме того, еще одной важной причиной должна быть конфиденциальность. Представим, что клиенты из вашей организации ограничены доступом в Интернет, но их Linux-серверы нуждаются в регулярных системных обновлениях программного обеспечения и безопасности или просто нуждаются в новых пакетах ПО. Если продолжить, то сервер, который работает в частной сети, содержит и обслуживает секретную конфиденциальную информацию только для ограниченного сегмента сети и никогда не должен быть открыт для публичного доступа в Интернет.

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

Для полного зеркального кеша вашему серверу необходимо не менее 120 ГБ свободного места, зарезервированного для локальных репозиториев.

  1. Минимум 120 ГБ свободного места.
  2. Сервер Proftpd установлен и настроен в анонимном режиме.

Шаг 1. Настройте сервер

1. Первое, что вы можете сделать, это определить ближайшие и самые быстрые зеркала Ubuntu рядом с вашим местоположением, посетив страницу Ubuntu Archive Mirror и выбрав свою страну .


Если ваша страна предоставляет больше зеркал, вам следует определить адрес зеркала и выполнить некоторые тесты на основе результатов ping или traceroute .


2. Следующим шагом будет установка необходимого программного обеспечения для настройки локального зеркального репозитория. Установите пакеты apt-mirror и proftpd и настройте proftpd как автономный системный демон.



3. Пришло время настроить сервер apt-mirror . Откройте и отредактируйте файл /etc/apt/mirror.list , добавив ваши ближайшие местоположения ( Шаг 1 ) - необязательно, если зеркала по умолчанию работают достаточно быстро или вы не в спешите - и выберите свой системный путь, по которому должны быть загружены пакеты. По умолчанию apt-mirror использует местоположение /var/spool/apt-mirror для локального кеша, но в этом руководстве мы собираемся использовать изменение системного пути и точку set base_path к местоположению /opt/apt-mirror .


Также вы можете раскомментировать или добавить другой список источников перед директивой clean, включая источники Debian , в зависимости от того, какие версии Ubuntu используют ваши клиенты. Вы можете добавить источники с 12.04 , если хотите, но имейте в виду, что для добавления дополнительных источников требуется больше свободного места.

Для просмотра списков источников Debian посетите Генератор списков источников Debian.

4. Все, что вам нужно сделать сейчас, это просто создать каталог пути и запустить команду apt-mirror для синхронизации официальных репозиториев Ubuntu с нашим локальным зеркалом.


Как видите, apt-mirror продолжает индексацию и загрузку архивов, отображающих общее количество загруженных пакетов и их размер. Как мы можем догадаться, 110–120 ГБ достаточно велик, чтобы загрузить его некоторое время.

Вы можете запустить команду ls для просмотра содержимого каталога.


После завершения начальной загрузки будущие загрузки будут небольшими.

5. Пока apt-mirror загружает пакеты, вы можете настроить свой сервер Proftpd . Первое, что вам нужно сделать, это создать анонимный файл конфигурации для proftpd, выполнив следующую команду.

Затем добавьте следующее содержимое в файл anonymous.conf и перезапустите службу proftd.

6. Следующий шаг - связать путь apt-mirror с путем proftpd, запустив bind mount, введя команду.

Чтобы проверить это, запустите команду mount без параметров или опций.


7. Последний шаг - убедиться, что сервер Proftpd автоматически запускается после перезагрузки системы , а каталог mirror-cache также автоматически монтируется на ftp-сервере. дорожка. Чтобы автоматически включить proftpd, выполните следующую команду.

Чтобы автоматически монтировать кеш apt-mirror на proftpd, откройте и отредактируйте файл /etc/rc.local .

Добавьте следующую строку перед директивой exit 0 . Также используйте задержку 5 перед попыткой сесть.


Если вы извлекаете пакеты из репозиториев Debian , выполните следующие команды и убедитесь, что включены соответствующие настройки для указанного выше файла rc.local .

8. Для ежедневной синхронизации apt-mirror вы также можете создать задание системного расписания для запуска с помощью команды crontab, выбрать предпочтительный редактор и добавить следующий синтаксис строки.

В последней строке добавьте следующую строку.


Теперь каждый день в 2 часа ночи кеш вашего системного репозитория будет синхронизироваться с официальными зеркалами Ubuntu и создавать файл журнала.

Шаг 2. Настройте клиентов


10. Для просмотра репозиториев вы можете открыть браузер и указать IP-адрес вашего сервера доменного имени, используя протокол FTP.


Та же система применяется также к клиентам и серверам Debian , единственное, что необходимо изменить, - это зеркало debian и список источников .

Также, если вы устанавливаете новую систему Ubuntu или Debian , укажите локальное зеркало вручную с протоколом ftp, когда установщик спросит, какой репозиторий использовать.

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


Для чего может потребоваться локальный репозиторий программ? Допустим у вас в офисе есть несколько рабочих станций без выхода в интернет. Но им нужно как-то устанавливать и обновлять ПО. В этом случае, на серевре (или другой машине, имеющей доступ в интернет), создаётся локальный репозиторий, который периодически обновляется. А остальные рабочие станции, берут оттуда программы. Также это может быть полезно в случае ограниченного или не всегда доступного интернета. Выкачали репозиторий - и в любой момент можете поставить любую доступную программу. В создании локального репозитория нет ничего сложного, сейчас я всё подробно опишу.

Локальный репозиторий очень желательно размещать на отдельном жёстком диске (в крайнем случае, разделе), чтобы в случае аварии не потерять всё нажитое непосильным трудом скачанное. Репозиторий дистрибутива Debian 8 для архитектуры amd64 весит более 40 гигабайт. Соответственно, если вам нужны ещё и i386-пакеты (32 бит), то объём удвоится. Итак, допустим в вашей системе есть отдельный жёсткий диск на 500 Гб, примонтированный в /media/repo . От этого и будем исходить. Начнём с Debian 8 Jessie.

Существует несколько способов создания локального репозитория в Debian/Ubuntu. Я воспользуюсь самым простым и проверенным временем - утилитой apt-mirror. Устанавливаем:

sudo apt install apt-mirror apache2

Создаём каталог для репозитория:

sudo mkdir /media/repo/debian

и служебные каталоги:

sudo mkdir -p /media/repo/debian/

Настраиваем. Открываем конфигурационный файл:

sudo nano /etc/apt/mirror.list

Сохраняем. Запускаем закачку репозитория:

После того как загрузятся индексные файлы, Apt-Mirror сообщит вам какой объём пакетов нужно скачать (объём будет весьма и весьма не маленький). Вам остаётся только ждать. Всё остальное система сделает сама. Для автоматической синхронизации и очистки зеркал нужно добавить строку в настройки cron и выставить подходящее время. Обновление официальных зеркал происходит каждые 6 часов: 3:00,9:00,15:00,21:00. Например так:

05 01 * * * apt-mirror >> /var/log/apt-mirror.log
05 03 * * * /media/repo/debian/var/clean.sh >> /var/log/apt-mirror.log

Для корректной работы обязательно необходимо добавить символические ссылки "stable","testing", "unstable" на jessie, stretch, sid соответственно (если они у вас есть). Пример для jessie:

Мы установили веб-сервер Apache неспроста. Он нам нужен чтобы раздавать пакеты из нашего локального репозитория по сети (локальной). Для начала, нужно настроить доступ к репозиторию. Для этого нужно создать одну символьную ссылку:

Теперь на клиентской машине (которой нужен доступ к локальному репозиторию), укажите адрес репозитория. Если у компьютера с репозиторием есть сетевое имя (к примеру server), то указывайте его. В противном случае, адресом указывайте его IP-адрес:

sudo nano /etc/apt/sources.list

Если вы указывали в конфиге загрузку 32-х битных пакетов (i386), то не забудьте добавить эту архитектуру в систему:

sudo dpkg --add-architecture i386

и обновите список пакетов:

sudo apt-get update

Дальше уже всё как обычно. Для Ubuntu всё то же самое, за исключением названий репозиториев и добавления 32-х битной архитектуры в 64-х битную систему (не нужно). Конфиг mirror.list для Ubuntu 14.04:

Ну и соответственно, нужно изменить символьную ссылку:

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

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