выставить PORTAGE_TMPDIR для отдельного пакета

использую в качестве PORTAGE_TMPDIR tmpfs, но сделать его размером в 6 Гб не могу, поэтому всё кроме опенофиса собирается. Нужно указать для него каталог на разделе с достаточным объёмом, сделал так:

cat /etc/portage/env/app-office/openoffice
PORTAGE_TMPDIR=/var/tmp/portage

но получил:
//etc/portage/env/app-office/openoffice: line 1: PORTAGE_TMPDIR: доступная только на чтение переменная

не хотелось каждый раз вручную править make.conf или указывать эту переменную при сборке...

export

export PORTAGE_TMPDIR=/var/tmp/portage
не поможет?

прописал в том же файле

прописал в том же файле export PORTAGE_TMPDIR=/var/tmp/portage, но поведение не изменилось.

А нельзя выставить

А нельзя выставить
PORTAGE_TMPDIR="/var/tmp/portage" emerge openoffice
при сборке опенофиса? Или вы его каждый день пересобираете?

этот способ мне известен, но

этот способ мне известен, но это скорее "костыль", при пересборке мира он неприменим, не применим при обновление множества пакетов вместе с офисом...

Ну может тогда в

Ну может тогда в /etc/make.conf стоит добавить/поправить PORTAGE_TMPDIR="/var/tmp/portage" и не мучиться?

ну можно и не костыль

ну можно и не костыль =)
создаем диры /etc/portage/evn/app-office
там файлег openoffice вот с таким содержимым

PORTAGE_TMPDIR=<your  tmpdir not in tmpfs>

___________________________________________
Working on Gentoo for iPAQ hx4700 and Openmoko Neo Freerunner :-)
Если у вас компьютер с Windows, есть два выхода: выбросить компьютер в форточку или выбросить форточки с компьютера

может не evn, a env? только

может не evn, a env?
только чем это отличается от:
cat /etc/portage/env/app-office/openoffice
PORTAGE_TMPDIR=/var/tmp/portage

который я и описал в первом сообщение...

your tmpdir not in tmpfs!!!

Кстати, давно хотел спросить...

Если включить PORTAGE_TMPFS="/dev/shm", я так понимаю,
всё будет и так емерждится на TMPFS?

Такой вот заковыристый вопросик:
-pipe из CFLAGS/CXXFLAGS в этом случае лучше убрать или поставить?

И ещё позаковыристей вопросики:

В /etc/fstab для /dev/shm (tmpfs) какие биты лучше не ставить?
(как то: nodev, nosuid, noexec, ну, шобы усё собиралося)?

И стоит ли ограничивать предельный размер для /dev/shm?
(например по размеру своп-патриции, size=2g,mode=1777)?
Или же это только для /tmp на tmpfs нужно делать?
Ну, шоб не рухнуло от переполнения TMPFS.

похоже этот ключ убрали, в

похоже этот ключ убрали, в man make.conf его нет...

Какой? -pipe? это ключ гцц

Какой? -pipe? это ключ гцц

на tmpfs ощутимо быстрее

на tmpfs ощутимо быстрее компилится ;)

/etc/portage/bashrc

for conf in ${PN}-${PV}-${PR} ${PN}-${PV} ${PN}; do
        if [[ -f /etc/portage/env/$CATEGORY/${conf} ]]; then
                . /etc/portage/env/$CATEGORY/${conf}
                break
        fi
done

такой же у вас?
на худой конец именно сюда и добавить что-то типа:

        if [[ "$CATEGORY/${conf}" = "app-misc/openoffice" ]]; then
                export PORTAGE_TMPDIR=/var/tmp/portage
        fi

see also: http://www.mail-archive.com/gentoo-portage-dev@lists.gentoo.org/msg00585.html

вот на такое есть отклик: #

вот на такое есть отклик:

# cat /etc/portage/bashrc
# tmpfs
if [[ "${CATEGORY}/${PN}" = "kde-base/okular" ]]; then
        export PORTAGE_TMPDIR=/Media/temp/portage
fi

если оставить $CATEGORY/${conf}, то ничего не меняется

после правки /etc/portage/bashrc появились те же сообщения при сборке:
/etc/portage/bashrc: line 3: PORTAGE_TMPDIR: доступная только на чтение переменная
/etc/portage/bashrc: line 3: PORTAGE_TMPDIR: доступная только на чтение переменная

emerge --info | grep PORTAGE_TMPFS ?

> вот на такое есть отклик
там в цикл разумеется имелось ввиду
ну, либо правильно так, как вы написали

> после правки /etc/portage/bashrc появились те же сообщения при сборке
а вот тут я не понял - не помогло, что ли?

именно, не помогло :(

именно, не помогло :(

Дык эта...

А что грит:
emerge --info | grep PORTAGE_TMPFS ?

http://gentoo.ru/node/13222#comment-91423 ;-)

PORTAGE_TMPFS в выводе нет

PORTAGE_TMPFS в выводе нет

grep PORTAGE_TMPFS

grep PORTAGE_TMPFS /etc/make.conf.example ;-)

в portage 2.2 этого файла нет

в portage 2.2 этого файла нет

Действительно :-(

Его и в `emerge --info | grep PORTAGE_TMPFS` нет. :o
Тогда и самого интересует этот вопрос...

так же собираю пакеты в

так же собираю пакеты в памяти, но имею проблему

монтирую так:

noteshit ~ # cat /etc/fstab |grep shm
shm                     /dev/shm        tmpfs           nodev,size=2G,exec,nouser       0 0
/dev/shm                /var/tmp        none            bind,noatime,size=2G

а получаю

noteshit ~ # mount |grep shm
shm on /dev/shm type tmpfs (rw,nosuid,nodev)
/dev/shm on /var/tmp type none (rw,bind,noatime,size=2G)

в результате имею

noteshit ~ # df -h |grep shm
shm                   879M     0  879M   0% /dev/shm

и соответственно /var/tmp у меня так же 879M.
И тот же gcc собрать в памяти не удается из-за нехватки места...

Как выяснилось - shm ваще наплевать на fstab. И так на всех машинах. Если монтировать его руками - все OK.

Как бороть?

а ты не mount --bind юзай а

а ты не mount --bind юзай
а просто монтируй

none                /var/tmp        tmpfs            size=2G  0 0

___________________________________________
Working on Gentoo for iPAQ hx4700 and Openmoko Neo Freerunner :-)
Если у вас компьютер с Windows, есть два выхода: выбросить компьютер в форточку или выбросить форточки с компьютера

пробовал так, вроде тоже

пробовал так, вроде тоже затыка какая то была.
ща еще попробую...

понял, в чем затыка )

я монтировал не none, а /dev/shm и в результате получал тоже, что и сейчас )

Блин, еще заковыка

Блин, еще заковыка вылезла.
/var находится на lvm.
Почему то /var/tmp пытается примонтироваться раньше /var. У него это соответственно не получается, т.к. /var не смонтирован и соответственно не содержит папки /var/tmp.
В консоле видим ругонь, что "не удалось смонтировать /var/tmp, точка монтирования /var/tmp не существует"...

можно решить через local.start. Но может есть какие нить более правильные решения данной проблемы?

ну так в fstab выставь всё

ну так в fstab выставь всё описание монтирования в том порядке в которм оно должно монтироваться а не рандомно =)

___________________________________________
Working on Gentoo for iPAQ hx4700 and Openmoko Neo Freerunner :-)
Если у вас компьютер с Windows, есть два выхода: выбросить компьютер в форточку или выбросить форточки с компьютера

дак в том то и дело, что

дак в том то и дело, что монтирование /var/tmp - последняя строчка.

И во время загрузки смотришь - /var монтируется раньше /var/tmp, однако ж при монтировании /var/tmp точку монтирования ему не удается найти.

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

Вообще как то странно ведет себя shm.
Решил поэксперементировать...

Имею 504М физ. памяти и 964M swap.
Монтирую tmpfs /var/tmp 1,5G.

Изначально занято памяти - 23М физ. + 0М swap.
Начинаю закачивать в /var/tmp один за другим файлы обьемом 100М.
1й. занято - 23М физ. + 0М swap.
2й. занято - 23М физ. + 0М swap.
3й. занято - 23М физ. + 0М swap.
4й. до 66% все как обычно. потом тупняк на мгновение. после 66% картина резко меняется.
занято - 371M физ. + 369М swap.
Последующее копирование происходит с тупняками(замирает на долю секунды). Тупняков может быть и один, и несколько на файл.
5й. занято - 257M физ. + 369М swap.
6й. занято - 160M физ. + 372М swap.
7й. занято - 68M физ. + 378М swap.
8й. занято - 329M физ. + 739М swap. Картина опять резко изменилась!
9й. занято - 237M физ. + 747М swap.
10й. занято - 137M физ. + 748М swap.
11й. занято - 104M физ. + 814М swap.
12й. занято - 154M физ. + 964М swap. Достигнут предел swap. Очень жесткие тупняки.
13й. занято - 54M физ. + 964М swap.
14й. занято - 23M физ. + 964М swap.

При попытке залить 15й файл все начинает глючить. Система становится неотзывчивой. Начинают падать сервисы.
После смерти нескольких сервисов и высвобождения некоторого кол-ва оперативы, система становится несколько отзывчивее.

экспермент проводился несколько раз - результаты всегда примерно одинаковый.
Соответственно, хочется понять, на сколько такую работу можно назвать "нормальной"?
Может что то я не так делаю?

Bug# 219918

http://bugs.gentoo.org/show_bug.cgi?id=219918

Где-то попадалась статья, скока требо место на tmpfs на время компиляции наиболее ёмких пакетов, сейчас уже её не найти. :( Но с одним вопросом (-pipe) решилось - при использовании tmpfs этот флаг действительно не нужен.

TMPFS на 8 - 8.5 Гб

Во время пересборки мира на диске должно быть достаточно свободного места. Один из самых больших пакетов - OpenOffice.org (если собирать из сорцов). Оперативно освободить порядка 8-8.5 Гб для ГАРАНТИРОВАННОЙ сборки пакета скорее всего не получится, значит место это должно быть ВСЕГДА ЗАРЕЗЕРВИРОВАНО. Его вполне можно выделить в /tmp (SWAP/tmpfs) и использовать одновременно и для других целей. Я, например, храню там ISO-ые образы, которые тут же создаю и сразу записываю на болванку. 8.5 Гб хватит даже для двухслойной записи.

для swap на 10 гигов придётся

для swap на 10 гигов придётся переразбивать диск, что не желательно, также я заметил некоторую нестабильность во время сборки в tmpfs (сейчас уже точно не помню, но сборка на обычной ФС прошла хорошо)

у тебя не было никаких неприятностей с tmpfs и по какой причине они могут быть?

Неприятностей никогда не было

Учитывать нужно две особенности. Во-первых, ограничение размера памяти, задействованной для tmpfs. Во-вторых, с правами на tmpfs. Некотрые проги используют этап тестирования сборки, на них могут влиять флаги в fstab типа noexec,nodev,nosuid. Когда ещё 2.5 года назад собирал свою первую gentoo, сделал именно такой большой своп. Сейчас понимаю, что видимо нет более правильного способа, учитывая обнаруженное ограничение portage.

На данный момент использую такие строки в /etc/fstab:

/dev/sda3 none swap sw 0 0
shm /dev/shm tmpfs noatime,nodev,noexec 0 0
tmpfs /tmp tmpfs noatime,nodev,size=8g,mode=1777 0 0

+ещё chmod 1777 на /tmp
Cвоп у меня как раз на 8Гб, мозгов - всего 1Гб.
Проблем при сборке даже OOo3 не наблюдается.

А в твоём случае, чтобы не переразбивать диск, можно включить второй своп в файле:

dd if=/dev/zero of=/path/to/swap2 bs=512 count=$SIZE
mkswap -L SWAP2 /path/to/swap2

Вот только включать этот второй своп придётся в /etc/conf.d/local.start...

на новых установках попробую,

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

Так существует ли способ

Так существует ли способ указать для одного пакета PORTAGE_TMPDIR?

alekxs написал(а): Так

alekxs написал(а):
Так существует ли способ указать для одного пакета PORTAGE_TMPDIR?

http://blog.jolexa.net/2011/09/gentoo-per-package-portage_tmpdir-settings/

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

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