Создать локальную копию удаленного репозитория Ubuntu

Добрый день. Я пытаюсь создать локальную копию официального репозитория Ubuntu (12.10 или 13.10 не имеет значения). Насколько я знаю, я могу рекурсивно загрузить все пакеты с зеркала ( http://mirror.yandex.ru/), но есть ли другой способ сделать эту работу? Спасибо.

2 ответа

Решение

Самый простой способ скопировать все это использовать rsync:

 rsync -a --bwlimit=128 rsync://archive.ubuntu.com/ubuntu /media/mirror/ubuntu

Вот дополнительная информация по этому вопросу: https://help.ubuntu.com/community/Rsyncmirror

Rsync - отличный инструмент.

РЕДАКТИРОВАТЬ, чтобы добавить его в качестве хранилища по умолчанию для ваших хостов:

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

 cd /var/www/
 ln /media/mirror/ubuntu -s

Вы можете проверить, удалось ли это, используя веб-браузер для посещения сайта. Перейти к ubuntumirror.mydomain/ubuntu

Вы должны увидеть некоторые каталоги с именами "dists", "indexes", "pool", "project" и файл с именем "ls-lR.gz".

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

Замените имя сервера для Ubuntu Archives на ваше локальное зеркало. Существующий сервер, скорее всего, будет что-то вроде us.ubuntu.com

Если ваш сервер называется ubuntumirror.mydomain, то ваш файл /etc/apt/sources.list должен выглядеть примерно так

 deb http://ubuntumirror.mydomain/ubuntu/ feisty main restricted
 deb-src http://ubuntumirror.mydomain/ubuntu/ feisty main restricted

 deb http://ubuntumirror.mydomain/ubuntu/ feisty-updates main restricted
 deb-src http://ubuntumirror.mydomain/ubuntu/ feisty-updates main restricted

Вы можете проверить свое зеркало, запустив

 # apt-get update

Вы должны увидеть некоторые выходные данные, ссылающиеся на ваш сервер, например:

 Get:1 http://ubuntumirror.mydomain feisty Release.gpg [191B]
 Ign http://ubuntumirror.mydomain feisty/main Translation-en_US
 Ign http://ubuntumirror.mydomain feisty/restricted Translation-en_US
 Get:2 http://ubuntumirror.mydomain feisty-updates Release.gpg [191B]
 Ign http://ubuntumirror.mydomain feisty-updates/main Translation-en_US
 Ign http://ubuntumirror.mydomain feisty-updates/restricted Translation-en_US

Поскольку вопрос очень старый, если вы еще с ним не знакомы, позвольте мне познакомить вас с Debmirror. Это утилита для создания частичного локального зеркала для систем на базе Debian и Ubuntu. Как говорится на странице руководства debmirror: «Он может отражать любую комбинацию архитектур, дистрибутивов и разделов... с поддержкой ftp, http или rsync и пула пакетов». Обратите внимание, что debmirror копирует только зеркало. Чтобы передать эту копию различным клиентам, желающим установить различные пакеты, вам понадобится что-то вроде FTP-сервера, веб-сервера и т. д.

Шаги по созданию зеркала с помощью debmirror превосходно описаны по адресу: https://help.ubuntu.com/community/Debmirror .

Для удобства я суммирую шаги ниже:

  1. Предположим, у вас есть сервер Ubuntu с достаточным объемом памяти (~ 200 ГБ для безопасности), доступом к sudo и быстрым подключением к Интернету (~ 10 МБ/с для ночной загрузки). Сначала установите на него debmirror и некоторые другие пакеты:
      $ sudo apt update
$ sudo apt install debmirror gnupg xz-utils
  1. Мы разместим наше зеркало в подкаталоге/opt/каталог:
      $ sudo mkdir /opt/UbuntuMirror
  1. Создать файлmirrorbuild.shв каталоге и скопируйте в этот скрипт следующее. После завершения копирования сохраните его и сделайте скрипт исполняемым:
      #### Start of script to automate building of Ubuntu mirror #####

#!/bin/bash
export GNUPGHOME=/opt/UbuntuMirror/mirrorkeyring
arch=amd64
section=main,restricted,universe,multiverse
release=focal,focal-security,focal-updates
server=archive.ubuntu.com
inPath=/ubuntu
proto=http
outPath=/opt/UbuntuMirror/ubuntu-mirror

debmirror       -a $arch \
                --no-source \
                -s $section \
                -h $server \
                -d $release \
                -r $inPath \
                --progress \
                --method=$proto \
                $outPath

#### End of script to automate building of Ubuntu mirror ####

Приведенный выше скрипт будет загружать пакеты, используя http в/opt/UbuntuMirror/ubuntu-mirror/каталог. Пакеты будут из всех разделов (т.е. основного, ограниченного, юниверса и мультивселенной), но будут только для архитектур amd64. Исходные пакеты не будут загружены. Ключи также будут обработаны. Измените приведенный выше сценарий в соответствии с вашими потребностями.

  1. Нам нужны ключи. Для более новых версий Ubuntu выполните:
      $ sudo mkdir /opt/UbuntuMirror/mirrorkeyring
$ gpg --no-default-keyring --keyring /opt/UbuntuMirror/mirrorkeyring/trustedkeys.gpg --import /usr/share/keyrings/ubuntu-archive-keyring.gpg
  1. Теперь измените разрешения и владельца зеркала.
      $ sudo chown -R root:root /opt/UbuntuMirror/mirrorkeyring
$ sudo chmod -R 571 /opt/UbuntuMirror/mirrorkeyring
  1. Выполните скрипт:
      /opt/UbuntuMirror/mirrorbuild.sh

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

  1. После завершения загрузки ваше зеркало готово. Вы также можете перенести весь/opt/UbuntuMirror/каталог на другой сервер в другой сети (без доступа к Интернету), если в этой сети требуется зеркало.

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

  1. Предположим, вы копируете зеркало на другой сервер (или оставляете на том же сервере), на котором установлен Nginx. Предположим, зеркало расположено на пути/usr/share/nginx/html/UbuntuMirror/.

  2. Создавать/etc/nginx/conf.d/repo.confи скопируйте в него следующее. Обязательно введите IP-адрес вашего сервера перед сохранением и закрытием.

      server {
        listen   80;
        autoindex on;
        server_name  <insert your server's IP here>;
        root   /usr/share/nginx/html/UbuntuMirror;
        index index.html; 
        location / {
                autoindex on;
        }
}

Вы можете изменить вышеизложенное в соответствии с вашими потребностями.

  1. Перезапустите Nginx
      $ sudo systemctl restart nginx

Чтобы использовать указанное выше зеркало с указанного выше сервера:

  1. сначала сделайте резервную копию оригинала клиентаsources.listфайл
      $ sudo mv /etc/apt/sources.list /etc/apt/sources.list.orig
  1. Теперь создайте новый/etc/apt/sources.list/со следующим содержанием:
      deb http://<insert your server's IP here>/ubuntu-mirror focal main restricted universe multiverse
deb http://<insert your server's IP here>/ubuntu-mirror focal-security main restricted universe multiverse
deb http://<insert your server's IP here>/ubuntu-mirror focal-updates main restricted universe multiverse
  1. Теперь вы можете использовать зеркало с сервера:
      $ sudo apt update
$ sudo apt install <some_package>
Другие вопросы по тегам