Не редко необходимые пакеты можно найти только в виде исходных текстов, в данной статье описывается метод установки пакета из исходных текстов.
Распаковка
Программы обычно распространяются в упакованных архивах, это файлы с расширениями
.tar.gz (иногда.tgz) .tar.bz2
Нужно понимать отличие между архиватором и упаковщиком.
Для архивации директорий и файлов используется программа tar ; результатом её работы является файл с расширением .tar . Грубо говоря, это копия файловой системы — директорий и файлов с их атрибутами и правами доступа, помещённая в один файл.
Компиляция из исходников и установка из пакетов в чем разница?
Нередко читаю комментарии в интернете, что компиляция и установка приложений из исходников лучше (по быстродействию приложения), чем установка из пакетов. Подскажите пожалуйста в чем разница? (в качестве примера можно взять установка nginx на голой Ubuntu 16.04)
Отслеживать
121k 24 24 золотых знака 121 121 серебряный знак 293 293 бронзовых знака
задан 6 июн 2017 в 13:37
718 8 8 серебряных знаков 19 19 бронзовых знаков
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Компиляция и установка программ из исходников в Linux. htop, make, configure
Установка с пакета обычно подразумевает, что Вам предоставляют готовое скомпилированное приложение (но это не обязательно так, бывает по-всякому). А значит, что будет собрано ровно то, что решил автор пакета. А это может не подходить для конкретного случая.
Когда код собирается вручную, то можно поотключать часть функционала, а часть включить. Это может дать некий прирост производительности. А может и наоборот. Можно включить экспериментальную функциональность, а можно выключить ту, в которой нашли уязвимость. А можно заплату быстро накатить.
Это все требует хорошего знания продукта и системы сборки. К тому же сборка вручную пакета на системах с готовыми пакетами сопряжена с разными проблемами — например, при обновлении может перетереть самособранный пакет (все можно настроить, но . ).
Возвращаясь к nginx. В нем часть модулей часто не идет «из коробки» (то есть, не включены в пакет). Это обычно редкие модули, но иногда они бывают нужны. Я встречал, к примеру, что распаковка тела запроса, зажатого gzip, по умолчанию не включена, и пришлось учить пхп распаковывать.
Почему же гуляет этот миф? Просто раньше, да и сейчас почему-то считается, что дистрибутивы типа gentoo очень сложны, но с другой стороны суперпроизводительны (надо же как-то оправдать постоянные пересборки мира). А если они сложны, значит, должны хорошо работать (если, конечно, их правильно настроить). По факту, получить плюс можно, но только для ядра и некоторых пакетов (например, vlc или ffmpeg).
Выводы:
- нужна ли Вам пересборка nginx на убунте? Вряд ли. Маловероятно, что Вы получите какой-то прирост производительности.
- а если сильно хочется пересобирать? разверните тестовую систему и пробуйте. Делайте бенчмарки. А ещё хорошо взять дистрибутив, который это поддерживает из коробки — gentoo, funtoo, LFS.
Источник: ru.stackoverflow.com
Linux — Компиляция программ из исходников в Ubuntu
Создание 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
Или качаем пакет:
# 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
# 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
Без данного аргумента,по умолчанию 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 создаст .rpm или .deb пакет автоматически, в зависимости от вашей системы Linux.
На CentOS 7 выглядит это так:
На Debian 7 выглядит это так:
Опции Checkinstall
# checkinstall [options] [command [command arguments]]
*Выбор тип пакета*
-S
Собрать пакет для Slackware.
-R
Собрать пакет для RPM’s ОС.
-D
Собрать пакет для Debian’s ОС.
*Опции для установки собранных пакетов*
—install=
Выполнить или не выполнять установку после сборки пакета.
—fstrans=
Enable (включить)/disable (выключить) код перевода файловой системы.
*Опции для скриптов*
-y, —default
Принять ответы на все вопросы, по умолчанию.
—pkgname=
Установить имя.
—pkgversion=
Установить версию.
-A, —arch, —pkgarch=
Установить архитектуру.
—pkgrelease=
Установить release.
—pkglicense=
Установить лицензию.
—pkggroup=
Установить software group
—pkgsource=
Установить местоположение сорсов (исходного кода).
—pkgaltsource=
Установить альтернативное местоположение сорсов (исходного кода).
—pakdir=
Новый пакет будет сохранен здесь (указать путь).
—maintainer=
Пакет maintainer (.deb).
—provides=
Особенности данного пакета (.rpm).
—requires=
Особенности требуемые этому пакету (.rpm).
—rpmflags=
Передайте эти флаги в rpm установщику.
—rpmi
Используйте опцию «-i» для rpm при установке .rpm.
—rpmu
Используйте опцию «-U» для rpm при установке .rpm.
—dpkgflags=
Передайте эти флаги dpkg установщику (deb ОС).
—spec=
Местоположение файла .spec.
—nodoc
Не включать файлы документации.
*Опции выводимой информации*
-d<0|1|2>
Установить уровни для debug.
-si
Запустить интерактивную установку команды.
—showinstall=
Переключиться на интерактивную установку команды(ДаНет).
-ss
Запустите интерактивный скрипт установки для Slackware.
—showslack=
Переключиться на интерактивную установку команды(ДаНет) для Slackware.
* Параметры настройки пакета *
—autodoinst=
Переключать создание скрипта doinst.sh
—strip=
Снимите любые ELF бинарники, найденные внутри пакета
—stripso=
Снимите любые ELF бинарные библиотеки (.so файлы)
—addso=
Искать любые shared libs и добавить их в /etc/ld.so.conf
—reset-uids=
Сбросить привелегии для всех файлов/папок на 755 и владельца/группу для всех директорий на root.root
—gzman=
Сжатие любые страницы man-ы, найденные в пакете
—docdir=
Путь для размещения файла с документацией
—umask=
Установите значение umask
—exclude=
Исключить эти файлы/ каталоги из пакета
—include=
Принудительно включить в пакет файлы/директории, перечисленных в «listfile»
—inspect
Проверить список файлов пакета в
—review-spec
Просмотрить файл spec до создания .rpm
—review-control
Просмотрить файл управления до создания .deb
—newslack
Использовать новый (8.1+) Slackware описание формата («—newslack» implies «-S»)
—with-tar=/path/to/tar
Вручную установите путь к tar binary в этой системе.
* Параметры очистки *
—deldoc=
Удалить doc-pak по окончании.
—deldesc=
Удалить файлы description-pak по окончании.
—delspec=
Удалить файл spec по окончании.
—bk
Резервное копирование любых замененных файлов.
—backup=
Переключить резервного копирования.
*О CheckInstall*
—help, -h
Показать это сообщение.
—copyright
Показать Copyright информацию.
—version
Показать версию программы.
This entry was posted in Debian’s, Kali Linux, RHEL’s. Bookmark the permalink.
3 thoughts on “ Создание RPM или DEB пакетов с Checkinstall в Linux ”
Мое почтение! При попытке собрать 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
Это решит проблему!