Создать локальную копию удаленного репозитория 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 .
Для удобства я суммирую шаги ниже:
- Предположим, у вас есть сервер Ubuntu с достаточным объемом памяти (~ 200 ГБ для безопасности), доступом к sudo и быстрым подключением к Интернету (~ 10 МБ/с для ночной загрузки). Сначала установите на него debmirror и некоторые другие пакеты:
$ sudo apt update
$ sudo apt install debmirror gnupg xz-utils
- Мы разместим наше зеркало в подкаталоге
/opt/
каталог:
$ sudo mkdir /opt/UbuntuMirror
- Создать файл
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. Исходные пакеты не будут загружены. Ключи также будут обработаны. Измените приведенный выше сценарий в соответствии с вашими потребностями.
- Нам нужны ключи. Для более новых версий Ubuntu выполните:
$ sudo mkdir /opt/UbuntuMirror/mirrorkeyring
$ gpg --no-default-keyring --keyring /opt/UbuntuMirror/mirrorkeyring/trustedkeys.gpg --import /usr/share/keyrings/ubuntu-archive-keyring.gpg
- Теперь измените разрешения и владельца зеркала.
$ sudo chown -R root:root /opt/UbuntuMirror/mirrorkeyring
$ sudo chmod -R 571 /opt/UbuntuMirror/mirrorkeyring
- Выполните скрипт:
/opt/UbuntuMirror/mirrorbuild.sh
Этот шаг займет много времени, поскольку загружается много данных.
- После завершения загрузки ваше зеркало готово. Вы также можете перенести весь
/opt/UbuntuMirror/
каталог на другой сервер в другой сети (без доступа к Интернету), если в этой сети требуется зеркало.
Теперь я покажу вам, как предоставлять зеркало с помощью nginx клиентам, желающим установить различные пакеты. Вы можете пропустить эту часть, если хотите, чтобы зеркало обслуживалось другим методом.
Предположим, вы копируете зеркало на другой сервер (или оставляете на том же сервере), на котором установлен Nginx. Предположим, зеркало расположено на пути
/usr/share/nginx/html/UbuntuMirror/
.Создавать
/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;
}
}
Вы можете изменить вышеизложенное в соответствии с вашими потребностями.
- Перезапустите Nginx
$ sudo systemctl restart nginx
Чтобы использовать указанное выше зеркало с указанного выше сервера:
- сначала сделайте резервную копию оригинала клиента
sources.list
файл
$ sudo mv /etc/apt/sources.list /etc/apt/sources.list.orig
- Теперь создайте новый
/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
- Теперь вы можете использовать зеркало с сервера:
$ sudo apt update
$ sudo apt install <some_package>