Написание ebuild файла
Render 20 ноября, 2007 - 17:56
Сабж, как сделать так чтобы распаковывался архив *.tgz и содержимое (папка с кучей файлов) писалась в /usr/proga
По идее это делается в функции src_unpack()
у меня:
src_unpack() {
mkdir -p /usr/proga
tar -xf /usr/portage/distfiles/${PF}.tgz
}
как правильно создавать папку в /usr ? без всяких ${S} и распаковывать туда..
Проясните пожайлуста. (читал ru.gentoo-wiki.com не помогло)
»
- Для комментирования войдите или зарегистрируйтесь
У тебя "/usr/proga"
У тебя "/usr/proga" жёстко прописаны в коде?
Напиши "tar -xf /usr/portage/distfiles/${PF}.tgz -C /usr/proga".
хороший путь
хороший путь превратить систему в помойку =)
пара десятков таких установок и и мы получаем кучу левых либ =)
ЗЫ лучше написать ебилд который будет ставить прогу по дефолтным путям =)
___________________________________________
Gentoo GNU/Linux 2.6.23 GCC 4.2.2 Dual Xeon
Working on Gentoo for iPAQ hx4700 :-)
Вы иго
Вы иго неправильна готовите. src_unpack никак не предназначен для установки пакета на нативную фс.
Если маны не осиливаются, то почитали бы имеющиеся ебилды похожих программ/пакетов хотябы
почитали бы
почитали бы имеющиеся ебилды похожих программ/пакетов хотябы
это второе что пришло на ум.. если честно замороченная система, зачем изобретать спец язык.. не проще (лучше) на perl реализовать ?
У тебя "/usr/proga" жёстко прописаны в коде?
Программный комплекс заточен на то чтобы находиться в /usr/proga, если положить куда захочется то придется долго и судорожно править много файлов.
Напиши "tar -xf /usr/portage/distfiles/${PF}.tgz -C /usr/proga".
чтобы так сделать у emerge не хватает прав чтобы писать в директорию /usr
* checking ebuild checksums ;-) ... [ ok ]
* checking auxfile checksums ;-) ... [ ok ]
* checking miscfile checksums ;-) ... [ ok ]
* checking proga-0.1.tgz ;-) ... [ ok ]
>>> Unpacking source...
ACCESS DENIED mkdir: /usr/proga
tar: proga: Cannot mkdir: Permission denied
ACCESS DENIED mkdir: /usr/proga/proga
tar: proga/proga: Cannot mkdir: Permission denied
ACCESS DENIED open_wr: /usr/proga/CHANGES
tar: proga/CHANGES: Cannot open: Permission denied
ACCESS DENIED open_wr: /usr/proga/COPYING
tar: proga/COPYING: Cannot open: Permission denied
ACCESS DENIED open_wr: /usr/proga/README
tar: proga/README: Cannot open: Permission denied
ACCESS DENIED open_wr: /usr/proga/proga.sql
tar: proga/proga.sql: Cannot open: Permission denied
ACCESS DENIED mkdir: /usr/proga/var
tar: proga/var: Cannot mkdir: Permission denied
ACCESS DENIED mkdir: /usr/proga/cgi-bin
tar: proga/cgi-bin: Cannot mkdir: Permission denied
ACCESS DENIED mkdir: /usr/proga/db
tar: proga/db: Cannot mkdir: Permission denied
ACCESS DENIED mkdir: /usr/proga/docs
tar: proga/docs: Cannot mkdir: Permission denied
ACCESS DENIED mkdir: /usr/proga/language
tar: proga/language: Cannot mkdir: Permission denied
ACCESS DENIED mkdir: /usr/proga/libexec
tar: proga/libexec: Cannot mkdir: Permission denied
ACCESS DENIED mkdir: /usr/proga/miniserv
tar: proga/miniserv: Cannot mkdir: Permission denied
ACCESS DENIED mkdir: /usr/proga/misc
tar: proga/misc: Cannot mkdir: Permission denied
ACCESS DENIED mkdir: /usr/proga/soft
tar: proga/soft: Cannot mkdir: Permission denied
ACCESS DENIED open_wr: /usr/proga/soft/exppp_asm-0.2.4.tar.gz
tar: proga/soft/exppp_asm-0.2.4.tar.gz: Cannot open: Permission denied
ACCESS DENIED open_wr: /usr/proga/soft/expppd-0.2.1.tar.gz
tar: proga/soft/expppd-0.2.1.tar.gz: Cannot open: Permission denied
Сейчас генты
Сейчас генты под рукой нет, но делается это примерно так:
src_install() {
cp -vR ${WORK}/* ${D}/usr/proga
}
Т.е. делается не при распаковке, а при установке.
вот что-то похожее на правду
сделал так:
src_unpack() {
tar -xf /usr/portage/distfiles/${PF}.tgz
}
src_install() {
cp -vR ${WORK}/* ${D}/usr/
echo "Installation complete!"
}
в архиве папка (proga) и она должна появиться в /usr
а оно пишет:
Я не
Я не специалист, но меня смущает две косых черты подряд.
сp: target `/var/tmp/portage/net-misc/proga/image//usr' is not a directory
Quote: сделал
Прежде чем так сделать, почитайте руководство http://www.gentoo.org/proj/en/devrel/handbook/handbook.xml?part=2&chap=1
Если не понятно, перечитайте несколько раз. После того как поймёте что такое песочница, можете приступать к написанию ebuild'а.
~~~
Ебилды похожих программ это программы www-apps/*, для примера берем любой любой пакет, установка которого сводится к распаковке исходников в www-root сервера. В глаза бросается всем известная мамба:
Ткните пожайлуста где тут строчка которая говорит что надо распаковать тарбол и куда его погрузить. Плз.
inherit
inherit webapp
подсказывает что это надо искать в /usr/portage/eclass/webapp.eclass Там где-то в районе 324 строки и ниже показано как работать с файловой системой ;)
это какой язык ?
это какой язык ? bash python ? такого изврта я никогда не видел. Казалось бы простая задача, а так неудобно решается =(
решается
решается весьма удобно - нужно только понять как именно.
а для этого есть документация для девелоперов.
.eclass сделан для автоматизации часто используемых функций.
нужно просто внимательно почитать как и что делается а не прописывать вручную, например таже куча конфигов говорящаяя что где у проги будет правиться автоматически на этапе установки...
P.S. это bash со специальными переменными, и так как вы этого незнаете - в доки даже не глядели.
Спасибо за
ArtSh, спасибо за ссылку, почитал. Так и не нашел что именно нужно.
http://www.gentoo.org/proj/en/devrel/handbook/handbook.xml?part=2&chap=1 - где тут можно узреть конструкцию или функцию при помощи которой можно распакованую папку (из /var/tmp/portage/net-misc/proga/work/) скопировать в /usr/proga.
тут есть
тут есть некоторая разница между нормальными прогами и webapp. последнии копируются в /usr/share/webapps/{program_name}/ и если у тебя невключен USE=vhost после установки они ставятся через webapp-config куданить в /var/www/ если vhost нет - то они ставятся втоматом в /var/www/localhost/htdocs/{program_name}/
ты обьясни что это за прога такая? если она webapp но ставится в /usr то это несовсем webapp, и есть ли там make-файл?
Прога имеет
Прога имеет графический (веб интерфейс /usr/proga/cgi-bin) Все на Perl написано и заточено чтобы находилось в /usr Тут ebuild подразумивается только для того чтобы скачать дистрибутив, развернуть его и скопировать в /usr что надо.. Предполагается что остальные пункты человек (настраивающий все это) будет проделывать самостоятельно. т.к. это биллиногвая система и ее можно использовать в разных конфигурациях.
по добился только того что создается папка dodir /usr/proga, думал как сразу распаковывать туда tar -xf 123.tgz -C /usr - так не хочет потому что процесс распаковки начинается раньше, чем создание папки.. вилыы!
ели это набор
ели это набор cgi-скриптов то нада спрашивать у того отморозка который додумался засунуть это в /usr...
он наверно FHS никогда нечитал. по идее это можно править sed'ом... но я незнаю стоит-ли...
Вопрос не в
Вопрос не в правильности путей в системе, а как воспользовавшись столь мощным и гибким средством как ebuild решить простую задачу - распаковать содержимое tgz файла в /usr.
пока из всех мега-возможностей удалось автоматически создавать папку в /usr и распаковывать сырцы в /var/tmp...
кто подскажет как быть дальше ?
если нет
если нет желания писать настоящий ебилд - можно сделать мегадитихак:
или что-нить такое - этож скрипт.
Вы меня
Вы меня правильно поняли, мне нужен именно, выражаясь по вашему "магадитихак":
при попытке
src_install() {
cp ${D} /usr/proga
}
emerge показывает:
cp: omitting directory `/var/tmp/portage/net-misc/proga/image/'
я сказал
я сказал примерно - там каталоги неуказаны.
Quote: где тут
Вы уже разобрались что такое песочница? Уже почитали webapp.eclass? Вы уже знаете что делают unpack compile install qmerge?
Прочел от
Прочел от начала и до конца.
Примерно так:
-Народ! Как мне перехать на машине из А в Б
-А ты водить умеешь?
-А зачем мне водить? Я хочу просто переместиться на машине из А в Б!
-Ну тебе придется сесть в машину, включить зажигание...
-Фу какие сложности. Мне надо всего-то переместиться из А в Б
и т.п.
Написал на perl,
Написал на perl, не стал заморачиваться с этим недо-башем.. Просто думал есть знающие люди кто значет как это делает и расскажут (
Quote: Просто
А мы то думали, грамотный специалист, быстро может прочитать стрницу английского текста и грамотно задать вопрос по теме...