LINUX.ORG.RU

Ebuild для deb-пакета

 ,


1

1

Привет. Нужно распаковать архив (на самом деле deb-пакет, но с этим вроде разобрался), и установить его в систему.

В общем, чтобы автоматом распаковался deb-архив, оказалось достаточно написать «inherit unpacker» (подглядел пример в ебилде для google-talkplugin).

Он распаковался в workdir/, и там примерно такая структура пакетов /usr, /usr/bin, /usr/lib и т.п... Мне нужно тупо скопировать всё это содержимое workdir в корень системы. Как это сделать?

ebuild <path-to-ebuild-file> install послушано пишет, что в image установил всё, но каталог пустой. Соответственно, emerge тоже ничего в систему не устанавливает, пакет «пустой».

Что нужно сделать?..

В мануале нашёл, что надо перепоределить src_install() и внутри него использовать http://devmanual.gentoo.org/function-reference/install-functions/

Но как-то топорно это... мне каждый файл в ebuild прописывать?..

Можно как-то проще?.. Тупо всё содержимое workdir в систему, там лишних файлов нет. Или это не gentoo-way?

★★★★★

Последнее исправление: BattleCoder (всего исправлений: 1)

ebuild install - только копирует файлы в image.

ebuild merge - переносит все в систему из image.

Или я не понял вопроса?

ubiquitine
()
Ответ на: комментарий от megabaks

Пардонте за невнимательность... Тогда вроде дело в том куда распаковывается архив... вроде как install берет файлы из workdir/${P} или что то подобное...

ubiquitine
()
Ответ на: комментарий от ubiquitine

всё не то:
фаза install (в ебилде это фаза описана функцией src_install) складывает нужные файлы из ${S} в ${D}.
последнее это и есть image/
S может иметь разный вид - во многих ебилдах она потому и задаётся.

megabaks ★★★★
()

Фига се понаписали. :) Я ожидал максимум одного ответа, и правильного..

Только cp? Ну ок. Не думал, что это gentoo-way :)

BattleCoder ★★★★★
() автор топика
Ответ на: комментарий от ubiquitine

S задаётся не в фазах
и таки кто тебе потом будет перекладывать файлы из ${S} в ${D}, если не cp?

megabaks ★★★★
()
Ответ на: комментарий от BattleCoder

нужна обязательно команда из eclass какая-то...

можно, но это не обязательно

	insinto /
	doins -r usr
например.
разницы никакой

megabaks ★★★★
()
Ответ на: комментарий от megabaks

разницы никакой

cp скопирует и права в том числе. Его лучше не использовать, но doins поснимает со всех файлов execute bit, что может быть не очень хорошо. Поэтому - или рассовываем все файлы ручками через doins/doexe/dolib и т.д. или cp -Rp

Pinkbyte ★★★★★
()
Ответ на: комментарий от Pinkbyte

правильно, копирует и права тоже.
но не хочешь ли ты сказать, что сборщик пакета запилил кривые права, тем более что это разраб сего продукта!?
doexe/dolib/etc хороши когда надо небольшому кол-ву файлов поменять пути.
если же файлов много и разложены они правильно, то в них нет смысла (do*), точнее это дикий оверхед в плане кода.
а -p...не помешает, да, но и не обязателен.

megabaks ★★★★
()
Ответ на: комментарий от anonymous

Для распаковки - да. Для установки - хз. cp вполне работает. :)

BattleCoder ★★★★★
() автор топика
Ответ на: комментарий от megabaks

если же файлов много и разложены они правильно, то в них нет смысла (do*)

Если мы говорим о бинарном пакете - да. Если мы говорим о сырцах, то - нет. Ибо Gentoo/Prefix работает как раз через helper-функции(неявный eprefixify).

А так - всё верно сказал.

Pinkbyte ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.