- 3 способа установить deb файлы на Ubuntu Linux
- Установка файлов .deb в дистрибутивы Linux на основе Ubuntu и Debian
- Способ 1: использование программного центра по умолчанию
- Способ 2. Использование приложения Gdebi для установки пакетов deb с зависимостями.
- Способ 3: установить deb файлы в командной строке с помощью dpkg
- Как удалить пакеты deb
- Способ 1: удаление пакетов deb с помощью команд apt
- Способ 2: удалить пакеты deb с помощью команд dpkg
- Еще раз о deb пакетах
- Подготовка
- Подготовка папки с исходниками
- Настройка пакета
- changelog
- control
- rules
- Содержимое пакетов
- Завершение настройки
- Сборка пакетов
- Заключение
3 способа установить deb файлы на Ubuntu Linux
В этой статье для начинающих объясняется, как устанавливать deb-пакеты в Ubuntu. Также показано, как впоследствии удалить эти пакеты deb.
Это еще одна статья в серии новичков Ubuntu. Если вы абсолютно новичок в Ubuntu, вы можете поинтересоваться, как устанавливать приложения. Самый простой способ — использовать Ubuntu Software Center. Найдите приложение по его имени и установите его оттуда.
Жизнь была бы слишком простой, если бы вы могли найти все приложения в Центре программного обеспечения. Но этого не происходит, к сожалению.
Некоторое программное обеспечение доступно через пакеты DEB. Это архивные файлы с расширением .deb . Вы можете рассматривать файлы .deb как файлы .exe в Windows. Вы дважды щелкаете по файлу .exe, и он запускает процедуру установки в Windows. Deb-пакеты работают практически по схожему принципу .
Вы можете найти эти пакеты DEB в разделе загрузки на сайте поставщика программного обеспечения. Например, если вы хотите установить Google Chrome в Ubuntu, вы можете загрузить пакет DEB для Chrome со своего веб-сайта.
Теперь возникает вопрос, как установить файлы deb? Существует несколько способов установки пакетов DEB в Ubuntu. Я покажу их вам один за другим в этом уроке.
Установка файлов .deb в дистрибутивы Linux на основе Ubuntu и Debian
Вы можете выбрать инструмент GUI или инструмент командной строки для установки пакета deb. Выбор за вами.
Давайте посмотрим, как установить deb файлы.
Способ 1: использование программного центра по умолчанию
Самый простой способ — использовать центр программного обеспечения по умолчанию в Ubuntu. Вы не должны делать ничего особенного здесь. Просто перейдите в папку, в которую вы скачали файл .deb (это должна быть папка Downloads), и дважды щелкните по этому файлу.
Откроется центр программного обеспечения, и вы должны увидеть возможность установки программного обеспечения. Все, что вам нужно сделать, это нажать кнопку установки и ввести свой пароль для входа.
Видите, это даже проще, чем установка из .exe-файлов в Windows, не так ли?
Способ 2. Использование приложения Gdebi для установки пакетов deb с зависимостями.
Опять же, жизнь была бы намного проще, если бы все прошло гладко. Но это не жизнь, как мы ее знаем.
Теперь, когда вы знаете, что файлы .deb могут быть легко установлены через Центр программного обеспечения, позвольте мне рассказать вам об ошибке зависимости, которая может возникнуть в некоторых пакетах.
Что происходит, так это то, что программа может зависеть от другого программного обеспечения (библиотек). Когда разработчик готовит пакет DEB для вас, он / она может предположить, что ваша система уже имеет эту часть программного обеспечения в вашей системе.
Но если это не так, и ваша система не имеет необходимых компонентов программного обеспечения, вы столкнетесь с печально известной «ошибкой зависимости».
Центр программного обеспечения не может самостоятельно обрабатывать такие ошибки, поэтому вам придется использовать другой инструмент под названием gdebi.
gdebi — это легкое приложение с графическим интерфейсом, единственная цель которого — установить пакеты deb.
Он определяет зависимости и пытается установить эти зависимости вместе с установкой файлов .deb.
Лично я предпочитаю gdebi центру программного обеспечения для установки файлов deb. Это легкое приложение, поэтому установка кажется быстрее. Вы можете прочитать подробно об использовании gDebi и сделать его по умолчанию для установки пакетов DEB.
Вы можете установить gdebi из центра программного обеспечения или используя команду ниже:
Способ 3: установить deb файлы в командной строке с помощью dpkg
Если вы хотите установить deb файлы в команде lime, вы можете использовать команду apt или dpkg. Команда Apt на самом деле использует команду dpkg, но apt более популярна и проста в использовании.
Если вы хотите использовать команду apt для файлов deb, используйте ее следующим образом, где /path/to/file.deb — путь до вашего deb-файла:
Если вы хотите использовать команду dpkg для установки пакетов deb, вот как это сделать:
Если при установке пакетов deb вы получили ошибку зависимости, вы можете использовать следующую команду для устранения проблем зависимости:
Как удалить пакеты deb
Удаление пакета deb не имеет большого значения. И нет, вам не нужен оригинальный файл deb, который вы использовали для установки программы.
Способ 1: удаление пакетов deb с помощью команд apt
Все, что вам нужно, это имя программы, которую вы установили, и затем вы можете использовать apt или dpkg, чтобы удалить эту программу. Для этого введите вот эту команду, где program_name название программы, которую вы хотите удалить.
Теперь возникает вопрос, как найти точное имя программы, которое нужно использовать в команде удаления? У команды apt есть решение и для этого.
Вы можете найти список всех установленных программ с помощью команды apt, но так как список может быть очень большим, найти «глазами» будет непросто. Для того, чтобы упростить себе поиск, можно добавить grep search_query , где search_query возможная часть имени программы.
Например, я установил приложение AppGrid в предыдущем разделе, и если я хочу узнать точное имя программы, то к предыдущей команде добавляю разделитель | , затем grep grid , где grid является частью имени команды.
Команда grep удалит из вывода все строки, в которых нет слова grid и мы получим только то, что нас интересует. То есть в данном случае вместо большого списка будет только та строка, которая интересует. Это намного проще, чем искать глазами, правда?
Как видите, установлена программа appgrid. Теперь вы можете использовать это имя программы с командой apt remove.
Способ 2: удалить пакеты deb с помощью команд dpkg
Вы также можете использовать dpkg, чтобы найти имя установленной программы:
Вывод выдаст все установленные пакеты, которые содержат слово grid:
ii в приведенной выше команде вывод означает, что пакет был правильно установлен.
Теперь, когда у вас есть имя программы, вы можете использовать команду dpkg, чтобы удалить ее:
Я надеюсь, что это руководство для начинающих помогло вам установить deb файлы в Ubuntu. Я добавил часть удаления, чтобы вы могли лучше контролировать установленные вами программы.
Более подробно о deb-пакетах вы можете почитать на официальном сайте Debian тут.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Еще раз о deb пакетах
Подготовка
Чтобы начать создавать deb пакеты, нужно установить несколько пакетов:
Подготовка папки с исходниками
Для того, чтобы dh_make и другие утилиты могли работать с папкой с исходниками, нужно привести ее в специфичный вид.
Папка должна называться имяпакета-версия. Т.е. если у меня есть папка Plugins с программой версии 0.1, то я создаю папку с именем plugins-0.1.
Теперь нужно создать архив с этой папкой. Архив должен содержать в имени *.orig.tar.gz, т.е.:
Последний подготовительный шаг, это создание в папке с исходниками папки debian со множеством служебных файлов. Чтобы это сделать, нужно выполнить команду:
В процессе выполнения этой команды будет задан вопрос о том, какой тип архива мы создаем, самый простой это single.
Настройка пакета
Вся настройка пакета происходит путем редактирования файлов в каталоге debian. Рассмотрим те файлы, которые будем использовать:
- changelog — история пакета.
- control — главный конфиг пакета;
- rules — аналог Makefile для пакета;
Кроме этих файлов, в папке debian будет создано много файлов *.ex которые являются примерами для конфигурации различных вещей, но мы не будем их использовать и поэтому их нужно удалить.
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 пакета:
- пакет с исходными кодами;
- пакет с бинарником (самой библиотекой);
- пакет для разработки (заголовочные файлы);
- пакет с документацией.
Возникает вопрос, зачем так много пакетов? Ответов на него может быть несколько, если прочитать соответствующие обсуждения на stackoverflow.com то основная идея разбиения в том, что большинству пользователей не нужны заголовочные файлы и документация, поэтому разделение этих файлов способствует снижению нагрузки на сеть и скорости установки программ.
Мой персональный ответ на данный вопрос, заключается в том, что такое разбиение помогает структурировать программу по тому, как я хочу с ней работать. Для разработки я поставлю dev пакет, а для использования нет.
Кроме описанных выше пакетов, можно создать dbg пакет с отладочной сборкой программы. Это может пригодиться, если программа падает и у Вас есть под рукой отладчик. Однако, я так и не смог понять как это делать. Документация не дает ответа на этот вопрос. Если делать так как описано в ней, то я либо получаю пустой пакет либо получаю кучу ошибок при сборке.
Схема на рисунке выше показывает, что пакет с исходниками называется libvksplugins_source, однако, в файле control указано, что пакет с исходниками будет называться libvksplugins. На самом деле, он действительно будет называться libvksplugins, а пакет с бинарниками, будет называться libvksplugins… deb. Суть этой путаницы в том, что пакет с исходниками представляет собой tar архив и служебные файлы, тогда как пакет бинарников это архив с расширение deb.
Настройка пакета библиотеки Посмотрим внимательно на описание пакета библиотеки:
Package: libvksplugins
Architecture: any
Depends: $
Description: Library for creating plugins with VKS 2
This library provides a mechanism for creating plugins
to use in project VKS 2.
Параметр Architecture устанавливает архитектуру собираемого пакета. Значение any означает, что после сборки бинарников нужная архитектура будет подставлена системой сборки. Т.е. на 64х битной машине, получится пакет . _amd64. а на 32х битной пакет . _i386. .
Для пакетов, содержащих скрипты или тексты, нужно указывать значение как all.
Третья строка, описывает зависимости создаваемого пакета. Вот как она описана в 4й главе Руководства начинающего разработчика Debian:
Утилита dh_shlibdeps вычисляет зависимости двоичного пакета от общих библиотек. Она генерирует список исполняемых файлов ELF и общих библиотек, которые находит для каждого двоичного пакета. Этот список подставляется вместо $ .
Утилита dh_perl вычисляет зависимости Perl. Она генерирует список зависимостей от perl или perlapi для каждого двоичного пакета. Этот список подставляется вместо $ .
Некоторые команды пакета debhelper могут добавлять зависимости к вашему генерируемому пакету. Каждая команда генерирует список необходимых пакетов для каждого двоичного пакета. Этот список подставляется вместо
$ .
Утилита dh_gencontrol генерирует файл DEBIAN/control для каждого двоичного пакета, заменяя $ , $ , $ и т.д на полученные значения.
Т.е. эта строка говорит о том, что сборщик пакета сам определит зависимости.
Последний раздел данной секции это описание пакета. Первая строка содержит кратное описание, последующие строки содержат более подробное описание. Подробное описание, должно иметь определенный формат:
- строка должна начинаться с пробела;
- строка не должна быть длиннее 80 символов;
- пустая строка должна начинаться с пробела и состоять из символа точки.
Настройка пакета заголовочных файлов Пакет с заголовочными файлами, будет называться libvksplugins-dev, вот его описание:
Package: libvksplugins-dev
Section: libdevel
Architecture: any
Depends: libvksplugins (= $
Description: Development package for libvksplugins
This package provides development files for
library libvksplugins.
.
Also, it contains pkg-config file, to use.
В данном примере, интересна строка Depends. В ней указано, что данный пакет будет зависеть от пакета библиотеки libvksplugins, причем (= $ ) говорит о том, что необходимо строгое совпадение версий бинарного пакета и пакета разработчика. Это важный момент потому, что заголовочные файлы должны строго соответствовать бинарникам.
Настройка пакета документации Вместе с библиотекой поставляется документация, чтобы она была в отдельном пакете, добавляем его описание:
Package: libvksplugins-doc
Architecture: all
Depends: $
Description: Documentation for libvksplugins
Package contains html documentation files for libvksplugins
Тут должно быть все понятно.
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 и Эльбрус ОС.
Источник