# Hilfe bei portage over nfs(4) [solved]

## trikolon

Hallo alle,

ich möchte das portage Verzeichnis meines Servers per NFSv4 ins Netzwerk einspeissen, verwendete Portageversion ist 2.2-rc62. Als erster Client soll eine VM welche auf dem Server läuft versorgt werden. Exportiert habe ich wie folgt:

```
/mnt            192.168.0.0/24(rw,fsid=0,no_subtree_check,async,no_root_squash)

/mnt/portage    192.168.0.0/24(rw,sync,no_root_squash,no_subtree_check)

```

Wenn ich es nun auf dem Client mounte, kann ich in der Verzeichnis schreiben und auch ein emerge --sync ausführe. Allerdings wenn ich versuche etwas zu installieren, zB Portage kommt folgendes:

```
emerge portage

WARNING: One or more repositories have missing repo_name entries:

        /usr/local/portage/profiles/repo_name

NOTE: Each repo_name entry should be a plain text file containing a

unique name for the repository on the first line.

Calculating dependencies... done!

>>> Verifying ebuild manifests

>>> Emerging (1 of 1) sys-apps/portage-2.2_rc62

Cannot chown a lockfile: '/usr/portage/distfiles/.portage-2.2_rc43.tar.bz2.portage_lockfile'

 * portage-2.2_rc43.tar.bz2 RMD160 SHA1 SHA256 size ;-) ...                                                    [ ok ]

Traceback (most recent call last):

  File "/usr/lib64/portage/bin/ebuild", line 268, in <module>

    debug=debug, tree=mytree)

  File "/usr/lib64/portage/pym/portage/__init__.py", line 7227, in doebuild

    fetchme, mysettings, listonly=listonly, fetchonly=fetchonly):

  File "/usr/lib64/portage/pym/portage/__init__.py", line 4775, in fetch

    stat_cached=mystat)

  File "/usr/lib64/portage/pym/portage/util.py", line 919, in apply_secpass_permissions

    stat_cached=stat_cached, follow_links=follow_links)

  File "/usr/lib64/portage/pym/portage/util.py", line 752, in apply_permissions

    os.chown(filename, uid, gid)

  File "/usr/lib64/portage/pym/portage/__init__.py", line 209, in __call__

    rval = self._func(*wrapped_args, **wrapped_kwargs)

OSError: [Errno 22] Invalid argument: '/usr/portage/distfiles/portage-2.2_rc43.tar.bz2'

 * Fetch failed for 'sys-apps/portage-2.2_rc62', Log file:

 *  '/var/log/portage/sys-apps:portage-2.2_rc62:20100201-162539.log'

>>> Failed to emerge sys-apps/portage-2.2_rc62, Log file:

>>>  '/var/log/portage/sys-apps:portage-2.2_rc62:20100201-162539.log'

 * Messages for package sys-apps/portage-2.2_rc62:

 * Fetch failed for 'sys-apps/portage-2.2_rc62', Log file:

 *  '/var/log/portage/sys-apps:portage-2.2_rc62:20100201-162539.log'
```

Nach etwas Googeln, habe ich dann distlocks deaktiviert:

```
emerge portage

WARNING: One or more repositories have missing repo_name entries:

        /usr/local/portage/profiles/repo_name

NOTE: Each repo_name entry should be a plain text file containing a

unique name for the repository on the first line.

Calculating dependencies... done!

!!!

!!! parallel-fetching requires the distlocks feature enabled

!!! you have it disabled, thus parallel-fetching is being disabled

!!!

>>> Verifying ebuild manifests

>>> Emerging (1 of 1) sys-apps/portage-2.2_rc62

 * portage-2.2_rc43.tar.bz2 RMD160 SHA1 SHA256 size ;-) ...                                                    [ ok ]

Traceback (most recent call last):

  File "/usr/lib64/portage/bin/ebuild", line 268, in <module>

    debug=debug, tree=mytree)

  File "/usr/lib64/portage/pym/portage/__init__.py", line 7227, in doebuild

    fetchme, mysettings, listonly=listonly, fetchonly=fetchonly):

  File "/usr/lib64/portage/pym/portage/__init__.py", line 4775, in fetch

    stat_cached=mystat)

  File "/usr/lib64/portage/pym/portage/util.py", line 919, in apply_secpass_permissions

    stat_cached=stat_cached, follow_links=follow_links)

  File "/usr/lib64/portage/pym/portage/util.py", line 752, in apply_permissions

    os.chown(filename, uid, gid)

  File "/usr/lib64/portage/pym/portage/__init__.py", line 209, in __call__

    rval = self._func(*wrapped_args, **wrapped_kwargs)

OSError: [Errno 22] Invalid argument: '/usr/portage/distfiles/portage-2.2_rc43.tar.bz2'

 * Fetch failed for 'sys-apps/portage-2.2_rc62', Log file:

 *  '/var/log/portage/sys-apps:portage-2.2_rc62:20100201-162715.log'

>>> Failed to emerge sys-apps/portage-2.2_rc62, Log file:

>>>  '/var/log/portage/sys-apps:portage-2.2_rc62:20100201-162715.log'

 * Messages for package sys-apps/portage-2.2_rc62:

 * Fetch failed for 'sys-apps/portage-2.2_rc62', Log file:

 *  '/var/log/portage/sys-apps:portage-2.2_rc62:20100201-162715.log'
```

Nach weiterm Suchen bin ich auf die Idee gekommen die Berechtigungen und die User:Groupe Einstellungen zu kontrollieren:

Server: 

```
ls -ld /mnt/portage/distfiles/ drwxrwsr-x 5 root portage 49152  1. Feb 17:12 /mnt/portage/distfiles/
```

Client: 

```
ls -ld portage/distfiles/ drwxrwsr-x 5 4294967294 4294967294 49152 Feb  1 17:27 portage/distfiles/
```

Fällt jemanden etwas dazu ein?

Gruß BenLast edited by trikolon on Tue Feb 02, 2010 9:56 am; edited 1 time in total

----------

## ChrisJumper

Vielleicht hilft dir ein zugegeben älteres Howto weiter: gentoo-wiki.info Using a shared portage via NFS.

Grüße

----------

## musv

Warum mountest du den Portage nach /mnt/portage?

Ich hatte mal 'ne Zeit lang den Portage über nfs. Allerdings macht das bei WLAN aufgrund der Latenz nicht wirklich viel Spaß. 

```
/usr/portage           fehlermelder(rw,all_squash,async,no_subtree_check)
```

Auf dem Client:

```
faultier:/usr/portage  /usr/portage/       nfs     noauto,wsize=8192,rsize=8192,hard,intr  0 0
```

Ob im /usr/portage auf dem Client schon was drinsteht, ist dann erstmal egal. Das nfs wird einfach drübergemountet.

----------

## trikolon

 *Quote:*   

> Vielleicht hilft dir ein zugegeben älteres Howto weiter: gentoo-wiki.info Using a shared portage via NFS.
> 
> Grüße

 

Nach diesem Howto habe ich das im Prinzip erstellt.

 *Quote:*   

> Warum mountest du den Portage nach /mnt/portage? 

 

Weil NFSv4 eine Art mount-verzeichnis braucht, wo alle exports liegen. Mittels bind linke ich /usr/portage nach /mnt/portage auf dem server.

Wie gesagt, das schreiben per Hand in das gemountete portage Verzeichnis geht und ein emerge --sync geht auch. Nur das emergen selbst bringt Fehler. Vermutlich liegt das mit NFSv4 zusammen..

Gruß

Edit: wenn man rpc.idmapd startet gehts...

----------

