Установить программу из исходников

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

Распаковка

Программы обычно распространяются в упакованных архивах, это файлы с расширениями

.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 Unix/Linux пример

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

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

CheckInstall CentOS/RedHat/Fedora

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

CheckInstall Debian/Ubuntu

Опции 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
Это решит проблему!

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru