Написание ebuild файла

Сабж, как сделать так чтобы распаковывался архив *.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
а оно пишет:

Цитата:
cp: target `/var/tmp/portage/net-misc/proga/image//usr' is not a directory

Я не

Я не специалист, но меня смущает две косых черты подряд.

с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 webapp depend.php

MY_PN="${PN/m/M}"
DESCRIPTION="Mambo is a dynamic portal engine and content management system"
HOMEPAGE="http://www.mamboserver.com/"
SRC_URI="http://mamboxchange.com/frs/download.php/8291/${MY_PN}V${PV}.tar.gz"

LICENSE="GPL-2"
KEYWORDS="~x86 ~ppc ~sparc ~amd64"
S=${WORKDIR}

IUSE=""

RDEPEND="
virtual/httpd-php
www-servers/apache"

pkg_setup () {
webapp_pkg_setup
require_php_with_use mysql zlib
}

src_install () {
webapp_src_preinst
local files="administrator/backups administrator/components components
images images/banners images/stories mambots mambots/content mambots/search
media language administrator/modules administrator/templates cache modules
templates mambots/editors mambots/editors-xtd uploadfiles"

dodoc CHANGELOG.php INSTALL.php README

cp -R [^d]* ${D}/${MY_HTDOCSDIR}

for file in ${files}; do
webapp_serverowned "${MY_HTDOCSDIR}/${file}"
done

webapp_postinst_txt en ${FILESDIR}/postinstall-en.txt
webapp_src_install
}

Ткните пожайлуста где тут строчка которая говорит что надо распаковать тарбол и куда его погрузить. Плз.

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
}

или что-нить такое - этож скрипт.

Вы меня

Вы меня правильно поняли, мне нужен именно, выражаясь по вашему "магадитихак":
при попытке

src_install() {
cp ${D} /usr/proga
}

emerge показывает:
cp: omitting directory `/var/tmp/portage/net-misc/proga/image/'

я сказал

я сказал примерно - там каталоги неуказаны.

Quote: где тут

Цитата:
где тут можно узреть конструкцию или функцию при помощи которой можно распакованую папку (из /var/tmp/portage/net-misc/proga/work/) скопировать в /usr/proga.

Вы уже разобрались что такое песочница? Уже почитали webapp.eclass? Вы уже знаете что делают unpack compile install qmerge?

Прочел от

Прочел от начала и до конца.
Примерно так:
-Народ! Как мне перехать на машине из А в Б
-А ты водить умеешь?
-А зачем мне водить? Я хочу просто переместиться на машине из А в Б!
-Ну тебе придется сесть в машину, включить зажигание...
-Фу какие сложности. Мне надо всего-то переместиться из А в Б

и т.п.

Написал на perl,

Написал на perl, не стал заморачиваться с этим недо-башем.. Просто думал есть знающие люди кто значет как это делает и расскажут (

Quote: Просто

Цитата:
Просто думал есть знающие люди кто значет как это делает и расскажут (

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

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".