Вы здесь

portage + nfs проблемы [РЕШЕНО]

Вчера в своей локалке подняли с соседом nfs на зеркале генту.
Сделали доступным дерево портежей и каталог distfiles.
NFS естественно только для чтения. И тут появились проблемы.
Точнее они начались только у меня (сосед юзает paludis).
пришлось поменять переменную DISTDIR, потому что просто каталоги в разных местах. Но это вроде-бы работает... т.е. он обращается к тому каталогу, к которому надо, но при компиляции чего угодно выскскивает вот таке:

# mount | grep export
mirror:/export/gentoo/portage on /usr/portage type nfs (rw,addr=10.3.0.30)
mirror:/export/gentoo/distfiles on /tmp/distfiles type nfs (rw,addr=10.3.0.30)

# emerge -pv vsftpd

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild R ] net-ftp/vsftpd-2.0.5-r3 USE="ssl -caps -logrotate -pam (-selinux) -tcpd -xinetd" 0 kB

Total: 1 package (1 reinstall), Size of downloads: 0 kB
# emerge vsftpd
Calculating dependencies... done!
>>> Verifying ebuild Manifests...

>>> Emerging (1 of 1) net-ftp/vsftpd-2.0.5-r3 to /
!!! No write access to write to /tmp/distfiles/.locks. Aborting.
* Fetch failed for 'net-ftp/vsftpd-2.0.5-r3'

* Messages for package net-ftp/vsftpd-2.0.5-r3:

* Fetch failed for 'net-ftp/vsftpd-2.0.5-r3'

Я думал сделать unionfs, но как оказалось, что у меня сильно новое ядро.
Есть ли у кого идеи?

[quite]NFS естественно только для чтения. И тут появились проблемы.

ППЦ!А чего вы ожидали?

Делайте fetch на самом сервере, а дальше как обычно...

>ППЦ!А чего вы ожидали?
Ну если тебя это действительно интересует, то по-моему это тупость писать локи туда же, от куда берешь файлы. Для этого /var/lock существует. Поэтому мои ожидания были на более грамотный портеж (палудис работает офигенно).

>Делайте fetch на самом сервере, а дальше как обычно...
Блин да я с сервака и по фтп скачать могу и всю жизнь качал, пока винт большой(в собственном компе) не долбанулся. Дать запись в нфс для нас значит дать право записи 600 людям в общаге а это по-моему было бы еще тупее писания локов в DISTDIR.

Так возможно сделать, чтоб portage заработал? Или тоже уходить на paludis?

у меня для этого fetch скрипт. не вижу что в этом плохого.
+ еще один скрипт который раз в 5 минут пробигает по дистфайлам локальным и удаляет те, что есть на nfs-шаре. это чтоб место не занимали.

anviaros-rostov.ru

Нет. У меня для этого слишком много людей зеркалом пользуется. А умельцы найдутся всегда.
И потом меня не интересует, что можно сделать с сервером, а с портажем. Тем более что идея отказаться от него для меня более приемлема. Он мне уже давно не нравится.

>> + еще один скрипт который раз в 5 минут пробигает по дистфайлам локальным и удаляет те, что есть на nfs-шаре. это чтоб место не занимали.

запостите листинг плз =)

_______________________________________
грех обманывать компиляторы в субботу

с собой нет, но щас прям могу придумать - это ж азы)
и так:
#!/bin/bash {стандартное заклятие, воззвание к виликим духам}

for i in `ls /usr/portage/distfiles` {для всех файлов что у нас локально}
do
if [[ -f /mnt/nfs/distfles/$i ]] {если этот файл лежит в этом каталоге}
then
rm -f /usr/portage/distfiles/$i {тогда удаляем - нафиг нам в двух местах его держать}
fi
done
{тут и сказки конец, а кто усвоил - молодец}
P.S. Писал прям тут - синтаксис не проверил.
P.P.S. проверил синтаксис, устранил ошибки. кушайте)

anviaros-rostov.ru

Локи ему не мешают (это предупреждение, а не ошибка), это раз. Обламывается он у тебя на том, что не может выкачать файл, т.к. прав на запись в distfiles у него нет.

Вариантов несколько.
1) Делать emerge -f ... непостедственно на сервере, но тогда это тоже должна быть gentoo (и arch должен совпадать).
2) Разрешить записть по nfs запихнув ее в туннель с авторизацией.
3) Заменить команду в FETCHCOMMAND на что-нибудь вроде ssh -C portage@server 'wget ...' и настроить безпарольную авторизацию на сервере.

Вариантов море. Добавляйте по вкусу.

Ты меня немного не до конца понял.
Этот файл там есть. И он не хочет компилиться. Вот в чем вся проблема.

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

Цитата:
Fetch failed for 'net-ftp/vsftpd-2.0.5-r3'

Ага, а вот и возможная причина: http://www.gentoo.ru/node/8410

>Fetch failed for 'net-ftp/vsftpd-2.0.5-r3'

да только строчкой выше написано:
!!! No write access to write to /tmp/distfiles/.locks. Aborting.
И во время emerge -pv vsftpd он пишет, что качать ему ничего не надо, потому что именно тогда проверяются суммы MD5.
А потом если почитаешь начало, то заметишь, что с синхронизацией проблем у меня нет и дерево у меня два раза в сутки обновляется на серваке без всяких приколов.

# emerge -vp pv

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R   ] app-misc/pv-0.9.6  0 kB 

Total: 1 package (1 reinstall), Size of downloads: 0 kB
# emerge -1 pv
Calculating dependencies... done!
>>> Verifying ebuild Manifests...

>>> Emerging (1 of 1) app-misc/pv-0.9.6 to /
!!! No write access to '/mnt/distfiles'
 * pv-0.9.6.tar.gz MD5 ;-) ...                                                                [ ok ]
 * pv-0.9.6.tar.gz RMD160 ;-) ...                                                             [ ok ]
 * pv-0.9.6.tar.gz SHA1 ;-) ...                                                               [ ok ]
 * pv-0.9.6.tar.gz SHA256 ;-) ...                                                             [ ok ]
 * pv-0.9.6.tar.gz size ;-) ...                                                               [ ok ]
 * checking ebuild checksums ;-) ...                                                          [ ok ]
 * checking auxfile checksums ;-) ...                                                         [ ok ]
 * checking miscfile checksums ;-) ...                                                        [ ok ]
 * checking pv-0.9.6.tar.gz ;-) ...                                                           [ ok ]
>>> Unpacking source...
>>> Unpacking pv-0.9.6.tar.gz to /var/tmp/portage/app-misc/pv-0.9.6/work
>>> Source unpacked.
>>> Compiling source in /var/tmp/portage/app-misc/pv-0.9.6/work/pv-0.9.6 ...
./configure --prefix=/usr --host=i686-pc-linux-gnu --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib --build=i686-pc-linux-gnu

Как видишь, этот write access ничего не решает.
Проверяй права на шаре. Пользователь portage имеет права на эти файлы? Во FEATURES стоит userpriv?

Да вижу, только тогда почему у меня после "!!! No write access to '/tmp/distfiles'" написано Aborting :(
права на мои дистфайлы стоят 755. Наверное у меня чего-то не то в make.conf

Все решил.
Надо было до FEATURES дописать -distlocks