Информация   |   Статьи   |   Конкурс   |   Just for fun   |   Войти
  Начало  
|  ALT Linux  
|  Ubuntu  
|  Debian  
|  Fedora  
|  Gentoo  
|  openSUSE  
|  SUSE  
|  Mandriva  
|  CentOS  
|  Slackware  
|  Games  
|  FreeBSD  
 
Вернуться назад
Каталог
Популярные дистрибутивы

ASPLinux 11.2 Ladoga
Скачать ASPLinux 11.2  Ladoga

Slackware Linux 13.37
Скачать Slackware Linux 13.37

GParted LiveCD
Скачать GParted LiveCD

ClarkConnect Community Edition 4.2
Скачать ClarkConnect Community Edition 4.2

Репозитории в Ubuntu: Часть 1

Реклама
Зайдите на наш сайт: Встроенные шкафы. Перейти на сайт.

Использование многодисковых срезов на CD/DVD

 

Имеем: срез репозитория *buntu на 6ти DVD. Самый простой вариант использования - вставляем диски по очереди в привод и в консоли выполняем команду:

$ sudo apt-cdrom add

После этого можно использовать ваш любимы менждер пакетов - при установке новых пакетов сначала они будут искаться на DVD, а потом уже в интернет-репозиториях.

Допустим кому-то лень постоянно вставлять диски с дистрибами. Например, привод один а хочеться музыку слушать или места просто много на винте. Можно создать локальный репозиторий. Единственный минус такого репозитория - в нем не будет обновлений. Но если прописать такой репозиторий в самом верху /etc/apt/sources.list, то менеджер пакетов будет сначала искать в локальном репозитории а потом уже во всех остальных.

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

1) все диски содержат 2 папки: dists - содержит файлы описания репозитория и пакетов, pool - сами пакеты структурированно разложенные по подпапкам именованным по алфавиту.

2) создадим папку /path/to/our/repository/mirror (далее будем называть ее MIRROR_PATH)

3) создадим в MIRROR_PATH подпапки по количеству дисков (в нашем случае 6): dists1, dists2, … dists6

4) создадим в MIRROR_PATH подпапку pool

5) далее необходимо скопировать содержимое дисков: содержимое папок dists в соответсвующие папки dists1, dists2, … dists3, а содержимое папкок pool в папку pool (все в одну кучу)

Ну можно сказать что репозиторий почти готов остается совсем чуть-чуть. Идея заключается вот в чем - каждый диск, по сути, есть отдельный репозиторий.

Немного о структуре репозитория. Каждый репозиторий (как уже было сказано выше) состоит из 2х папок - dists и pool.

Папка dists cодержит в себе описание репозиториев и имеет структуру:

dists/<repository>/<section>/binary-<арch>/Packages.gz

<repository> - название репозитория, обычно называют по имени дистрибутива (gutsy, fiesty, etch,…)

<section> - раздел репозитория (main, restricted, universe, multiverse)

<arch> - архитектура (i386, amd64, …)

Packages.gz - файл с описаниями пакетов репозитория, обычный текстовый файл в котором описания пакетов разделяются пустой строкой.

Папка pool содержит файлы пакетов репозитори, ее структура такова:

pool/<section>/<group>/…/<subgroup>/<package.deb>

<group>, <subgroup> - папки для группировки пакетов

<package.deb> - пакет

Таким образом мы имеем - папки dists с одинаковым содержимым, которое надо объединить. Приступим:

1) Открываем консоль

2) Создаем папку, где будет храниться наш репозиторий и переходим в нее

$ sudo mkdir /path/to/our/repository/mirror && cd /path/to/our/repository/mirror

3) Создаем папки для описаний репозиториев на дисках (seq 1 6 - по количеству дисков с 1 по 6-ой)

$ sudo for i in`seq 1 6`; do mkdir dists$i; done

4) Создаем папку для пакетов репозитория

$ sudo mkdir pool

5) Копируем содержимое дисков - для этог вставляем диски по очереди и для каждого выполняем 2 команды

$ sudo cp /media/cdrom/dists/* dists<номер диска>/

$ sudo cp /media/cdrom/pool/* pool/

6) Перебираем все папки dists1 и их подпапки и распаковываем файлы Packages.gz.

$ sudo find dists* -regex ^dists[0-9]+/.*/Packages.gz -exec gunzip {} \;

7) Делаем аналогично предыдущему разу, только теперь перебираем все подпапки binary-<arch> и создаем аналогичные (со всей структурой) в MIRROR_PATH/dists

$ sudo for i in `find dists* -regex ^dists[0-9]+/.*/binary-[^\/]*$`; do mkdir -p `echo $i | sed -r ’s/dists[0-9]+/dists/’`; done

8 ) Объединяем все файлы Packages с разных дисков которые храняться в одноменных папках, например, на дисках 1 и 2 есть файлы:

- dists1/gutsy/main/binary-i386/Packages и

- dists2/gutsy/main/binary-i386/Packages,

тогда поочередно необходимо выполнить следующие команды:

- cat dists1/gutsy/main/binary-i386/Packages >> dists/gutsy/main/binary-i386/Packages и

- cat dists2/gutsy/main/binary-i386/Packages >> dists/gutsy/main/binary-i386/Packages

$ sudo for i in `find dists* -regex ^dists[0-9]+/.*/Packages`; do cat $i >> `echo $i | sed -r ’s/dists[0-9]+/dists/’`; done

9) Теперь остается только упаковать полученные файлы и удалить папки dists1,2,3,4,5,6. (Кстати, упаковывать файлы Packages вовсе не обязательно, но допустимо, да и место экономится, по моему опыту, примерно 75%)

>$ sudo find dists* -regex ^dists/.*/Packages -exec gzip {} \;

$ sudo find dists* -regex ^dists[0-9]+$ -exec rm -rf {} \;

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

deb file:///path/to/our/repository/mirror gutsy main restricted multiverse universe

PS. Если вы используете срез от ОСМаркет на 6-ти дисках, то вам необходимо добавить так же репозитории gusty-backports, gutsy-proposed, gutsy-updates и gutsy-security.

 

Home   |   Архив дистрибутивов   |   Карта сайта   |   Trademarks
Copyleft © 2002-2013 Сообщество пользователей "LINUXiso".
Последнее обновление сайта: 07-03-2014 11:30