07.06.2007

Копия Ubuntu или Debian DVD на локальном диске

Недавно дал человеку DVD Ubuntu 7.04. Сегодня он мне пожаловался, что надоело туда-сюда этот DVD вставлять-вынимать и спросил нельзя ли как-то его полностью слить на HDD. Разумеется можно.

Далее встаёт вопрос как это сделать правильно. Если порыться в Debian Policy, то в Главе 9 можно найти параграф, говорящий о том, что все файлы и директории, инсталлируемые пакетами Debian должны соответствовать File system Hierarchy Standard (FHS), version 2.3. В нашем случае, разумеется, этим можно принебречь, но мне кажется следовать стандартам в случаях когда это не мешает делу и не усложняет процесс - хорошая привычка. Когда приходится иметь дело с десятками Debian-серверов и рабочих станций, волей-неволей приходишь к мысли, что неплохо было бы, если бы всё везде было сделано одинаково. А чтобы делать везеде всё одинаково, неплохо бы для начала уяснить себе как оно должно быть.

Итак, какие у нас есть варианты для размещения файлов с DVD-диска?

Домашняя директория пользователя

Явно неправильное решение, поскольку /home предназначена для хранения файлов конкретных пользователей, а наш набор информации имеет явно общесистемное значение.

Специально созданная директория /ubuntu

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

Директория /srv/ubuntu-7.04

В стандарте описана директория /srv. Перевожу:

/srv содержит данные, специфичные для конкретной настройки и используемые службами системы

Ну, как бы не совсем подходит, поскольку под службами тут понимаются http, ftp и т.п. (это ясно далее по тексту). Но кто сказал, что завтра мы не надумаем сделать из этого DVD локальное зеркало? Очень даже может такое быть.

Ну вот и славно. Далее всё довольно просто. Достаточно скопировать содержимое диска в эту директорию, добавить её в список источников пакетов а DVD из списка удалить:

$ sudo mkdir /srv/ubuntu-7.04
$ sudo cp -rv /media/cdrom0/* /srv/ubuntu-7.04
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
$ echo "deb file:///srv/ubuntu-7.04 feisty main restricted" | sudo tee /etc/apt/sources.list
$ cat /etc/apt/sources.list.bak | grep -v 'cdrom:' | sudo tee -a /etc/apt/sources.list

Здесь тонкость в том, что строчка с новым источником должна обязательно быть самой первой в списке.

Теперь нужно обновить списки пакетов и всё. Готово.

Комментарии

14.07.08 10:28 zavrsoft комментирует:

Фи, какой жестокий метод! Я сделал так: .isoшки дисков Дебиана положил в некоторую папку, а в /etc/mc/mc.menu добавил, начиная со второй строки:
shell_patterns=0
! Mount Debian DVD 1
mount -o loop -t iso9660 ~/debian_dvd/debian-40r3-i386-DVD-1.iso /cdrom/
! Mount Debian DVD 2
mount -o loop -t iso9660 ~/debian_dvd/debian-40r3-i386-DVD-2.iso /cdrom/
! Mount Debian DVD 3
mount -o loop -t iso9660 ~/debian_dvd/debian-40r3-i386-DVD-3.iso /cdrom/

+ ! t t
@ Do something on the current file
CMD=%{Enter command}
$CMD %f

И, когда мне надо смонтировать диск в привод, я в MC жму F2 и выбираю нужный пункт. То же самое можно организовать и на .sh файлах.