# [PORTAGE] Einen Portageserver für mehrere Rechner

## stefanl

Hi,

ich habe viele Server die unter Gentoo laufen. Jetzt ist Problem, dass ich auf diesen Rchnern immer Wieder neue Software installieren muss oder nen neuen Server einrichte. Dabei entsteht dann immer viel Traffic für das Herunterladen des Portage-Trees und der Distfiles. Nun habe ich mir gedacht das es doch viel cleverer wäre ein aktuelles Portage-Tree Verzeichnis mit den neuesten Distfiles auf einem zentralen Rechner zu haben, von dem dann die anderen die Software übers LAN beziehen.

Jetzt ist nur die Frage wie realisiere ich das.

Es sollte so sein, das der zentrale Rechner 1mal pro Woche automatisch nen rsync macht. Die anderen Rechner beziehen dann bei "emerge rsync" das portage-tree von dem rechner. Beim installieren der Software auf einem sollte auch erst auf dem zentralen Rechner geschaut werden ob die files vorhanden sind und wenn möglich von dort bezogen werden.

jemand ne idee. wäre dankbar für hilfe.

PS: Hoffe war nicht zuviel frage auf einmal   :Laughing: 

----------

## gerry

hier findest du deinen einstieg.

Die jeweilige Aktualisierung kannst du als Cronjob realisieren.

----------

## stefanl

Gibt es nicht ne andere Möglichkeit als das Portage Verzeichnis zu mounten. Außerdem kann ich den überhaupt Verzeichnisse über das Netzwerk mounten??

----------

## ian!

 *stefanl wrote:*   

> Gibt es nicht ne andere Möglichkeit als das Portage Verzeichnis zu mounten. Außerdem kann ich den überhaupt Verzeichnisse über das Netzwerk mounten??

 

Du kannst auf dem Portageserver auch alternativ einen Webserver aufsetzen und dort dann die Distfiles etc. hosten. Dazu biegst du den Portagetree auf ein Verzeichnis im Webserver-root um. Auf den anderen Maschinen trägst Du unter GENTOO_MIRRORS die Adresse des Webservers ein.

Gruß,

ian!

----------

## sirro

ja, sonst würde es ja nicht in der FAQ stehen    :Wink:  (achja: nfs ist das Zauberwort)

Alternative wäre einen HTTP/FTP-Server aufzusetzen und den zentralen Rechner als Gentoo Mirror in die /etc/make.conf einzutragen. Das hätte den entscheidenden Nachteil, dass nur dein zentraler Rechner Änderungen (also auch Neueintragungen) im distfiles-Verzeichnis machen kann.

Der Artikel [1] wird dir vielleicht weiterhelfen, dein rsync-problem in den Griff zu bekommen.

rsyncd auf deinem zentralen Rechner einrichten und einmal wöchtenlich syncen lassen. Die anderen Rechner stellst du so ein, dass sie auf deinen zentralen Rechner ihr rsync machen.

[1] http://www.gentoo.org/doc/en/rsync.xml

----------

## Robelix

Ich hab' seit einiger Zeit schon ein zentrales /usr/portage auf mehreren Maschinen über NFS gemountet - funzt Bestens.

Einen rsync braucht man dann nur einmal machen - alle anderen Maschinen haben automatisch den aktuellen portage tree.

Auch die distfiles werden von Allen gemeinsam verwendet - portage schaut automatisch nach ob ein File schon heruntergeladen ist.

Einziges Problem, das auftauchen kann ist wenn 2 Rechner gleichzeitig den selben File downloaden - das ergibt Müll. Am Besten vorher zeitversetzt ein emerge -f machen, dann kann sowas nicht passieren.

Robelix

----------

## dertobi123

Und wenn in den Servern recht ähnliche Hardware verbaut ist, kann man auf Packages (oder GRP, wie mans nennen möchte) zurückgreifen ...

Tobias

----------

## amne

ich habe aus verschiedenen gründen auf nfs verzichtet. mein gateway bezieht den aktuellen portage tree aus dem netz und die clients aus dem lokalen netz können zum gateway syncen:

am gateway:

xinetd ist installiert, /etc/xinetd.conf ist auf standardeinstellungen.

/etc/xinetd.d/rsyncd:

```

# default: off

# description: Vsftpd is an FTP server, designed to be secure.

# $Header: /home/cvsroot/gentoo-x86/net-ftp/vsftpd/files/vsftpd.xinetd,v 1.2 200

2/05/04 03:42:50 woodchip Exp $

service rsync

{

        socket_type     = stream

        wait            = no

        user            = root

        server          = /usr/bin/rsync

        server_args     = --daemon

        log_on_success  += DURATION USERID

        log_on_failure  += USERID

        nice            = 10

        disable         = no

        port            = 873

        instances       = 10

        bind            = 192.168.0.75

}

```

anmerkung: wie man am header sieht, habe ich das file vom ftp-server kopiert und geändert  :Wink: 

wichtig ist es, bei "bind =" die richtige IP (nämlich die IP der netzwerkkarte im lan anzugeben, bei mir 192.168.0.75).

/etc/rsync/rsyncd.conf:

```
# Minimal configuration file for rsync daemon

# See rsync(1) and rsyncd.conf(5) man pages for help

# This line is required by the /etc/init.d/rsyncd script

#pid file = /var/run/rsyncd.pid

#aus gentoo-rsync guide:

#uid = nobody

#gid = nobody

use chroot = yes

max connections = 20

pid file = /var/run/rsyncd.pid

motd file = /etc/rsync/rsyncd.motd

transfer logging = yes

log format = %t %a %m %f %b

syslog facility = local3

timeout = 300

#[gentoo-x86-portage]

#this entry is for compatibility

#path = /usr/portage

#comment = Gentoo Linux Portage tree

```

wie unschwer anhand der kommentare zu erkennen, habe ich das fast 1:1 aus dem gentoo-rsync guide übernommen.

/etc/rsync/rsyncd.motd

hier kannst du irgendwas blödes reinschreiben  :Wink: 

auf den clients im lan:

in /etc/make.conf

SYNC="rsync://192.168.0.75/gentoo-portage"

192.168.0.75 ist natürlich durch die jeweilige IP des lokalen rsync servers zu ersetzen.

was den download der sourcen angeht:

ich verwende squid (ziemlich in der standardkonfiguration) als proxy server, wenn ein client nach dem anderen updatet sollte das dann eh aus dem cache kommen. zusätzlich habe ich /usr/portage/distfiles des gateways via ftp zugänglich gemacht (falls etwas schon wieder aus dem cache vom squid verschwunden ist weil man ein paar wochen später einen neuen rechner aufsetzt):

dazu läuft ein vsftpd:

/etc/xinetd.d/vsftpd

```
# default: off

# description: Vsftpd is an FTP server, designed to be secure.

# $Header: /home/cvsroot/gentoo-x86/net-ftp/vsftpd/files/vsftpd.xinetd,v 1.2 200

2/05/04 03:42:50 woodchip Exp $

service ftp

{

        type            = UNLISTED

        socket_type     = stream

        wait            = no

        user            = root

        server          = /usr/sbin/vsftpd

        server_args     = /etc/vsftpd/vsftpd.conf

        log_on_success  += DURATION USERID

        log_on_failure  += USERID

        nice            = 10

        disable         = no

        port            = 21

        instances       = 10

        bind            = 192.168.0.75

}

anmerkung: hier hab ich ein bisschen rumgespielt, im prinzip sollte es auch passen, wenn du das standard-konfigurationsfile um "bind =" erweiterst und "disable = no" einträgst.

```

auch hier wieder: "bind =" auf die IP im lan, du willst ja weder rsync- noch ftp-server für den rest der welt spielen.

/etc/vsftpd/vsftpd.conf

```
# Access rights

anonymous_enable=YES

local_enable=NO

write_enable=NO

anon_upload_enable=NO

anon_mkdir_write_enable=NO

anon_other_write_enable=NO

# Security

anon_world_readable_only=YES

connect_from_port_20=YES

hide_ids=YES

pasv_min_port=50000

pasv_max_port=60000

# Features

xferlog_enable=YES

ls_recurse_enable=NO

ascii_download_enable=NO

async_abor_enable=YES

# Performance

one_process_model=YES

idle_session_timeout=120

data_connection_timeout=300

accept_timeout=60

connect_timeout=60

#anon_max_rate=500000

anon_root=/usr/portage/

ftp_username=distfiles

vsftpd_log_file=/var/log/vsftpd/vsftpd.log

```

bei den clients habe ich in /etc/make.conf:

```
GENTOO_MIRRORS="ftp://192.168.0.75/ ftp://ftp.tu-clausthal.de/pub/linux/gentoo http://www.ibiblio.org/gentoo"
```

so, ich hoffe, meine konfiguration ist damit reproduzierbar.Last edited by amne on Thu Dec 04, 2003 7:39 pm; edited 1 time in total

----------

## stefanl

Hi

vielen Dank für die supergenaue Beschreibung. Es hat alles prima geklappt. Nur ein Problem ist noch: Wenn in den Distfiles auf dem zentralen Rechner ein Package nicht vorhanden ist, zieht sich der Client dieses aus dem Netz. Das ist ja auch okay. Nur sollte es doch möglich sein dieses dann auf dem zentralen Rechner zur Verfügung zu stellen.

Jemand ne Idee. Geht es vielleicht so, dass wenn die Anfrage schief geht der zentrale Server sich das Package zieht und es dann anschließend dem Client zur Verfügung stellt??

Vielen Dank für Hilfe

----------

## Genone

blackace in #gentoo-server hatte meine ich eine Art "Distfiles-Proxy" Skript oder Apache Modul geschrieben, wodurch alle Anfragen vom Server weitergereicht wurden, wenn er eine Datei nicht selber hatte (ich hab auch nur von gehört, nie selber gesehen/ausprobiert).

----------

## ian!

 *Genone wrote:*   

> blackace in #gentoo-server hatte meine ich eine Art "Distfiles-Proxy" Skript oder Apache Modul geschrieben, wodurch alle Anfragen vom Server weitergereicht wurden, wenn er eine Datei nicht selber hatte (ich hab auch nur von gehört, nie selber gesehen/ausprobiert).

 

Sowas ist recht einfach mit mod_rewrite zu realisieren.

Wenn ich mehr Zeit hätte...  :Wink: 

----------

## amne

Aus aktuellem Anlass möchte ich darauf hinweisen, dass ich meinem obrigen Post folgendes geändert habe:

/etc/rsync/rsyncd.conf:

```
use chroot = yes 
```

Wer wie in meiner Anleitung angegeben den Rsync-Server auf das Netzwerkdevice des LANs gebunden hat (bind = 192.168.0.X / o.ä. in /etc/xinetd.d/rsyncd) braucht sich übrigens keine Sorgen zu machen - ausser er vertraut den Usern in seinem LAN nicht.

----------

## stream

 *Genone wrote:*   

> blackace in #gentoo-server hatte meine ich eine Art "Distfiles-Proxy" Skript oder Apache Modul geschrieben, wodurch alle Anfragen vom Server weitergereicht wurden, wenn er eine Datei nicht selber hatte (ich hab auch nur von gehört, nie selber gesehen/ausprobiert).

 

meinst du den tsp-cache?

https://forums.gentoo.org/viewtopic.php?t=110973

----------

## Genone

 *stream wrote:*   

>  *Genone wrote:*   blackace in #gentoo-server hatte meine ich eine Art "Distfiles-Proxy" Skript oder Apache Modul geschrieben, wodurch alle Anfragen vom Server weitergereicht wurden, wenn er eine Datei nicht selber hatte (ich hab auch nur von gehört, nie selber gesehen/ausprobiert). 
> 
> meinst du den tsp-cache?
> 
> https://forums.gentoo.org/viewtopic.php?t=110973

 

Möglich, habs wie gesagt nie selber gesehen / ausprobiert.

----------

