======Создание локального зеркала Ubuntu======
=====Введение=====
Локальные копии репозиториев нужны для установки программ на машины с Ubuntu, не подключённые к интернету. В этом случае можно создать копию нужных репозиториев на внешнем диске или на компьютере, у которого есть доступ к интернету, а затем подключить эту копию в качестве репозитория к машинам, на которых интернета нет. Для этого вам потребуется компьютер с установленной Ubuntu и безлимитным доступом к интернету.
Локальная копия официального репозитория Ubuntu deb http://ru.archive.ubuntu.com/ubuntu/ focal main restricted занимает 135+ GiB, учтите это.
{{:software:linux_server:repo_info.png?|}}
=====Создание дерева папок=====
Создаём несколько папок в домашней дирректории, в которой будет храниться наш срез репозитория (или даже несколько), к примеру, согласно нижеприведенной схемы:
\\
{{:software:linux_server:repo_ubuntu_1.png?|}}
\\
Для этого введем ниже приведенные команды
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
\\
{{:software:linux_server:repo_ubuntu_2.png?|}}
\\
В итоге у нас получиться:
\\
{{:software:linux_server:repo_ubuntu_3.png?|}}
\\
Настроим права доступа к нашей главной папке
sudo chown -R root:alisa /home/alisa/repo
sudo chmod -R 571 /home/alisa/repo
\\
{{:software:linux_server:repo_ubuntu_17.png?|}}
\\
=====Установка зависимостей=====
Установим web server Apache2 и настроим брандмауэр по аналогии в [[software:linux_server:ubuntu_server_install_apache|этой статье.]]
\\
Обновим список пакетов
\\
sudo apt-get update
\\
{{:software:linux_server:repo_ubuntu_4.png?|}}
\\
и установим небходимое ПО
\\
Если web server Apache2 уже установлен, то
sudo apt install debmirror gnupg xz-utils
\\
Иначе
\\
sudo apt install apache2 debmirror gnupg xz-utils
\\
Gnupg нужен для связки ключей. Xz – необходимость декомпрессии.
\\
{{:software:linux_server:repo_ubuntu_5.png?|}}
\\
Откройте список источников (sources.list)
\\
sudo sensible-editor /etc/apt/sources.list
\\
{{:software:linux_server:repo_ubuntu_6.png?|}}
\\
{{:software:linux_server:repo_ubuntu_7.png?|}}
\\
и добавьте следующую строку:
\\
#############################################################
########## 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 (Сохранить и выйти)
\\
{{:software:linux_server:repo_ubuntu_8.png?|}}
\\
После редактирования списка репозиториев не забудьте обновить список пакетов.
\\
sudo apt-get update
sudo apt-get dist-upgrade
\\
{{:software:linux_server:repo_ubuntu_8.1.png?|}}
\\
c
=====Скрипт mirrorkernel.sh======
Теперь создадим mirrorkernel.sh, открыв предпочитаемый вами редактор таким образом
sudo sensible-editor /home/alisa/repo/scripts/mirrorkernel.sh
\\
{{:software:linux_server:repo_ubuntu_9.png?|}}
\\
Скопируйте текст из поля ниже в редактор.
#!/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/
\\
* --host=archive.ubuntulinux.org - это адрес репозитория (без слеша на конце,здесь archive.ubuntulinux.org)
* --root=ubuntu - это тот каталог, от которого начнётся зеркалирование пакетов. Короче - это каталог, который виден сразу после захода на адрес, указанный в --host
* --method=ftp - ftp или http
* --dist=hardy,hardy-security,hardy-updates,hardy-backports - название версии дистрибутива, который нас интересует. Если вы всё еще используете старую версию Ubuntu 7.10 (Gutsy Gibbon), то вам необходимо немного подправить этот скрипт, в частности, необходимо изменить значения параметра --dist с hardy на gutsy.
* --section=main,restricted,multiverse,universe - название секции, которая нам нужна (если не одна - разделитель запятая без пробелов)
* --arch=i386 - архитектура. Значение i386 говорит о том, что будут скачаны пакеты для компьютера с архитектурой x86. Этот параметр также может принимать значение amd64 для 64-битных AMD или Intel компьютеров.
\\
{{:software:linux_server:repo_ubuntu_10.png?|}}
\\
CTRL+O → ENTER → CTRL+X (Сохранить и выйти)
\\
Перейдем в директорию с нашим новым скриптом mirrorkernel.sh и дадим ему разрешение на выполнение:
\\
cd /home/alisa/repo/scripts/
sudo chmod +x mirrorkernel.sh
chmod (от англ. change mode) — команда для изменения прав доступа к файлам и каталогам, используемая в Unix-подобных операционных системах.
\\
{{:software:linux_server:repo_ubuntu_11.png?|}}
\\
=====Запуск и Автоисполнение=====
Находясь в папке с скриптом, запустим его на выполнение:
sudo apt install screen
sudo screen /home/alisa/repo/scripts/mirrorkernel.sh
\\
screen это терминальный мультиплексор. Процесс, запущенный внутри сессии через screen, будет продолжаться даже тогда, когда вы отключитесь от самой первой сессии.
[[https://www.gnu.org/software/screen/manual/screen.html|См. подробнее...]]
\\
После выполнения команды пойдет загрузка файлов в наше локальное зеркало:
\\
{{:software:linux_server:repo_ubuntu_20.png?|}}
\\
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 числа каждого месяца
\\
* См. подробнее о [[https://timeweb.com/ru/community/articles/chto-takoe-cron|Cron и crontab]]
* [[https://crontab.cronhub.io/|Генератор выражений Cron от Cronhub ]]
\\
{{:software:linux_server:repo_ubuntu_21.png?|}}
\\
=====Настройка доступа к зеркалу=====
Создадим символическую ссылку из /home/alisa/repo/debmirror/amd64 на /var/www/ubuntu.
cd /var/www/html
sudo ln -s /home/alisa/repo/debmirror/amd64 ubuntu
\\
{{:software:linux_server:repo_ubuntu_12.png?|}}
\\
{{:software:linux_server:repo_ubuntu_13.png?|}}
\\
Перезапустим Apache:
sudo service apache2 restart
Проверим работу нашего веб-сервера
sudo systemctl status apache2
\\
{{:software:linux_server:repo_ubuntu_15.png?|}}
\\
перейдем на главную страницу в браузере нашего сервера (в примере http://192.168.1.152/)
\\
{{:software:linux_server:repo_ubuntu_16.png?|}}
\\
И наконец перейдем в папку для которой мы ранее указали символическую ссылку (в примере http://192.168.1.152/ubuntu/):
\\
{{:software:linux_server:repo_ubuntu_18.png?|}}
\\
=====Файлы и Дополнения=====
Официальные репозитарии 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
{{ :software:linux_server:debmirroramd64.sh.txt |debmirroramd64.sh.txt}}