Где хранятся deb файлы

Обновлено: 04.07.2024

Чтобы начать создавать deb пакеты, нужно установить несколько пакетов:

Подготовка папки с исходниками

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

Папка должна называться имяпакета-версия. Т.е. если у меня есть папка Plugins с программой версии 0.1, то я создаю папку с именем plugins-0.1.


Теперь нужно создать архив с этой папкой. Архив должен содержать в имени *.orig.tar.gz, т.е.:


Последний подготовительный шаг, это создание в папке с исходниками папки debian со множеством служебных файлов. Чтобы это сделать, нужно выполнить команду:


В процессе выполнения этой команды будет задан вопрос о том, какой тип архива мы создаем, самый простой это single.

На самом деле документация говорит, выбирать вариант только single. Т.к. я не смог понять всех требований к пакету типа library но меня вполне устраивает результат, то описание и дальше пойдет про пакет типа library.

Настройка пакета

Вся настройка пакета происходит путем редактирования файлов в каталоге debian. Рассмотрим те файлы, которые будем использовать:

  • changelog — история пакета.
  • control — главный конфиг пакета;
  • rules — аналог Makefile для пакета;

changelog

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


В начале идет название пакета — libvksplugins, затем его версия. Версия делиться на две части символом «-». Первая часть показывает версию программы в пакете, вторая «ревизию» пакета. Ревизия это версия пакета, т.е. если раньше такого пакета не было, то ревизия равна 1. Если же пакет с такой версией программы уже был, но в нем произошли изменения, то ревизия увеличивается.

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

Надпись urgency=low показывает срочность изменения. Т.к. срочности нет, то значение равно low. Если бы, мы делали пакет для исправления серьезной уязвимости или ошибки, то значение можно было бы установить в high.

После первой строки идет пустая строка, а за ней первая запись:


В Debian, changelog используется для автоматического закрытия ошибок в системах отслеживания ошибок в программных продуктах. Т.к. в данном случае, я не использую такую систему, то эта строка принимает вид:

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

После установки deb пакета, файл changelog устанавливается в

control

Файл debian/control является главным конфигом, при создании deb пакета. Вот пример такого файла:


Видно, что файл разбит на секции при помощи пустых строк. Каждая секция описывает один пакет, создаваемый из папки с исходниками. Рассмотрим их по порядку:

Source Данная секция говорит о том, что нужно создать пакет исходных кодов. Параметром указано libvksplugins, это значит, что пакет исходных кодов будет называться libvksplugins.

Priority Эта секция устанавливает приоритет пакета. Т.к. система может прекрасно обойтись без нового пакета, то значение секции установлено в optional. Т.е. этот пакет не обязателен для установки. Подробнее о приоритетах написано здесь.

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

Build-Depends Одна из самых важных секций, устанавливающая зависимости пакета. Зависимости, указанные в данной секции должны быть выполнены, чтобы можно было собрать пакет. Т.е. список зависимостей для сборки и установки могут отличаться.

Видно, что в зависимостях стоят debhelper (>= 9), cmake. Зависимость debhelper (>= 9) ставиться для всех пакетов по умолчанию. Она нужна для корректной работы программ вида dh_*.

Второй элемент cmake был добавлен потому, что папка с исходниками содержала файл CMakeLists.txt, т.е. для сборки используется система сборки CMake. Для того, чтобы узнать, какие зависимости есть у программы, можно почитать ее документацию. Кроме этого, можно воспользоваться командой dpkg-depcheck. Данная команда должна запускаться так:


Но, т.к. при использовании CMake нет скрипта конфигурирования, то я использую ее так:


Из примечательных тут можно отметить:

cmake
qt4-qmake
libqt4-dev

Остальные являются зависимостями данных. Причем, cmake уже есть в списке зависимостей сборки. В принципе, можно его оставить как есть или указать используемую версию:


При этом в CMakeLists.txt указана версия cmake, которую нужно использовать:


Я думаю, что разработчику виднее, и поэтому указываю версию из CMakeLists.txt. Для Qt 4 все понятно с номерами версий, но для очистки совести проверим и их версии:


Т.е. для Qt 4 указываем версию 4.8.6:


Standards-Version Версия стандарта, в соответствии с которым создан файл. Это значение не нужно менять.

Section. Секция для пакета, т.е. группа пакетов, выполняющая одну задачу. В Политике Debian разделе 2.4 этот вопрос описан более подробно.

Homepage Домашняя страница проекта. Т.к. данный код писал я и у него нет страницы, просто удаляю эту строку.

Vcs-* Ссылки на репозитории проекта. Их у меня тоже нет, поэтому удаляю эти строки.

Другие пакеты После секции файла, где описывается пакет с исходниками, идут секции, которые описывают другие пакеты, создаваемые из пакета с исходниками. Схема создания пакетов:


Из схемы видно, что из исходников программы, я хочу получить 4 пакета:

  • пакет с исходными кодами;
  • пакет с бинарником (самой библиотекой);
  • пакет для разработки (заголовочные файлы);
  • пакет с документацией.

Мой персональный ответ на данный вопрос, заключается в том, что такое разбиение помогает структурировать программу по тому, как я хочу с ней работать. Для разработки я поставлю dev пакет, а для использования нет.

Кроме описанных выше пакетов, можно создать dbg пакет с отладочной сборкой программы. Это может пригодиться, если программа падает и у Вас есть под рукой отладчик. Однако, я так и не смог понять как это делать. Документация не дает ответа на этот вопрос. Если делать так как описано в ней, то я либо получаю пустой пакет либо получаю кучу ошибок при сборке.

Схема на рисунке выше показывает, что пакет с исходниками называется libvksplugins_source, однако, в файле control указано, что пакет с исходниками будет называться libvksplugins. На самом деле, он действительно будет называться libvksplugins, а пакет с бинарниками, будет называться libvksplugins… deb. Суть этой путаницы в том, что пакет с исходниками представляет собой tar архив и служебные файлы, тогда как пакет бинарников это архив с расширение deb.

Настройка пакета библиотеки Посмотрим внимательно на описание пакета библиотеки:

Для пакетов, содержащих скрипты или тексты, нужно указывать значение как all.

Третья строка, описывает зависимости создаваемого пакета. Вот как она описана в 4й главе Руководства начинающего разработчика Debian:

Утилита dh_shlibdeps вычисляет зависимости двоичного пакета от общих библиотек. Она генерирует список исполняемых файлов ELF и общих библиотек, которые находит для каждого двоичного пакета. Этот список подставляется вместо $ .

Утилита dh_perl вычисляет зависимости Perl. Она генерирует список зависимостей от perl или perlapi для каждого двоичного пакета. Этот список подставляется вместо $ .

Некоторые команды пакета debhelper могут добавлять зависимости к вашему генерируемому пакету. Каждая команда генерирует список необходимых пакетов для каждого двоичного пакета. Этот список подставляется вместо
$ .

Утилита dh_gencontrol генерирует файл DEBIAN/control для каждого двоичного пакета, заменяя $ , $ , $ и т.д на полученные значения.

Т.е. эта строка говорит о том, что сборщик пакета сам определит зависимости.

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

  • строка должна начинаться с пробела;
  • строка не должна быть длиннее 80 символов;
  • пустая строка должна начинаться с пробела и состоять из символа точки.

Настройка пакета документации Вместе с библиотекой поставляется документация, чтобы она была в отдельном пакете, добавляем его описание:

rules

Данный файл является аналогом Makefile для сборки пакетов. По умолчанию, он создается в таком виде:


Видно, что это bash скрипт с синтаксисом Makefile. Единственная интересная конструкция здесь это


Это шаблон, который для всех целей вызывает dh команду с передачей аргументов ей. Для сборки пакета важно, чтобы текст dh $@ начитался с символа табуляции. Т.е. отступ это не пробелы, а табуляция.

Т.к. исходники используют систему сборки CMake, то нужно изменить эту запись следующим образом:

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

После того, как мы указали в debian/control какие пакеты мы хотим получить, нужно указать какие файлы в какой пакет помещать. Для этого, для каждого названия пакета из файла control, нужно создать в папке debian два файла. Первый должен называться пакет.dirs, а второй пакет.install. Суть файлов в том, что первый указывает, какие папки нужно создать для пакета, а второй, какие файлы включить в пакет.

Посмотрим на их содержимое:


Важный момент, отсутствие начальной дроби в путях и отсутствие дроби в конце пути к папке. Проверив, куда CMake устанавливает файлы библиотеки, можно сформировать такие файлы:

Завершение настройки

Т.к. исходники мои, то никаких дополнительных описаний и ограничений copyright у меня нет, поэтому я удаляю все лишние файлы из каталога debian.

Сборка пакетов

После настройки, сборка пакетов происходит довольно просто, нужно в папке проекта (которая включает подпапку debian) выполнить команду:


Параметры -us -uc говорят о том, что не нужно подписывать gpg ключом созданные пакеты. Их можно не использовать, если настроен ключ подписи gpg по умолчанию. Как указать ключ подписи по умолчанию, я тоже не понял. Если все прошло хорошо, то у нас поваляется набор пакетов в папке выше:

Заключение

Если вы дочитали до сюда — значит вы любите читать.

Этот текст является результатом моего опыта внедрения deb пакетов на работе. Опыт показал, что наличие сетевого репозитория (reprepro) и внимательное отслеживание версий, позволяют без проблем обновлять и тестировать различные версии ПО на парке из 30 машин с системами Astra Linux 1.3, 1.4 и Эльбрус ОС.

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

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

Где взять deb пакеты?

deb10

Дальше выбираем архитектуру:

deb8

И осталось получить deb файл для нашей системы:

deb9

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

apt download имя_пакета

deb

Пакет будет сохранен в текущей папке и дальше вы сможете все без проблем установить. Но будет скачан только сам пакет, без его зависимостей. Зависимости мы можем получить только в системе с интернетом используя команду apt-rdepends:

apt download имя_пакета $(apt-rdepends имя_пакета|grep -v "^ ")

Теперь у вас есть не только пакет, но и все его зависимости.

Установка deb пакетов Ubuntu

Установить Deb пакет Ubuntu не так уж сложно, для этого даже есть несколько утилит. Можно устанавливать как с помощью графического интерфейса, так и в терминале.

Самый простой способ установки - в графическом интерфейсе, с помощью центра приложений, с него и начнем. Откройте файловый менеджер в папке с пакетом:

deb1

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

deb2

Установка программ Ubuntu с помощью центра приложений мне не очень нравится, он обычно очень долго думает и не всегда правильно открывает программу, но можно воспользоваться другой графической утилитой - gdebi. Сначала ее нужно установить:

sudo apt-get install gdebi

Теперь кликаем правой кнопкой мыши по файлу, выбираем открыть с помощью и gdebi:

deb5

Дальше осталось нажать кнопку установить и дождаться завершения установки пакета ubuntu. Программа автоматически установит все зависимости, если есть доступ к сети.

deb6

Установка deb из консоли Ubuntu выполняется не намного сложнее. Для этого используется утилита dpkg. Сначала переходим в папку куда был загружен deb пакет:

sudo dpkg -i имя_пакета.deb

deb3

Для этой команды доступны символы сокращений, например, можно написать вот так, чтобы установить все deb пакеты из этой директории:

$ sudo dpkg -i *.deb

Программа не умеет разрешать зависимости, даже если есть доступ к сети, она только устанавливает пакет, поэтому для установки зависимостей после установки deb ubuntu выполните:

$ sudo apt-get -f install

deb4

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

Это не единственный способ установки пакетов ubuntu через терминал, утилиту gdebi тоже можно запустить таким способом:

sudo gdebi имя_пакета.deb

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

sudo apt install ./имя_пакета.deb

deb7

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

Выводы

Вот и все. Теперь установка deb пакетов в Ubuntu не вызовет у вас проблем. Оказывается, есть несколько способов установки программ в ubuntu и все они имеют свои преимущества. Если у вас остались вопросы, спрашивайте в комментариях!


Файл с расширением DEB является файлом пакета программного обеспечения Debian. Они используются, в основном, в операционных системах на основе Unix, включая Ubuntu.

Каждый файл DEB состоит из двух архивов TAR, которые составляют исполняемые файлы, документацию и библиотеки. Он может быть сжат или не сжат с использованием GZIP, BZIP2, LZMA или XZ.

Аналогично файлам DEB, файлы micro deb (.UDEB) содержат некоторую, но не всю информацию, аналогичную обычному файлу DEB.

Как открыть файл DEB

Открыть файл DEB можно с помощью любой популярной программы сжатия / распаковки, одним из примеров которой является бесплатный инструмент 7-Zip. Любой из этих типов программ распаковывает (извлекает) содержимое файла DEB, а некоторые создают сжатые файлы DEB.

Пример отображения файлов формата DEB в Ubuntu

Хотя некоторые из этих файловых инструментов сжатия/распаковки также будут работать на компьютерах с Linux, на самом деле они не устанавливают пакет, как вы ожидаете, – они просто извлекают содержимое архива.

Чтобы установить файлы DEB, используйте бесплатный инструмент gdebi, который позволяет щелкнуть правой кнопкой мыши файл .DEB и выбрать его в контекстном меню.

Хотя это и не так просто, как использовать gdebi, вы также можете установить DEB-файлы с помощью dpkg, используя командную строку (замените /path/to/file.deb на путь к вашему собственному файлу .DEB):

dpkg -i /path/to/file.deb

Несколько файлов DEB можно установить с помощью:

dpkg -i -R /path/to/folder/with/deb/files/

Удалить файлы DEB можно с помощью этой команды:

apt-get remove /path/to/file.deb

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

Как конвертировать файл DEB

Бесплатный конвертер файлов, такой как FileZigZag может преобразовать файл DEB в файл другого формата, такого как TGZ, BZ2, BZIP2, 7Z, GZIP, TAR, TBZ, ZIP и др.

Три способа как установить deb файлы в Ubuntu и как удалить их потом

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

Самый простой способ - это использовать Центр программного обеспечения Ubuntu. Найдите приложение по имени в поиске и установите его оттуда.

Жизнь была бы слишком простой, если бы вы могли найти все приложения в Центре программного обеспечения. К сожалению, это не так.

Некоторые программы доступны через пакеты deb. Это архивные файлы, которые заканчиваются расширением .deb.

Вы можете представлять для себя , что .deb-файлы это некое подобие .exe-файлов в Windows. Вы делаете двойной щелчок на .exe файле и начинается процедура установки в Windows. Deb-пакеты практически такие же.

Вы можете найти эти deb-пакеты в разделе загрузки на сайте разработчиков программного обеспечения. Например, если вы хотите установить Google Chrome на Ubuntu, вы можете скачать пакет Chrome deb с его сайта.

Теперь возникает вопрос: как установить deb-файлы? Существует несколько способов установки deb-пакетов в Ubuntu. Я покажу их вам один за другим в этом руководстве.

Установка .deb-файлов на дистрибутивы Ubuntu и Debian для Linux.

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

Давайте посмотрим, как устанавливаются deb-файлы.

Метод 1: Используя стандартный Центр программного обеспечения

Самый простой метод заключается в использовании программного центра по умолчанию встроенного в Ubuntu. Здесь нечего особенного делать. Просто перейдите в папку, в которую вы скачали .deb файл (обычно это папка Downloads) и дважды щелкните по файлу.


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


Видите, это даже проще, чем установка из файла .exe в Windows, не так ли?

Проблемы: Двойным щелчком по deb-файлу программа не открывается в центре программного обеспечения в Ubuntu 20.04.

Двойной щелчок по deb-файлу в Ubuntu 20.04 открывает файл в менеджере архива вместо программного центра.


Метод 2: Используя приложение Gdebi для установки deb-пакетов с зависимостями.

Опять же, жизнь была бы намного проще, если бы все всегда шло гладко. Но это не та жизнь, которую мы знаем.

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

Происходит то, что программа может зависеть от другого программного обеспечения (например, библиотек). Когда разработчик готовит для вас пакет deb, он может предположить, что в вашей системе уже есть этот пакет.

Но если это не так и в вашей системе нет тех необходимых программ, вы столкнетесь с печально известной "ошибкой зависимостей".

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

Оно определяет зависимости и пытается установить их вместе с файлами .deb.


Лично я предпочитаю gdebi, а не центр программного обеспечения для установки deb-файлов. Это легкое приложение, поэтому установка кажется более быстрой.

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

Метод 3: Установка .deb файлов в терминале с помощью dpkg.

Если вы хотите установить deb-пакеты с помощью терминала, вы можете использовать либо команду apt, либо команду dpkg. Команда apt на самом деле использует команду dpkg под капотом, но apt более популярна и проста в использовании.

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

Если вы хотите использовать команду dpkg для установки deb-пакетов, вот как это лучше сделать:

В обеих командах вы должны заменить path_to_deb_file на путь и имя загруженного deb-файла.


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

Как удалить установленные .deb пакеты

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

Метод 1: Удаление deb-пакетов с помощью команды apt

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

Теперь возникает вопрос, как найти точное имя программы, которое нужно использовать в команде удаления? У команды apt тоже есть решение для этого.

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

Например, я установил приложение AppGrid в предыдущем разделе, но если я хочу узнать точное имя программы, я могу использовать нечто подобное:

Эта команда покажет мне все пакеты, у которых в имени есть слово grid, и оттуда я смогу получить точное имя программы.

Как видите, программа под названием appgrid установлена. Теперь вы можете использовать это имя программы с командой apt remove.

Метод 2: Удаление deb пакетов с помощью команды dpkg

Вы можете использовать dpkg, чтобы найти имя установленной программы:

На выходе будут показаны все установленные пакеты, в именах которых есть слово grid.

Даный вывод означает, что пакет был правильно установлен.

Теперь, когда у вас есть имя программы, вы можете использовать команду dpkg для ее удаления:

Совет: Обновление deb пакетов
Некоторые deb-пакеты (например, Google Chrome) предоставляют обновления через обновления системы, но для большинства других программ вам придётся удалить существующую программу и установить более новую версию.

Я надеюсь, что это руководство для начинающих помогло вам понять, как установливаются deb-пакеты в Ubuntu. Я добавил информацию об их удалении, чтобы вы могли лучше контролировать установленные программы.

Читайте также: