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

Mandriva Linux Free 2010.1
Скачать Mandriva Linux Free 2010.1

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

Ubuntu 8.10 Intrepid
Скачать Ubuntu 8.10 Intrepid

PC-BSD 8.2 Hubble Edition
Скачать PC-BSD 8.2 Hubble Edition

Репозитории в 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".
Последнее обновление сайта: 29-05-2014 14:29