Установка deb-пакетов в debian

Deb (Debian Package Manager)

Файлы deb — это архивы, созданные с помощью утилиты ar. Они могут быть сжаты с помощью GZIP, Bzip2, lzma, или XZ. Чаще всего для управления пакетами deb в терминале используется утилита dpkg, Но могут и другие, например, gdebi, apt, aptitude и т д. Deb пакеты используются для установки программного обеспечения во многих операционных системах, основанных на Debian, это ветка Ubuntu со многими основанными на ней дистрибутивами и так далее. Поскольку Ubuntu в последнее время набирает популярность среди новичков, то пакетов для нее становится больше.

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

Рекомендованные утилиты устанавливаются автоматически в таком инструменте, как apt. Чтобы сравнить rpm vs deb рассмотрим особенности deb:

Файл пакета — обычный архив
Поддержка приоритетов для пакетов различной важности
Поддержка рекомендованных пакетов
Не поддерживаются файловые зависимости
Не поддерживается технология Delta для экономии трафика

Настройки BIOS перед установкой системы

Для входа в BIOS или UEFI нажмите клавишу или комбинацию клавиш. В различных моделях настольных компьютеров и ноутбуков чаще всего применяются:

  • «Delete» («Del»)
  • «F2»
  • «F10»

Возможны и другие варианты. Подсказка будет показана в нижней части экрана перед загрузкой ПК.

Интерфейсы UEFI или BIOS разных моделей отличаются друг от друга. Необходим пункт «Boot» (или тот, название которого подобно по смыслу).

Определите приоритеты загрузки с дисков так, чтобы на первом месте был загрузочный накопитель Debian. «F10» на клавиатуре — для подтверждения изменений.

Далее:

  • Кнопка «ОК».
  • «Enter» на физической клавиатуре.

Что представляет собой deb-пакет?

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

  • Архив control.tar.gz, содержащий скрипты, написанные майнтенером пакета, использующиеся при установке/удалении пакета, а так же другие служебные файлы;

  • Архив data.tar.gz, содержащий двоичные файлы программы, ради которой создан пакет;

  • Файл debian-binary.

Поскольку содержимое пакета может в будущем измениться (будет новый номер версии в debian-binary), то собирать deb-пакет при помощи программ tar, gzip, ar не рекомендуется и этот вариант в статье рассматриваться не будет.

Собирается пакет программой dpkg из специально подготовленной структуры каталогов:

  • DEBIAN/
  • .. path/to/dir/file1
  • .. path/to/dirX/fileX

то есть:

  • Файлы и каталоги, предназначенные для установки в систему. Их расположение в архиве соответствует положению их в файловой системе если считать от корня. Например файл usr/share/doc/package/copyright в deb-архиве после установки будет находиться в /usr/share/doc/package/copyright (все они будут упакованы в архив data.tar.gz);

  • Каталог DEBIAN/, содержащий служебную информацию о пакете (о ней пойдет речь ниже). Содержимое этого каталога при сборке будет упаковано в архив control.tar.gz;

Установка с использованием командной строки

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

$ sudo apt-get update

По запросу введите пароль. Учтите, что при вводе в терминале пароль не отображается, ни звёздочками, ни кружками, никак. Это нормально. Для установки нужной программы введите команду:

$ sudo apt-get install имя-программы

Например:

$ sudo apt-get install libsexymm2

Если нужно установить несколько программ, то их можно перечислить через пробел, например:

$ sudo apt-get install libsexymm2 nmap

Если потребуется — ответьте на задаваемые вопросы (для положительного ответа нужно ввести Y или Д). Программа будет установлена, если она уже установлена — она будет обновлена.

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

Для поиска программы в списке доступных пакетов воспользуйтеcь командами:

$ sudo apt-cache search keyword

где keyword — название программы, часть названия программы или слово из её описания.

What’s up doc ?

17/08/2007 :
I think you have noticed ads. I need that to pay
the huge amount of bandwidth.

10/05/2012 :
New domain name deb-multimedia.org

You must edit your /etc/apt/sources.list to replaces the old repository name by the new one.
Little explanation about the domain name change, Debian asked me to stop using the word debian. You can read the DPL message
here.

23/03/2021 :
Jessie has been moved to archive.deb-multimedia.org.

01/03/2021 :
For people who have not noticed, I’ve upload mythtv 31 and kodi 19 packages to stable-backports.

If this repository is too slow for you, use a mirror.After you have added the necessary line in /etc/apt/sources.list
the first package to install is deb-multimedia-keyring.
apt-get update
The -oAcquire::AllowInsecureRepositories=true option is mandatory since Buster and thus also needed for unstable.
apt-get update -oAcquire::AllowInsecureRepositories=true
apt-get install deb-multimedia-keyring
Since Squeeze you can install this package with apt-aget. Simply press y
when the package ask what to do (don’t press return).
If apt-get can not find the new key, do that :
wget http://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2016.8.1_all.deb
sudo dpkg -i deb-multimedia-keyring_2016.8.1_all.deb
You can verify the package integrity with : sha256sum deb-multimedia-keyring_2016.8.1_all.deb
9faa6f6cba80aeb69c9bac139b74a3d61596d4486e2458c2c65efe9e21ff3c7d deb-multimedia-keyring_2016.8.1_all.deb
Final and mandatory step.
An apt-get update
an apt-get dist-upgrade to install all packages related to ffmpeg.

For buster (stable)
amd64, arm64, armel, armhf and i386 packages
(non-free is for i386 only. Now amd64 use multi-arch)
add in your /etc/apt/sources.listdeb http://www.deb-multimedia.org buster main non-free
ordeb ftp://ftp.deb-multimedia.org buster main non-free
ordeb http://www.deb-multimedia.org stable main non-free
ordeb ftp://ftp.deb-multimedia.org stable main non-free

For buster-backports (stable-backports)
amd64, arm64, armel, armhf and i386 packages
add in your /etc/apt/sources.list
apt-get install must be called with the -t option -t stable-backports in order to install packages from stable-bacports.deb http://www.deb-multimedia.org buster main non-freedeb http://www.deb-multimedia.org buster-backports main
ordeb ftp://ftp.deb-multimedia.org buster main non-freedeb ftp://ftp.deb-multimedia.org buster-backports main
ordeb http://www.deb-multimedia.org stable main non-freedeb http://www.deb-multimedia.org stable-backports main
ordeb ftp://ftp.deb-multimedia.org stable main non-free
deb ftp://ftp.deb-multimedia.org stable-backports main

For bullseye (testing)
amd64, arm64, armel, armhf and i386 packages
(non-free is for i386 only. Now amd64 use multi-arch)
add in your /etc/apt/sources.listdeb https://www.deb-multimedia.org bullseye main non-free
ordeb ftp://ftp.deb-multimedia.org bullseye main non-free
ordeb https://www.deb-multimedia.org testing main non-free
ordeb ftp://ftp.deb-multimedia.org testing main non-free

For sid (unstable)
amd64, arm64, armel, armhf, i386 and powerpc packages.
non-free is for i386 only. Now amd64 use multi-arch
add in your /etc/apt/sources.listdeb https://www.deb-multimedia.org sid main non-free
ordeb ftp://ftp.deb-multimedia.org sid main non-free

For stretch (oldstable)
amd64, armel, armhf, i386, kfreebsd-amd64, kfreebsd-i386, mips, mipsel and powerpc packages
(non-free is for i386 only. Now amd64 use multi-arch)
add in your /etc/apt/sources.listdeb http://www.deb-multimedia.org stretch main non-free
ordeb ftp://ftp.deb-multimedia.org stretch main non-free
ordeb http://www.deb-multimedia.org oldstable main non-free
ordeb ftp://ftp.deb-multimedia.org oldstable main non-free

For stretch-backports (oldstable-backports)
amd64, armel, armhf, i386, kfreebsd-amd64, kfreebsd-i386, mips, mipsel and powerpc packages
add in your /etc/apt/sources.list
apt-get install must be called with the -t option -t oldstable-backports in order to install packages from oldstable-bacports.deb http://www.deb-multimedia.org stretch main non-freedeb http://www.deb-multimedia.org stretch-backports main
ordeb ftp://ftp.deb-multimedia.org oldstable main non-freedeb ftp://ftp.deb-multimedia.org oldstable-backports main

For experimental amd64 and i386 packages.
add in your /etc/apt/sources.listdeb http://www.deb-multimedia.org experimental main
ordeb ftp://ftp.deb-multimedia.org experimental main

The official Debian experimental repository isn’t needed

Низкоуровневые функции работы с deb-пакетом

Программа dpkg

Представляет наиболее низкоуровневый интерфейс для создания/установки/распаковки пакетов.

Основные команды, которые выполняет данная программа общеизвестны, нас же будет интересовать команда dpkg -build.

Если Вы создали в некотором каталоге нужную для создания пакета иерархию файлов/каталогов, то превратить ее в deb-пакет можно дав команду:

dpkg -build Directory package.deb

при этом из каталог Directory будет упакован в пакет.

То есть все что нам нужно чтобы создать пакет для Debian, это сложить файлы в нужные директории и упаковать. Фактически это почти тоже самое что и простой архив tgz дистрибутива slackware, только информационные файлы располагаются в каталоге с другим именем и видов этих файлов несколько больше.

Ну а теперь, когда мы уяснили базовое устройство пакета, можем перейти к описанию того что должно или может находиться внутри каталога DEBIAN/.

Установка с помощью пакетного менеджера

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

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


Скриншот №1. Обновление данных о версиях и зависимостях в репозитории

Если необходимо уточнить название пакета, который требуется установить — ищем в локальном кэше менеджер по ключевым словам, например, web server:

В результате получим большой перечень пакетов, где данное ключевое слово присутствует в описании:


Скриншот №2. Поиск по ключевым словам

Выбираем нужный нам пакет — в данном случае это apache2, и устанавливаем его:

Пакетный менеджер проверяет зависимости, версии, сравнивает их с уже установленными через apt-get пакетами, после чего выдает список необходимых для установки компонентов и запрашивает разрешение на продолжение операции:


Скриншот №3. Установка пакета

Нажимаем y и дожидаемся окончания установки.

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

  • apt-get update — обновление информации о пакетах и зависимостях в подключенных репозиториях;
  • apt-get upgrade — обновление всех установленных пакетов до актуальной версии, имеющейся в репозитории;
  • apt-get install имя_пакета — установка пакета;
  • apt-get remove имя_пакета — удаление пакета;
  • apt-get download имя_пакета — скачать deb-пакет в локальную папку;
  • apt-cache search ключевые слова — поиск пакета по ключевым словам;
  • apt-cache show имя_пакета — показать информацию о пакете;
  • apt-cache depends имя_пакета — показать от каких компонентов зависит данный пакет;
  • apt-cache rdepends имя_пакета — показать какие компоненты зависят от пакета;
  • apt-mark hold имя_пакета — зафиксировать текущую версию пакета, прекратить обновление пакета;
  • apt-mark unhold имя_пакета — разрешить обновление пакета.

Install .deb package using GDebi package installer(UI)

In order to install a .deb package using the gdebi user interface, please follow these steps:

Install GDebi Package Installer

If gdebi is not installed on your system, you can easily install it through the Ubuntu Software manager.

In your Ubuntu desktop Activities toolbar, click the Ubuntu Software icon.

In the following view, click on the search icon and enter gdebi in the search bar. The search results will display the GDebi Package Installer as follows:

Click on this search entry in order to open the following view:

Click the Install button to begin the installation process. The following authentication dialog will display for you to provide your authentication details as only an authorized user can install software on Ubuntu.

Enter your password and click the Authenticate button. After that, the installation process will begin, displaying a progress bar as follows.

GDebi will then be installed to your system and you will get the following message after a successful installation:

Through the above dialog, you can choose to directly launch GDebi and even Remove it immediately for whatever reason.

Install a .deb package

We will again use the Google Chrome Stable’s .deb package to explain how to install software through its .deb file using GDebi package installer.

We will move to the Downloads folder as our .deb file is residing there. There, We will right-click on the package and select ‘Open with other application’ from the menu.

From the above Select Application dialog, select the GDEbi Package Installer. The package will then be loaded in gdebi as follows:

Now click the Install Package button in order to initiate the installation procedure. The following authentication dialog will display for you to provide your authentication details as only an authorized user can install software on Ubuntu.

Enter your password and click the Authenticate button. After that, the installation process will begin, displaying a progress bar as follows.

The software will then be installed on your system and can be accessed from the system Dash or the applications listing.

Removal:

Open the .deb file of the installed software in the Gdebi Package Installer.

GDebi will give you two options that you can choose from; reinstall the package and remove the package.

Click the Remove Package button from the above view. An authentication dialog will display for you to provide your authentication details as only an authorized user can remove software on Ubuntu. Enter your password and click the Authenticate button. After that, the uninstall process will begin, displaying a progress bar as follows.

You can choose among any of these methods, based on your preferences, in order to install .deb packages either through the command line or the UI.

3 Ways to Install Software from .deb Packages in Ubuntu

Создание пакета Geany (A fast and lightweight IDE)

Geany IDE — A fast and lightweight IDE

  • Geany BuildingFromSource

  • PPA for Geany Developers Неофициальная сборка последних версий Geany IDE от Launchpad

$ mkdir -p /home/darkfire/deb/geany
$ cd /home/darkfire/deb/geany
$ wget http://download.geany.org/geany-0.17.tar.gz
$ tar -zxvf geany-0.17.tar.gz
$ cd /home/darkfire/deb/geany/geany-0.17

configure

Команда configure запущенная с ключем –help выводит список параметров, которые можно передать ей.

$ ./configure
...
checking dependency style of gcc... (cached) gcc3
checking for g++... no
checking for c++... no
checking for gpp... no
checking for aCC... no
checking for CC... no
checking for cxx... no
checking for cc++... no
checking for cl.exe... no
checking for FCC... no
checking for KCC... no
checking for RCC... no
checking for xlC_r... no
checking for xlC... no
checking whether we are using the GNU C++ compiler... no
checking whether g++ accepts -g... no
checking dependency style of g++... none
configure: error: No C++ compiler not found. Please install a C++ compiler.

Просматриваем вывод команды, если в конце строки «no» это означает, что в системе нет необходимых для компиляции данной программы вспомогательных программ и библиотек. Вывод малоинформативен -нет явного соответствия между ошибкой и пакетом который требуется до установить.
Зная, что в Ubuntu часто пакеты с библиотеками бывают разбиты на два типа:

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

Устанавливаем требуемые пакеты.

# aptitude install autoconf automake libtool autotools-dev dpkg-dev fakeroot intltool-debian intltool
...          
Следующие НОВЫЕ пакеты будут установлены:
  autoconf automake autotools-dev build-essential{a} dpkg-dev g++{a} g++-4.3{a} gettext{a} intltool intltool-debian libltdl7-dev{a} 
  libstdc++6-4.3-dev{a} libtool m4{a} 
0 пакетов обновлено, 14 установлено новых, 0 пакетов отмечено для удаления, и 0 пакетов не обновлено.
Необходимо получить 10,2MБ архивов. После распаковки 35,9MБ будет занято.
Хотите продолжить? [Y/n/?] Y
...

Проверяем. Снова запускаем ./configure.

$ ./configure
...
checking pkg-config is at least version 0.9.0... yes
checking for GTK... configure: error: Package requirements (gtk+-2.0 >= 2.8.0) were not met:

No package 'gtk+-2.0' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables GTK_CFLAGS
and GTK_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

Ошибка. Требует пакет gtk+-2.0. Как показали поиски на английских форумах — пакет все же называется libgtk2.0-dev. Ставим. Как показывает вывод ниже — лучше найти УЖЕ скомпилированный DEB пакет — благо на это есть реальные шансы.

# aptitude install libgtk2.0-dev
...          
Следующие НОВЫЕ пакеты будут установлены:
  debhelper{a} html2text{a} libatk1.0-dev{a} libcairo2-dev{a} libdirectfb-dev{a} libdirectfb-extra{a} libexpat1-dev{a} libfontconfig1-dev{a} 
  libfreetype6-dev{a} libglib2.0-dev{a} libgtk2.0-dev libice-dev{a} libjpeg62-dev{a} libmail-sendmail-perl{a} libpango1.0-dev{a} libpixman-1-dev{a} 
  libpng12-dev{a} libpthread-stubs0{a} libpthread-stubs0-dev{a} libsm-dev{a} libsys-hostname-long-perl{a} libsysfs-dev{a} libx11-dev{a} libxau-dev{a} 
  libxcb-render-util0-dev{a} libxcb-render0-dev{a} libxcb1-dev{a} libxcomposite-dev{a} libxcursor-dev{a} libxdamage-dev{a} libxdmcp-dev{a} 
  libxext-dev{a} libxfixes-dev{a} libxft-dev{a} libxi-dev{a} libxinerama-dev{a} libxrandr-dev{a} libxrender-dev{a} po-debconf{a} 
  x11proto-composite-dev{a} x11proto-core-dev{a} x11proto-damage-dev{a} x11proto-fixes-dev{a} x11proto-input-dev{a} x11proto-kb-dev{a} 
  x11proto-randr-dev{a} x11proto-render-dev{a} x11proto-xext-dev{a} x11proto-xinerama-dev{a} xtrans-dev{a} zlib1g-dev{a} 
0 пакетов обновлено, 51 установлено новых, 0 пакетов отмечено для удаления, и 0 пакетов не обновлено.
Необходимо получить 11,4MБ архивов. После распаковки 39,4MБ будет занято.
Хотите продолжить? [Y/n/?] Y

Проверяем. Снова запускаем ./configure. И видим ниже счастье:) Команда выполнилась успешно!!!

$ ./configure
...
Install Geany in                   : /usr/local
Using GTK version                  : 2.16.1
Build with GTK printing support    : yes
Build with plugin support          : yes
Use virtual terminal support       : yes
Use (UNIX domain) socket support   : yes

Configuration is done OK.

Компилируем в бинарные файлы

$ make

Создание 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 будет выведено после установки.

Зачем скачивать DEB или RPM?

Времена изменились для Linux. DEB и RPM больше не являются методом распространения приложений, которых нет в магазине приложений дистрибутива. Но остаётся ряд причин, благодаря которым, мы всё же предпочитаем их другим форматам.

  • Большая часть программного обеспечения, включенного в ваш дистрибутив, скорее всего, уже упакована в DEB или RPM.
  • Вы можете установить, удалить или обновить программное обеспечение при помощью одного метода.
  • Эти форматы занимают меньше места на жестком диске, чем более новые подходы.
  • В настоящее время, версии DEB или RPM открываются быстрее.
  • Версии DEB и RPM обеспечивают большую согласованность. Иногда, новые форматы игнорируют пользовательские темы, имеют другие диалоговые окна и т. д.

Хотя большинство дистрибутивов используют один из этих двух форматов, это означает, что есть и те, которые этого не делают. Возьмем, к примеру, Arch Linux и множество дистрибутивов, основанных на нем.

Если вы не хотите заниматься поиском пакета для вашего дистрибутива, возможно, вы захотите использовать универсальные форматы приложений, такие как Flatpak, Snap-пакеты или AppImage. Такие ресурсы как Flathub и Snap Store дают надежду на то, что нужное вам приложение будет найдено и всего в один клик или командой будет установлено.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector