Создание RPM или DEB пакетов с Checkinstall в Linux

Создание RPM или DEB пакетов с Checkinstall в Linux

Если вы установили программу Linux с исходного кода, запустив «make install»,  установка не сильно сложная, но это становится действительно сложным при удалении данной программы, если автор программы не обеспечил удаления в файле Makefile. Вам придется сравнивать полный список файлов в вашей системе до и после установки программы из исходников, и вручную удалить все файлы, которые были добавлены во время установки.

CheckInstall отслеживает все файлы, созданные или измененные с помощью установки командной строки (например, «make install» «make install_modules», и т.д.), и собирает стандартный бинарный пакет, давая вам возможность установливать или удалять его с вашего дистрибутива.

В этой статье «Создание RPM или DEB пакетов с Checkinstall в Linux» я расскажу как это делается  только основанных на RedHat’s и Debian’s дистрибутивов и покажу как собрать RPM или DEB пакет с исходного кода, используя Checkinstall.

Установка CheckInstall on Linux.

Чтобы установить Checkinstall на Debian/Ubuntu и остальных debian-оподобных ОС, выполните:

# aptitude install checkinstall

Чтобы установить Checkinstall в дистрибутивах основанных на Red Hat, вам нужно будет скачать встроенных .rpm в Checkinstall, можете использовать мой.

Для начала пробуем его найти в ОС:

# yum search checkinstall

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

# yum install checkinstall

Или качаем пакет:

Для x64:

# cd /usr/local/src && wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/ikoinoba/CentOS_CentOS-6/x86_64/checkinstall-1.6.2-3.el6.1.x86_64.rpm

Для x86:

# cd /usr/local/src && wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/ikoinoba/CentOS_CentOS-6/i686/checkinstall-1.6.2-3.el6.1.i686.rpm

Выполняем установку:

# yum install checkinstall-1.6.2-3.el6.1.x86_64.rpm

ИЛИ

# yum install checkinstall-1.6.2-3.el6.1.i686.rpm

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

# checkinstall <install-command>

Без данного <install-command> аргумента,по умолчанию checkinstall выполнит команду «make install».

# checkinstall make install_packages
# checkinstall make modules_install
# checkinstall install.sh
# checkinstall setup
# checkinstall rpm -i my-package-1.0.i386-1.rpm

Сборка RPM или DEB пакета с CheckInstall

В этом примере, я покажу как можно собрать пакет Htop — это интерактивная, текстовая утилита для просмотра процессов для Unix/Linux (аналог top. Но Htop лучше — лично мои соображения).

Первое что нужно сделать, так это скачать исходный код с официального сайта. Я привык сохранять все архивы в /usr/local/src. Скачиваем исходный код программы и распаковываем ее, и переходим в папку с кодом для дальнейших действий:

# cd /usr/local/src && wget http://hisham.hm/htop/releases/1.0.3/htop-1.0.3.tar.gz
# tar xzf htop-1.0.3.tar.gz && cd htop-1.0.3

Следующее что необходимо сделать- это сконфигурировать htop, после конфигурирования, обычно выполняют команду ‘make install’, но для checkinstall — это не нужно.

# ./configure
# make install

Поэтому, чтобы собрать Htop пакет, мы можем ссылаться на Checkinstall без каких-либо аргументов, которые будут использовать команду «make install ‘, чтобы построить пакет. В процессе сборки пакета, команда Checkinstall задаст вам ряд вопросов.

Вот команды, чтобы собрать пакет Htop:

# ./configure
# checkinstall

1. Ответьте ‘Y’, на вопрос «Должен ли я создать набор пакетов документации по умолчанию?»

2. Вы можете ввести краткое описание пакета, а затем нажмите Enter два раза.

3. Введите число, чтобы изменить какой-либо из следующих значений или введите «enter» чтобы продолжить:

checkInstall Unix/Linux пример

checkInstall Unix/Linux пример

После чего Checkinstall создаст .rpm или .deb пакет автоматически, в зависимости от вашей системы Linux.

На CentOS 7 выглядит это так:

CheckInstall CentOS/RedHat/Fedora

CheckInstall CentOS/RedHat/Fedora

На  Debian 7 выглядит это так:

CheckInstall Debian/Ubuntu

CheckInstall Debian/Ubuntu

 

Опции Checkinstall

# checkinstall [options] [command [command arguments]]

*Выбор тип пакета*

-t,—type=<slackware|rpm|debian>
Выбор ОС для сборки пакета.

-S
Собрать пакет для Slackware.

-R
Собрать пакет для RPM’s ОС.

-D
Собрать пакет для Debian’s  ОС.

*Опции для установки собранных пакетов*

—install=<yes|no>
Выполнить или не выполнять установку после сборки пакета.

—fstrans=<yes|no>
Enable (включить)/disable (выключить) код перевода файловой системы.

*Опции для скриптов*

-y, —default
Принять ответы на все вопросы, по умолчанию.

—pkgname=<name>
Установить имя.

—pkgversion=<version>
Установить версию.

-A, —arch, —pkgarch=<arch>
Установить архитектуру.

—pkgrelease=<release>
Установить release.

—pkglicense=<license>
Установить лицензию.

—pkggroup=<group>
Установить software group

—pkgsource=<source>
Установить местоположение сорсов (исходного кода).

—pkgaltsource=<altsource>
Установить альтернативное местоположение сорсов (исходного кода).

—pakdir=<directory>
Новый пакет будет сохранен здесь (указать путь).

—maintainer=<email addr>
Пакет maintainer (.deb).

—provides=<list>
Особенности данного пакета (.rpm).

—requires=<list>
Особенности требуемые этому пакету (.rpm).

—rpmflags=<flags>
Передайте эти флаги в rpm установщику.

—rpmi
Используйте опцию «-i» для rpm при установке .rpm.

—rpmu
Используйте опцию «-U» для rpm при установке .rpm.

—dpkgflags=<flags>
Передайте эти флаги dpkg установщику (deb ОС).

—spec=<path>
Местоположение файла .spec.

—nodoc
Не включать файлы документации.

*Опции выводимой информации*

-d<0|1|2>
Установить уровни для debug.

-si
Запустить интерактивную установку команды.

—showinstall=<yes|no>
Переключиться на интерактивную установку команды(Да\Нет).

-ss
Запустите интерактивный скрипт установки для Slackware.

—showslack=<yes|no>
Переключиться на интерактивную установку команды(Да\Нет) для Slackware.

* Параметры настройки пакета *

—autodoinst=<yes|no>
Переключать создание скрипта doinst.sh

—strip=<yes|no>
Снимите любые ELF бинарники, найденные внутри пакета

—stripso=<yes|no>
Снимите любые ELF бинарные библиотеки (.so файлы)

—addso=<yes|no>
Искать любые shared libs и добавить их в /etc/ld.so.conf

—reset-uids=<yes|no>
Сбросить привелегии для всех файлов/папок на 755 и владельца/группу для всех директорий на root.root

—gzman=<yes|no>
Сжатие любые страницы man-ы, найденные в пакете

—docdir=<path>
Путь для размещения файла с документацией

—umask=<mask>
Установите значение umask

—exclude=<file|dir[,…]>
Исключить эти файлы/ каталоги из пакета

—include=<listfile>
Принудительно включить в пакет файлы/директории, перечисленных в «listfile»

—inspect
Проверить список файлов пакета в

—review-spec
Просмотрить файл spec до создания .rpm

—review-control
Просмотрить файл управления до создания .deb

—newslack
Использовать новый  (8.1+) Slackware описание формата («—newslack» implies «-S»)

—with-tar=/path/to/tar
Вручную установите путь к tar binary в этой системе.

* Параметры очистки *

—deldoc=<yes|no>
Удалить doc-pak по окончании.

—deldesc=<yes|no>
Удалить файлы description-pak по окончании.

—delspec=<yes|no>
Удалить файл spec по окончании.

—bk
Резервное копирование любых замененных файлов.

—backup=<yes|no>
Переключить резервного копирования.

*О CheckInstall*

—help, -h
Показать это сообщение.

—copyright
Показать Copyright информацию.

—version
Показать версию программы.

 

ВСЕ!

3 thoughts on “Создание RPM или DEB пакетов с Checkinstall в Linux

  1. Мое почтение! При попытке собрать htop выдает ошибку —disable-unicode or install libncursesw, при том что у меня установлена библиотека! Что предпочтительнее сделать в данной ситуации?

    • Попробуйте еще выполнить команды что ниже, должно помочь…
      Если используете deb’s ОС (Debian/Ubuntu/Mint):

      # apt-get install libncurses5-dev libncursesw5-dev
      

      Если используете rpm’s ОС (CentOS/Fedora/Redhat):

      # yum install ncurses-devel
      

      Это решит проблему!

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.