Автор Тема: Создание установочного пакета.rpm из скрипта на Python 2.7 и PyQt4  (Прочитано 1789 раз)

Оффлайн Shoemaker

  • Участник
  • *
  • Сообщений: 79
Здравствуйте!
Помогите, пожалуйста, если сочтете возможным.
Я написал код на Python 2,7 с графической оболочкой PyQt4 для работы с небольшой базой SQLite3.
Хочу сделать установочный файл .rpm, чтобы после установки не было неопытному пользователю Alt сложностей в запуске программы (чтобы программа появилась в списке программ оболочки) и не надо было думать какие библиотеки ставить, а самое главное, чтобы не могли повредить/изменить код программы.

Поиском, конечно, воспользовался, но знаний не хватает, чтобы понять.
Подскажите, пожалуйста, поэтапный путь создания пакета rpm.
Спасибо заранее!


Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....

Оффлайн Shoemaker

  • Участник
  • *
  • Сообщений: 79
https://www.altlinux.org/Особенности_написания_спек_файлов_в_ALT_Linux
https://www.altlinux.org/SampleSpecs/pythonmodule
и дальше по ссылкам

Спасибо, то, что Вы привели, мне пока непонятно. Что такое spec и для чего он нужен? Как его пишут, что подставляют в переменные? Что с ним потом делают? Если можно - расскажите поэтапно: что делать, для чего, и в какой последовательности, начиная примерно с уровня: "Вот есть у нас скрипт на Python....". Может быть есть раздел, где это подробно (!) описано?

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
Можете на github выложить? Или хотя бы архив исходников куда-нибудь выложить под свободной лицензией? А опакетить и я могу.

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Спасибо, то, что Вы привели, мне пока непонятно.
Цитировать
Что такое spec и для чего он нужен?
Спек - это такой текстовый файл, в котором написано программе rpm-build как собирать rpm. Можно сказать, что это разновидность скрипта.

Цитировать
Как его пишут, что подставляют в переменные?
подставлют всё, что нужно, что-бы rpm собрался.

Цитировать
Что с ним потом делают?
Запускают на сборку rpm

Цитировать
Если можно - расскажите поэтапно: что делать, для чего, и в какой последовательности, начиная примерно с уровня: "Вот есть у нас скрипт на Python....". Может быть есть раздел, где это подробно (!) описано?

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

Самый примитивный вариант, вокруг которого всё накручивается:

- Создаём каталог RPM в домашнем каталоге пользователя, в нём дерево каталогов:
BUILD
RPMS
SOURCES
SPECS
SRPMS

- В SOURCES кладём исходники, в SPECS - написанный нами SPEC ,

- переходим в каталог SPECS, и в нём запускаем

rpm -ba  имя_спека
Как-то так.

Вот ещё пример:
https://habrahabr.ru/post/246177/

« Последнее редактирование: 11.02.2017 08:54:18 от ruslandh »

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....

Оффлайн Shoemaker

  • Участник
  • *
  • Сообщений: 79
Можете на github выложить? Или хотя бы архив исходников куда-нибудь выложить под свободной лицензией? А опакетить и я могу.

Спасибо! Пока скрипт постоянно изменяется. Программа нв данный момент запускается как скрипт типа "python myprog.py".  Смысла прямо сейчас делать rpm нет. Но я хочу знать КАК собрать rpm самому.

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Смысла прямо сейчас делать rpm нет. Но я хочу знать КАК собрать rpm самому.
Можно скачать какой-нибудь опакеченный питоний модуль, и попробовать пересобрать его самому.

Оффлайн Shoemaker

  • Участник
  • *
  • Сообщений: 79
http://www.tldp.org/HOWTO/RPM-HOWTO/
https://www.opennet.ru/docs/HOWTO-RU/RPM-HOWTO-48.html
https://www.altlinux.org/Spec

Вот, спасибо. Пока глянул первую ссылку. Там подробно объясняется основа сборки. Почитаю, потом посмотрю привязку именно к питону.
Upd. А по второй ссылке вроде как упрощенный перевод английского текста, что по первой ссылке.
Спасибо, это то, что нужно.
« Последнее редактирование: 11.02.2017 09:09:57 от Shoemaker »

Оффлайн Антон Мидюков

  • alt linux team
  • ***
  • Сообщений: 5 182
  • antohami@
Программа нв данный момент запускается как скрипт типа "python myprog.py"

Т.е. это всего лишь один файл? Тогда ваш спек будет выглядеть так:
Name: <имя-пакета>
Version: <версия-пакета>
Release: alt<релиз-пакета>

Summary: <однострочное описание>

License: <лицензия>
Group: <группа>
Url: <URL>

Packager: <ваше имя> <$login@altlinux.org>

Source: имя_скрипта.py

BuildArch: noarch

%description
<многострочное
описание>

%prep

%build

%install
mkdir -p %buildroot%_bindir
install -m755 %SOURCE %buildroot%_bindir/

%files
%_bindir/*

%changelog
* <дата> <ваше имя> <$login@altlinux.org> <версия-пакета>-<релиз пакета>
- Initial build for ALT Linux Sisyphus

Оффлайн Shoemaker

  • Участник
  • *
  • Сообщений: 79
Т.е. это всего лишь один файл?

нет, там несколько файлов. Из главного файла через команду import подтягивается файл, сгенерированный в Qt designer и файл с какими-то стандартными процедурами, которые я скинул, чтобы не загромождать основной код

Оффлайн kostyalamer

  • Мастер
  • ***
  • Сообщений: 432
    • Сайт клуба активных пользователей ALT Linux
Т.е. это всего лишь один файл? Тогда ваш спек будет выглядеть так:

Name: <имя-пакета>
Version: <версия-пакета>
Release: alt<релиз-пакета>

Source: имя_скрипта.py


%build

%install
mkdir -p %buildroot%_bindir
install -m755 %SOURCE %buildroot%_bindir/

%files
%_bindir/*
Антон, это не совсем так . У тебя в /usr/bin будет лежать файл имя.py
его надо будет запускать командой python /usr/bin/имя.py, что не удобно.
Лучше сделать каталог /usr/share/имя проги и запихать туда всю эту питонщину, а в /usr/bin положить скрипт на bash такого вида :
#!/bin/bash
# -*- coding: utf-8 -*-
cd /usr/share/имя/
python имя.py
В общем мои пакеты достаточно кривые но товарищ может взять для образца что-нибудь вроде :
http://altlinuxclub.ru/repo/Repo_P8/SRPMS.hasher/wmtrashpy-0.95-alt1.src.rpm
или нашего с Иваном wmfon-а:
https://packages.altlinux.org/en/Sisyphus/srpms/wmfon
to Shoemaker  скачаете src-ху , распакуете ее куда-нибудь ( например krusader -ом ) , увидите там спек и архив, архив распакуйте и сделайте по аналогии.
« Последнее редактирование: 11.02.2017 12:18:45 от kostyalamer »
Archlinux  / Altlinux Free Mate p8

Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
#!/bin/bash
# -*- coding: utf-8 -*-
cd /usr/share/имя/
python имя.py

А что мешает "классическое":
#!/usr/bin/env python
#-*- coding: UTF 8 -*-

или
#!/usr/bin/python
# -*- coding: utf-8 -*-


Оффлайн ruslandh

  • Поспешай не торопясь !
  • Модератор глобальный
  • *****
  • Сообщений: 32 361
  • Учиться .... Телепатами не рождаются, ими ....
Но если это полноценный модуль питона, то :
https://www.altlinux.org/SampleSpecs/pythonmodule