Для организации собственного репозитория Ubuntu на сервере CentOS 5 можно использовать пакеты debmirror или rsync. Решил использовать debmirror, т.к. позволяет контролировать какие пакеты и какие дистрибутивы нужны, rsync потребует огромное количество места на диске.
Многие рекомендуют (http://sjoeboo.github.io/blog/2012/01/26/mirroring-ubuntu-on-centos/)
скачать debmirror_2.10ubuntu1.tar.gz с сайта Ubuntu, установить зависимые пакеты. Затем скомпилировать debmirror, скопировать его в /usr/local/bin, создать скрипт с параметрами и строкой запуска.
Но в результате такой скомпилированный модуль не хотел работать, требовал еще каких-то дополнительных параметров.
Можно скачать debmirror.rpm для своей версии CentOS c http://pkgs.org/download/debmirror.
Необходимо установить его, создать скрипт с параметрами и строкой запуска, например такой:
Для редактирования /etc/apt/sources.list можно использовать терминал, а можно через графическую оболочку вызвать диалог Run.
Многие рекомендуют (http://sjoeboo.github.io/blog/2012/01/26/mirroring-ubuntu-on-centos/)
скачать debmirror_2.10ubuntu1.tar.gz с сайта Ubuntu, установить зависимые пакеты. Затем скомпилировать debmirror, скопировать его в /usr/local/bin, создать скрипт с параметрами и строкой запуска.
Но в результате такой скомпилированный модуль не хотел работать, требовал еще каких-то дополнительных параметров.
Можно скачать debmirror.rpm для своей версии CentOS c http://pkgs.org/download/debmirror.
Необходимо установить его, создать скрипт с параметрами и строкой запуска, например такой:
#!/bin/bash
Но он имеет несколько проблем, которые нужно после установки устранить.
Например, он пытается все время использовать rsync и выдает сообщение об ошибке
"Updating remote trace files (using rsync)". Для устранения нужно в файле /etc/debmirror.conf указать
--rsync-extra=none
Или после запуска выдает сообщение об ошибке "Duplicate dist". Это связано с тем, что дистрибутив указан в скрипте запуска в командной строке и в /etc/debmirror.conf. Нужно в одном месте убрать указание дистрибутива.
И в коде в определении переменной
my $dist_sdir= $1 // "";
используется оператор //, который надо заменить на строку вида
my $dist_sdir= defined($1) || "";
После этого необходимо также у клиентов в файле /etc/apt/sources.list
arch=amd64
section=main,restricted,universe,multiverse
release=lucid
server=ua.archive.ubuntu.com
inPath=/ubuntu
proto=http
proxy=http://proxy.local:8888
outpath=/var/www/repos/ubuntu
debmirror -a $arch \
--no-source \
-s $section \
-h $server \
-d $release \
-r $inPath \
--progress \
--ignore-release-gpg \
--no-check-gpg \
--proxy=$proxy \
-e $proto \
$outPath
Еще один вариант скрипта есть в
http://lgallardo.com/en/2012/12/06/como-crear-un-mirror-de-debian-y-ubuntu-con-debmirror/.
Более сложный скрипт можно взять на
http://www.gtkdb.de/index_33_1670.html.
Подробное описание опций debmirror есть в man или https://help.ubuntu.com/community/Debmirror.
Но для Centos 5 пакет
debmirror-20090807-1.el5.noarch.rpm
не имеет опции -i18n и не скачивает директории с локализацией описаний /i18n.
Поэтому нашел более новый пакет, который уже имеет опцию -i18n, например
debmirror-2.8-1.fc16.noarch.rpm с
http://www.rpm-find.net/linux/RPM/archive.fedoraproject.org/fedora/linux/releases/16/Everything/i386/os/Packages/debmirror-2.8-1.fc16.noarch.html
Еще один вариант скрипта есть в
http://lgallardo.com/en/2012/12/06/como-crear-un-mirror-de-debian-y-ubuntu-con-debmirror/.
Более сложный скрипт можно взять на
http://www.gtkdb.de/index_33_1670.html.
Подробное описание опций debmirror есть в man или https://help.ubuntu.com/community/Debmirror.
Теперь нужно на сервере установить и настроить apache, чтобы он выдавал данные репозитория по адресу, который мы будем указывать у клиентов. В нашем скрипте сразу указали адрес /var/www/repos/ubuntu, который является директорией для apache по-умолчанию.
Но для Centos 5 пакет
debmirror-20090807-1.el5.noarch.rpm
не имеет опции -i18n и не скачивает директории с локализацией описаний /i18n.
Поэтому нашел более новый пакет, который уже имеет опцию -i18n, например
debmirror-2.8-1.fc16.noarch.rpm с
http://www.rpm-find.net/linux/RPM/archive.fedoraproject.org/fedora/linux/releases/16/Everything/i386/os/Packages/debmirror-2.8-1.fc16.noarch.html
Например, он пытается все время использовать rsync и выдает сообщение об ошибке
"Updating remote trace files (using rsync)". Для устранения нужно в файле /etc/debmirror.conf указать
--rsync-extra=none
Или после запуска выдает сообщение об ошибке "Duplicate dist". Это связано с тем, что дистрибутив указан в скрипте запуска в командной строке и в /etc/debmirror.conf. Нужно в одном месте убрать указание дистрибутива.
И в коде в определении переменной
my $dist_sdir= $1 // "";
используется оператор //, который надо заменить на строку вида
my $dist_sdir= defined($1) || "";
После этого необходимо также у клиентов в файле /etc/apt/sources.list
указать, что репозиторий находится в локальной сети, например
deb http://192.168.1.1/ubuntu/ precise main restricted universe multiverse
deb http://192.168.1.1/ubuntu/ precise-updates main restricted universe multiverse
deb http://192.168.1.1/ubuntu/ precise-backports main restricted universe multiverse
deb http://192.168.1.1/ubuntu/ precise-security main restricted universe multiverse
Где 192.168.1.1 - адрес нашего сервера с репозиторием.
deb http://192.168.1.1/ubuntu/ precise main restricted universe multiverse
deb http://192.168.1.1/ubuntu/ precise-updates main restricted universe multiverse
deb http://192.168.1.1/ubuntu/ precise-backports main restricted universe multiverse
deb http://192.168.1.1/ubuntu/ precise-security main restricted universe multiverse
Где 192.168.1.1 - адрес нашего сервера с репозиторием.
Для этого нужно нажать Alt+F2, затем
gksu gedit.
А затем уже в редакторе открыть /etc/apt/sources.list.
Или можно вызвать редактор таким образом:
gksudo
А затем в диалоге указать
gedit
Можно через gksudo запустить браузер nautilus и с его помощью искать и редактировать файлы.
Если репозиторий находится в локальной сети, а доступ в Интернет осуществляется через прокси, то необходимо настроить исключения прокси для локальных серверов репозитория.
В Ubuntu 12.04 через графическую оболочку можно настроить прокси, а исключения указать негде, поэтому для apt нужно указать исключения вручную.
Для этого нужно в /etc/apt/apt.conf указать исключения в виде:
Acquire::http::proxy::192.168.1.1 "DIRECT";
Acquire::http::proxy::local.mirror.address "DIRECT";
(Совет нашел в http://askubuntu.com/questions/364635/acquirehttpproxy-for-only-specified-repositories)
И после перезагрузки компьютера, можно приступать к обновлению с собственного репозитория.
gksu gedit.
А затем уже в редакторе открыть /etc/apt/sources.list.
Или можно вызвать редактор таким образом:
gksudo
А затем в диалоге указать
gedit
Можно через gksudo запустить браузер nautilus и с его помощью искать и редактировать файлы.
Если репозиторий находится в локальной сети, а доступ в Интернет осуществляется через прокси, то необходимо настроить исключения прокси для локальных серверов репозитория.
В Ubuntu 12.04 через графическую оболочку можно настроить прокси, а исключения указать негде, поэтому для apt нужно указать исключения вручную.
Для этого нужно в /etc/apt/apt.conf указать исключения в виде:
Acquire::http::proxy::192.168.1.1 "DIRECT";
Acquire::http::proxy::local.mirror.address "DIRECT";
(Совет нашел в http://askubuntu.com/questions/364635/acquirehttpproxy-for-only-specified-repositories)
И после перезагрузки компьютера, можно приступать к обновлению с собственного репозитория.
Коментарі
Дописати коментар