Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Россия-2 _ Наши сборки _ Сборка пакетов rpm

Автор: kostyalamer 29.11.2011, 21:18

Предлагаю в эту тему складывать документацию ( или ссылки на нее ) по поводу спеков, макросов , сборки пакетов , хашера и подобных вопросов нужных начинающему сборщику / кодеру / программисту. На эту мысль меня натолкнула отличная инструкция от Анатолия которая как-то незаметно утонула в недрах форума ALT Linux , вместе с моими бреднями по этому вопросу. Вчера как раз развлекался сборкой пакета в чруте, вспомнил про инструкцию Толи посмотрел - отличная вещь.
Прибьем ее сюда гвоздями , думаю Анатолий возражать не будет smile.gif . Также прошу всех делиться своими знаниями, тема интересная и важная для клуба good.gif

Автор: kostyalamer 29.11.2011, 21:32

Итак: Hasher сборка не src.rpm ( сборка пакетов в чруте ).
Взято из темы : http://forum.altlinux.org/index.php/topic,7433.msg103740.html#msg103740 форума ALT Linux.
Автор инструкции NotHAM он же Анатолий:

Цитата
Создаём хашерницу:
1.
Код
$ hsh --init ~/каталог_хашера

В каталоге ~/каталог_хашера/chroot/... будет создан мини-линукс, в котором можно работать,
как в обычном линуксе, не захламляя основную систему ничем (обычно ненужными devel).

2.
Код
$ hsh-install ~/каталог_хашера mc rpm-utils
## Теперь там есть почти всё, что нужно...

Далее уходим в хашер ("логинимся") и "осматриваемся", чтобы понять, куда мы попали...
3.
Код
$ hsh-shell ~/каталог_хашера

4.
Код
$ cd ~/RPM

5.
Код
$ mc


Тут следует иметь в виду, что в хашере ваш логин - builder, а не "Вася пупкин",
и что ваша домашняя директория вовсе не /home, а /usr/src, других отличий пожалуй нет.

Чтобы уйти из хашера - просто делаем ...
Код
$ exit


Теперь можно установить в хашер всё необходимое для сборки...
6.
Код
$ hsh-install ~/каталог_хашера <список пакетов из спека по зависимостям>


Далее закидываем в хашер (в каталог .../chroot/.in/...) исходники, спек и что ещё
нужно (если нужно), делаем
7.
Код
$ hsh-shell ~/каталог_хашера

8.
Код
$ mc
# сейчас окажемся в /chroot/.in/
перекидываем всё что закинули в /usr/src/RPM/куда_нужно (в домашнюю директорию),
и, как обычно, находясь в /usr/src/RPM/SPECS делаем
9.
Код
$ rpm -ba
... (-bb, -bi), или buildreq -bi...(-ba...)
Если облом (чего-то не хватает, обычно какой нибудь ...devel)
10.
Код
$ exit

И повторяем начиная с п. 6 пока не получится.

Итого - имеем полноценную сборочную среду и основная система ничем не
захламлена.
Чтобы очистить хашерницу - повторяем
Код
$ hsh --init ~/каталог_хашера
,
или просто удаляем из под рута ~/каталог_хашера

Автор: NotHAM 29.11.2011, 22:27

Цитата(kostyalamer @ 29.11.2011, 21:32) *
Итак: Hasher сборка не src.rpm ( сборка пакетов в чруте ).
Взято из темы : http://forum.altlinux.org/index.php/topic,7433.msg103740.html#msg103740 форума ALT Linux.
Автор инструкции NotHAM он же Анатолий:


Тоже хотел осветить это дело, но ты опередил. biggrin.gif
Только вчера из hash-шелла вынырнул, fbpanel отлаживал сборку (см. в рассылке).

ЗЫ. Автор вовсе не я, а документация с вики (если поискать) и сообщения Гены
с того же форума, когда он там тусовался. Я просто описал как сам это делаю.
Если что не так - Гена поправит, он любитель в этом шелле посидеть, даже как
то пытался там m-p-d запустить (неудачно конечно). biggrin.gif

Автор: torabora 29.11.2011, 23:49

http://www.altlinux.org/%D0%A0%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_changelog_%D0%B2_Vim
В случае с хашером будет так:
hsh-install ~/hasher vim vim-plugin-spec_alt-ftplugin
hsh-shell ~/hasher
echo "%packager Vassily Pupkin <pupkin<>altlinux.org>" >> ~/.rpmmacros
vim <наш файл>.spec
\ac (вставляет дату, мейнтейнера и версию)

P.S. Лично я как-то очень мучался с ручной правкой changelog, теперь работаю только так. Всё-таки олд-скульный Vim - это сила smile.gif

Автор: Drool 30.11.2011, 0:23

Цитата(NotHAM @ 29.11.2011, 20:27) *
...и сообщения Гены
с того же форума, когда он там тусовался.

А я то думаю - чё-то оно мне знакомо smile.gif
По теме - у меня два каталога хашера, один обычный, а второй я никогда не удаляю. И в этом втором каталоге у меня, ко всему прочему, настроен еще и http://ru.wikipedia.org/wiki/Ccache, что дает просто огромный прирост скорости компиляции, если пакет уже там собирался. Для этого внутрь этого хашера установлен непосредственно сам ccache, а в начало ~/.bash_profile вставлена конструкция:
Цитата
GCC_USE_CCACHE=1
export GCC_USE_CCACHE

Когда наступает момент, что версии пакетов внутри неудаляемого хашера слишком устаревают, я рутом сохраняю оттуда /usr/src (ведь он там фактически как хомяк используется), а после генерации каталога заново заменяю им то, что создалось по новой. В итоге я у меня там сохраняется и настроенный ~/.rpmmacros, и ccache с его ~/.ccache, и содержимое ~/RPM и, что иногда бывает весьма полезным, ~/.bash_history.
Как-то так.

Автор: Drool 30.11.2011, 0:26

Цитата(torabora @ 29.11.2011, 21:49) *
P.S. Лично я как-то очень мучался с ручной правкой changelog, теперь работаю только так. Всё-таки олд-скульный Vim - это сила smile.gif

А для этого есть специальный скрипт add_changelog из пакета rpm-utils, который автоматом генерит заготовку новой записи чейнчлога в спек-файл. Есть еще cleanup_spec, если нужно подчистить спек от лишних пробелов и т.п.

Автор: torabora 30.11.2011, 1:03

Цитата(Drool @ 30.11.2011, 0:26) *
А для этого есть специальный скрипт add_changelog из пакета rpm-utils, который автоматом генерит заготовку новой записи чейнчлога в спек-файл. Есть еще cleanup_spec, если нужно подчистить спек от лишних пробелов и т.п.

Да, Ген, я знаю про add_changelog, но у нас с ним как-то не срослось, стал искать ему замену. А так, через этот плагинчик, и в Vim'е чуток научился работать, хороший инструментsmile.gif
Согласен, cleanup_spec незаменимая вещь, лишние пробелы глаза пропускают smile.gif
P.S. За приём со вторым хашером спасибо, обязательно буду пользоваться.

Автор: Drool 30.11.2011, 1:20

Цитата(torabora @ 29.11.2011, 23:03) *
...но у нас с ним как-то не срослось...

Этого не может быть, если правильно заполнены в спеке тэги Version, Release и Packager.

Автор: NotHAM 30.11.2011, 1:49

Цитата(Drool @ 30.11.2011, 0:23) *
А я то думаю - чё-то оно мне знакомо smile.gif
По теме - у меня два каталога хашера, один обычный, а второй я никогда не удаляю...

Меряться будем ??

[anatoly<>E5200 ~]$ ls | grep hash
hash-Branch ## постоянный (копия в Киеве) без шелла
hasher ## с шеллом (самый главный)
hash-fb ## с шеллом временный fbpanel - 7 сборок
hash-icewm ## старый, но выбросить жалко, там с десяток сборок
hash-temp ## с шеллом (тут с синаптиком мучался) временный
hash-xfce ## старый
[anatoly<>E5200 ~]$

Многовато конечно, но места в хомяке ещё 20Г есть.

ЗЫ. Ни разу не сомневался, что Гена в этой теме появится немедленно. biggrin.gif
и наговорит много ПОЛЕЗНЫХ советов. smile.gif

Автор: kostyalamer 30.11.2011, 7:18

Цитата(NotHAM @ 30.11.2011, 1:49) *
Меряться будем ??

[anatoly<>E5200 ~]$ ls | grep hash
hash-Branch ## постоянный (копия в Киеве) без шелла
hasher ## с шеллом (самый главный)
hash-fb ## с шеллом временный fbpanel - 7 сборок
hash-icewm ## старый, но выбросить жалко, там с десяток сборок
hash-temp ## с шеллом (тут с синаптиком мучался) временный
hash-xfce ## старый
[anatoly<>E5200 ~]$

О блин, а у меня то чайника всего одна хашерница, ничего ужо теперь то я их разведу smile.gif .
PS кто-нибудь знает зачем от хашерной репы оторвали genbasedir в p6 ?

Автор: Drool 1.12.2011, 1:07

Цитата(kostyalamer @ 30.11.2011, 5:18) *
PS кто-нибудь знает зачем от хашерной репы оторвали genbasedir в p6 ?

Потому-что новый apt не смотрит в индексные файлы, а смотри непосредственно в каталог с rpm-ками. В рассылке говорили, что так то-ли быстрее, то-ли быстрее и менее тяжело для винта. Как я помню, это было сделано для снижения нагрузки альтовской сборочницы, которая после каждого чиха была вынуждена делать genbasedir на весьма увесистый repo. Есть ли ручки, чтоб вернуть старое поведение - не в курсе, нужно в рассылке спрашивать.

Автор: Drool 1.12.2011, 1:26

Цитата(NotHAM @ 29.11.2011, 23:49) *
Меряться будем ??


Посмотрел на свои скромные
Код
# du -sh /home/drool/hasher*
101M    /home/drool/hasher
2.6G    /home/drool/hasher-w

и покраснел...

Цитата(NotHAM @ 29.11.2011, 23:49) *
ЗЫ. Ни разу не сомневался, что Гена в этой теме появится немедленно. biggrin.gif
и наговорит много ПОЛЕЗНЫХ советов. smile.gif

Главное - меня вовремя разбудить cool.gif

Автор: NotHAM 1.12.2011, 2:04

Цитата(Drool @ 1.12.2011, 1:07) *
... Есть ли ручки, чтоб вернуть старое поведение - не в курсе, нужно в рассылке спрашивать.


Я спрашивал как-то. См. ответ ldv@ #23051 cc3.

Цитата(Drool)
Главное - меня вовремя разбудить ...


С добрым утром, Гена ! biggrin.gif

Автор: kostyalamer 1.12.2011, 7:01

Цитата(NotHAM @ 1.12.2011, 2:04) *
Я спрашивал как-то. См. ответ ldv@ #23051 cc3.

ага , его ответ мне понравился biggrin.gif
Я то себе сделал простейший скриптик :
Код
genbasedir --topdir /home/k/hasher/repo/i686/
и никаких проблем не имею, но это костыль.
Главное не забывать запускать его перед использованием репы ( пару раз бывало biggrin.gif )

Автор: NotHAM 1.12.2011, 18:00

Цитата(Drool @ 1.12.2011, 1:26) *
Главное - меня вовремя разбудить cool.gif


Вот опять в шелле проснулся. Makefile отлаживаю под игрушку.
А то там и поиграть не во что.

ЗЫ. В заголовке окна будет видно, где оно запущено. biggrin.gif
(если картинка выложится).

 

Автор: ksa 1.12.2011, 19:09

Цитата(NotHAM @ 1.12.2011, 19:00) *
Вот опять в шелле проснулся. Makefile отлаживаю под игрушку.
А то там и поиграть не во что.

ЗЫ. В заголовке окна будет видно, где оно запущено. biggrin.gif
(если картинка выложится).

Помню такую игруху wink.gif Вот еще бы графику довести хотя бы до линий и квадратов... biggrin.gif

Автор: NotHAM 1.12.2011, 21:25

Цитата(ksa @ 1.12.2011, 19:09) *
Помню такую игруху wink.gif Вот еще бы графику довести хотя бы до линий и квадратов... biggrin.gif

Ага, одна из первых, которую ещё на Радио86-РК увидел, а позже, где-то в 93-94гг.,
когда купил ВР-7.0, написал её под ДОС (надо же было этого ВР испытать).
Вот нашел недавно в архивах и решил под Linux портировать (под голую консоль).
Вроде получилось. Даже опакетилось само по себе (автоматически).

На самом деле это просто пример удобства hash-shell. Я просто не представляю,
как бы это сделал в системе, где нет ничего для devel-a.
Доустановить - просьба не предлагать. biggrin.gif

Одну только ошибку допустил: в сборочных зависимостях забыл убрать mc. Хм.
Но так вроде даже удобнее, если собирать в хашере с опцией --lazy-cleanup.

Автор: kostyalamer 4.12.2011, 0:07

По просьбам трудящихся небольшая инструкция Как собирать пакеты в hasher-е из src - х:
для начала ставим hasher:
Установка и настройка -Взято отсюда : http://www.altlinux.org/Hasher/%D0%A0%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE

Цитата
Установка
hasher в Sisyphus и дистрибутивах ALT Linux располагается в пакетах hasher, hasher-priv и легко устанавливается:
# apt-get install hasher

Добавление пользователя
hasher использует специальных вспомогательных пользователей и группу hashman для своей работы, поэтому каждого пользователя, желающего использовать hasher, перед началом работы нужно зарегистрировать:
# hasher-useradd USER

Эта команда создаёт вспомогательных пользователей USER_a и USER_b и добавляет пользователя USER в группы hashman, USER_a и USER_b.

Поскольку hasher-useradd добавляет пользователя в группы, пользователю необходимо перелогиниться (открытия нового терминала в X недостаточно; su - $USER достаточно) перед началом работы с hasher.

Настройка сборочной среды
Для работы hasher требуется создать директорию, в которой будет строиться сборочная среда:
$ mkdir ~/hasher

В моем случае вместо USER пишем k smile.gif

Дальше немножко моих подредактированных бредней отсюда: http://forum.altlinux.org/index.php/topic,7433.msg103740.html#msg103740:
Цитата
Так как пакечу в основном собственные проги то для их сборки пользуюсь
Etersoft-build-utils и buildreq до кучи, что и советую делать всем кто пакетит свои программы . Дело в том что все необходимое итак ставится в систему при их написании.
После того как вы собрали (думаю не с первого захода) свои пакеты командой rpm -ba блабла.spec, закидываем готовую src-ху в hasher и если Вы не в тиме ( а если в тиме зачем глупые вопросы задавать biggrin.gif )
hsh --no-sisyphus-check блабла.src.rpm. Идем пьем кофе и если сборочные зависимости у вас правильные и интернет более-менее быстрый ( а еще лучше подключено локальное зеркало с бранчем ) то через некоторое время пакеты собираются.
Но это еще не все , это только означает что ваш пакет может собрать другой человек в своей системе на том же бранче, и не более того.
А вот теперь самое интересное берем minimal от NotHAM для бранча5,1или последний wmsmall для бранча p6 ( ставим его в виртуалку или на раздел диска ) и туда пытаемся поставить ваш *.rpm. Весьма вероятно что сразу обломаетесь напоровшись на проблемы с зависимостями. ( кстати у меня минималка устанавливается минут за 20, не многим больше чем собираются пакеты в хашере ). Чешете репу, ставите на нее пакеты вручную, добиваясь того что rpm у вас поставится. После чего идете в основную систему, добавляете зависимости в спек и собираете все по-новой wink.gif
Потом берете свежую минималку и снова ставите пакет. В результате будет понятно что пакет не только можно пересобрать (hasher), но он еще и будет работать biggrin.gif.

Два небольших замечания:
1)что бы пакеты были заданной архитектуры ( а не pentium4 какие-нибудь ) используется ключ --target, я пользуюсь архитектурой i686 и собираю такой командой:
Код
$ hsh --no-sisyphus-check --target=i686 путь/имя_пакета

2) как уже писал выше хашер перестал делать готовую репу, для генерации недостающих файлов делаем в моем случае:
Код
$ genbasedir --topdir /home/k/hasher/repo/i686/

Автор: ksa 17.12.2011, 16:09

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

Код
hsh-install /home/sb/hasher mc
и получаю нулевой вывод в терминале, то есть, вообще никаких сообщений. Возврат в терминал не происходит. Можно ждать сколько угодно, ничего не меняется.

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

Но пакеты не ставятся внутрь хэшера:
Код
Чтение списков пакетов...
Построение дерева зависимостей...
E: Невозможно найти пакет mc
hsh-install: Failed to calculate package file list.
hsh-install: Failed to generate package file list.
Задам вопрос, надеюсь он не будет риторическим: что делать ?

Автор: kostyalamer 17.12.2011, 17:06

Цитата
Чтение списков пакетов...
Построение дерева зависимостей...
E: Невозможно найти пакет mc
hsh-install: Failed to calculate package file list.
hsh-install: Failed to generate package file list.[/code]Задам вопрос, надеюсь он не будет риторическим: что делать ?

Проверь подключены ли у тебя репозитарии и доступны ли они в настоящий момент, для этого сделай apt-get update .

Автор: ksa 17.12.2011, 18:21

Цитата(kostyalamer @ 17.12.2011, 18:06) *
Проверь подключены ли у тебя репозитарии и доступны ли они в настоящий момент, для этого сделай apt-get update .

Вроде все подключено и доступно (обновлял шестой бранч через APT-Indicator). А установка пакетов во внутрь так и не идет huh.gif Не придется ли с нуля создавать хэшерницу...

Автор: kostyalamer 17.12.2011, 19:31

Для начала, возьми любую src-ху из клубной репы ( какую-нибудь тему от WM ), положи ее в свой каталог ~/hasher и находясь в нем дай команду
hsh --no-sisyphus-check --target=i686 имя_пакета.src.rpm и посмотри пойдет ли сборка ( процесс занимает от 1 до Билл_знает сколько минут при внешних репах,жди )
Кстати лишние репы для начала отключи, оставь только альтовские.
Надеюсь, после того как ты залогинился под root-ом в хашере, ты перезагрузил систему и работаешь под простым пользователем ?
hsh-shell - работает ?
попробуй находясь в каталоге hasher дать такую команду:

Код
hsh-install  mc


В прицепе вывод терминала, погляди :
 hasher.txt ( 9 килобайт ) : 2

Автор: ksa 17.12.2011, 20:36

Цитата(kostyalamer @ 17.12.2011, 20:31) *
Для начала, возьми любую src-ху из клубной репы ( какую-нибудь тему от WM ), положи ее в свой каталог ~/hasher и находясь в нем дай команду
hsh --no-sisyphus-check --target=i686 имя_пакета.src.rpm и посмотри пойдет ли сборка ( процесс занимает от 1 до Билл_знает сколько минут при внешних репах,жди )
Кстати лишние репы для начала отключи, оставь только альтовские.
Надеюсь, после того как ты залогинился под root-ом в хашере, ты перезагрузил систему и работаешь под простым пользователем ?
hsh-shell - работает ?
попробуй находясь в каталоге hasher дать такую команду:
Код
hsh-install  mc


В прицепе вывод терминала, погляди :
 hasher.txt ( 9 килобайт ) : 2

Команду по установке пакетов вхэшер я должен отдавать от юзера или админа и должен ли я быть залогинен в хэшере ? Вот этот вопрос надо бы просветить. Под рутом в хэшере я вообще не логинился.

Автор: ksa 17.12.2011, 20:49

Наверное отклика от терминала нет, потому что идет подкачка с инета. Сделал инициализацию хэшера.

Автор: ksa 17.12.2011, 21:04

Вроде прошла установка mc. Будем дальше ковырять smile.gif

Автор: kostyalamer 17.12.2011, 21:18

Цитата(ksa @ 17.12.2011, 20:36) *
Команду по установке пакетов вхэшер я должен отдавать от юзера или админа и должен ли я быть залогинен в хэшере ?

Под пользователем ясное дело .
Цитата(ksa @ 17.12.2011, 20:36) *
Под рутом в хэшере я вообще не логинился.

Ужас , Серега почитай первую половину 18 поста этой темы и сходи по ссылке на wiki

Автор: IVK 7.1.2012, 13:54

Собираю rpm-ку (она ставится сразу при установке дистрибутива), в ней архив, который надо распаковать так, чтобы у юзера были права на запись в получившийся каталог. Сделал первое, что пришло в голову. В спеке прописал создание каталога (в /usr/share) с правами 777 и копирование туда этого архива (права на него - 666), а также добавил в /etc/skel (то ли прямо в .bash_profile, то ли в запускаемый с его помощью скрипт - тут разные варианты) команду на распаковку этого архива. Вроде так всё получается : при установке дистра архив ставится куда надо, а потом, при создании юзера, распаковывается уже от его имени, и всё работает. Но, если подумать, есть нюансы (например : а если пакет устанавливать не вместе с дистром, а потом?) А как вообще правильно решаются подобные вопросы? smile.gif

Автор: ksa 22.11.2012, 22:12

Накатал http://www.altlinux.org/Инструкция_по_сборке_пакетов_с_помощью_rpm для сборки (точнее пересборки, но и для сборки тоже пригодится может) rpm пакетов для начинающих. Просьба дополнить\поправить по возможности.
PS Надо бы сделать в одном месте про сборку с помощью rpm без hasher, gear и прочих замудренностей для начинающих. Короче говоря, замечания приветствуются, как и правки wink.gif

Автор: kostyalamer 22.11.2012, 22:46

Цитата(ksa @ 22.11.2012, 22:12) *
Накатал http://www.altlinux.org/Инструкция_по_сборке_пакетов_с_помощью_rpm для сборки (точнее пересборки, но и для сборки тоже пригодится может) rpm пакетов для начинающих. Просьба дополнить\поправить по возможности.
PS Надо бы сделать в одном месте про сборку с помощью rpm без hasher, gear и прочих замудренностей для начинающих. Короче говоря, замечания приветствуются, как и правки wink.gif

Отлично smile.gif Для чайников добавь еще про buildreq очень полезная вещь: http://www.altlinux.org/Buildreq

Автор: Drool 23.11.2012, 0:22

Цитата(ksa @ 22.11.2012, 20:12) *
Короче говоря, замечания приветствуются, как и правки wink.gif
Дописал замечание по поводу ключа --target.

Автор: NotHAM 23.11.2012, 1:04

Цитата(ksa @ 22.11.2012, 22:12) *
...
Надо бы сделать в одном месте про сборку с помощью rpm без hasher, gear и прочих замудренностей для начинающих.
...


hasher и gear - Это не "замудрёности", а очень удобные инструменты, а настоящие замудрёности
начнутся, когда систему почистить захочется от разных *-devel. Например libGtk+2-devel потянет
за собой ещё примерно пару десятков других (думаю есть и покруче...), причем ставится всё это
в корневой раздел, относительно быстро устаревает, требует регулярного обновления, и т. д. ...
С Хашером гораздо проще - удалил каталог и всё, причем лежит всё это в хомяке, размер которого
обычно гораздо больше, корневого раздела.
Ну а Gear - лёгкая "обёртка" для Гита, чтобы прямо из Гита сборка шла в сразу в Хашере без дополнительных
заморочек с созданием src.rpm (Хашер всё сам сделает, вернее rpm-build, который там уже есть). Иными
словами - используя Gear мы делаем почти то-же что по инструкции, но без заходов в Хашер, с той
разницей, что каталоги RPM создаются не в хомяке, а в хашере, и с дополнительным удобством, что
можно работать прямо из Гита.
А в хомяке собирать тем же rpm (сидя в терминале) - то же самое что в хашере (сидя в том-же терминале),
с той разницей что если что-то не пошло (непонятно какие develы нужны) - потом не знаешь как систему
от мусора почистить.

ЗЫ. Всё это ИМХО, конечно.
Сам так начинал когда-то, но после 2-х переустановок системы плюнул на это и начал читать
вики (Git, Gear, Hasher).
Теперь с ужасом думаю - как люди с Федорой и Мандривой живут (там ведь этого нет) wink.gif
Вот инструкция по Git, Gear, Hasher для начинающих очень бы пригодилась с подробным
описанием какая команда что делает (в инете про Git есть - но как-то в основном на англ.,
хотя и по нашенски есть что-то - недавно на лоре перевод книги анонсировали, я скачал).
а Gear и Hasher - это Альтовские прибамбасы, причем довольно удачные, но ... man на русском
написать видимо некому. Наверное автор, ldv, по русски не говорит?, как, впрочем, и другие из Team.) biggrin.gif
Возможно, конечно, что я слишком утрирую, но сам по другому уже не могу wink.gif
Переезд на мандривофедору мне, похоже, противопоказан.

PSS А на самом деле инструкция нужна, конечно, если ей пользоваться в Хашере smile.gif
Если возникнут какие-то замечания - добавлю (если Гена не опередит, а он типа уже начал).

Автор: ksa 23.11.2012, 12:37

Инструкция нужна в первую очередь для тех, кто хотел бы освоить сборку пакетов. А вот тот соус, под которым ты будешь юзать rpm (заниматься сборкой), -- уже вопрос вкуса (субъективный фактор). Не все могут сразу сладить с хэшером (если локально) или с gear (по причине процедуры предварительной настройки, которая тоже требует некоторых навыков [даже несмотря на ролик весьма доступно сделаный] и запоминания относительно большого количества информации, что может оказаться решающим фактором для некоторых). Поэтому для таких людей проще может быть начать (начинать) с малого.

Автор: Drool 23.11.2012, 13:28

Лично мне gear нужен постольку, поскольку - чтоб добавить коммит и запушить в git.alt, это как мантейнеру. А вот непосредственно для сборки пакетов мне абсолютно достаточно rpm и hasher. А отправлять в хашер на сборку из gear даже наоборот - мешает, т.к. в процессе сборки бывает нужно неоднократно править спек, добавлять какие-то патчи, пока пакет не станет собирабельным. И если делать это все из git/gear - то получается нагромоджение коммитов, которые не несут лично для меня никакой полезной нагрузки. Потому и собираю сначала в локальном хашере через hsh-shell, а уже окончательный вариант спека с патчами я однократно добавляю в гит. И то, бывает, что нарываюсь на необходимость подправлять спек для сборки в сизиф, т.к. собираю на t6.

Автор: ksa 23.11.2012, 13:45

Хорошо, что есть такие удобные вещи как gear и hasher. Назначение у них, как мне кажется, несколько различное. Но их огромный плюс (каждого в отдельности) в том, что каждый из них на своём месте и решает те задачи, для которых создавался, и решает эти задачи в определённой совокупности обстоятельств весьма успешно.

Автор: NotHAM 23.11.2012, 14:26

Цитата(Drool @ 23.11.2012, 13:28) *
...
... собираю сначала в локальном хашере через hsh-shell, а уже окончательный вариант спека с патчами я однократно добавляю в гит. И то, бывает, что нарываюсь на необходимость подправлять спек,...
...

+1.
Аналогично, причем иногда даже без использования rpm, прямо через make.
Вполне прокатывает, если makefile несложный и если $(DESTDIR) подкорректировать.
В т. ч. и make --install делаю ...(потом глянул в ~/tmp/...buildroot, что куда легло, поправил
если нужно, в спек это прописал, если нужно опять же), а уж потом rpm --бла-бла .... *.spec
(Вот тут как раз тот случай, когда инструкция бывает нужна перед глазами ...),
а уж после этого в гит всё это дело, там патч делается (git diff) и...
$ git add (что нужно, или всё)
$ gear-commit
$ git gc
$ gear-hsh --бла-бла-...
В общем без hsh-шелла никак не получается обойтись.
PS. Если надо - могу книжку progit.ru (4M pdf) у себя выложить (в сентябре была на лоре).

Автор: Drool 23.11.2012, 16:23

Цитата(NotHAM @ 23.11.2012, 12:26) *
PS. Если надо - могу книжку progit.ru (4M pdf) у себя выложить (в сентябре была на лоре).

http://uaget.homeip.net/details.php?id=1947 wink.gif

Автор: kostyalamer 8.9.2013, 22:44

Есть пару вопросов :
1) Есть ли команда для удаления установленного пакета из chroot-а
( hsh-install наоборот biggrin.gif ) или в тупую лезть через hsh-shell --rooter а дальше ручками ?
2) как заставить hsh-install ставить конкретную версию пакета или он этого не умеет ?

PS то YYY : WM 0.95.5 собрал, в репу выложу когда проверю его работу на новой минимальной системе.

Автор: Skull 11.9.2013, 10:45

Цитата(kostyalamer @ 8.9.2013, 21:44) *
1) Есть ли команда для удаления установленного пакета из chroot-а
( hsh-install наоборот biggrin.gif ) или в тупую лезть через hsh-shell --rooter а дальше ручками ?
Такая возможность есть (hsh-shell --rooter), но хэшернице поплохеет.
Цитата
2) как заставить hsh-install ставить конкретную версию пакета или он этого не умеет ?
Код
hsh-install 'vim-console=7.3.353-alt3'

Автор: kostyalamer 11.9.2013, 21:43

Цитата(Skull @ 11.9.2013, 10:45) *
Такая возможность есть (hsh-shell --rooter), но хэшернице поплохеет.

Пока вроде живая smile.gif
Цитата(Skull @ 11.9.2013, 10:45) *
Код
hsh-install 'vim-console=7.3.353-alt3'

Спасибо Андрей !

Автор: IVK 24.7.2015, 23:23

Читаю альтовскую wiki насчёт сборки rpm и не могу понять, где прописать выполнение скрипта после установки пакета. Про %post нигде не упоминается, что наводит на мысль, что он в Альте не используется - или упоминать о нём излишне?

Автор: kostyalamer 25.7.2015, 0:03

Цитата(IVK @ 24.7.2015, 23:23) *
Читаю альтовскую wiki насчёт сборки rpm и не могу понять, где прописать выполнение скрипта после установки пакета. Про %post нигде не упоминается, что наводит на мысль, что он в Альте не используется - или упоминать о нём излишне?

Используется, вот нагуглил : http://lists.altlinux.org/pipermail/devel/2004-November/108528.html

Автор: IVK 25.7.2015, 0:17

Так то 11 лет назад. Наверное, надо будет где-то найти кучу альтовских спеков и прошерстить их на этот счёт. А вообще не ожидал столкнуться с подобной проблемой huh.gif

Автор: Drool 25.7.2015, 11:47

%post как поддерживался, так и поддерживается.

Автор: Антон Мидюков 27.7.2015, 19:22

Поделюсь-ка здесь своим опытом осваивания gear. Работать в нём удобно, но требуются навыки. Для облегчения жизни, сделал пару скриптов.

1. Скрипт для инциализации нового окружения gear на базе архива исходного кода. Будет создан gear-репозиторий пакета в каталоге $HOME/gear/. Формат команды:
gear-init.sh /path/to/source.tar.gz

Содержимое:
#!/bin/sh
arhiv_name=$(basename $1)
package_name=${arhiv_name%-*}
if echo "$arhiv_name" | grep -q .tar.
then package_extens="tar.${arhiv_name##*.}"
else package_extens=${arhiv_name##*.}
fi
mkdir -pv $HOME/gear/$package_name
cd $HOME/gear/$package_name
git init
gear-update -v -c $1 $package_name
git add -v $package_name
git commit -a -m "Import archive $1"
mkdir -v .gear
touch .gear/rules
echo "$package_extens: $package_name" > .gear/rules
git add -v .gear/rules
git commit -a -m "new file .gear/rules"

touch $package_name.spec
git add -v $package_name.spec
gear-update -v -c $1 $package_name

2. Скрипт для обновления сборочных зависимостей в спек-файле после удачной сборки в хэшере hsh-buildreq.sh. Выполняется из каталога, в котором находится спек. В качетсве аргумента указывается каталог c хэшером и спек.
Содержимое:
#!/bin/sh
if [ -z "$1" ] #Если нет аргументов
then
echo -e `gettext 'Укажите первым аргументом каталог, в котором находится hasher, вторым - путь к спеку'`
elif [ -z "$2" ] #Если нет второго аргумента
then
echo -e `gettext 'Укажите вторым аргументом путь к спеку'`
else
hsh-install -v $1 rpm-utils
echo buildreq "/usr/src/RPM/SPECS/$2" | hsh-shell $1
cp -v $1/chroot/usr/src/RPM/SPECS/$2 .
fi

В первом скрипте, планирую genspec задействовать в будущем.

Автор: Drool 29.7.2015, 14:56

Антон, а ты не практикуешь постоянный рабочий хашер? Ведь в нем внутри можно удобно работать. У меня два каталога хашера, один обычный, в котором делаю стендовые сборки готовых пакетов, и второй - рабочий, который у меня создан давно, там настроен ccache и другие вкусности. В системе зато никаких *-devel пакетов.

Автор: NotHAM 29.7.2015, 17:18

Цитата(Drool @ 29.7.2015, 14:56) *
Антон, а ты не практикуешь постоянный рабочий хашер? Ведь в нем внутри можно удобно работать...
...

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

Цитата
...
... В системе зато никаких *-devel пакетов.

Тоже так было, пока с Лазарусом не связался.
А он частенько бывает нужен ... (хотя он притянул много, но не слишком).

ЗЫ. В целом Drool абсолютно прав.
Удобно ... и довольно комфортно.

Автор: Drool 29.7.2015, 22:27

Цитата(NotHAM @ 29.7.2015, 15:18) *
Тоже так было, пока с Лазарусом не связался.
А он частенько бывает нужен ... (хотя он притянул много, но не слишком).

Ходят слухи, что в http://lists.altlinux.org/pipermail/devel-newbies/2010-March/000320.html. wink.gif

Автор: Антон Мидюков 31.7.2015, 6:55

Цитата(Drool @ 29.7.2015, 17:56) *
Антон, а ты не практикуешь постоянный рабочий хашер? Ведь в нем внутри можно удобно работать. У меня два каталога хашера, один обычный, в котором делаю стендовые сборки готовых пакетов, и второй - рабочий, который у меня создан давно, там настроен ccache и другие вкусности. В системе зато никаких *-devel пакетов.


Он у меня почему-то ломается очень быстро, так что пакет перестаёт собираться. Я настроил на кэширование apt-list и apt-cache, остальное на tmpfs. Пока с одним пакетом работаешь, вполне достаточно и одного хэшера на tmpfs. Но ccache не хватает. Вот бы ещё в сборочницу и хомяка можно было бы примонтировать. Конечно можно скриптиком каждый раз добавлять симлинк, чтоб при последующих ребилдах сборка шла быстрее, но хотелось бы, чтоб автоматом.

Автор: Drool 4.8.2015, 13:58

Когда у меня ломается рабочий хашер (что происходит весьма не быстро), я просто забираю оттуда хашерный хомяк, генерю новый каталог хашера, возвращаю хомяк на место и доставляю нужные пакеты. А вообще-то хашер может быстро ломаться от отсутствия пакетов, разве что. Но в бранче смена API бывает крайне редко, а ABI вообще не меняют.

Автор: IVK 18.8.2015, 21:28

Интересно, можно ли заставить команду rpm (rpmbuild) при сборке пакета srpm не использовать каталог ~/RPM?
Вот, к примеру, захожу в некий каталог, где лежит архив foo.tar (со спеком внутри), даю команду

Код
rpm -tb  foo.tar

и, если у меня нет каталога ~/RPM (на самом деле он, естественно, есть, но его на время данного эксперимента убираю - могу объяснить почему, но к сути дела это отношения не имеет), то получаю вот такой отлуп:
Код
ошибка: Невозможно переименовать /home/ivk/RPM/SPECS/rpm-spec.AB3KvF в /home/ivk/RPM/SPECS/rpm-spec.AB3KvF: Нет такого файла или каталога: Нет такого файла или каталога

Ну зачем для сборки srpm-пакета непременно нужен именно этот каталог? Маны rpm/rpmbuild перерыл, с целью устранить зависимость от него, без толку.

Автор: Антон Мидюков 24.8.2015, 19:22

Цитата(IVK @ 19.8.2015, 0:28) *
Интересно, можно ли заставить команду rpm (rpmbuild) при сборке пакета srpm не использовать каталог ~/RPM?


Корень каталога сборки определяется в файле ~/.rpmmacros параметр %_topdir
Если нужно для какого-то одного пакета, то наверное можно как-то этот параметр rpmbuild передать, возможно в спеке прописать можно.

Автор: IVK 24.8.2015, 21:35

Да, прописал в ~/.rpmmacros другой корень сборки, и всё нормально собралось без участия ~/RPM. А требуется это действительно только для одного пакета, причём использовать ~/.rpmmacros по условиям задачи опять же нельзя, так что надо как-то передавать указание корня сборки через спек, если уж через аргументы команды rpmbuild не передать.

Автор: Антон Мидюков 25.8.2015, 3:29

%_topdir это макрос, так что попробуйте в самом верху спека прописать строчку с ним, или в секции %prep перед %setup, думаю сработает.

Автор: IVK 25.8.2015, 17:51

Цитата(Антон Мидюков @ 25.8.2015, 2:29) *
%_topdir это макрос, так что попробуйте в самом верху спека прописать строчку с ним, или в секции %prep перед %setup, думаю сработает.

В самом деле сработало, srpm собрался.

Автор: IVK 3.11.2015, 16:39

Выделил отсюда тему "http://forum.russ2.com/index.php?showtopic=4220&view=findpost&p=44830"

Автор: tema 7.4.2016, 19:16

Перемещено из темы "http://forum.russ2.com/index.php?showtopic=4275&view=findpost&p=46470"

Цитата(kostyalamer @ 27.2.2016, 18:55) *
Держите фичу инсталлера, собирал правда под 32 битами но думаю так как на выходе noarch , можно пользоваться прямо так.
Если нельзя, пересоберите src-ха в прицепе.
[attachment=2511:installe...arch.rpm.zip]
[attachment=2512:installe....src.rpm.zip]
Фича сделана в каталог preinstall.d срабатывает сразу после установки всех пакетов ( до установки загрузчика ).
Для tema :
1) распаковываете пакет в свою сборочную репу и делаете genbasedir. ( вот для примера команда для одной из моих реп :
genbasedir --topdir /home/k/hasher/repo/i686/ , у вас другой путь и архитектура - замените на свои )
2) после этого делаете под root-ом apt-get update
3) вставляете installer-feature-kometa в список пакетов своего дистрибутива, после чего собираете его.
4) Устанавливаете дистрибутив
5) Если в загрузчике поменялось название то все OK, если нет то смотрите в /etc/altlinux-release - тогда будем продолжать
ковыряться с фичами.

А можете выложить кухню? Исходники со спеком и т.п. хочу покопаться и сам попробовать rpm cобрать. Будет для меня вместо "hello world" в плане собирания rpm

Автор: kostyalamer 7.4.2016, 23:18

Цитата(tema @ 7.4.2016, 19:16) *
А можете выложить кухню? Исходники со спеком и т.п. хочу покопаться и сам попробовать rpm cобрать. Будет для меня вместо "hello world" в плане собирания rpm

Кухня этого пакета очень простая :
 kometa.zip ( 922 байт ) : 1

Распакуете архив там лежит спек и архив с упакованным скриптом.
Спек кладется в каталог ~/RPM/SPECS, архив в ~/RPM/SOURCES
После чего надо перейти в ~/RPM/SPECS и собирать пакет командой rpm -ba имя.spec

Автор: tema 8.4.2016, 10:02

Сделал версию 0.2 этой фичи. Один из вопросов оптичил в todo листе :-)
По спеку я так и не понял. В какой момент этот скрипт запускается и что означает вторая строка?

Автор: kostyalamer 8.4.2016, 22:33

Цитата(tema @ 8.4.2016, 10:02) *
Сделал версию 0.2 этой фичи. Один из вопросов оптичил в todo листе :-)
По спеку я так и не понял. В какой момент этот скрипт запускается и что означает вторая строка?

Разберем по строкам секцию install:

Код
%install
%define hookdir %_datadir/install2/preinstall.d
mkdir -p %buildroot%hookdir
install -pm755 *.sh %buildroot%hookdir/


1) определяется макрос hookdir как /usr/share/install2/preinstall.d
2) в сборочной среде создается этот каталог
3) в него копируются любые распакованные скрипты из нашего архива c соответствующими правами
( можете добавить туда своих или отредактировать текущий ).
Этот скрипт в инсталяторе запускается сразу после установки пакетов , до установки загрузчика.
Подробнее про инсталятор и его стадии здесь : https://www.altlinux.org/Installer/devel
и здесь : https://www.altlinux.org/Installer/common


Автор: tema 8.4.2016, 22:41

Цитата(kostyalamer @ 8.4.2016, 21:33) *
можете добавить туда своих или отредактировать текущий

Я именно это и сделал в версии 0.2 :-)
Вот мой новый скрипт:
Код
#!/bin/sh
a= . install2-init-functions
echo 'KOMETA' > $destdir/etc/altlinux-release
sed -i 's/ALT Linux/KOMETA/' $destdir/etc/rc.d/rc.sysinit

А что означает эта строчка?
Код
a= . install2-init-functions

Я имею ввиду, что тут: https://www.altlinux.org/Installer/devel
Это выглядит так:
Код
. install2-init-functions

почему у нас добавлена "a="?

Автор: kostyalamer 8.4.2016, 22:51

Цитата(tema @ 8.4.2016, 22:41) *
Я именно это и сделал в версии 0.2 :-)
Вот мой новый скрипт:
Код
#!/bin/sh
a= . install2-init-functions
echo 'KOMETA' > $destdir/etc/altlinux-release
sed -i 's/ALT Linux/KOMETA/' $destdir/etc/rc.d/rc.sysinit

Что означает эта строчка?
Код
a= . install2-init-functions

Не буду врать ,не знаю, заготовку для этого скрипта я как обычно спер откуда-то из готовых фичей. Такие вопросы лучше задавать более грамотным людям , например Михаилу ( gvy )
PS кстати, почитал тут ваше общение с zerg-ом и понял что он видимо не любит разные фичи а правит все в своей сборочнице (я могу ошибаться ).
Поскольку у нас слава Богу GPL то вот вам его m-p-d, может быть найдете что-либо интересное для себя:
http://git.altlinux.org/people/zerg/packages/?p=mkimage-profiles-desktop.git;a=summary

Автор: tema 9.4.2016, 22:36

Спасибо! Покопаюсь :-)
Посмотрю что можно ещё фичами поправить в мои проблемах

Автор: tema 9.4.2016, 23:14

А где брать примеры и заготовки спеков? Хочу попробовать пару вещей:
1. Упаковать в rpm утилиту: http://solvpro.ru/187
2. Сделать rpm - обёртку для другого rpm. Чтобы мой rpm установил другую программу rpm, а потом настроил конфиги так как я укажу. Такое возможно?
3. Сделать rpm, который удалит, если установлена, версию программы старую и установит новую. Это нужно для случаев перехода с версии, допустим 4 до 5, т.к. обычно автообновление из реп происходит с версии 4.5 до 4.6 или 4.7, но не до 5. Программы в репах иногда так и называются "программа версия 5" и "программа версия 6" и это получается разные программы, поэтому и не обновляется... :-(

Автор: kostyalamer 10.4.2016, 10:51

Цитата(tema @ 9.4.2016, 23:14) *
А где брать примеры и заготовки спеков? Хочу попробовать пару вещей:
1. Упаковать в rpm утилиту: http://solvpro.ru/187
2. Сделать rpm - обёртку для другого rpm. Чтобы мой rpm установил другую программу rpm, а потом настроил конфиги так как я укажу. Такое возможно?
3. Сделать rpm, который удалит, если установлена, версию программы старую и установит новую. Это нужно для случаев перехода с версии, допустим 4 до 5, т.к. обычно автообновление из реп происходит с версии 4.5 до 4.6 или 4.7, но не до 5. Программы в репах иногда так и называются "программа версия 5" и "программа версия 6" и это получается разные программы, поэтому и не обновляется... :-(

Вот примеры спеков : https://www.altlinux.org/SampleSpecs
Вот хорошая статья : https://www.altlinux.org/Spec
Здесь можно посмотреть любой спек : http://packages.altlinux.org/
или просто скачать src-ху и командой rpm -i имя.src распаковать все это в ваш каталог ~/RPM для редактирования или пересборки этого пакета.
2) это типичный метапакет, правда обычно такие пакеты ставят несколько других - например xfce-minimal.
3) такая нумерация сделана для того чтобы можно было выбирать какой версией программы пользоваться, во всех остальных случаях версии программы приписанные к ее имени намертво - ошибочны.

Автор: tema 11.4.2016, 15:01

Тяжко читать много, но разберусь постараюсь smile.gif

 

Автор: tema 16.4.2016, 22:48

Цитата(kostyalamer @ 8.4.2016, 21:51) *
Не буду врать ,не знаю, заготовку для этого скрипта я как обычно спер откуда-то из готовых фичей. Такие вопросы лучше задавать более грамотным людям , например Михаилу ( gvy )
PS кстати, почитал тут ваше общение с zerg-ом и понял что он видимо не любит разные фичи а правит все в своей сборочнице (я могу ошибаться ).
Поскольку у нас слава Богу GPL то вот вам его m-p-d, может быть найдете что-либо интересное для себя:
http://git.altlinux.org/people/zerg/packages/?p=mkimage-profiles-desktop.git;a=summary

А можно ли в этом скрипте ещё и проинсталлировать пакет какой-нибудь? Ну или сделать так не в скрипте, а в настройках установки, чтобы определённый пакет запустился устанавливаться после всех остальных?

Автор: kostyalamer 16.4.2016, 23:01

Цитата(tema @ 16.4.2016, 22:48) *
А можно ли в этом скрипте ещё и проинсталлировать пакет какой-нибудь? Ну или сделать так не в скрипте, а в настройках установки, чтобы определённый пакет запустился устанавливаться после всех остальных?

Так этот скрипт и есть сборочная система m-p-d , там в /profiles/pkg/lists как раз и лежат списки пакетов.
А зачем запускать пакет на установку после всех остальных ?

Автор: tema 16.4.2016, 23:40

Цитата(kostyalamer @ 16.4.2016, 22:01) *
Так этот скрипт и есть сборочная система m-p-d , там в /profiles/pkg/lists как раз и лежат списки пакетов.
А зачем запускать пакет на установку после всех остальных ?

Там не списки пакетов лежат. Там названия. Я же говорю про файл rpm. Установить именно конкретный файл rpm командой rpm -Uvh file.rpm
Хочу одну штуку попробовать провернуть smile.gif
Обещаю рассказать что из этого получится smile.gif

Автор: tema 17.4.2016, 18:55

Цитата(kostyalamer @ 8.4.2016, 21:33) *
Разберем по строкам секцию install:

Код
%install
%define hookdir %_datadir/install2/preinstall.d
mkdir -p %buildroot%hookdir
install -pm755 *.sh %buildroot%hookdir/


1) определяется макрос hookdir как /usr/share/install2/preinstall.d
2) в сборочной среде создается этот каталог
3) в него копируются любые распакованные скрипты из нашего архива c соответствующими правами
( можете добавить туда своих или отредактировать текущий ).
Этот скрипт в инсталяторе запускается сразу после установки пакетов , до установки загрузчика.
Подробнее про инсталятор и его стадии здесь : https://www.altlinux.org/Installer/devel
и здесь : https://www.altlinux.org/Installer/common

А я могу скопировать файл, допустим test.tar.gz, допустим в папку /test/ новой системы? Я так понимаю этот test.tar.gz я могу положить в одну папку моим sh и запаковать в rpm их вместе? sh я скопирую в hookdir, а test.tar.gz в /test/
Это возможно?
Сработает такое?
Код
%install
%define hookdir %_datadir/install2/preinstall.d
mkdir -p %buildroot%hookdir
install -pm755 *.sh %buildroot%hookdir/
mkdir %buildroot%/test
cp test.tar.gz %buildroot%/test/

Какого размера может быть этот test.tar.gz? Есть ограничения? Допустим может он весить 2-3 гига? Это ведь получится пакет rpm тоже будет весить 2-3 гига

Автор: kostyalamer 17.4.2016, 19:29

Цитата(tema @ 17.4.2016, 18:55) *
А я могу скопировать файл, допустим test.tar.gz, допустим в папку /test/ новой системы? Я так понимаю этот test.tar.gz я могу положить в одну папку моим sh и запаковать в rpm их вместе? sh я скопирую в hookdir, а test.tar.gz в /test/
Это возможно?
Сработает такое?
Код
%install
%define hookdir %_datadir/install2/preinstall.d
mkdir -p %buildroot%hookdir
install -pm755 *.sh %buildroot%hookdir/
mkdir %buildroot%/test
cp test.tar.gz %buildroot%/test/

Какого размера может быть этот test.tar.gz? Есть ограничения? Допустим может он весить 2-3 гига? Это ведь получится пакет rpm тоже будет весить 2-3 гига

Думаю сработает, правда насчет 2-3 гигов не знаю , никогда так не делал. Запихать можно будет в /usr/share/имя_программы, в тот же /usr/bin архив засунуть не получится, rpm не пропустит.
Зачем вообще архив, можно просто папку с файлами скопировать smile.gif тогда ничего не надо будет распаковывать после установки пакета. Правда в случае наличия скрытых файлов / каталогов в этой папке их надо будет прописывать отдельно.

Автор: tema 18.4.2016, 1:46

Похоже не выйдет. Не хочет у меня rpm размером 4 гига собираться :-(
Смысл в чём:
я хочу, чтобы этот большой архив был на установочном диске и при установке скопировался куда-нибудь, а потом при первом запуске системы распаковать его и раскидать файлы из этого архива по папкам так как я хочу... Возможно, это можно сделать и без rpm пакета? Просто пока мне известен только этот способ...
вот ответ rpm:

Код
.......
Поиск Provides (используя /usr/lib/rpm/find-provides)
Executing: /bin/sh -e /tmp/.private/tema/rpm-tmp.zrH9Ne
find-provides: running scripts (alternatives,debuginfo,fpc,gir,lib,mono,pam,perl,pkgconfig,python,shell,type
lib)
Поиск Requires (используя /usr/lib/rpm/find-requires)
Executing: /bin/sh -e /tmp/.private/tema/rpm-tmp.mum4xh
find-requires: running scripts (cpp,debuginfo,files,fpc,gir-js,gir-python,gir,lib,mono,monolib,pam,perl,pkgconfig,pkgconfiglib,python,rpmlib,sheban
g,shell,static,symlinks,typelib)
find-requires: FINDPACKAGE-COMMANDS: chmod mv
Requires: /bin/sh, coreutils
ошибка: ошибка создания архива при обработке файла /home/tema/RPM/SOURCES/test-1.0.tar: cpio: writeне удалось - Неправильный дескриптор файла

Автор: kostyalamer 18.4.2016, 22:32

А если попробовать rpm-ом запихать этот архив в каталог /opt/имя_программы/.
при этом еще и эльфийские проверки biggrin.gif в спеке неплохо вырубить:

Код
%set_verify_elf_method none

Автор: Koi.v2 23.11.2016, 13:55

Пакет spacefm в клубном p8 помойму каким-то неверным форматом запакован, ни из синаптика, ни из apt-get install не ставится.

Код
# apt-get install spacefm-1.0.4-alt0.1.x86_64.rpm
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Выбрано spacefm для 'spacefm-1.0.4-alt0.1.x86_64.rpm'
Следующие НОВЫЕ пакеты будут установлены:
  spacefm
0 будет обновлено, 1 новых установлено, 0 пакетов будет удалено и 5 не будет обновлено.
Необходимо получить 0B/1185kB архивов.
После распаковки потребуется дополнительно 4355kB дискового пространства.
Совершаем изменения...
Preparing...                 #################### [100%]
1: spacefm                   error: unpacking of archive failed on file /usr/bin/spacefm;583562c0: cpio: read
E: Произошли ошибки при выполнении транзакции


Скачал сам пакет, единственное кто смог открыть, это mc.
Архиваторы пишут:
Код
Loading the archive spacefm-1.0.4-alt0.1.x86_64.rpm failed with the following error:
Could not read until the end of the archive

Автор: Koi.v2 23.11.2016, 14:09

Интересно что исходники версии 1.0.0
spacefm-1.0.0-alt0.M70T.1.src.rpm
Попробую пересобрать

Автор: dango_ 23.11.2016, 16:26

Вечером проверю.

Автор: dango_ 23.11.2016, 18:25

Нашел версию 1.0.4 в club-s x86_64

Код
# apt-repo
rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus x86_64 classic
rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus noarch classic
rpm [alt] http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus x86_64-i586 classic
rpm http://altlinuxclub.ru/repo/repo_s/ x86_64 hasher

Код
# apt-cache search spacefm
spacefm - Легкий и быстрый файл-менеджер (форк pcmanfm 0.5)
spacefm-plugins - Плагины (trile7's) и настройки для SpaceFM
spacefm-plugins2 - Плагины (trile7's & fabertawe) и настройки для SpaceFM. Вариант 2

Код
# apt-cache showpkg spacefm
Package: spacefm
Versions:
1.0.4-alt0.1(/var/lib/apt/lists/altlinuxclub.ru_repo_repo%5fs_x86%5f64_base_pkglist.hasher)(/var/lib/rpm/Packages)
1.0.0-alt1(/var/lib/apt/lists/ftp.altlinux.org_pub_distributions_ALTLinux_Sisyphus_x86%5f64_base_pkglist.classic)
...

Код
# apt-get install spacefm
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Следующие дополнительные пакеты будут установлены:
  diffstat git-core gksu
Следующие НОВЫЕ пакеты будут установлены:
  diffstat git-core gksu spacefm
0 будет обновлено, 4 новых установлено, 0 пакетов будет удалено и 14 не будет обновлено.
Необходимо получить 3843kB архивов.
После распаковки потребуется дополнительно 19,3MB дискового пространства.
Продолжить? [Y/n] y
Получено: 1 [url="http://ftp.altlinux.org"]http://ftp.altlinux.org[/url] x86_64/classic diffstat 1.59-alt1 [29,3kB]
Получено: 2 [url="http://altlinuxclub.ru"]http://altlinuxclub.ru[/url] x86_64/hasher spacefm 1.0.4-alt0.1 [1185kB]
Получено: 3 [url="http://ftp.altlinux.org"]http://ftp.altlinux.org[/url] x86_64/classic git-core 2.7.4-alt1 [2578kB]
Получено: 4 [url="http://ftp.altlinux.org"]http://ftp.altlinux.org[/url] x86_64/classic gksu 2.0.2-alt6 [51,1kB]
Получено 3843kB за 1s (2361kB/s).
Совершаем изменения...
Preparing...                 ################################################################################
######### [100%]
1: gksu                      ###########################################################################
#####
######### [ 25%]
2: diffstat                  ###########################################################################
#####
######### [ 50%]
3: git-core                  ###########################################################################
#####
######### [ 75%]
4: spacefm                   ################################################################################
######### [100%]
Running /usr/lib/rpm/posttrans-filetriggers
Завершено.

Код
# rpm -qa spacefm
spacefm-1.0.4-alt0.1

Запускается. Вроде работает.
Инспекция:
В club-s
i686: spacefm-1.0.4-alt0.1.i686.rpm
SRPMS: spacefm-1.0.4-alt0.1.src.rpm
x86_64: spacefm-1.0.4-alt0.1.x86_64.rpm
В club-p8
i686: spacefm-1.0.0-alt0.M70T.1.i686.rpm
SRPMS: spacefm-1.0.0-alt0.M70T.1.src.rpm
x86_64: spacefm-1.0.4-alt0.1.x86_64.rpm
В club-p7
i686: spacefm-1.0.0-alt0.M70T.1.i686.rpm
SRPMS: spacefm-1.0.0-alt0.M70T.1.src.rpm
x86_64: spacefm-1.0.0-alt0.M70T.1.x86_64.rpm
Хм, такое впечатление, что сюда забросили пакет из альтовского p7, а в club-p8 x86_64 скопирован из club-s x86_64

Автор: dango_ 23.11.2016, 18:48

Пересобрал из исходников club-s в хэшернице p8 x86_64, пакет отправил в в репу.
Евгений, проверь, пожалуйста, его работоспособность. У меня руки еще не доходят до ВМ для тестирования.

Автор: Koi.v2 23.11.2016, 22:14

Большое спасибо, пакет ставится, программа работает.

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)