Портал информационной и технической поддержки ПО образовательных учреждений РФ

SPO HELP
  • Новости
  • Продукты
  • Поддержка
  • Учебный центр
  • Документация
  • Сообщество
  • Форумы
       
  • Вход
  • Регистрация

Форумы → Свободное Программное Обеспечение → "Ручная" сборка программ и сборка пакетов RPM
Последние записи

"Ручная" сборка программ и сборка пакетов RPM

Подписаться на "Ручная" сборка программ и сборка пакетов RPM Сообщений: 20, участников: 5

  • Участвуют:
  • Julia Dronova (administrator)
  • Viktor
  • Михаил Цалевич
  • testuser
  • BorisVlasenko
Ответить


20 мая 2010, 17:36
Zhuu_admin_medium Julia Dronova (administrator) Записей: 3144

Дорогие товарищи! Приводим общие понятие и принципы сборки программ из исходников, а также сборки RPM-пакетов. Материал по сборке пакетов конкретно в АльтЛинуксе будет добавлен чуть позже.

Спасибо всем за внимание.

Установка софта из исходников имеет некоторые положительные моменты, но и немало отрицательных.

Положительные:
* Нужного пакета (или нужной версии) может не быть в репозиториях Вашего дистрибутива
* Программа, установленная из исходников, может быть сконфигурирована по Вашему желанию
* Вобщем-то, полезный опыт.

Отрицательные:
* Вам придётся самим отслеживать все зависимости для установки программы
* Если что-то пойдёт не так, рассчитывать придется только на помощь разработчиков софта

== Перед установкой ==

Прежде чем устанавливать софт из исходников, убедитесь, что подходящего пакета в вашем дистрибутиве нет.

Убедитесь, что в системе установлены средства разработки -- компилятор, библиотеки и заголовки для разных пакетов (многие дистрибутивы выделяют их в отдельные пакеты), для компиляции некоторых программ нужны и исходники ядра. Убедитесь, что
символическая ссылка '''linux''' в директории ''/usr/src'' указывает на исходники того ядра, под которым будет работать установленная программа.

== Получение исходников ==

Закачиваем исходники. Здесь обычно есть два варианта:
1. Закачать готовый архив в формате '''.tar.gz'''
 2. Взять файлы с CVS репозитория.  В CVS обычно находится софт "в процессе разработки", более свежий, но и менее протестированный.
Инструкции по пользованию CVS-репозиториями обычно находятся на сайте разработчика.

Распаковываем тарболы. Это можно сделать при помощи любого графического архиватора (например File Roller в Гноме), или же из консоли:
* для архива '''.tar.gz''':

tar xvzf имя.архива.tar.gz

* для архива '''.tar.bz2''':

 

tar xvjf имя.архива.tar.bz2


Затем перемещаемся в распакованный таким образом каталог и внимательно читаем, что написано в файлах README и INSTALL. Этот шаг абсолютно необходим. Без него ничего работать не будет. Если софт получен из CVS-репозитория, читаем инструкции разработчика на сайте по "бутстрапанию" (см. http://en.wikipedia.org/wiki/Bootstrapping_%28c...) пакета, если необходимо.

== Конфигурирование и компиляция (сборка) ==

Если инструкции требуют запуска скрипта с названием'' configure'' в качестве первого шага, сначала прогоняем 

./configure --help

и внимательно читаем, какие опции можно послать скрипту ''configure'' для правильного конфигурирования программы.
Затем запускаем 

./configure
с выбранными опциями. На этом этапе программе могут понадобиться зависимости, которые либо не установлены в нашей системе, либо не найдены скриптом ''configure''. В первом случае, их надо найти и поставить, во втором -- еще раз исследовать опции скрипта ''configure'' на предмет указания ему места, где искать нужные зависимости.

Если ''configure'' сработал нормально, запускаем'' make''. Здесь тоже возможны варианты. Если ''make'' завершается ошибкой, копируем
ошибку в окошко Google и смотрим, как наши товарищи по несчастью справились с подобной ошибкой. Иногда решения нет, и надо
писать разработчику.

== Установка ==

Если ''make'' прошел нормально, мы почти у цели.

Думаете, теперь надо прогонять make install? В сущности, можно и так (не забудьте стать рутом для этого).

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

== Создание пакета ==

=== checkinstall ===
Это одна из немалого количества программ для построения пакетов из исходников. Она не дистроспецифична и генерирует пакеты для самых распространённых пакетных менеджеров (в отличие от paco, который тоже всем хорош, кроме того, что держит свою базу пакетов).

В классической схеме сборки приложения из исходников, использующих automake, то есть сценарий

./configure && make && make install

эта утилита заменяет собой шаг make install, делая в принципе то же самое, но при этом регистрируя устанавливаемую программу в пакетной базе дистрибутива.

checkinstall -R

Построит и установит RPM пакет(для Fedora, Mandriva, SuSe, Alt, ASP...)

checkinstall -D

Создаст и установит DEB-пакет(для Debian, Ubuntu...)

checkinstall -S

Создаст и установит TGZ-пакет(для Slackware, Zenwalk, DeepStyle, Vektorlinux, Mops; в поставке дистра есть checkinstall, патченный самим
Патриком...)

Имя пакета по умолчанию будет myNewUtil. Версия: 1.2.3. После запуска checkinstall всегда просит ввести описание пакета, а также даёт возможность изменить имя, версию и т.д.

=== makepkg ===
Ещё раз просмотрите опции configure на предмет префикса, куда устанавливается программа. Обычно это /usr или /usr/local.

Создаем в домашней директории нашего пользователя директорию foo, а в ней -- директории usr и usr/local

Теперь становимся рутом и пишем 

make install prefix=/home/<userame>/foo/usr/local
cd foo
makepkg foo.tgz

В результате получаем Слакварный пакет, который можно теперь установить программой installpkg.


===rpmbuild===
Cтандартная утилита для сборки программ из исходников и упаковки их в пакеты RPM во многих пакетных дистрибутивах, построенных на базе RedHat. Для сборки бинарного пакета обычно используются пакеты ''*.src.rpm'', содержащие сами архивы с исходниками программ,
дополнительные файлы (патчи, desktop-файлы и т.д.) и ''spec-файл'' - набор правил для сборки программы.


Итак, если нужно собрать в пакет rpm какую-нибудь программу, выполняем следующее:
*1. Качаем файл *.src.rpm для нашей программы (обычно их можно найти на ресурсах http://rpmfind.net, http://rpm.pbone.net или в
репозиториях дистрибутива (если он ориентирован на rpm-пакеты) ).
*2. Устанавливаем его:

rpm -ivh имя_пакета.src.rpm

В каталоге /usr/src/rpm/SOURCES должен появиться архив с исходниками нужной нам программы, а в каталоге /usr/src/rpm/SPECS - файл имя_программы.spec (это файл, описывающий правила сборки).
*3. Переходим в директорию /usr/src/rpm/SPECS
и там выполняем:
rpmbuild -bb --target=архитектура_процессора название_программы.spec

(запускаем сборку программы) Вместо "архитектура_процессора" подставляем архитектуру процессора, под которую собираем пакет(в
большинстве случаев подойдет i686 ), название_программы.spec - это ''spec-файл'' для нашей программы. Если не удовлетворены какие-то зависимости, rpmbuild сообщит об этом - тогда придется доустановить недостающие пакеты.
*4. Если все пройдет удачно, на выходе получим rpm-пакет нашей программы, он будет лежать в каталоге

/usr/src/rpm/RPMS/архитектура_процессора_под_которую_собирался_пакет

Переходим в эту директорию и оттуда делаем:

rpm -ivh имя_программы.rpm

Все, программа установлена.


===Полезные ссылки===

Решение проблем, возникающих при выполнении команд ./configure, make и make install

RPM

RPM: руководство к использованию

Упаковка программ с помощью RPM, часть 1: Создание и распространение пакетов

 
20 мая 2010, 18:53
Custom_Аватар_medium Viktor Записей: 1327

Про cmake не хотите пояснить?

 
20 мая 2010, 22:55
Zhuu_admin_medium Julia Dronova (administrator) Записей: 3144

Viktor писал(а):

Про cmake не хотите пояснить?

Сделаю, хорошо. Там ещё про Stow можно.

 
20 мая 2010, 23:09
I0541rp_medium Михаил Цалевич Записей: 1318

Один из специалистов, "участвующих" в АльтЛинуксе заявил (очень человек переживает!) :

"У неё конкретный базовый набор дистрибутивов, а она общий текст постит. Ну не собирают в Alt пакеты от root. Причём у rpm там просто запрет, а она про /usr/src/rpm/ пишет. В ~/RPM всё по-умолчанию !" (С)С.Афонин

Развейте сомнения , пожалуйста!

 
20 мая 2010, 23:54
Zhuu_admin_medium Julia Dronova (administrator) Записей: 3144

Михаил Цалевич

Сделаю конкретно и по Альтам, хорошо. Припишу сейчас сверху, что текст пока общего плана.

ЗЫ -- рада, что материал привлёк внимание в любом случае, потому что вообще боялась наплыва критики а-ля "учителям это всё не нужно". :)

 
21 мая 2010, 10:01
Custom_Аватар_medium Viktor Записей: 1327

А-ля "пошаговые инструкции как сделать всё, что угодно" для ALTLinux? Может быть лучше не надо? Посмотрел http://www.altlinux.org/Где_и_как_искать_программы и http://www.altlinux.org/СборкаПакетов. Стало страшно:). Большинство советов на alt-форумах сводятся к

1) Искать в репозитории программу или ее аналог

2) Разместить в списке рассылки просьбу собрать и поместить нужную программу в дистрибутив

3) Заплатить за сборку

4) Не доставать вопросами

5) Стать мейнтейнером

PS Думаю все это будет не сильно способствовать появлению и использованию в ALTLinux (С)ПО сторонних разработчиков, например обучающих программ по предметам. Ведь многие делают *.run, а разработчики ALTLinux вряд ли будут создавать такой софт.

>  боялась наплыва критики а-ля "учителям это всё не нужно" 
Учителям, как и большинству простых пользователей нужна не ОС, а ПО.

 
21 мая 2010, 12:14
Icon_missing_medium_medium testuser Записей: 990

Пугать народ не надо.

По опыту, в любом RPM-дистрибутиве установка из *.src.rpm сводится к последовательности вроде

    rpm -i pkg-name.src.rpm

    cd ~/RPM/SPECS

    rpm -bb pkg-name.spec

    cd ../RPMS/arch_name

    su -c "rpm -Uhv pkg-name.rpm [ .. ]"

ALT не исключение.

   Сборка руками  a la ./configure --prefix=/usr/local/opt/pkg-name && make install  в RPM/DEB-дистрибутивах тоже проблем не создает при правильном --prefix. Собирающему желательно понимать, что происходит при выполнении каждой вводимой руками команды.

 
21 мая 2010, 13:35
Zhuu_admin_medium Julia Dronova (administrator) Записей: 3144

Viktor писал(а):

А-ля "пошаговые инструкции как сделать всё, что угодно" для ALTLinux? Может быть лучше не надо?

Виктор, вы понимаете, тут же такая вещь, что нас читает и обсуждает, как оказалось, огромное кол-во народу, и как-то конструктивно реагировать на такие вот эмоциональные отзывы, как предоставил Михаил ("у неё...", "а она...") -- мне тоже надо учиться.

 
21 мая 2010, 15:01
Custom_Аватар_medium Viktor Записей: 1327

> Пугать народ не надо.

Это не я. Чес слово:) "Почему нельзя собирать и ставить программы с помощью make; make install

Кратко: если вы не понимаете, почему нельзя пользоваться configure; make; make install, то вам не стоит пользоваться этими командами." 
Можно почитать оригинал по первой ссылке.

 > rpm -i pkg-name.src.rpm .... ALT не исключение. Не уверен.

" при установке чужих rpm-пакетов избегайте команд вида rpm -i и тем более rpm --nodeps --force. Используйте apt-get install." Там же.

> Cобирающему желательно понимать, что происходит при выполнении каждой вводимой руками команды.
Это всегда желательно понимать.

Юлия, держитесь. Правда, если честно, я не совсем Вас понял. Первое предложение в кавычках в посте Михаила меня тоже покоробило. А на некорректные эмоциональные отзывы, да еще и переданные через третьих лиц, можно реагировать их удалением (отзывов или лиц решать Вам). Вообще тема сборки и установки пакетов из исходников вызывает какую-то странную реакцию у адептов ALTLInux

Михаил Цалевич. Вы могли бы не цитировать первую фразу сообщения, адресованного неизвестно кому. Кстати, было бы неплохо приводить ссылки на оригинал.

PS Давайте дальше по существу, ок?

 
21 мая 2010, 15:43
Zhuu_admin_medium Julia Dronova (administrator) Записей: 3144

Viktor писал(а):

PS Давайте дальше по существу, ок?

Согласна. Не в первый раз после появления Миши в теме приходится тему выправлять в первоначальное русло. Далее прошу всех по теме, оффтоп режется, как обычно.

Возможно, у ув.testuser найдётся что сказать по сборке рпмок именно в Альте, помимо уже сказанного. Давайте не забывать, что большинство новообращённых школьных адептов СПО сидят на Альте.

 
21 мая 2010, 15:44
Icon_missing_medium_medium testuser Записей: 990

> "Почему нельзя собирать и ставить программы с помощью make; make install  ... Кратко: если вы не понимаете, почему нельзя пользоваться configure; make; make install, то вам не стоит пользоваться этими командами." Можно почитать оригинал по первой ссылке:

По ссылке доступно разъясняется, почему нельзя делать ``./configure ; make ; make install''. И простым языком говорится, как и почему надо делать ./configure [...] && make [ ... ] && make install [ ...], чтобы не поломать систему.

>> rpm -i pkg-name.src.rpm .... ALT не исключение.

> Не уверен.

В ALT *.src.rpm ставятся, в том числе, именно так.

> " при установке чужих rpm-пакетов избегайте команд вида rpm -i и тем более rpm --nodeps --force. Используйте apt-get install." Там же.

Комментарий в контексте .src.rpm показателен. Лучше удалите.

 
21 мая 2010, 16:28
Custom_Аватар_medium Viktor Записей: 1327

Мы с Вами говорим об одном и том же. Я привел ссылки для того, чтобы потенциальные пользователи обратили на это внимание.

>  В ALT *.src.rpm ставятся, в том числе, именно так.

Большинство потенциальных пользователей привыкло устанавливать ПО двойным кликом и вообще не заботится о том из каких оно (ПО) источников. Да и разницу между *.src.rpm и *.rpm сразу не прочувствуют.

> Комментарий в контексте .src.rpm показателен. Лучше удалите.

Да ладно, пусть останется. Где-то это уже было:).

PS Интересно, как на установку из исходников отреагирует тех. поддержка?

 
21 мая 2010, 16:58
Zhuu_admin_medium Julia Dronova (administrator) Записей: 3144

Viktor писал(а):

PS Интересно, как на установку из исходников отреагирует тех. поддержка?

Ой, ну я не думаю, что так уж все сейчас бросятся ставить. Но обычно это по умолчанию -- на свой страх и риск. Надо написать большой disclaimer в начале темы, помимо уже имеющихся предупреждений, а то мне уже боязно :)

> Миллионы учителей с упоением бросились ставить из исходников  :rolleyes:

 
21 мая 2010, 18:14
Icon_missing_medium_medium testuser Записей: 990

> Да и разницу между *.src.rpm и *.rpm сразу не прочувствуют.

Непрочувствовавшимся не следует устанавливать из .src.rpm. Вредно для них и окружающих.

>> Комментарий в контексте .src.rpm показателен. Лучше удалите.

> Да ладно, пусть останется. Где-то это уже было:).

Ok.

Открытым текстом: чем отличается `rpm -i --force --nodeps  pkg-name.src.rpm' от `rpm -U pkg-name.src.rpm'?

 
24 мая 2010, 17:29
Bob_medium BorisVlasenko Записей: 92

Добрый день.

 

"На свой страх и риск", "вредно для окружающих", "это всегда желательно понимать".

А как понимать?

Вот я, например,  учитель информатики. И мне нужно для образовательного процесса какую-нибудь программу, которая в репозиториях отсутствует.

Да, согласен - надо запастись временем и изучать теорию. Но у меня нет времени, поэтому я буду искать инструкции, делать как в них написано, не понимая, что происходит в системе и, самое главное, не понимая в чем РИСК?

Вот это и главный вопрос: что и как может пойти не так?

Если я ставлю на автомобиль разные шины на одну ось - я ставлю на свой страх и риск и я понимаю, что может проийзойти и в каком случае. И мне - страшно.

Когда я собираю систему из пакетов я просто не воспринимаю предупреждений о страхе и риске.

Большое спасибо за инструкции, обязательно воспользуюсь.

В ближайшем будущем, например, буду ставить VirtualBox. Помню, что уже ставил, помню, что инструкцию брал на АльЛинуксовом сайте.

А вот чем грозит мне такая установка, кроме общих фраз "самостоятельно следить за..." я не понимаю.

 

Спасибо, Борис. С уважением.

 

 
28 мая 2010, 14:32
Zhuu_admin_medium Julia Dronova (administrator) Записей: 3144

BorisVlasenko

Попробую написать краткую информацию по зависимостям пакетов и чем, собственно, занимается пакетный менеджер кроме экономии времени пользователя при установке множественных программ. (речь идёт в том числе и об одном из коренных отличий Linux от Windows)

Инструкция по сборке пакетов собственно в АльтЛинукс лежит ТУТ на самом деле.

 
28 мая 2010, 15:23
Icon_missing_medium_medium testuser Записей: 990

> Инструкция по сборке пакетов собственно в АльтЛинукс лежит ТУТ на самом деле.

"Подготовьте репозиторий gear (являющийся частным случаем git-репозитория). Это необходимое условие для правки уже существующих пакетов"

^^^ Условие не необходимое. Можно простым rpmbuild, но неизолированная сборочная среда будет грязная.

 
02 июня 2010, 19:11
Zhuu_admin_medium Julia Dronova (administrator) Записей: 3144

Зависимости пакетов и пакетный менеджер

 
04 июня 2010, 08:47
Bob_medium BorisVlasenko Записей: 92

О зависимостях прочитал. Написано понятно. Спасибо.

Должен отметить, что если вижу где-то аватарку с буквой А в цветах, то всегда ожидаю информативных и адекватных постов.

Спасибо, Юлия.

 

 

О зависимостях я знал и ранее, но все равно не понимаю, что может произойти с системой, когда я  ставлю "на страх и риск".

Опять пример: когда я начал ездить на машине, то мог за рулем снять свитер, например (с полным отпусканием руля и потерей обзора на 3 секунды), я часто рулил одной рукой, держа ее на руле расслабленно. Прошло полгода и я держу руль двумя руками. Я НАСМОТРЕЛСЯ. Я стал понимать, что может произойти.

В принципе, мне это непонимание жить не мешает. Я стараюсь ничего не ставить. Но если уж ставлю, то никакого страха не испытываю. А ставить - надо. Вот дойдут руки до VirtualBox и буду ставить.

Мне приходят в голову несколько ситуаций:
1.
Я поставил пакет (программу из пакета)
Через некоторое время установил другую программу из репозитория, которая обновила что-то в системе.
Мною установленная программа (из пакета) перестала работать. Обновить ее, допустим, я не могу (нет новой версии).
В итоге получили неработоспособную программу.

Не вижу угрозы системе в этом случае. Вижу возможные проблемы с программой.

2.??

 

 
07 июня 2010, 14:33
Zhuu_admin_medium Julia Dronova (administrator) Записей: 3144

BorisVlasenko

Обдумывала, как лучше ответить, но лучше всё-таки на мой взгляд расмотреть конкретную ситуацию с какой-нибудь программой, так нагляднее будет, имхо.

Также могу посоветовать в этом ключе вам заглянуть в интересную книгу, где описывается ручная сборка системы Linux  с нуля (дистрибутив называется Linux From Scratch).  Почитать её интересно будет для того, чтобы глубже уяснить все внутренние зависимости и переплетения системы:

http://www.opennet.ru/docs/RUS/lfs6/

Войдите чтобы ответить на тему

Форумы → Свободное Программное Обеспечение → "Ручная" сборка программ и сборка пакетов RPM
  • Главная
  • О проекте
  • Справка
  • Теги
  • Карта сайта

©2015 Все права защищены. Портал информационной и технической поддержки ПО образовательных учреждений РФ.
Cо всеми проблемами и пожеланиями по работе портала и службы технической поддержки вы можете обратиться по адресу .