LINUX.ORG.RU

[gentoo] stage3 без gcc %)

 


0

0

Есть билд-сервер, он выкладывает предкомпилированные пакеты (FEATURES=«buildpkg») в некую папку, откуда эти пакеты через http-replicator доступны для PORTAGE_BINHOST в /etc/make.conf

Хочу собрать такой stage3, который смог бы устанавливать (FEATURES=«getbinpkg getbinpkgonly») эти бинарные пакеты и не содержал бы в себе gcc.

1) это в принципе возможно?
2) как на работающей gentoo-системе установить пакеты в конкретную папку, откуда они потом будут упакованы в stage3

хочу собрать генту совсем бинарно, и чтобы там gcc не было, а то страшно, что поломают:
http://www.johndball.com-a.googlepages.com/images-linuxisevil.gif

1) будут проблемы с библиотекой libstdc++, которая входит в состав gcc и используется со всеми программами (что, интересно, будет, если собирать static-версии?)

так как gcc входит в system, то нужно писать собственные profile/base, чтобы его там не упоминать.

Пока что нашел:
http://www.gentoo.org/proj/en/releng/catalyst

2) можно собрать только нужное в ROOT=«/path» и rsync-ать на реальную систему

ArsenShnurkov
() автор топика
Ответ на: комментарий от azure

Затем, что:

1) если я правильно понимаю
(equery files gcc | du --block-size=1M)
, то gcc занимает на диске ~260Mb

2) лишние возможности для хакеров, в то время как gcc не нужен в системе при эксплуатации.

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

# qsize gcc
sys-devel/gcc-4.3.4: 848 files, 106 non-files, 71704.970 KB
sys-devel/gcc-config-1.4.1: 2 files, 4 non-files, 35.372 KB

ArsenShnurkov
() автор топика
Ответ на: комментарий от init_6

В сабайоне та же фигня (нужен целиковый gcc). То же самое в exherbo (потому что типа это upstream делает релизы без разделения на runtime и developer sdk)

кроме libstdc++ еще нужен libgcc, и говорят, что USE=«static» не поможет.

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

В сабайоне та же фигня

Следовательно что? Праааавильно не надо изобретать велосипедов! Они все уже изобретены до тебя. Бери потроши весь сабайон переименовывай по своему и разводи свой дистрибутив.

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

Так в сабайоне моя задача не решена, поэтому нет разницы, какой из трех дистрибутивов потрошить.

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

По моему размер в 260 Мб весьма странный. Я конечно опять лезу со своим арчем, но все же:

$ pacman -Qi gcc
... skipped ...
Installed Size : 46240.00 K

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

~/tmp :$equery f gcc | du -sh
0 .


варианты выпиливания такие

1) создать новый профиль где не нужен gcc и binutils
недостатки - очевидны

2) /etc/portage/profile/package.provided
вписать туда якобы установленные версии gcc и binutils
сделать emerge -C gcc binutils
самый простой способ, недостаток - эмерж достает безобидным но очень надоедливым матюгом при каждом запуске

3) сохранить каталоги /var/db/pkg/sys-devel gcc-$VER binutils-$VER в другое место, emerge -C gcc binutils , скопировать сохраненные данные о пакетах gcc и binutils на старое место в /var/db/pkg

таким образом эмерж будет считать что gcc и binutils установлены, хотя на самом деле - нет
чтобы избежать возможных обновлений, версии gcc и binutils замораживаются в /etc/portage/package.mask






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

минусы третьего варианта -
revdep-debuild может сходить с ума по поводу libtool файлов для библиотек gcc

libstdc++.so* и libgcc_s.so.1 от GCC нужно скопировать в /usr/lib или /usr/local/lib

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

ps: впрочем это не для третьего, а для любого варианта

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

в /etc/portage/profile нужно профиль делать и периодически синхронизировать его с «родительским» , тем из которого он сделан

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

и периодически синхронизировать его


Насколько я понимаю, cascading profiles нужны для того, чтобы этим не заниматься, разве не так?

Я пока не осилил, но почему-то кажется, что основная проблема в затирании при emerge --sync. По этому поводу я создал отдельную тему, ссылку на которую дал в предыдущем ответе

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

проблема с затиранием в /usr/portage
решается тем, что пользовательские настройки размещаются не там,
а в /etc/portage, дерево ебилдов в /usr/local/portage, кроме того можно воспользоваться и настройкой опций rsync, чтобы не затиралось то что нужно

ps: меня устраивает профиль по умолчанию, так что я не разбиралась с cascading и прочими вещами, я вообще гентой меньше 3 месяцев пользуюсь )

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

пользовательские настройки

Ну так я не пользовательские настройки хочу,
а профайл новый сделать. Пока не нашел хавту по этому поводу.

Вот тут пишут, что можно удалить некоторые пакеты из дерева
http://www.gentoo.org/doc/ru/handbook/handbook-x86.xml?part=3&chap=5
(и потом добавить свои пакеты).
Это бы помогло заменить gcc на свой пакет (например) gcc-runtime

Но мне еще хочется записать какие пакеты и флаги должны стоять по-умолчанию в этом профиле, и чтобы он выбирался по eselect profile list/set

ArsenShnurkov
() автор топика
Ответ на: комментарий от Sylvia

4-ый вариант выпиливания
(вычитал в http://www.gentoo.org/proj/en/base/embedded/handbook)

1) сделать цепочку для сборки под нужную архитектуру и все собрать (sysroot ~= /usr/CTARGET)
2) сделать папку (runtime tree), в которую бинарно устанавливать пакеты,
при установке использовать INSTALL_MASK в make.conf

Сам процесс бинарной установки мне пока не ясен (т.е. как ее начать до установки portage). После установки portage уже можно использовать INSTALL_MASK.
Возможно можно сначала поставить обычный stage3, затем настроить INSTALL_MASK и затем бинарно emerge -e world

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

Сам процесс бинарной установки мне пока не ясен


Ниже там есть кусок про

emerge crossdev-wrappers

We can use these tools for both installing into your development root (sysroot) and into your runtime root.

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