======Создание локального зеркала 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}}