Создание "правильного" локального репозитория (не зеркало). Настройка локальных репозиториев в Linux Как создать локальный репозиторий

Создание локального репозитория c помощью утилиты apt-mirror.
Этот способ зеркалирования, рекомендован WiKi Debian как гораздо более надёжней нежели debmirror.
Итак начнём, установим apt-mirror : apt-get install apt-mirror Создаём каталог /mnt/repo/debian, в нём будет создаваться локальный репозиторий пакетов. Желательно чтобы это был примонтированный логический раздел жёсткого диска, чтобы в случае переустановки дистрибутива с нуля, при форматировании корневого раздела (/), не лишиться репозитория совсем. И служебных каталогов:
mkdir -p /mnt/repo/debian/{mirror,var,skel}
Настройка apt-mirror
Допустим нам нужно зеркало с готовыми к установке (бинарными) пакетами для x64 Wheezy.
() Правим конфигурационный файл /etc/apt/mirror.list: nano /etc/apt/mirror.list ############# config ################## # Базовый каталог, в нём будет создано локальное зеркало репозитория Debian set base_path /mnt/repo/debian # # Пути к файлам зеркала, временным файлам и журналy выполнения apt-mirror # set mirror_path $base_path/mirror # set skel_path $base_path/skel # set var_path $base_path/var # set cleanscript $var_path/clean.sh # # Архитектура, для которой создаётся зеркало. По умолчанию - это архитектура # системы, на которой работает apt-mirror (amd64,i386 или др.). Менять не ненужно, # т.к. ниже мы явно укажем и зеркало и архитектуру. # set defaultarch # # Пусть к скрипту постобработки, по-умолчанию отсутствует, пока нам не нужен. # set postmirror_script $var_path/postmirror.sh # # Не запускать скрипт постобработки set run_postmirror 0 set nthreads 20 set _tilde 0 # ############# end config ############## # Зеркало с пакетами wheezy x64 + исходные тексты deb-amd64 ftp://debian.nsu.ru/debian wheezy main contrib non-free deb-src ftp://debian.nsu.ru//debian wheezy main contrib non-free # Зеркало с обновлениями безопасности wheezy + исходные тексты deb-amd64 http://security.debian.org/ wheezy/updates main contrib non-free deb-src http://security.debian.org/ wheezy/updates main contrib non-free # Зеркало необходимое для сетевой установки (udebs) deb-amd64 ftp://debian.nsu.ru/debian wheezy main/debian-installer # Удаляем файлы не индексированные в Release clean ftp://debian.nsu.ru/debian clean http://security.debian.org # Запрещаем очистку выбранной папки skip-clean ftp://debian.nsu.ru/debian/dists/wheezy/main/installer-amd64/ Если необходимо хранить несколько зеркал для разных выпусков и архитектур, то добавляем новые строки типа: #deb-alpha http://ftp.us.debian.org/debian unstable main contrib non-free #deb-amd64 http://ftp.us.debian.org/debian unstable main contrib non-free #deb-armel http://ftp.us.debian.org/debian unstable main contrib non-free #deb-hppa http://ftp.us.debian.org/debian unstable main contrib non-free #deb-i386 http://ftp.us.debian.org/debian unstable main contrib non-free #deb-ia64 http://ftp.us.debian.org/debian unstable main contrib non-free #deb-m68k http://ftp.us.debian.org/debian unstable main contrib non-free #deb-mips http://ftp.us.debian.org/debian unstable main contrib non-free #deb-mipsel http://ftp.us.debian.org/debian unstable main contrib non-free #deb-powerpc http://ftp.us.debian.org/debian unstable main contrib non-free #deb-s390 http://ftp.us.debian.org/debian unstable main contrib non-free #deb-sparc http://ftp.us.debian.org/debian unstable main contrib non-free Запуск и автоматизация apt-mirror
Для ручного запуска создания\обновления зеркала выполняем команду:
# apt-mirror После загрузки индексных файлов apt-mirror сообщит, какой объём пакетов нужно получить:
Downloading 47 index files using 20 threads... Begin time: Wed Jan 8 21:41:11 2014 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... End time: Wed Jan 8 21:41:33 2014 Proceed indexes: 84.2 GiB will be downloaded into archive. Downloading 90890 archive files using 20 threads... Begin time: Wed Jan 8 21:41:50 2014 ... ... ... ... Остаётся только дождаться завершения скачивания.
Для автоматической синхронизации и очистки зеркал нужно добавить строку в настройки cron и выставить подходящее время. Обновление официальных зеркал происходит каждые 6 часов: 3:00,9:00,15:00,21:00. Например так:
crontab -l 05 01 * * * apt-mirror >> /var/log/apt-mirror.log 05 03 * * * /mnt/repo/debian/var/clean.sh >> /var/log/apt-mirror.log Настройка доступа к зеркалу
После завершения работы локальные копии всех указанных репозиториев окажутся в каталогах /mnt/repo/debianmirror/имя_репозитория. Таким образом копия репозитория, которая была определена в mirror.list как
deb-amd64 ftp://debian.nsu.ru/debian wheezy main contrib non-free
окажется в каталоге /mnt/repo/debian/mirror/debian.nsu.ru/debian/ . Доступ именно к этому каталогу нужно открывать любым удобным для Вас Web или FTP сервером. Для корректной работы обязательно необходимо добавить символические ссылки «stable»,»testing», «unstable» если таковы имеются …
ln -s /mnt/repo/debian/mirror/debian.nsu.ru/debian/dists/wheezy /mnt/repo/debian/mirror/debian.nsu.ru/debian/dists/stable Далее очень желательно подписать вновь созданный репозиторий

Предистория
Задумался недавно над тем, что будет если моя система вдруг откажется загружаться и мне не хватит ума или времени на то, чтобы восстановить ее. Тогда все прийдется начинать с нуля. А как же те пакеты, которые были верой и правдой скачаны в течении года? А если комп не один, а целая сеть?

Каждому качать по 800 метров обновлений совершенно не хочется. Долгое время я пользовался утилитой APTonCD, которая до поры, до времени меня устраивала. Но есть один нюанс: когда мы создаем репозитарий этой утилитой в iso образ (и/или пишем его на болванку), то после нет возможности добавить один-два пакета в репозитарий без пересоздания всего образа. А если принять во внимание тот факт, что в локальном кеше пакетов (из которого эта утилита и создает образы) они хранятся не вечно и со временем удаляются, то приходится хранить все файлы образов или рискуешь потерять важные пакеты, которые были скачаны сравнительно давно (поскольку их в кеше уже нет). В итоге собирается большое количество образов, в которых пакеты в большинстве своем повторяются. Выход только один. Создать полноценный локальный репозитарий, чем мы и будем заниматься.

Подготовка
Нам понадобится установить лишь один пакет: apt-move. Многие скажут, что и без него можно обойтись и будут правы, но я искал простой способ создать "правильный" репозитарий. Поэтому выполняем:
sudo apt-get install apt-move
Теперь нужно определится с папкой, где будет распологаться наш репозитарий. Я выбрал /home//mirror . Хотя имя не очень удачное, поскольку наш репозитарий не полное зеркало официального репа Ubuntu, а лишь часть его, которая содержит пакеты, хоть раз когда-либо скачанные, но переделывать скрипт мне уже лень. Поэтому пусть будет так:

Mkdir ~/mirror
cd ~/mirror

Теперь все готово к тому, чтобы перейти к следующему шагу - настройке.

Настройка
Для начала нам нужно настроить саму утилиту apt-move. Для этого выполним:
gksu gedit /etc/apt-move.conf
Откроется редактор с файлом настроек. Меняем значение переменной LOCALDIR на LOCALDIR=/home//mirror (желательно писать полный абсолютный путь, так надежней). Также меняем PKGCOMP на PKGCOMP=none. Это компрессия. Дело в том, что мной были обнаружены глюки во время использования компрессии apt-move, поэтому мы будем компрессировать все в нашем скрипте без использования этой функции apt-move. Все, сохраняемся и закрываем. Теперь выполним
gedit ~/mirror/create_repo.sh
В этот файл мы будем писать наш будущий скрипт. Начнем:

#!/bin/bash
sudo apt-move get
sudo apt-move move

Не буду подробно комментировать это, скажу лишь, что тут мы проверяем пакеты в локальном кеше и копируем их в локальный реп, придерживаясь официальной структуры папок. (вот зачем нам был нужен пакет apt-move). Далее вписываем:

Prefix=/home//mirror
cd $prefix

Mkdir -p $prefix/pool/main
mkdir -p $prefix/pool/partner
mkdir -p $prefix/pool/non-free

Mkdir -p $prefix/dists/stable/main/binary-i386
mkdir -p $prefix/dists/stable/partner/binary-i386
mkdir -p $prefix/dists/stable/non-free/binary-i386

Проверяем наличие необоходимых папок. Переменную prefix устанавливаем в соответствии с нашем расположением корня репозитария. Тут нужно сделать оговорку. Возоможно во время работы и обновления вашего репозитария в папке /pool у вас появятся и другие компоненты (здесь только три: main partner non-free), тогда вам нужно будет по аналогии добавить строчки простым копипастом с заменой на соотвествующие имена. Все просто... Идем дальше:

Dir=dists/stable/main/binary-i386
apt-ftparchive packages pool/main > $dir/Packages
gzip -9c <$dir/Packages >$dir/Packages.gz
bzip2 -9c <$dir/Packages >$dir/Packages.bz2
apt-ftparchive release $dir > $dir/Release
cat > $dir/Release << EOF
Archive: stable
Suite: stable
Component: main
Origin: APT-Move
Label: APT-Move
Architecture: i386
EOF

Создаем так называемые индексные файлы с описанием всех пакетов, которые входят в данную ветку дистрибутива. (здесь это main) Также создаем файл Release, который сожержит описание данной ветки. В общем итоге создается четыре файла:
Packages
Packages.bz2
Packages.gz
Release
собственно файл Packages и сопровождающий его файл Release. Эту часть кода вам нужно скопипастить столько раз, сколько веток в вашем репозитарии (у меня их три, поэтому я копирую еще два раза и меняю соответствующие имена на non-free и partner). Далее добавляем:

Dir=$prefix/dists/stable/
cat > $dir/Release << EOF
Origin: APT-Move
Label: APT-Move
Suite: stable
Codename: unknown
EOF

Echo Date: `date -u +"%a, %d %b %Y %T UTC"` >> $dir/Release
cat >> $dir/Release << EOF
Architectures: i386
Components: main non-free partner
Description: unknown
EOF

Apt-ftparchive release $dir >> $dir/Release

Здесь мы создаем файл Release для всего дистрибутива (у нас это stable) в целом, в котором кроме иной информации будет и контрольные суммы всех файлов Packages (и Release) во всех ветках, перечисленных в Components: (как видно у меня их по-прежнему три:)). Поэтому если у вас будут другие ветки, обязательно отредактируйте эту строчку. Сохраняем скрипт и после выполнения команды


можно уже создавать репозитарий и обновлятся из него. Но дело в том, что недоверенные репозитарии имеют меньший приоритет перед доверенными (или их еще называют подписанные). Поэтому мы сделаем нашему репозитарию такой же приоритет, как и официальному. Для этого нам понадобится ключ pgp. Если у вас еще его нет - его можно создать с помощью программы seahorse (Программы-Стандартные-Пароли и ключи шифрования). Можно конечно запустить из консоли программу gpg, но GUI мне как-то ближе. Создаем ключ и теперь нужно экспортировать его для того, чтобы клиенты могли добавить его к доверенным. Для этого выполним

Cd ~/mirror gpg --export <имя_вашего_ключа> > apt.key

Apt-ftparchive release $dir >> $dir/Release zenity --entry \ --title="Пароль ключа" \ --text="Введите Ваш пароль:" \ --entry-text "" \ --hide-text | gpg -abs --yes --passphrase-fd 0 -o $dir/Release.gpg $dir/Release

Как видно тут используется утилита zenity и gpg. Первая - это обычная "украшалка". Ну не люблю я унылую командную строку на англ. языке:) , поэтому тут вызывается графическое окно с предложением ввести пароль к вашему ключу. Вторая - непосредственно подписывает наш репозитарий и он становится доверенным. Пожалуй все, сохраняем, закрываем. Если вы еще не дали право выполнятся нашему скрипту, то дайте:

Sudo chmod +x ~/mirror/create_repo.sh
Правда я на этом еще не остановился. Поскольку мне нужно обновлять репозитарий из интернета на работе, а из репозитария обновлять систему дома, я решил весь локальный реп запаковывать в один файл и дома его распаковывать. Поэтому я дописал следующее:

Zenity --question \ --title="Архивирование" \ --text="Создать архив репозитария?" if [ "$?" = 0 ] ; then cd $prefix tar czf ../repo_`date +"%d-%m-%Y_%H-%M-%S"`.tar.gz ./ zenity --info --text="Архивирование завершено!" fi

Опять же используем zenity для вывода графических окон и, если пользователь согласен, делаем архив текущего репа в папку пользователя.

Использование
Для того, чтобы подключить наш репозитарий нужно в файл /etc/apt/sources.list его добавить. Выполняем:

Gksu gedit /etc/apt/sources.list
и добавляем в начало файла такую строчку

Deb file:/home//mirror stable main non-free partner #Локальный репозитарий
Если у вас будут еще ветки кроме main non-free partner вам нужно не забыть их добавить. Кроме того, нужно добавить публичный ключ репозитария, которым мы подписали наш реп. Для этого нужно выполнить

Sudo apt-key add apt.key

Все, теперь обновляем список пакетов

Sudo apt-get update

P.S. У кого все-равно тянет из инета пакет, который есть в локальном репозитарии, прочтите этот топик http://forum.runtu.org/index.php/topic,5403.msg44916.html#msg44916
P.P.S. Может кто-то поможет с описанием кэширующего прокси-сервера Approx. Было бы неплохо его здесь применить.

Для чего может потребоваться локальный репозиторий программ? Допустим у вас в офисе есть несколько рабочих станций без выхода в интернет. Но им нужно как-то устанавливать и обновлять ПО. В этом случае, на серевре (или другой машине, имеющей доступ в интернет), создаётся локальный репозиторий, который периодически обновляется. А остальные рабочие станции, берут оттуда программы. Также это может быть полезно в случае ограниченного или не всегда доступного интернета. Выкачали репозиторий - и в любой момент можете поставить любую доступную программу. В создании локального репозитория нет ничего сложного, сейчас я всё подробно опишу.

Локальный репозиторий очень желательно размещать на отдельном жёстком диске (в крайнем случае, разделе), чтобы в случае аварии не потерять всё нажитое непосильным трудом скачанное. Репозиторий дистрибутива Debian 8 для архитектуры amd64 весит более 40 гигабайт . Соответственно, если вам нужны ещё и i386-пакеты (32 бит) , то объём удвоится. Итак, допустим в вашей системе есть отдельный жёсткий диск на 500 Гб, примонтированный в /media/repo . От этого и будем исходить. Начнём с Debian 8 Jessie.

Существует несколько способов создания локального репозитория в Debian/Ubuntu. Я воспользуюсь самым простым и проверенным временем - утилитой apt-mirror . Устанавливаем:

sudo apt install apt-mirror apache2

Создаём каталог для репозитория:

sudo mkdir /media/repo/debian

И служебные каталоги:

sudo mkdir -p /media/repo/debian/{mirror,var,skel}

Настраиваем. Открываем конфигурационный файл:

sudo nano /etc/apt/mirror.list



set base_path /media/repo/debian




# set var_path $base_path/var




# set defaultarch


set run_postmirror 0

# Служебные параметры, не
set nthreads 20
set _tilde 0
#

# Зеркало с пакетами для amd64 jessie (stable)+ исходные тексты
deb-amd64 http://mirror.yandex.ru/debian jessie main contrib non-free

# Зеркало с обновлениями безопасности amd64 jessie (stable)+ исходные тексты
deb-amd64 http://security.debian.org/ jessie/updates main contrib non-free


deb-amd64 http://mirror.yandex.ru/debian jessie main/debian-installer




skip-clean http://mirror.yandex.ru/debian/dists/jessie/main/installer-amd64/

# Зеркало с пакетами для i386 jessie (stable)+ исходные тексты
deb-i386 http://mirror.yandex.ru/debian jessie main contrib non-free
deb-src http://mirror.yandex.ru/debian jessie main contrib non-free
# Зеркало с обновлениями безопасности i386 jessie (stable)+ исходные тексты
deb-i386 http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main contrib non-free
# Зеркало необходимое для сетевой установки (udebs)
deb-i386 http://mirror.yandex.ru/debian jessie main/debian-installer
# Удаляем файлы не индексированные в Release
clean http://mirror.yandex.ru/debian
clean http://security.debian.org
# Запрещаем очистку выбранной папки
skip-clean http://mirror.yandex.ru/debian/dists/jessie/main/installer-i386/

Сохраняем. Запускаем закачку репозитория:

sudo apt-mirror

После того как загрузятся индексные файлы, Apt-Mirror сообщит вам какой объём пакетов нужно скачать (объём будет весьма и весьма не маленький). Вам остаётся только ждать. Всё остальное система сделает сама. Для автоматической синхронизации и очистки зеркал нужно добавить строку в настройки cron и выставить подходящее время. Обновление официальных зеркал происходит каждые 6 часов: 3:00,9:00,15:00,21:00. Например так:

crontab -e

05 01 * * * apt-mirror >> /var/log/apt-mirror.log
05 03 * * * /media/repo/debian/var/clean.sh >> /var/log/apt-mirror.log

Для корректной работы обязательно необходимо добавить символические ссылки "stable" ,"testing" , "unstable" на jessie , stretch , sid соответственно (если они у вас есть). Пример для jessie:

ln -s /media/repo/debian/mirror/mirror.yandex.ru/debian/dists/jessie /media/repo/debian/mirror/mirror.yandex.ru/debian/dists/jessie/stable

Мы установили веб-сервер Apache неспроста. Он нам нужен чтобы раздавать пакеты из нашего локального репозитория по сети (локальной). Для начала, нужно настроить доступ к репозиторию. Для этого нужно создать одну символьную ссылку:

cd /media/repo/debian/
sudo ln -s /media/repo/debian/mirror/mirror.yandex.ru/debian debian

Теперь на клиентской машине (которой нужен доступ к локальному репозиторию), укажите адрес репозитория. Если у компьютера с репозиторием есть сетевое имя (к примеру server ), то указывайте его. В противном случае, адресом указывайте его IP-адрес :

sudo nano /etc/apt/sources.list

deb http://server/debian jessie main contrib non-free
deb-src http://server/debian jessie main contrib non-free
deb http://server/debian jessie/updates main contrib non-free

Если вы указывали в конфиге загрузку 32-х битных пакетов (i386), то не забудьте добавить эту архитектуру в систему:

sudo dpkg --add-architecture i386

И обновите список пакетов:

sudo apt-get update

Дальше уже всё как обычно. Для Ubuntu всё то же самое, за исключением названий репозиториев и добавления 32-х битной архитектуры в 64-х битную систему (не нужно). Конфиг mirror.list для Ubuntu 14.04 :

############# config ##################
# Базовый каталог, в нём будет создано локальное зеркало репозитория Debian
set base_path /media/repo/ubuntu

# Пути к файлам зеркала, временным файлам и журналy выполнения apt-mirror
# set mirror_path $base_path/mirror
# set skel_path $base_path/skel
# set var_path $base_path/var
# set cleanscript $var_path/clean.sh

# Архитектура, для которой создаётся зеркало. По умолчанию - это архитектура
# системы, на которой работает apt-mirror (amd64,i386 или др.). Менять не ненужно,
# т.к. ниже мы явно укажем и зеркало и архитектуру.
# set defaultarch

# Путь к скрипту постобработки, по-умолчанию отсутствует, пока нам не нужен.
# set postmirror_script $var_path/postmirror.sh

# Не запускать скрипт постобработки
set run_postmirror 0

# Служебные параметры, не
set nthreads 20
set _tilde 0
#
############# end config ##############

deb-amd64 http://archive.ubuntu.com/ubuntu trusty main restricted
deb-amd64 http://archive.ubuntu.com/ubuntu trusty-updates main restricted
deb-amd64 http://archive.ubuntu.com/ubuntu trusty universe
deb-amd64 http://archive.ubuntu.com/ubuntu trusty-updates universe
deb-amd64 http://archive.ubuntu.com/ubuntu trusty multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu trusty-updates multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu trusty-security main restricted
deb-amd64 http://archive.ubuntu.com/ubuntu trusty-security universe
deb-amd64 http://archive.ubuntu.com/ubuntu trusty-security multiverse

deb-i386 http://archive.ubuntu.com/ubuntu trusty main restricted
deb-i386 http://archive.ubuntu.com/ubuntu trusty-updates main restricted
deb-i386 http://archive.ubuntu.com/ubuntu trusty universe
deb-i386 http://archive.ubuntu.com/ubuntu trusty-updates universe
deb-i386 http://archive.ubuntu.com/ubuntu trusty multiverse
deb-i386 http://archive.ubuntu.com/ubuntu trusty-updates multiverse
deb-i386 http://archive.ubuntu.com/ubuntu trusty-security main restricted
deb-i386 http://archive.ubuntu.com/ubuntu trusty-security universe
deb-i386 http://archive.ubuntu.com/ubuntu trusty-security multiverse

Ну и соответственно, нужно изменить символьную ссылку:

ln -s /media/repo/ubuntu/mirror/archive.ubuntu.com/debian/dists/trusdy /media/repo/ubuntu/mirror/archive.ubuntu.com/ubuntu/dists/trusty/stable

Вот и всё. Это наиболее простой и, на мой взгляд, правильный способ создания локального репозитория в этих системах. Если у вас остались вопросы - пишите в комментариях.

Как известно, в Ubuntu реализовано централизованное хранение информации обо всех основных программах в одном месте, для более удобного поиска и последующей их установки. Этим местом является менеджер пакетов Synaptic. (Система -> Администрирование -> Менеджер пакетов Synaptic) Для инсталляции программы вам необходимо её только найти в списке и отметить для установки, далее программа будет автоматически скачана из интернета и установлена.

Основные программы, которые могут пригодиться при работе в ОС Ubuntu, хранятся в так называемом репозитории на официальном сервере Ubuntu. Каждый раз, когда вы отмечаете для установки ту или иную программу в менеджере пакетов Synaptic, она сперва скачивается.

Но что делать, если у вас очень медленный или дорогой интернет, или может у вас вообще отсутствует доступ во всемирную сеть, или вы просто не хотите зависеть от подключения к интернету работая в Linux Ubuntu? Можно, конечно, скачать все необходимые программы (пакеты) по одной, а потом вручную устанавливать, но кто знает, какая программа вам пригодится в дальнейшем?

Решением данной проблемы является создание локального репозитория, т.е. полной или частичной копии официального репозитория у себя на жестком диске. Таким образом, однажды скачав весь репозиторий, у вас больше не будет зависимости от интернета.

Итак, приступим.

1. Для создания копии (среза) репозитория у себя на жестком диске, существует специальная программа: debmirror. Соответственно, для начала вам её необходимо установить из того же менеджера пакетов Synaptic

или набрав команду в терминале:

sudo apt-get install debmirror

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

Перейдём в папку Repositories:

и создадим в ней файл скрипта с именем archive.ubuntulinux.org.sh:

gedit archive.ubuntulinux.org.sh

Вставляем в этот файл следующее:

#!/bin/bash -x
/usr/bin/debmirror --nosource -m --passive --host=archive.ubuntulinux.org \
--root=ubuntu --method=ftp --progress \
--dist=hardy,hardy-security,hardy-updates,hardy-backports \
--ignore-release-gpg --section=main,restricted,multiverse,universe \
--arch=i386 /полный/путь/к/папке/куда/нужно/скачать/репозиторий/

полный путь у вас должен выглядеть примерно следующим образом: /home/aidsoid/Repositories/ru.archive.ubuntu.com/

и сохраняем его. После сохранения нужно сделать файл запускаемым (chmod +x archive.ubuntulinux.org.sh).

Приведённый выше пример будет выкачивать репозиторий для Ubuntu 8.04 (Hardy Heron), если вы всё еще используете старую версию Ubuntu 7.10 (Gutsy Gibbon), то вам необходимо немного подправить этот скрипт, в частности, необходимо изменить значения параметра --dist с hardy на gutsy. Также следует обратить внимание на параметр --arch, который указывает на архитектуру вашего компьютера, значение i386 говорит о том, что будут скачаны пакеты для компьютера с архитектурой x86. Этот параметр также может принимать значение amd64 для 64-битных AMD или Intel компьютеров.

4. Ну вот, собственно говоря и всё, теперь можно запускать скрипт на выполнение, для этого в консоли, находясь в папке Repositories, наберите следующую команду:

./archive.ubuntulinux.org.sh

Скрипт начнёт свою работу. Весь репозиторий занимает около 20-30 Гигабайт, так что перед скачиванием обеспечьте свободное место на диске. В любой момент можно безболезненно прервать работу скрипта, нажатием сочетания кнопок Ctrl+C. При повторном запуске скрипта, он продолжит скачивание недокачанных пакетов. Также повторный запуск скрипта позволит обновить ваш локальный репозиторий, т.е. проверяется наличие новых версий программ и они также выкачиваются.

Примечание: пользователей Ubuntu 7.10 ожидает один маленький подводный камень, пользователям Ubuntu 8.04 беспокоиться не о чем. Существует ошибка в debmirror’е, из-за которой при повторном запуске скрипта удаляется папка pool из локального репозитория. Её необходимо исправить перед запуском скрипта. Описание ошибки тут: https://bugs.launchpad.net/ubuntu/+source/debmirror/+bug/136634

Лечится ошибка просто:
$ sudo gedit /usr/bin/debmirror
заменяете в редакторе строку local $/="\n\n"; на local $/="\n"; и сохраняете файл. Теперь обновление репозитория пройдёт без происшествий.

5. После того как скрипт скачается (это может занять длительное время), вы сможете использовать его, добавив deb строку в источники приложений. (Система -> Администрирование -> Источники приложений)

deb строка должна указывать на папку с репозиторием и выглядит примерно следующим образом:
deb file:///home/aidsoid/Repositories/ru.archive.ubuntu.com/ hardy main restricted multiverse universe

Вместо использования dpkg -i package_name.deb для установки, можно создать локальный репозиторий для пакетов, принесенных на флешке или другом носителе, а потом использовать synaptic/kynaptic (или apt-get install package_name).

1. Все действия лучше проводить как root

sudo su

2.Теперь установите пакет dpkg-dev. Он будет содержать утилиту dpkg-scanpackages, которая нам и нужна.

apt-get install dpkg-dev

3.Поместите все.deb пакеты в директорию например, /myrepo (причем не непосредственно в эту директорию, а в поддиректории, расположенные в этой директории)

4. Выполните

cd /myrepo dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz

5. Теперь нужно внести новый репозиторий в /etc/apt/sources.list. Вставьте в /etc/apt/sources.list строчку (лучше вставить ближе к началу, т.к. apt-get (synaptic/kynaptic) ставит более высокий приоритет источнику, находящемуся раньше остальных)

deb file:/myrepo ./

6. Обновление списка репозиториев

apt-get update

Если изменится содержимое директории с пакетами, повторите шаги 1,4.



Понравилась статья? Поделиться с друзьями: