LINUX.ORG.RU
ФорумTalks

сборка пакетов в генту


0

0

Вопрос ко всем гентувщикам: как собрать пакет не устанавливая его в системе(я про emerge -b), в мане по этому поводу ничего нет.

anonymous
Ответ на: комментарий от Nagwal

Так не покатит нужно чтобы собирался готовый бинарный пакет+все зависимости и чтобы еще с USE'флагами

anonymous
()

--buildpkgonly (-B)

Creates binary packages for all ebuilds processed without actually
merging the packages. This comes with the caveat that all build-time 
dependencies must already be emerged on the  system.

svyatogor ★★★★★
()

--buildpkgonly (-B) Creates binary packages for all ebuilds processed _without_actually_merging_ the packages. This comes with the caveat that all build-time dependencies must already be emerged on the system.

по описанию, то что тебе нужно

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

Сейчас буду ругаться(особенно на последнего ананимуса). Все такие умные ... сразу в ман тыкнули нет бы кто сам проверит :
!!! --buildpkgonly requires all dependencies to be merged.
!!! Cannot merge requested packages. Merge deps and try again

А я ведь четко попросил, чтобы с зависимостями собирал.

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

> А я ведь четко попросил, чтобы с зависимостями собирал.

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

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

Довольно просто, собирает /var/tmp/portage как обычно, только потом не удаляет то что собрал, а собирает с импользованием этого следующий пакет и т.д. под конец срубает все ненужное, и затаривает.
--oneshot - не подходит он устанавливает, только не вносит информацию о том что пакет установлен.

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

Не ebuild тож некатит надо, чтобы он и зависимости собирал, темболее автоматически а не в ручную

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

Сам подумай:
svyatogor правильно говорит
при сборке какого-либо пакета, свои зависимости он будет искать
в системе в установленном варианте, поэтому
emerge -pv package
и по списку
emerge -B package
только так.

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

другой вопрос:
как можно задать (если вообще можно) prefix при установке
хотелось бы что-то ставить в /opt а что-то в /usr/local
нечто вроде
emerge --prefix=/opt mozilla-firefox

хотя если подумать, следует ли при этом
распространять prefix на зависимости...

блин, эти зависимости все портят как всегда :)

хотя бы prefix для пакета, который ставится,
исключая его зависимости.

?

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

2goodwin, так я об этом и говорил, производится сборка в /var/tmp/portage, а потом на базе того пакета собирается следующий и т.д., только как заставить emerge искать в /var/tmp/portage

anonymous
()

делаем emerge -p пакет /tmp/зависимости

устанвливаем пакет и зависимости

далее собираем из каждого бинарный пакет пользуясь
/tmp/зависимости

потом делаем для каждого emerge unmerge из /tmp/зависимости

по моему на bash строчек 10-20 будет

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

Как я понял вы прнлагаете тоже самое что делает emerge -b, а потом unmerge, но проблема в том что зависимости сам пакет и зависимсти невкоем случае не должны быть установлены. Все эти извращения делаются для создания live-cd, в котором будут другие версии пакетов и следовательно после таой установки будут конфликтовать с уже установленными.

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

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

и для первого и для второго случая мой рецепт годится что вас не устраивает?

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

Пакет и все зависимости собранные в бинарном виде. А не устраивает то что нужно себе в систему их устанавливать или придется отдельно каждый собирать и в ручную прописывать ./configure --prefix=/temp

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

>кет и все зависимости собранные в бинарном виде. А не устраивает то что нужно >себе в систему их устанавливать или придется отдельно каждый собирать и в >ручную прописывать ./configure --prefix=/temp

так я же объяснил как решить эту проблему,
вы что читать не умеете?

fghj ★★★★★
()

и emerge, насколько я знаю позволяет устанавливать несколько версий одного и того же пакета в систему, а потом удалять ненужную версию

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

Извините, но я не смог найти в вашем посте как это сделать, если я что-то проглядел, то ткните носом. Вы похоже име ввиду реализацию типа:
emerge -p paket>zavis; max=`cat zavis|grep ebuild|wc -l`; for ((i=1;i<max;i++)) do (emerge --nodeps -B =`cat zavis | grep ebuild | cut -d '/' -f 2|head -n $i|tail -n -1`) done
Но такой подход не решит всех проблем ибо у зависимостей тоже есть зависимости, но проблема даже не в этом, а в том что emerge'om нельзя поставить пакет вкакую-то определенную директорию(а может просто я не нашел), можно сделать ebuild unpack compile а потом make install DESTDIR=/tmp , но тогда встает вопрос как заставить искать зависимости именно в /tmp.

Устанавливать несколько версий програм помоему нельзя за редким исключением(например gcc).

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