Создание deb пакетов

6.1 Введение

Если чтение всей документации разработчиков слишком утомительно для Вас, то
сначала прочтите эту главу и потом наслаждайтесь всей мощью системы Debian,
используя дистрибутивы testing/unstable :-).

6.1.1 Основные инструменты

     dselect   – инструмент для управления пакетами с меню-подобным интерфейсом (высокоуровневый инструмент)
     dpkg      – инсталлятор пакетов (основная утилита для работы с файлами-пакетами)
     apt-get   – инсталлятор пакетов (утилита для работами с репозитариями пакетов,
                       интерфейс командной строки к системе APT)
     tasksel   – инсталлятор задач (набора пакетов)
     aptitude  – инсталлятор пакетов (пакеты & задачи, интерфейс к APT на базе ncurses)
     deity     – альтернатива ncurses-интерфейса к APT
     synaptic, gsynaptic – графические утилиты для работы с APT

Данные инструменты принадлежат разным уровням работы с пакетами.
работает над системой APT (команда ) и
программой .

APT использует файлы для отслеживания
доступных пакетов, в то время как для этих целей использует
файл . Если Вы установили пакеты
непосредственно используя программу или подобными
средствами (), то перед тем, как запускать команды
dselect select, tasksel или dpkg -l, не
забудьте обновить файл через пункт меню
pdate программы или, запустив в командной
строке команду «dselect update«.

Так как пакеты имееют зависимости, программа автоматически
при установке пакета выбирает к установке дополнительные пакеты, от которых
устанавливаемый пакет зависит (depends), но она не трогает
пакеты, связанные с ним зависимостями «рекомендует»
(recommends) и «предлагает»
(suggests). В то же время программа
через меню предлагает установить пакеты, основываясь на зависимостях вида
«зависит» (depends), «рекомендует»
(recommends) и «предлагает»
(suggests). Программа имеет опцию для
автоматической установки всех пакетов, выбираемых этими видами зависимостей.
Смотрите .

6.1.2 Удобные инструменты

     apt-cache         - проверка локального кэша пакетов
     dpkg-reconfigure  - повторная конфигурация уже установленного пакета (если он использует debconf)
     dpkg-source       - управляет исходными файлами пакета
     dpkg-buildpackage - aвтоматизирует сборку пакета
     ...

8.5 Как определить пакет, которому принадлежит определённый файл?

Чтобы определить, в каком пакете содержится файл с именем foo, выполните одну из следующих команд:

dpkg —search имя_файлаЭта команда ищет имя_файла в установленных пакетах. (Это, в настоящий момент, эквивалентно поиску всех файлов с расширением .list в каталоге /var/lib/dpkg/info/ и выводу имён всех пакетов, которые содержат заданное имя файла и отклонения (diversions).)Более быстрая альтернатива этому — программа dlocate.
dlocate -S имя_файла

zgrep foo Contents-ARCH.gzЭта команда ищет файлы, содержащие в своих полных именах путей подстроку foo. Файлы Contents-ARCH.gz (где ARCH представляет нужную архитектуру) расположены в основных каталогах пакетов (main, non-free, contrib) на FTP-сайте Debian (то есть, в /debian/dists/jessie). Файл Contents относится только к тем пакетам, что расположены в структуре подкаталогов того же каталога, где находится и он сам. Поэтому, чтобы найти пакет, содержащий файл foo, пользователю нужно искать более чем в одном файлеContents.Преимущество этого метода над dpkg —search состоит в том, что будут найдены файлы в тех пакетах, которые могут быть не установлены в вашей системе.

apt-file search fooЕсли вы установите пакет apt-file, то приведённая выше команда выполнит поиск файлов, содержащих в своих полных путях подстроку или регулярное выражение foo. Преимущество этой команды перед приведёнными ранее в том, что вам не нужно будет получать файлы Contents-ARCH.gz, так как это будет сделано автоматически для всех источников, описанных в /etc/apt/sources.list, при запуске (с правами суперпользователя) команды apt-file update.

-Просмотр списка установленных пакетов

Что бы посмотреть список установленных пакетов можно использовать одну из команду:

А если нужно посмотреть и версии:

-Просмотр доступных версий пакета в репозиториях

-Обновление списка доступных пакетов

-Определить, какие пакеты зафиксированы через aptitude

-Поиск проблемных пакетов

Следующая команда покажет пакеты установленные частично (Half-Installed), настройка которых не удалась (Failed-Config), а также все пакеты в ошибочных состояниях:

-Наличие новых версий установленных пакетов:

-Установка конкретной версии пакета:

При этом версия должна указываться именно такая, как она определяется через apt-cache showpkg php5.

-Удаление «мёртвых» пакетов:

После установки пакета, с ним тянется зависимости — другие пакеты. Но если вы удалили пакет, как избавится от этих установленных по зависимости пакетов? Нужно выполнить такие команды:

рекомендуется (использовать периодически) для очистки от пакетов .deb которые больше не используются.

удаляет неудалённые зависимости от уже удалённых пакетовТак же можно чистить папку архива пакетов /var/cache/apt/archives/

-Поиск пакета, содержащего нужный файл

-Проверить зависимости

— От каких пакетов зависит нужный пакет

apt-get clean (и apt-get autoclean)

(необходимы привилегии root)

С помощью этой команды удаляются все архивы, установленные в вашей системе. Всякий раз, когда вы устанавливаете приложение, оно будет загружено и его пакет DEB будет помещен в директорий /var/cache/apt/archives/. Данная команда удаляет эти пакеты и освобождает место.

apt-get clean
apt-get autoclean

Относительно : с помощью этой команды удаляются только те архивы, которых уже нет в репозитариях, и сохраняются те, которые в данный момент в репозитариях присутствуют. Эта команда полезна, если вы хотите избавиться от старых архивов, которые были обновлены, но обновленные архивы хотите на всякий случай сохранить. Для того, чтобы увидеть, сколько места занимают архивы, используйте команду (аргумент указывает, что результат нужно выдать в формате, удобном для чтения):

du -h /var/cache/apt/archives/

Понимание управления пакетами Debian

В управлении пакетами Debian используется несколько разнообразных инструментов управления пакетами, таких как apt-get, aptitude, dpkg, apt-file, dselect, taskses и gdebi. программного обеспечения в системе. Эти инструменты известны как менеджеры пакетов. Некоторые, если не все, из этих инструментов используют низкоуровневый инструмент dpkg для обеспечения высокоуровневой функциональности.Команда dpkg позволяет вам легко устанавливать и удалять программное обеспечение, а также управлять и обновлять программное обеспечение в бесшовной форме.

Как установить программное обеспечение / пакет

Вы можете использовать dpkg для установки программного обеспечения с помощью следующей команды. Эта команда также может обновить пакет, если он уже установлен.

dpkg -i package_name.debВышеупомянутая команда требует, чтобы на вашем компьютере был физический файл .deb .

Список установленных пакетов

Чтобы перечислить или отобразить установленные пакеты в дистрибутиве Debian, вы можете использовать следующие команды:

dpkg -l search_pattern

Если вы хотите перечислить все установленные пакеты, просто опустите .

dpkg -l

Удалить установленные пакеты

Если вы уже установили пакет, но больше не используете его, вы можете использовать следующую команду для его удаления. Эта команда удаляет весь пакет, кроме файлов конфигурации.

dpkg -r package_name.deb

Список содержимого пакета

Вы можете использовать приведенные ниже команды для отображения содержимого пакета на вашем компьютере Linux:

dpkg —contents package_name.debВы также можете использовать -cвместо —contents.

dpkg -c package_name.deb

Проверьте, установлен ли пакет или нет

Предполагая, что вы хотите проверить, установлен ли на вашем компьютере определенный пакет, используйте следующую команду для проверки.

dpkg -s package_name.deb

Одновременная установка нескольких пакетов

Если у вас есть несколько файлов deb, которые вы хотите установить, вы можете запустить следующую команду, чтобы установить их все за один раз

Обратите внимание, что для этого вам нужно поместить все файлы .deb в одну и ту же папку.

dpkg -R —install /deb-files-location /

Распаковать пакет deb

Иногда вам может понадобиться распаковать пакет deb, чтобы вы могли вносить изменения в свои файлы. Используйте эту команду для распаковки файла deb.

dpkg —unpack package_name.deb

Переконфигурировать пакет Unpacked deb

После внесения изменений в файлы используйте эту команду, чтобы настроить и переупаковать его в файл deb для установки.

dpkg —configure pacakge_name

Нужна дополнительная информация о командах dpkg?

Если вы хотите узнать больше о командах dpkg, вы можете использовать приведенную ниже команду. Он отображает подробную информацию о командах и параметрах dpkg.

Формат deb-пакета

Краеугольный камень пакетной системы Debian — это deb-пакет (см. deb(5)), представляющий из себя архив формата , внутри которого содержится три файла:
1. debian-binary — текстовый файл, содержащий версию формата deb-пакета, в данный момент это 2.0. Программы, работающие с deb-пакетами, должны читать только первую строку этого файла и не падать, если минорная версия вдруг поменяется (например, станет 2.1).
2. control.tar.gz — служебная информация о пакете, скрипты, вспомогательные файлы (см deb-control(5)). Должен содержать только файлы, единственная папка, которая может присутствовать — «.» (текущая директория). В этот архив обязательно должен входить файл control, его минимальное содержимое рассмотрим чуть ниже.
3. data.tar — собственно файлы, устанавливаемые в систему. Чаще всего этот файл сжат каким-нибудь архиватором (поддерживаются расширения .gz, .xz, .bz2, .lzma), чаще всего в архивах встречается data.tar.gz.
Указанный порядок следования файлов в архиве обязателен. Если в этом архиве требуется разместить еще какие-нибудь файлы (не представляю, зачем это может кому-нибудь понадобиться), они должны находиться перед data.tar.gz, т.е. последний файл в архиве всегда data.tar. Но если сообщество когда-нибудь решит добавить в формат deb еще файлы, они будут помещены после data.tar.

Файл control в архиве control.tar.gz описывает назначение, версию и зависимости пакета, его формат более-менее подробно описан в deb-control(5). Пересказывать всю справку сейчас не буду, опишу лишь минимальное содержимое, необходимое для взаимодействия с инфраструктурой dpkg:

Package: имя пакета
Version: строка версии (при выборе политики назначения версий следует придерживаться deb-version(5))
Maintainer: John Doe <[email protected]> (человек, поддерживающий пакет, а не автор программы)
Description: короткое описание пакета
 Длинное описание,  на несколько строк. Каждая строка, входящая в
 длинное описание,  должна начинаться с пробела

ПРИМЕРЫ

Чтобы
перечислить
пакеты,
относящиеся
к
редактору
vi:
dpkg -l ’*vi*’

Чтобы
посмотреть
на записи
о двух
пакетах в
файле
/var/lib/dpkg/available:
dpkg —print-avail elvis vim | less

Вручную
просмотреть
список
пакетов:
less /var/lib/dpkg/available

Удалить
установленный
пакет elvis:
dpkg -r elvis

Чтобы
установить
пакет,
сначала
нужно
найти его
в архиве
или на CDROM.
Файл «available»
показывает,
что пакет
vim
находится
в секции
«editors»
(«редакторы»):

cd /cdrom/hamm/hamm/binary/editors
dpkg -i vim_4.5-3.deb

Для
получения
локальной
копии
состояний
выбора
пакетов:
dpkg —get-selections >myselections

Затем
вы можете
перенести
этот файл
на другой
компьютер
и
установить
его там с
помощью:
dpkg —set-selections <myselections

Заметьте,
что при
этом
ничего не
будет ни
установлено,
ни
удалено,
просто
будут
заданы
состояния
выбора
пакетов.
Для того,
чтобы на
самом
деле
установить
запрошенные
пакеты,
вам
понадобится
другая
программа.

Обычно
dselect(8)
предоставляет
более
удобный
способ
изменить
состояния
выбора
пакетов.

Перепаковка пакета

Пожалуй, теперь наступил момент применить свежеполученные знания на практике :) Часто возникает следующая проблема: из некоего источника поступил пакет с некорректными зависимостями, например, требуется устаревший пакет, отсутствующий в системе и всех репозиториях, но доподлинно известно, что другой, уже установленный пакет предоставляет нужную функциональность. В скачанном пакете требуется изменить файл control, убрав или исправив зависимость. Правильно было бы скачать и распаковать исходник пакета (apt-get source), произвести необходимые изменения в скриптах сборки, установить все необходимые для пересборки библиотеки и окружение и т.д. и т.п., но для частного использования (т.е. без распространения по репозиториям) достаточно просто распаковать пакет, изменить необходимые файлы и запаковать обратно. Проиллюстрирую последовательность действий на примере невинного пакета hello:

$ aptitude download hello
Get:1 http://yum.fireground.ru/ubuntu/mirror/ maverick/main hello i386 2.5-1 
Fetched 34.4kB in 0s (824kB/s)
# да-да, я сижу под убунтой и описываю debian
# распаковать содержимое пакета в папку hello (если не существует, будет создана):
$ dpkg-deb -x hello_2.5-1_i386.deb hello
# распаковать содержимое control.tar.gz в hello/DEBIAN
$ dpkg-deb -e hello_2.5-1_i386.deb hello/DEBIAN
# что-нибудь поменять в control, например, версию пакета:
$ sed -i 's/Version: .*$/Version: 2.5-1test/' hello/DEBIAN/control 
# собрать новый пакет:
$ fakeroot dpkg -b hello/ .
dpkg-deb: warning: 'hello//DEBIAN/control' contains user-defined field 'Original-Maintainer'
dpkg-deb: building package `hello' in `./hello_2.5-1test_i386.deb'.
dpkg-deb: warning: ignoring 1 warnings about the control file(s)

Пакет собран. Убедиться, в том, что в нем нет ошибок из-за немного нетрадиционного способа сборки, можно с помощью программы lintian:

$ sudo aptitude install lintian
...
$ lintian hello_2.5-1test_i386.deb
$ echo $?
0

Всё в порядке!

How to Install Deb Files (Packages) on Ubuntu

27 Января 2021
&vert;

Ubuntu

Deb — это формат установочного пакета, используемый всеми дистрибутивами на основе Debian.

Хранилища Ubuntu содержат тысячи пакетов DEB , которые могут быть установлены либо из Ubuntu Software Center или из командной строки с помощью и утилиты.

Многие приложения не включены в Ubuntu или какие-либо сторонние репозитории. Эти приложения необходимо загрузить с веб-сайтов разработчика и установить вручную. Будьте особенно осторожны при установке пакетов deb из неофициальных источников.

Скачивание файлов deb 

В целях демонстрации мы загрузим и установим deb-файл TeamViewer . TeamViewer — это комплексное решение для удаленной поддержки, совместного использования рабочего стола, онлайн-встреч и передачи файлов между компьютерами.

Запустите свой веб-браузер и перейдите на страницу загрузки TeamViewer для Linux . Загрузите пакет deb, щелкнув ссылку для загрузки Ubuntu и Debian.

Если вы предпочитаете терминал, вы можете загрузить файл deb с помощью или :

Установка файлов deb из командной строки 

Когда дело доходит до установки пакетов deb из командной строки, в вашем распоряжении несколько инструментов. В следующих разделах мы покажем вам , как использовать , и утилиты для установки пакетов DEB.

Установка файлов deb с помощью  

— это утилита командной строки для установки, обновления, удаления и иного управления пакетами deb в Ubuntu, Debian и связанных дистрибутивах Linux. Он был представлен в Ubuntu 14.04 и сочетает в себе наиболее часто используемые команды из и .

Чтобы установить локальные пакеты deb, вам необходимо указать полный путь к файлу deb. Если файл находится в вашем текущем рабочем каталоге, вместо того, чтобы вводить абсолютный путь, вы можете добавить его перед именем пакета. В противном случае попытается получить и установить пакет из репозиториев Ubuntu.

    Вам будет предложено ввести, чтобы продолжить:

Менеджер пакетов разрешит и установит все зависимости пакетов.

Установка файлов deb с помощью  

это инструмент для установки локальных пакетов deb. По умолчанию он не установлен в Ubuntu, но вы можете установить его с помощью следующей команды:

Чтобы установить пакет deb с типом:

Введите, когда будет предложено, и разрешит и установит пакет deb и все его зависимости за вас.

Установка файлов deb с помощью  

это низкоуровневый менеджер пакетов для систем на базе Debian. Используйте опцию (или ) для установки пакетов deb с .

   В отличие от и , не разрешает зависимости. Если при установке пакетов deb вы получаете какие-либо ошибки зависимостей, вы можете использовать следующую команду для разрешения и установки всех зависимостей пакетов:

Установка пакетов deb с помощью графического интерфейса 

Если вы предпочитаете использовать графический интерфейс, просто загрузите файл deb и откройте его двойным щелчком.

Это откроет центр графического программного обеспечения дистрибутива по умолчанию:

Нажмите кнопку «Установить», и откроется диалоговое окно «Проверка подлинности».

    Введите пароль администратора и нажмите кнопку «Аутентификация».

    Установка может занять некоторое время в зависимости от размера файла и его зависимостей. После установки пакета deb кнопка «Установить» в программном центре Ubuntu изменится на «Удалить».

Вот и все, приложение установлено в вашей системе и вы можете начать им пользоваться.

Мы показали вам, как установить локальные файлы deb в Ubuntu. При установке пакетов из командной строки предпочитайте использовать, поскольку он разрешит и установит все зависимости пакетов.

3. Контрольные суммы, Conffiles

В дополнение к скриптам сопровождающего и управляющим данным, уже упомянутым в предыдущих разделах, архив control.tar.gz пакета Debian может содержать другие интересные файлы:

ar p /var/cache/apt/archives/bash_4.4-2_amd64.deb control.tar.gz | tar -tzf -
./
./conffiles
./control
./md5sums
./postinst
./postrm
./preinst
./prerm

Первый — md5sums — содержит контрольные суммы MD5 для всех файлов пакета. Его главное преимущество заключается в том, что он позволяет dpkg —verify проверять, были ли эти файлы изменены с момента их установки

Обратите внимание, что когда этот файл не существует, dpkg будет генерировать его динамически во время установки (и сохранять его в базе данных dpkg, как и другие контрольные файлы).

conffiles перечисляет файлы пакетов, которые должны обрабатываться как файлы конфигурации. Файлы конфигурации могут быть изменены администратором, и dpkg попытается сохранить эти изменения во время обновления пакета.

По сути, в этой ситуации dpkg ведёт себя максимально разумно: если стандартный файл конфигурации не изменился между двумя версиями, он ничего не делает. Однако, если файл изменился, он попытается обновить этот файл. Возможны два случая: либо администратор не трогал этот файл конфигурации, и в этом случае dpkg автоматически устанавливает новую версию; или файл был изменён, и в этом случае dpkg спрашивает администратора, какую версию он хочет использовать (старую с модификациями или новую, поставляемую с пакетом). Чтобы помочь в принятии этого решения, dpkg предлагает отобразить diff (различия), которые показывает разницу между двумя версиями. Если вы решите сохранить старую версию, новая будет сохранена в том же месте в файле с суффиксом .dpkg-dist. Если вы выбираете новую версию, старая сохраняется в файле с суффиксом .dpkg-old. Другое доступное действие состоит в кратковременном прерывании dpkg для редактирования файла и попытке восстановления соответствующих изменений (ранее идентифицированных с помощью diff).

dpkg обрабатывает обновления файла конфигурации, но при этом регулярно прерывает свою работу, чтобы запросить ввод у администратора. Это может быть трудоёмким и неудобным. К счастью, вы можете указать dpkg автоматически отвечать на эти запросы. Опция —force-confold сохраняет старую версию файла, в то время как —force-confnew будет использовать новую версию. Эти варианты соблюдаются, даже если файл не был изменён администратором, что лишь редко даёт желаемый эффект. Добавление параметра —force-confdef указывает dpkg самостоятельно решать, когда это возможно (другими словами, когда исходный файл конфигурации не был затронут), и использует —force-confnew или —force-confold для других случаев.

Эти параметры применяются к dpkg, но в большинстве случаев администратор будет работать напрямую с программами aptitude или apt. Таким образом, необходимо знать синтаксис, используемый для указания параметров, передаваемых команде dpkg (их интерфейсы командной строки очень похожи).

apt -o DPkg::options::="--force-confdef" -o DPkg::options::="--force-confold" full-upgrade

Эти параметры могут быть сохранены непосредственно в конфигурации apt. Для этого просто напишите следующую строку в файл /etc/apt/apt.conf.d/local:

DPkg::options { "--force-confdef"; "--force-confold"; }

Включение этой опции в файл конфигурации означает, что она также будет использоваться в графическом интерфейсе, таком как aptitude.

И наоборот, вы также можете заставить dpkg задавать вопросы о файле конфигурации. Опция —force-confask указывает dpkg отображать вопросы о файлах конфигурации даже в тех случаях, когда они обычно не нужны. Таким образом, при переустановке пакета с этой опцией dpkg снова задаст вопросы для всех файлов конфигурации, изменённых администратором. Это очень удобно, особенно для переустановки исходного файла конфигурации, если он был удалён, а другая копия недоступна: обычная переустановка не будет работать, поскольку dpkg рассматривает удаление как форму допустимого изменения и, таким образом, не устанавливает нужный файл конфигурации.

apt-get update && apt-get upgrade

(необходимы привилегии root)

Это одностроковая команда, которая обновит список ваших пакетов и выполнит обновление вашей системы. Поскольку для ее выполнения требуются привилегии root, то если ваш дистрибутив — Ubuntu, используйте

Обратите внимание, что вторая команда (после двойного амперсанда) выполняется только в случае, если выполнение первой команды было успешным, поэтому, если по какой-нибудь причине списка обновлений получить не удалось, вторая команда выполняться не будет. Если вы используете тестовый или бета-релиз, используйте вместо нее следующую команду:

sudo apt-get update && sudo apt-get dist-upgrade

Обновления будут получены даже в случае, если они зависят от более новых пакетов.

ВНИМАНИЕ

Это
руководство
предназначено
для
пользователей,
желающих
понять
ключи
командной
строки dpkg,
а также
состояния
пакетов:
здесь это
описано
более
детально,
чем в dpkg —help.

Это
руководство
не
следует

использовать
авторам
пакетов,
которые
хотят
понять,
как dpkg
будет
устанавливать
их пакеты.
В
частности,
описание
того, что
делает dpkg,
когда
устанавливает
и удаляет
пакеты,
частично
неадекватно.
Подробную
информацию
об этом
можно
найти в
рубрике
Система
Управления
Пакетами

в debian-faq в
системе GNU Info.
Информация
по
созданию
пакетов Debian
находится
в рубрике
Средства
Управления
Пакетами
Debian
там же.

apt-cdrom add

(необходимы привилегии root)

Команда добавит CD-ROM к числу источников, откуда можно получать пакеты, так что вы сможете устанавливать с него пакеты. Эта команда особенно полезна, если у вас есть образы ISO, которые вы не хотите записывать на компакт-диск. Для того, чтобы сканировать образы ISO, используйте команду:

apt-cdrom -d=/cdrom add

В результате в директории /cdrom будет смонтирован образ ISO, а затем его содержимое будет добавлено в sources.list

Обратите внимание, что директорий /cdrom должен быть пустым. Для этого вы можете использовать любой пустой директорий:

apt-cdrom -d=/home/USER/mydir

Использование

В APT входит несколько утилит, выполняющих отдельные задачи.

Начиная с версии Ubuntu 16.04 доступна новая утилита , которая содержит наиболее часто используемые команды из и . Утилита предназначена для пользователей, в то время как можно рассматривать как как инструмент более низкого уровня.

apt-get

apt-get это утилита управления пакетами. apt-get требует прав суперпользователя для своей работы.

Основные команды:

  • — Обновить информацию о пакетах, содержащихся в репозиториях.
  • — Установить пакет foo. Скачивание, установка и настройка происходят автоматически. Если для настройки пакета foo нужны дополнительные сведения, будет показан запрос к пользователю.
  • — Обновление пакетов, для которых в репозитории доступны новые версии.
  • — Обновление пакетов, требующих разрешения зависимостей (установка дополнительных или удаление конфликтующих пакетов).
  • — Удаление пакета foo из системы.
  • — Удаление пакета foo и очистка системы от его конфигурационных файлов. Файлы настроек в домашних каталогах пользователей удалены не будут.
  • — Удаление пакета, который более не нужен в системе. Используется для очистки системы от ненужных пакетов. Факт, что пакет более не нужен, определяется следующим образом: если пакет был установлен не сам по себе, а как зависимость для другого пакета, который впоследствии был удалён, значит этот пакет тоже уже не нужен в системе.
  • — Получение исходных текстов пакета foo.
  • — Получение зависимостей для сборки пакета foo.

Починка базы пакетов

apt-get также используется для устранения сбоев в базе пакетов вызванных нарушенными зависимостями. Разрешение зависимостей производится командой:

sudo apt-get install -f

apt-cache

apt-cache – утилита, позволяющая выполнять запросы к кешу APT.

Основные команды:

  • — Поиск пакета по части названия или описания. Поддерживает регулярные выражения.
  • — Информация о пакете: версия, размер, описание и т. п.
  • — Зависимости указанного пакета.
  • — Обратные зависимости пакета.

apt-key

apt-key служит для добавления ключей от репозиториев в систему. Ключи защищают репозитории от возможности подделки пакета. Подробнее смотрите в статье .

Основные команды:

  • — Добавление ключа в базу доверенных ключей.
  • — Удаление ключа из доверенных.

Создание deb пакетов

Шаг 1. Подготовка

Давайте создадим для этого примера небольшую программу на Си. Она будет называться hellolosst и будет выводить на экран строку Hello from losst.ru в терминал при запуске. Сначала создайте папку hellolosst и перейдите в неё:

Затем поместите в неё файл с исходным кодом:

Для компиляции программы выполните такую команду:

Затем вы можете её выполнить:

Таким образом, теперь у нас есть программа, которую надо упаковать в deb пакет.

2. Создание манифеста

В каждом deb пакете содержаться не только файлы самой программы, но и файл манифеста, в котором описан пакет, его зависимости и параметры. Этот файл имеет название control и должен находится в папке DEBIAN. Для сборки пакета будем использовать папку package, чтобы файлы программы не путались с исходными файлами и те не попали в пакет. Создайте эти папку:

Прежде чем вы сможете создать этот файл надо узнать несколько вещей. Первым делом надо посмотреть размер файлов программы, поскольку в данном случае файл один, достаточно посмотреть его размер:

Если файлов несколько, то можно удалить исходники и посмотреть общий размер папки с файлами программы. Дальше надо понять от каких пакетов будет зависеть ваша программа. Для этого воспользуйтесь командой objdump:

В данном случае программе необходима только libc. Чтобы посмотреть в каком пакете она находится выполните:

Пакет называется libc6. Затем создайте файл манифеста со следующим содержимым:

Это минимальный набор параметров в файле манифеста. Вот их значение:

Package — имя пакета;

Version — версия программы в пакете, будет использована при обновлении пакета;

Section — категория пакета, позволяет определить зачем он нужен;

Priority — важность пакета, для новых пакетов, которые ни с чем не конфликтуют обычно прописывают optional, кроме того доступны значения required, important или standard;

Depends — от каких пакетов зависит ваш пакет, он не может быть установлен, пока не установлены эти пакеты;

Recommends — необязательные пакеты, но тем не менее они обычно устанавливаются по умолчанию в apt;

Conflicts — пакет не будет установлен, пока в системе присутствуют перечисленные здесь пакеты;

Architecture — архитектура системы, в которой можно установить этот пакет, доступные значения: i386, amd64, all, последнее означает, что архитектура не имеет значения;

Installed-Size — общий размер программы после установки;

Maintainer — указывает кто собрал этот пакет и кто отвечает за его поддержку;

Description — краткое описание пакета.

3. Расположение файлов

Манифест готов. Теперь в папке пакета надо создать структуру папок, аналог того, что есть в корневой файловой системе. В данном случае надо создать папку usr/bin и поместить туда исполняемый файл:

4. Скрипты установки

Несмотря на то, что система установки пакетов очень мощная и позволяет делать многое, некоторые вещи всё же сделать нельзя. Для решения этой проблемы была предусмотрена возможность выполнять скрипты перед установкой пакета и после. Аналогично это работает для удаления пакета — перед и после. Эти скрипты называются preinst, postinst, prerm и postrm. Каждый файл просто содержит набор скриптов, которые надо выполнить. Например:

Разработчики Debian не рекомендуют использовать эти скрипты без крайней надобности, поскольку они дают вам полный контроль над системой пользователя и вы можете случайно что-то повредить. Обычно эти скрипты используются для того чтобы задавать пользователям вопросы и на основе этого генерировать конфигурационные файлы.

5. Сборка и проверка пакета

Осталось собрать настроенный пакет. Для этого используйте такую команду:

Теперь вы знаете как как собрать deb пакет. После завершения сборки можете установить его с помощью apt:

После этого исполняемый файл программы появится в /usr/bin, а сообщение из postinst будет выведено после установки.

ФАЙЛЫ

/etc/dpkg/dpkg.cfg

Файл
конфигурации
с ключами
по
умолчанию.

Остальные
файлы
перечислены
с
указанием
их
каталогов
по
умолчанию,
см. ключ
admindir, чтобы
узнать,
как
изменить
местоположение
этих
файлов.
/var/lib/dpkg/available

Список
доступных
пакетов.

/var/lib/dpkg/status

Состояния
доступных
пакетов.
Этот файл
содержит
информацию
о том,
помечен
ли пакет
для
удаления
или нет,
установлен
он или нет,
и т. д. См.
главу
ИНФОРМАЦИЯ
О
ПАКЕТАХ
,
где
приведена
подробная
информация.

Нижеследующие
файлы
являются
компонентами
бинарного
пакета. См.
deb(5), там
приведена
подробная
информация
о них:
control
conffiles
preinst
postinst

prerm

postrm

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: