Версия для печати темы
Россия-2 _ Наши сборки _ Сборка пакетов rpm
Автор: kostyalamer 29.11.2011, 21:18
Предлагаю в эту тему складывать документацию ( или ссылки на нее ) по поводу спеков, макросов , сборки пакетов , хашера и подобных вопросов нужных начинающему сборщику / кодеру / программисту. На эту мысль меня натолкнула отличная инструкция от Анатолия которая как-то незаметно утонула в недрах форума ALT Linux , вместе с моими бреднями по этому вопросу. Вчера как раз развлекался сборкой пакета в чруте, вспомнил про инструкцию Толи посмотрел - отличная вещь.
Прибьем ее сюда гвоздями , думаю Анатолий возражать не будет . Также прошу всех делиться своими знаниями, тема интересная и важная для клуба
Автор: 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 он же Анатолий:
Тоже хотел осветить это дело, но ты опередил.
Только вчера из hash-шелла вынырнул, fbpanel отлаживал сборку (см. в рассылке).
ЗЫ. Автор вовсе не я, а документация с вики (если поискать) и сообщения Гены
с того же форума, когда он там тусовался. Я просто описал как сам это делаю.
Если что не так - Гена поправит, он любитель в этом шелле посидеть, даже как
то пытался там m-p-d запустить (неудачно конечно).
Автор: 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 - это сила
Автор: Drool 30.11.2011, 0:23
Цитата(NotHAM @ 29.11.2011, 20:27)
...и сообщения Гены
с того же форума, когда он там тусовался.
А я то думаю - чё-то оно мне знакомо
По теме - у меня два каталога хашера, один обычный, а второй я никогда не удаляю. И в этом втором каталоге у меня, ко всему прочему, настроен еще и 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 - это сила
А для этого есть специальный скрипт 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'е чуток научился работать, хороший инструмент
Согласен, cleanup_spec незаменимая вещь, лишние пробелы глаза пропускают
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)
А я то думаю - чё-то оно мне знакомо
По теме - у меня два каталога хашера, один обычный, а второй я никогда не удаляю...
Меряться будем ??
[anatoly<>E5200 ~]$ ls | grep hash
hash-Branch ## постоянный (копия в Киеве) без шелла
hasher ## с шеллом (самый главный)
hash-fb ## с шеллом временный fbpanel - 7 сборок
hash-icewm ## старый, но выбросить жалко, там с десяток сборок
hash-temp ## с шеллом (тут с синаптиком мучался) временный
hash-xfce ## старый
[anatoly<>E5200 ~]$
Многовато конечно, но места в хомяке ещё 20Г есть.
ЗЫ. Ни разу не сомневался, что Гена в этой теме появится немедленно.
и наговорит много ПОЛЕЗНЫХ советов.
Автор: 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 ~]$
О блин, а у меня то чайника всего одна хашерница, ничего ужо теперь то я их разведу
.
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)
ЗЫ. Ни разу не сомневался, что Гена в этой теме появится немедленно.
и наговорит много ПОЛЕЗНЫХ советов.
Главное - меня вовремя разбудить
Автор: NotHAM 1.12.2011, 2:04
Цитата(Drool @ 1.12.2011, 1:07)
... Есть ли ручки, чтоб вернуть старое поведение - не в курсе, нужно в рассылке спрашивать.
Я спрашивал как-то. См. ответ ldv@ #23051 cc3.
Цитата(Drool)
Главное - меня вовремя разбудить ...
С добрым утром, Гена !
Автор: kostyalamer 1.12.2011, 7:01
Цитата(NotHAM @ 1.12.2011, 2:04)
Я спрашивал как-то. См. ответ ldv@ #23051 cc3.
ага , его ответ мне понравился
Я то себе сделал простейший скриптик :
Код
genbasedir --topdir /home/k/hasher/repo/i686/
и никаких проблем не имею, но это костыль.
Главное не забывать запускать его перед использованием репы ( пару раз бывало
)
Автор: NotHAM 1.12.2011, 18:00
Цитата(Drool @ 1.12.2011, 1:26)
Главное - меня вовремя разбудить
Вот опять в шелле проснулся. Makefile отлаживаю под игрушку.
А то там и поиграть не во что.
ЗЫ. В заголовке окна будет видно, где оно запущено.
(если картинка выложится).
Автор: ksa 1.12.2011, 19:09
Цитата(NotHAM @ 1.12.2011, 19:00)
Вот опять в шелле проснулся. Makefile отлаживаю под игрушку.
А то там и поиграть не во что.
ЗЫ. В заголовке окна будет видно, где оно запущено.
(если картинка выложится).
Помню такую игруху
Вот еще бы графику довести хотя бы до линий и квадратов...
Автор: NotHAM 1.12.2011, 21:25
Цитата(ksa @ 1.12.2011, 19:09)
Помню такую игруху
Вот еще бы графику довести хотя бы до линий и квадратов...
Ага, одна из первых, которую ещё на Радио86-РК увидел, а позже, где-то в 93-94гг.,
когда купил ВР-7.0, написал её под ДОС (надо же было этого ВР испытать).
Вот нашел недавно в архивах и решил под Linux портировать (под голую консоль).
Вроде получилось. Даже опакетилось само по себе (автоматически).
На самом деле это просто пример удобства hash-shell. Я просто не представляю,
как бы это сделал в системе, где нет ничего для devel-a.
Доустановить - просьба не предлагать.
Одну только ошибку допустил: в сборочных зависимостях забыл убрать 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
Дальше немножко моих подредактированных бредней отсюда: http://forum.altlinux.org/index.php/topic,7433.msg103740.html#msg103740:
Цитата
Так как пакечу в основном собственные проги то для
их сборки пользуюсь
Etersoft-build-utils и buildreq до кучи, что и советую делать всем кто пакетит
свои программы . Дело в том что все необходимое итак ставится в систему при их написании.
После того как вы собрали (думаю не с первого захода) свои пакеты командой rpm -ba блабла.spec, закидываем готовую src-ху в hasher и если Вы не в тиме ( а если в тиме зачем глупые вопросы задавать
)
hsh --no-sisyphus-check блабла.src.rpm. Идем пьем кофе и если сборочные зависимости у вас правильные и интернет более-менее быстрый ( а еще лучше подключено локальное зеркало с бранчем ) то через некоторое время пакеты собираются.
Но это еще не все , это только означает что ваш пакет может собрать другой человек в своей системе на том же бранче, и не более того.
А вот теперь самое интересное берем minimal от NotHAM для бранча5,1или последний wmsmall для бранча p6 ( ставим его в виртуалку или на раздел диска ) и туда пытаемся поставить ваш *.rpm. Весьма вероятно что сразу обломаетесь напоровшись на проблемы с зависимостями. ( кстати у меня минималка устанавливается минут за 20, не многим больше чем собираются пакеты в хашере ). Чешете репу, ставите на нее пакеты вручную, добиваясь того что rpm у вас поставится. После чего идете в основную систему, добавляете зависимости в спек и собираете все по-новой
Потом берете свежую минималку и снова ставите пакет. В результате будет понятно что пакет не только можно пересобрать (hasher), но он еще и будет работать
.
Два небольших замечания:
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). А установка пакетов во внутрь так и не идет
Не придется ли с нуля создавать хэшерницу...
Автор: 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. Будем дальше ковырять
Автор: 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, то ли в запускаемый с его помощью скрипт - тут разные варианты) команду на распаковку этого архива. Вроде так всё получается : при установке дистра архив ставится куда надо, а потом, при создании юзера, распаковывается уже от его имени, и всё работает. Но, если подумать, есть нюансы (например : а если пакет устанавливать не вместе с дистром, а потом?) А как вообще правильно решаются подобные вопросы?
Автор: ksa 22.11.2012, 22:12
Накатал http://www.altlinux.org/Инструкция_по_сборке_пакетов_с_помощью_rpm для сборки (точнее пересборки, но и для сборки тоже пригодится может) rpm пакетов для начинающих. Просьба дополнить\поправить по возможности.
PS Надо бы сделать в одном месте про сборку с помощью rpm без hasher, gear и прочих замудренностей для начинающих. Короче говоря, замечания приветствуются, как и правки
Автор: kostyalamer 22.11.2012, 22:46
Цитата(ksa @ 22.11.2012, 22:12)
Накатал http://www.altlinux.org/Инструкция_по_сборке_пакетов_с_помощью_rpm для сборки (точнее пересборки, но и для сборки тоже пригодится может) rpm пакетов для начинающих. Просьба дополнить\поправить по возможности.
PS Надо бы сделать в одном месте про сборку с помощью rpm без hasher, gear и прочих замудренностей для начинающих. Короче говоря, замечания приветствуются, как и правки
Отлично
Для чайников добавь еще про buildreq очень полезная вещь: http://www.altlinux.org/Buildreq
Автор: Drool 23.11.2012, 0:22
Цитата(ksa @ 22.11.2012, 20:12)
Короче говоря, замечания приветствуются, как и правки
Дописал замечание по поводу ключа --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).
Теперь с ужасом думаю - как люди с Федорой и Мандривой живут (там ведь этого нет)
Вот инструкция по Git, Gear, Hasher для начинающих очень бы пригодилась с подробным
описанием какая команда что делает (в инете про Git есть - но как-то в основном на англ.,
хотя и по нашенски есть что-то - недавно на лоре перевод книги анонсировали, я скачал).
а Gear и Hasher - это Альтовские прибамбасы, причем довольно удачные, но ... man на русском
написать видимо некому. Наверное автор, ldv, по русски не говорит?, как, впрочем, и другие из Team.)
Возможно, конечно, что я слишком утрирую, но сам по другому уже не могу
Переезд на мандривофедору мне, похоже, противопоказан.
PSS А на самом деле инструкция нужна, конечно, если ей пользоваться в Хашере
Если возникнут какие-то замечания - добавлю (если Гена не опередит, а он типа уже начал).
Автор: 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
Автор: kostyalamer 8.9.2013, 22:44
Есть пару вопросов :
1) Есть ли команда для удаления установленного пакета из chroot-а
( hsh-install наоборот ) или в тупую лезть через 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 наоборот
) или в тупую лезть через 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), но хэшернице поплохеет.
Пока вроде живая
Цитата(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 лет назад. Наверное, надо будет где-то найти кучу альтовских спеков и прошерстить их на этот счёт. А вообще не ожидал столкнуться с подобной проблемой
Автор: 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.
Автор: Антон Мидюков 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
Тяжко читать много, но разберусь постараюсь
Автор: 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
Хочу одну штуку попробовать провернуть
Обещаю рассказать что из этого получится
Автор: 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 не пропустит.
Зачем вообще архив, можно просто папку с файлами скопировать
тогда ничего не надо будет распаковывать после установки пакета. Правда в случае наличия скрытых файлов / каталогов в этой папке их надо будет прописывать отдельно.
Автор: 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/имя_программы/.
при этом еще и эльфийские проверки в спеке неплохо вырубить:
Код
%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)