Создание 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 создаст .rpm или .deb пакет автоматически, в зависимости от вашей системы Linux.
На CentOS 7 выглядит это так:
На Debian 7 выглядит это так:
Опции 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
Показать версию программы.
ВСЕ!
не я rpm’ки собираю так
dnf install @development-tools
dnf install fedora-packager
dnf install rpmdevtools
rpmdev-setuptree
rpmdev-newspec name.spec
rpmbuild -ba /home/maxim/rpmbuild/SPECS/name.spec
также можно собрать через corp
Мое почтение! При попытке собрать htop выдает ошибку —disable-unicode or install libncursesw, при том что у меня установлена библиотека! Что предпочтительнее сделать в данной ситуации?
Попробуйте еще выполнить команды что ниже, должно помочь…
Если используете deb’s ОС (Debian/Ubuntu/Mint):
Если используете rpm’s ОС (CentOS/Fedora/Redhat):
Это решит проблему!