Содержание

Создание локального зеркала Ubuntu

Введение

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

Локальная копия официального репозитория Ubuntu deb http://ru.archive.ubuntu.com/ubuntu/ focal main restricted занимает 135+ GiB, учтите это.

Создание дерева папок

Создаём несколько папок в домашней дирректории, в которой будет храниться наш срез репозитория (или даже несколько), к примеру, согласно нижеприведенной схемы:

Для этого введем ниже приведенные команды

sudo mkdir /home/alisa/repo
sudo mkdir /home/alisa/repo/debmirror
sudo mkdir /home/alisa/repo/debmirror/amd64
sudo mkdir /home/alisa/repo/debmirror/mirrorkeyring
sudo mkdir /home/alisa/repo/scripts



В итоге у нас получиться:

Настроим права доступа к нашей главной папке

sudo chown -R root:alisa /home/alisa/repo
sudo chmod -R 571 /home/alisa/repo



Установка зависимостей

Установим web server Apache2 и настроим брандмауэр по аналогии в этой статье.
Обновим список пакетов

sudo apt-get update



и установим небходимое ПО
Если web server Apache2 уже установлен, то

sudo apt install debmirror gnupg xz-utils


Иначе

sudo apt install apache2 debmirror gnupg xz-utils


Gnupg нужен для связки ключей. Xz – необходимость декомпрессии.

Откройте список источников (sources.list)

sudo sensible-editor /etc/apt/sources.list




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

#############################################################
########## Ubuntu 22.04 LTS (Jammy Jellyfish)  ##############
#############################################################

deb http://archive.ubuntu.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ jammy main restricted universe multiverse

deb http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted universe multiverse

deb http://archive.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse

deb http://archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse

deb http://archive.canonical.com/ubuntu/ jammy partner
deb-src http://archive.canonical.com/ubuntu/ jammy partner


CTRL+O → ENTER → CTRL+X (Сохранить и выйти)

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

sudo apt-get update
sudo apt-get dist-upgrade



c

Скрипт mirrorkernel.sh

Теперь создадим mirrorkernel.sh, открыв предпочитаемый вами редактор таким образом

sudo sensible-editor /home/alisa/repo/scripts/mirrorkernel.sh



Скопируйте текст из поля ниже в редактор.

#!/bin/bash -x
/usr/bin/debmirror --source -m --passive --host=archive.ubuntu.com \
--root=ubuntu --method=http --progress \
--dist=focal,focal-security,focal-updates,focal-backports,jammy,jammy-security,jammy-updates,jammy-backports,noble,noble-security,noble-updates,noble-backports \
--ignore-release-gpg --section=main,restricted,universe,multiverse \
--arch=amd64 /home/alisa/repo/debmirror/amd64/




CTRL+O → ENTER → CTRL+X (Сохранить и выйти)
Перейдем в директорию с нашим новым скриптом mirrorkernel.sh и дадим ему разрешение на выполнение:

cd /home/alisa/repo/scripts/
sudo chmod +x mirrorkernel.sh

chmod (от англ. change mode) — команда для изменения прав доступа к файлам и каталогам, используемая в Unix-подобных операционных системах.



Запуск и Автоисполнение

Находясь в папке с скриптом, запустим его на выполнение:

sudo apt install screen
sudo screen /home/alisa/repo/scripts/mirrorkernel.sh


screen это терминальный мультиплексор. Процесс, запущенный внутри сессии через screen, будет продолжаться даже тогда, когда вы отключитесь от самой первой сессии. См. подробнее...
После выполнения команды пойдет загрузка файлов в наше локальное зеркало:

Cron – планировщик задач. Если подробнее, то это утилита, позволяющая выполнять скрипты на сервере в назначенное время с заранее определенной периодичностью.

sudo crontab -e


Select an editor. To change later, run 'select-editor'.

1. /bin/nano        <---- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
4. /bin/ed

Choose 1-4 [1]: 1


Для nano выберем 1

0 0 1 * * /home/alisa/repo/scripts/mirrorkernel.sh


запускать скрипт 1 числа каждого месяца



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

Создадим символическую ссылку из /home/alisa/repo/debmirror/amd64 на /var/www/ubuntu.

cd /var/www/html
sudo ln -s /home/alisa/repo/debmirror/amd64 ubuntu




Перезапустим Apache:

sudo service apache2 restart

Проверим работу нашего веб-сервера

sudo systemctl status apache2



перейдем на главную страницу в браузере нашего сервера (в примере http://192.168.1.152/)

И наконец перейдем в папку для которой мы ранее указали символическую ссылку (в примере http://192.168.1.152/ubuntu/):

Файлы и Дополнения

Официальные репозитарии Ubuntu

deb http://archive.ubuntu.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ jammy main restricted universe multiverse

deb http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted universe multiverse

deb http://archive.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse

deb http://archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ jammy-backports main restricted universe multiverse

deb http://archive.canonical.com/ubuntu/ jammy partner
deb-src http://archive.canonical.com/ubuntu/ jammy partner

debmirroramd64.sh.txt