Дисковые репозитории Debian
После установки Debian с диска есть два пути установки программ. Первый – это установка и настройка стандартных сетевых репозиториев. Второй подразумевает использование дисков как репозиториев. В этой заметке рассмотрю второй вариант.
Например, хочу установить пакет btop на свежей системе, установленной с DLBD:
$ sudo apt install btop
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
btop
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/465 kB of archives.
After this operation, 1 416 kB of additional disk space will be used.
Media change: please insert the disc labeled
'Debian GNU/Linux 12.7.0 _Bookworm_ - Official amd64 DLBD Binary-1 with firmware 20240831-10:40'
in the drive '/media/cdrom/' and press [Enter]
APT по-умолчанию настроен на использование диска и просит вставить в дисковод конкретный диск. В данном случае, DLBD-1. Если у Вас есть дисковод, который позволит читать оптические Blu-Ray диски, то всё становится предельно просто. Нужно только вставить диск и нажать Enter.
А вот с USB-дисками всё чуть сложнее, их надо сначала смонтировать. Если это первое монтирование, то создадим папку /media/cdrom. Это общепринятая точка монтирования для оптических дисков, USB-флешек и даже ISO-образов.
$ mkdir -p /media/cdrom
Теперь подключаю флешку и монтирую её в /media/cdrom. Чтобы не заморачиваться с поиском диска, монтирую его по названию. Это позволяет избежать ошибки. И да, \x20, то есть пробелы, именно так и кодированы в /by-label.
$ sudo mount -o ro \
/dev/disk/by-label/Debian\\x2012.7.0\\x20amd64\\x201 \
/media/cdrom
После монтирования просто выполняю ту же операцию apt install.
$ sudo apt install btop
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
btop
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/465 kB of archives.
After this operation, 1 416 kB of additional disk space will be used.
Get:1 cdrom://[Debian GNU/Linux 12.7.0 _Bookworm_ - Official amd64 DLBD Binary-1 with firmware 20240831-10:40] bookworm/main amd64 btop amd64 1.2.13-1 [465 kB]
Selecting previously unselected package btop.
(Reading database ... 28402 files and directories currently installed.)
Preparing to unpack .../b/btop/btop_1.2.13-1_amd64.deb ...
Unpacking btop (1.2.13-1) ...
Setting up btop (1.2.13-1) ...
Processing triggers for mailcap (3.70+nmu1) ...
Processing triggers for man-db (2.11.2-2) ...
Установка успешна. А теперь установим, например, apkverifier. Сама утилита не играет роли, но я точно знаю, что она находится на 2-м диске из набора DLBD.
$ sudo apt install apkverifier
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package apkverifier
Ожидаемо, пакет не найден. Если заглянуть в source.list, то там будет только первый диск DLBD:
$ cat /etc/apt/sources.list
deb cdrom:[Debian GNU/Linux 12.7.0 _Bookworm_ - Official amd64 DLBD Binary-1 with firmware 20240831-10:40]/ bookworm contrib main non-free-firmware
Ага, только DLBD Binary-1, т.е. DLBD-1. Чтобы устанавливать пакеты с DLBD-2, нужно добавить его как репозиторий. Для этого поможет apt-cdrom, но сначала размонтирую DLBD-1 и смонтирую DLBD-2.
$ sudo umount /media/cdrom
$ sudo mount -o ro \
/dev/disk/by-label/Debian\\x2012.7.0\\x20amd64\\x202 \
/media/cdrom
Отдельно отмечу цифру 2 в конце строки /dev/disk/by-label. Это точно 2-й диск.
Теперь воспользуемся apt-cdrom для добавления информации о репозитории.
$ sudo apt-cdrom add -m
Using CD-ROM mount point /media/cdrom/
Identifying... [c41cb969b7649d0341d77b739680f305-2]
Scanning disc for index files...
Found 3 package indexes, 0 source indexes, 0 translation indexes and 0 signatures
Found label 'Debian GNU/Linux 12.7.0 _Bookworm_ - Official amd64 DLBD Binary-2 with firmware 20240831-10:40'
This disc is called:
'Debian GNU/Linux 12.7.0 _Bookworm_ - Official amd64 DLBD Binary-2 with firmware 20240831-10:40'
Reading Package Indexes... Done
Writing new source list
Source list entries for this disc are:
deb cdrom:[Debian GNU/Linux 12.7.0 _Bookworm_ - Official amd64 DLBD Binary-2 with firmware 20240831-10:40]/ bookworm contrib main non-free-firmware
Repeat this process for the rest of the CDs in your set.
Диск добавлен! Флаг -m нужен для того, чтобы apt-cdrom не (раз)монтировал диски по своей прихоти. Мне удобнее работать именно с ним. Дополнительную информацию о флагах, как и всегда, можно найти в man apt-cdrom.
Проверяю, что теперь apkverifier устанавливается.
$ sudo apt install apkverifier
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
apkverifier
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/1 122 kB of archives.
After this operation, 3 151 kB of additional disk space will be used.
Get:1 cdrom://[Debian GNU/Linux 12.7.0 _Bookworm_ - Official amd64 DLBD Binary-2 with firmware 20240831-10:40] bookworm/main amd64 apkverifier amd64 0.0~git20191015.7330a51-11+b4 [1 122 kB]
Selecting previously unselected package apkverifier.
(Reading database ... 28440 files and directories currently installed.)
Preparing to unpack .../apkverifier_0.0~git20191015.7330a51-11+b4_amd64.deb ...
Unpacking apkverifier (0.0~git20191015.7330a51-11+b4) ...
Setting up apkverifier (0.0~git20191015.7330a51-11+b4) ...
Processing triggers for man-db (2.11.2-2) ...
Всё получилось. Чтобы не гадать, где именно на дисках располагается пакет, можно прибегнуть, опять же, к 2-м путям. Первый – добавить все 3 диска релиза с помощью apt-cdrom. Тогда apt сам подскажет, какой диск нужно смонтировать.
Второй более мудрёный. Если Вы уверены, что нужный пакет где-то на дисках, то проверить где он поможет онлайн-утилита для поиска пакетов. У меня эта утилита работает через раз, поэтому покажу альтернативной подход.
Вот список пакетов на дисках DLBD. Скачаем все списки и проверим, где именно находится пакет apkverifier:
$ wget -q --show-progress \
https://cdimage.debian.org/debian-cd/current/amd64/list-dlbd/debian-12.7.0-amd64-DLBD-{1,2,3}.list.gz
debian-12.7.0-amd64 100%[===================>] 233,65K --.-KB/s in 0,1s
debian-12.7.0-amd64 100%[===================>] 334,60K --.-KB/s in 0,04s
debian-12.7.0-amd64 100%[===================>] 1,79K --.-KB/s in 0s
$ zgrep apkverifier *.gz
debian-12.7.0-amd64-DLBD-2.list.gz:apkverifier_0.0~git20191015.7330a51-11+b4_amd64.deb
debian-12.7.0-amd64-DLBD-2.list.gz:golang-github-avast-apkverifier-dev_0.0~git20191015.7330a51-11_all.deb
Таким образом подтверждаем, что он есть на DLBD-2.
Журнал изменений
1 октября 2024 г.: добавил --show-progress для wget вместо последующего ls -1.