8/04/2008

Как добавить репозиторий Debian из CD или DVD-образов

Имеется несколько выкачанных ISO-образов с репозиториями, например Debian GNU/Linux, и нужно их подключить для работы. Не обязательно пропаливать их на диск и постоянно вставлять-извлекать диски. Можно примонтировать ISO-образы и добавить репозитории, чтобы пакеты стали доступны. Для опытных пользователей это, конечно, не вопрос, но новичкам это даётся нелегко. Ниже - краткий рецепт по этому поводу.

Итак, есть у вас к примеру несколько скачанных ISO-образов с репозиториями Debian, и нужно добавить репозитории для использования при установке программ.
Для ISO-файлов создадим точки монтирования вида /mnt/setup/disс-X где X является номером диска. В консоли даём команду:
$ sudo mkdir /mnt/setup/disс-1
или
# mkdir
/mnt/setup/disс-1
И так для каждого файла ISO. После того, как мы создали точки монтирования, приступаем к монтированию самих ISO-образов с репозиториями.

Допустим, что вы установили базовую систему с CD/DVD, но у вас только один диск, а репозитории в виде ISO-файлов хранятся на диске с NTFS. Возникает вопрос: как из базовой системы примонтировать DVD ISO-файлы с репозиториями Debian?

Например, файлы с репозиториями лежали в каталоге C:\debianlinux\debian-50r0-i386-DVD-1.iso Теперь же этот C:\ в Linux называется иначе, и мы ранее его примонтировали, скажем, к точке монтирования /mnt/windows Для того, чтобы примонтировать эти ISO-образы, нам нужно дать в данном примере такую команду от суперпользователя:
mount -t iso9660 /mnt/windows/debianlinux/debian-50r0-i386-DVD-1.iso /mnt/setup/disс-1 -o loop
Красным выделены параметры, остальная цветовая подсветка поясняет, как сконструировать полный путь до репозитория. Обращаю внимание горячих и нетерпеливых: слэши в Linux/UNIX отличаются от Windows и ставятся в другую сторону: /

Далее для всех остальных дисков всё тоже самое:
mount -t iso9660 /mnt/windows/debianlinux/debian-50r0-i386-DVD-2.iso /mnt/setup/disс-2 -o loop
mount -t iso9660 /mnt/windows/debianlinux/debian-50r0-i386-DVD-3.iso /mnt/setup/disс-3 -o loop

.......
Дальше можно сделать простой скрипт:
#! /bin/sh
sudo mount -t iso9660 /mnt/wd250Gb/debian-40r0-i386-DVD-1.iso /mnt/setup/etchdisk-1 -o loop
sudo mount -t iso9660
/mnt/wd250Gb/debian-40r0-i386-DVD-2.iso /mnt/setup/etchdisk-2 -o loop
sudo mount -t iso9660
/mnt/wd250Gb/debian-40r0-i386-DVD-3.iso /mnt/setup/etchdisk-3 -o loop

После этого надо дать скрипту права исполнения:
sudo chmod 755 ./debiandvd
eсли скрипт лежит в текущем каталоге.
Либо автоматизировать этот процесс так:
for ii in 1 2 3; do sudo mount -t iso9660 /mnt/wd250Gb/debian-40r0-i386-DVD-ii.iso /mnt/setup/disk-ii -o loop; done
Далее идём редактировать файл /etc/apt/sources.list с помощью nano:
# nano /etc/apt/sources.list
Для ISO-образов формат файла несколько отличается от формата для сетевых репозиториев:
deb http://ftp.debian.org/debian/ lenny contrib main non-free <--- это для сетевого репозитория
deb file:///mnt/setup/disс-1 lenny contrib main non-free <--- это для ISO-репозитория
Структура такова:
  • Фиолетовым выделен полный путь, с которого будут закачиваться пакеты, в данном случае это file:///mnt/setup/disс-1 и нужно добавить строки с другими номерами дисков, например file:///mnt/setup/disс-2 и file:///mnt/setup/disс-3 Обращаю внимание - слэшей именно три. Так надо.
  • Далее идёт версия дистрибутива - она должна совпадать с той, которую вы только что установили: lenny, squeeze, wheezy или другое (должно быть написано на CD/DVD диске или в имени ISO-файла, например debian-lenny-i386-DVD-3.iso).
  • Последним идут типы репозиториев: contrib main non-free подключайте всё сразу.
После этого надо выполнить
sudo aptitude update
и ставить появившиеся приложения через удобную графическую оболочку.

21 комментарий:

  1. Я, обычно, apt-cdrom пользую на добавление, причём в стандартный /cdrom и потом монтировать/размонтировать по необходимости.

    Но так, в принципе, можно даже в fstab добавить навечно и пользовать не задумываясь.

    ОтветитьУдалить
  2. 2 Roman Khimov пишет...
    Я, обычно, apt-cdrom пользую на добавление, причём в стандартный /cdrom
    Это да, но интересно один раз примонтировать все ISOшники сразу.

    Но так, в принципе, можно даже в fstab добавить навечно и пользовать не задумываясь.
    В fstab там уже много чего добавлено "навечно". Но да, можно.

    ОтветитьУдалить
  3. for i in 1 2 3; do sudo mount -t iso9660 /mnt/wd250Gb/debian-40r0-i386-DVD-$i.iso /mnt/setup/etchdisk$i -o loop; done

    А если есть не 3 dvd, а 14 (или сколько их сейчас) cd, то вместо "1 2 3" использовать seq(1).

    ОтветитьУдалить
  4. Откровенно говоря, лично мне пррт подобной постановке задачи первое что пришло бы в голову - создать свой репозиторий.
    Вся эта суета с дисками/образами интересна (на мой взгляд) исключительно в плане экономии места на диске.
    В данном примере этой экономии нет, может проще было новичкам показать как создавать свой репозиторий? Пример наверное даже проще вышел бы - благо там пара команд не считая копирований содержимого дисков.

    ОтветитьУдалить
  5. Подозреваю, что debian-40r0 -- ни разу не unstable.

    В данном примере этой экономии нет
    Экономия есть, если всё равно приходится хранить на диске официальные iso-образы (например, для того, чтобы можно было их прожигать по мере надобности, расшарить по локальной сети на несколько машин и проч.), а тут ещё пользоваться ими можно "на лету", экономя трафик (и время, если Инет медленный) -- особенно если получившийся репозитарий на несколько машин расшарить.

    А прописать в /etc/fstab действительно удобнее.

    ОтветитьУдалить
  6. 2 Roman Cheplyaka пишет...
    for i in 1 2 3
    Вообще да, это точно. Поправлю.

    2 Анонимный пишет...
    Откровенно говоря, лично мне пррт подобной постановке задачи первое что пришло бы в голову - создать свой репозиторий.
    Хочется просто монтировать исошники без лишних телодвижений.


    2 асоциальный психопат пишет...
    Подозреваю, что debian-40r0 -- ни разу не unstable.
    Бес попутал :-) Исправлено.

    Экономия есть, если всё равно приходится хранить на диске официальные iso-образы
    В общем, на это весь расчёт. Кому-то удобно, кому-то нет.

    ОтветитьУдалить
  7. Я несовсем выздоровел или можно на одно луп-устройство по три диска за раз оптом навешивать?

    ОтветитьУдалить
  8. На одно устройство наверное нельзя, но через -o loop можно монтировать сколько угодно. ИМХО создаются несколько лупбэк девайсов, но если есть желание - можете проверить, при помощи lsof например :-).

    ОтветитьУдалить
  9. Вообще через -o loop по умолчанию до 8 устройств можно монтировать, если конечно ядро не подшаманить в этом плане

    ОтветитьУдалить
  10. Я сделал репозиторий из 6 DVD для Ubuntu в локальной сети по http следующим образом: последовательно скопировал в mc содержимое каждого диска в одну папку, доступную для web-сервера.

    ОтветитьУдалить
  11. loop-устройств, вроде бы, может быть не более 8...
    И ещё один очень важный момент: для бинарников (по крайней мере, etch) в apt-sources.list дисты прописываются следующим образом:
    deb file:/mnt/deb-40r3-i386-1 stable main contrib
    deb file:/mnt/deb-40r3-i386-2 stable main
    deb file:/mnt/deb-40r3-i386-3 stable main
    то есть, contrib только для ПЕРВОГО ДВД.
    А так, да, рабтает замечательно. Очень удобно для подключения свяких тестируемых/нестабильных репозиториев. Можно юзать и для вариантов: накатить пакеты из убунту поверх дебиана, итд, но это уже может быть чревато....

    ОтветитьУдалить
  12. Вся эта штука с дисками конечно хорошо
    но вот как сделать репозиторий только из нужных пакетов и их зависимостей
    например для установки на несколько однотипных машин(при том что репозиторий будет хранится на ftp сервере)

    ОтветитьУдалить
  13. Уважаемый, virens, а можешь написать заметку как сделать *buntu-репозиторий 6dvd -> hdd ? Т.е. слить все диски в один pool и радоваться жизни. Чтобы можно было обновлять пакеты по инету.
    Мне удалось найти лишь одну статью на эту тему, но она плохо написана и нужные заклинания не работают: http://whylinux.ru/2008/01/11/repozitorii-v-ubuntu-chast-1-ispolzovanie-mnogodiskovyx-srezov-na-cddvd/

    ОтветитьУдалить
  14. Дошёл до этого сам, делал практически так же, но мне кажется, лучшей идеей будет монтировать образы сразу в ro ( -o loop,ro ), нежели выдавать права постфактум.

    ОтветитьУдалить
  15. 2 Анонимный пишет...
    Уважаемый, virens, а можешь написать заметку
    Я бы с радостью, но у меня очень тяжело со временем: мне нужно защищать кандидатскую.

    В будущем вполне может быть. И спасибо за ссылку!

    ОтветитьУдалить
  16. Уважаемый, virens.
    У меня, при током методе, apt ругается на ненадёжность источника пакетов.
    Не подскажеш как импортировать ключи или как-то иначе исправить ситуацию.

    ОтветитьУдалить
  17. А вот такой вопрос. Если наоборот, имеются диски с репозиторием, как их можно закинуть на винт и устанавливать с винта, чтобы каждый раз диски не пихать туда-сюда? Пришли 5 ДВД с Дебианом, буду устанавливать на несколько компов по локалке.

    ОтветитьУдалить
  18. Исошники смонтировал стандартной прогой. Но вот долго мучился, чтобы менеджер обновлений добавил apt и потом обновлялся не выдавая ошибок. В итоге в менеджере написал такое вот (в добавлении apt):
    deb file:///home/legos/ubuntu-11_04-2011-05-02-complete-amd64-dvd2_iso natty contrib main multiverse restricted universe
    И так далее для всех дисков (всего 9)

    ОтветитьУдалить
  19. Как поднять репозиторий локальный имея лишь 8 двд дисков дебиана?

    Спасибо.

    ОтветитьУдалить
  20. Дебианьщик, напиши как в локалке смонтировать на одной машине эти dvd диски так, что бы потом можно было всю локалку на репозитарий сервера настроить и без интернета использовать весь репозитарий дебиана заложенный в этих dvd дисках.

    8 debian dvd squeeze discs.

    Спасибо.

    ОтветитьУдалить
  21. Собрал локальный репозиторий Debian squeeze из пакетов которые устанолены в текущей системе с помощью reprepro, получил то что запрашивал ls-1 07.09.2008, 18:18:00

    позже добавил в этот репозиторий пакеты с 8 DVD дисков Debian-а и получил то, что запрашивали: Анонимный 13.03.2012, 16:48:00 и Анонимный 13.03.2012, 17:51:00

    информацию по теме и по использованию reprepro взял тут:
    Создание локального репозитория

    Надеюсь кому поможет...

    ОтветитьУдалить