Три поля описания решают, подойдёт ли пакет этой машине.
Version: 1.0-1 — версия программы, а после последнего дефиса — номер сборки пакета. У tree версия длиннее, 2.1.1-2ubuntu3.24.04.2: программа 2.1.1, остальное — сборка Ubuntu. Версии сравнивают строкой целиком.
Архитектура говорит, под какой процессор собран пакет. all ставят на любой: внутри только сценарии и текст. У tree и nginx архитектура amd64 — в них машинный код, она видна и в имени архива tree_…_amd64.deb. Архитектуру машины печатает dpkg --print-architecture, здесь — amd64.
Зависимость в поле Depends называет пакеты, которые должны стоять в системе. Знак в скобках задаёт версию:
| Запись | Что подходит |
|---|---|
lab-pkg-data (= 1.0-1) |
ровно версия 1.0-1 |
libc6 (>= 2.38) |
версия 2.38 или новее |
iproute2 |
любая версия |
dpkg сверяет зависимость с базой пакетов. Архив зависимости в соседнем файле требование не выполняет, пока его не установили.
В системе стоит lab-pkg-data 2.0-1. Ты ставишь архив lab-pkg-report с полем Depends: lab-pkg-data (= 1.0-1). Выполнено ли требование?
-
dpkg сверяет зависимость с базой пакетов. Архив в соседнем файле в базу не попадает, пока его не установили.
-
Знак
=требует ровно указанную версию. «Эта или новее» записывают как>=.
(= 1.0-1) требует установленный lab-pkg-data ровно этой версии. С 2.0-1 dpkg оставит lab-pkg-report ненастроенным и напишет, какая зависимость не выполнена.
Главное в шаге
-
Версию пакета читают из поля
Versionстрокой целиком. -
allподходит любому процессору,amd64— только машинам этой архитектуры. -
Dependsсверяется с базой пакетов: нужен установленный пакет подходящей версии.