zentrales Update für verschiedene PCs mit smart

Alles rund um die Installation Eures Linuxsystems, sowie die Updatefunktionen des Systems und das Paketmanagement

Moderator: Moderatoren

Antworten
pospiech
Hacker
Hacker
Beiträge: 250
Registriert: 19. Mai 2005, 22:52

zentrales Update für verschiedene PCs mit smart

Beitrag von pospiech » 28. Jun 2006, 17:56

Es gibt ja schon ein howto für aptfür ein zentrales Update von einem PC aus. Ich wollte mal anfragen ob es sich lohnt das ganze für smart einzurichten anstatt apt zu nutzen und wie man dann vorgehen muss.

Ich benutzte bislang nur suse 9.3 und apt auf allen Rechnern einzeln, d.h. ohne zentralen Updateserver.
Demnächst sollen alle Rechner auf 10.1 umgestellt werden.
Dann könnte ich a) smart nutzen und b) möchte in jedem Fall nur noch auf einem Rechner Updates herunterladen müssen, benötige aber noch ein entsprechendes Howto.

Zudem würde ich gerne auch die sonstigen FTP Dateien, die ich zum Installieren nutze, spiegeln damit auch in diesem Fall nicht alle Rechner die gleichen Dateien merhfach herunterladen. Auch hierfür suche ich ein Howto.

Matthias

Werbung:
Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus » 28. Jun 2006, 19:17

das geht analog.

smart sucht seinen Pakete-cache per default im Verzeichnis /var/lib/smart.
Wenn man das Verzeichnis /var/lib/smart verschiebt, z.Bsp nach /local/smart und einen symbolischen link von /var/lib/smart nach /local/smart legt

Code: Alles auswählen

ln -s /local/smart /var/lib/smart
und das Verzeichnis /local/smart per NFS exportiert, können verschiedene PCs mit diesem cache arbeiten.

einen evtl vorhandenen apt-Cache kann man ebenfalls ganz einfach durch eine eigene Channel-Definition einbinden.

Wer seine lokalen apt-Repositories via eigenem Webserver exportiert kann diese Repositories ebenfalls in smart integrieren.
Beispiel: abspeichern als local.channel in /etc/smart/channel

Code: Alles auswählen

[oc2pus-local]
type = apt-rpm
name = local SuSE Linux 10.1 APT suser-oc2pus repository
baseurl = http://192.168.42.11/apt/SuSE/10.1-i386
components = SuSE101
wird dann beim nächsten smart Aufruf aktiviert oder mit dem Befehl

Code: Alles auswählen

smart channel --add local.channel
Um aus einem lokalen Verzeichnis mit RPM's einen smartchannel zu erstellen, muss man mit dem Programm createrepo die Metainformationen erstellen und kann dann dieses repomd Repository ebenfalls in sein smart integrieren.
Wichtig: bei jeder Änderung am RPM-Verzeichnis muss anschliessend createrepo aufgerufen werden. Das Programm createrepo wird über das gleichnamige Pakete installiert.

Beispiel:
im Verzeichnis /local/meinePakete liegen einige RPMs, dann erstellt

Code: Alles auswählen

createrepo /local/meinePakete
eine Verzeichnis /local/meinePakete/repodata.
Dieses Verzeichnis dann via Webserver freigeben.

Die zugehörige channel-Definition sieht dann so aus:

Code: Alles auswählen

[oc2pus-local]
type = rpm-md
name = local SuSE Linux 10.1 APT suser-oc2pus repository
baseurl = http://192.168.42.11/apt/SuSE/10.1-i386/RPMS
tell people what you want to do, and they'll probably help you to do it.
PackMan
LinWiki : Das Wiki für Linux User

pospiech
Hacker
Hacker
Beiträge: 250
Registriert: 19. Mai 2005, 22:52

Beitrag von pospiech » 28. Jun 2006, 22:05

Danke für die Antwort. Ich verstehe zwar erstmal gar nichts von dem, was aber vielleicht auch daran liegt, dass ich mit smart noch nicht gearbeitet habe.

Kann man auch per samba statt nfs erxportieren ? nfs ist mein Haßliebling, weil es dazu führt das mein Rechner abschmiert, wenn der Client bzw Host ausgeschaltet wird. Konkret schmiert der RPC Deamon ab und verhindert das Lesen des Verzeichnisses in dem die mounts liegen. Lässt sich auch nur durch einen Reboot beheben.

Ansonsten versuche ich mich an deinen Beispielen in den nächsten Tagen und melde mich wenn ich Fragen habe (was vermutlich der Fall sein wird)

Matthias

Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus » 28. Jun 2006, 22:08

es muss nicht NFS sein, ich habe auch skizziert wie es mit einem lokalen Webserver geht ...

ad Samba:
das kann funktionieren, aber ist meines Erachtens ein overhead. Aber ich bin kein Windows/Samba Geek :mrgreen:
tell people what you want to do, and they'll probably help you to do it.
PackMan
LinWiki : Das Wiki für Linux User

pospiech
Hacker
Hacker
Beiträge: 250
Registriert: 19. Mai 2005, 22:52

Beitrag von pospiech » 28. Jun 2006, 22:22

Gut, da ich sowieso eine Webserver am laufen habe würde ich den dafür nehmen. Für den Dateiexport bin ich aber so oder so auf samba angewiesen, wenn ich nfs nicht nutzen möchte, da mir andere Alternativen nicht bekannt sind.

Matthias

Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus » 28. Jun 2006, 22:25

pospiech hat geschrieben:Gut, da ich sowieso eine Webserver am laufen habe würde ich den dafür nehmen. Für den Dateiexport bin ich aber so oder so auf samba angewiesen, wenn ich nfs nicht nutzen möchte, da mir andere Alternativen nicht bekannt sind.
dann nimm den Webserver und du brauchst keine Dateifreigaben für deine RPM-Pakete....
tell people what you want to do, and they'll probably help you to do it.
PackMan
LinWiki : Das Wiki für Linux User

pospiech
Hacker
Hacker
Beiträge: 250
Registriert: 19. Mai 2005, 22:52

Beitrag von pospiech » 6. Jul 2006, 22:21

Inzwischen habe ich Suse 10.1 mit smart am laufen und verstehe etwas mehr von deiner Beschreibung.
oc2pus hat geschrieben:das geht analog.
smart sucht seinen Pakete-cache per default im Verzeichnis /var/lib/smart.
Wenn man das Verzeichnis /var/lib/smart verschiebt, z.Bsp nach /local/smart und einen symbolischen link von /var/lib/smart nach /local/smart legt

Code: Alles auswählen

ln -s /local/smart /var/lib/smart
und das Verzeichnis /local/smart per NFS exportiert, können verschiedene PCs mit diesem cache arbeiten.
Damit erreiche ich, dass Updates über dioe Verfügbarkeit von Paketen entfernter Rechner von allen Rechner gleichermaßen durchgeführt werden.
Aber Pakete sind in diesem Verzeichnis bei mir nicht enthalten.
oc2pus hat geschrieben: Wer seine lokalen apt-Repositories via eigenem Webserver exportiert kann diese Repositories ebenfalls in smart integrieren.
Will ich den eigene Reposetries haben ? Ich habe keine und plane auch nicht welche aufzumachen. Schließlich will ich keine Pakete erstellen. Oder worum geht es hier ?
oc2pus hat geschrieben: Um aus einem lokalen Verzeichnis mit RPM's einen smartchannel zu erstellen, muss man mit dem Programm createrepo die Metainformationen erstellen und kann dann dieses repomd Repository ebenfalls in sein smart integrieren.
Wichtig: bei jeder Änderung am RPM-Verzeichnis muss anschliessend createrepo aufgerufen werden. Das Programm createrepo wird über das gleichnamige Pakete installiert.
Das würde aber nur Sinn machen wenn ich die Dateien aus einem Channel wieder als exakt demselben Channel lokal verfügbar machen wollte - das erscheint mir aber sehr umständlich, denn dann müsste ja über ein Skript abgefragt werden ob neuere RPMS angekommen sind. Wobei man noch einrichten müsste, dass überhaupt rpms auf dem Rechner landen.

Geht es nicht einfacher?

Was mich irritiert - was passiert mit den Updates die ich lokal schon geladen habe ? Werden diese gelöscht ? Das dürfte natürlich nicht passieren, sonst können die anderen Rechner es nicht mehr nutzen.

Wenn ich schon neue channels lokal erschaffen muss - wäre es dann nicht einfacher den Server einfach zu spiegelen ?

Was mir auch noch fehlt: Bei synaptic gibt es die Option Updates herunterzuladen, aber nicht zu installieren. Gibt es das auch für smart ? Ich habe keine deratige Option gesehen.

Matthias

Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus » 6. Jul 2006, 22:31

smart config --set remove-packages=false
damit wird nichts im cache gelöscht

bei NFS-Freigabe des caches:
die Idee ist den smart-cache nur EINMAL zu haben.
d.h. alle PCs schreiben/lesen aus dem gleichen cache.

bei Webserver-Freigabe:
alle lesen aus dem gleichen cache, aber irgendein Rechner muss dafür sorgen das der cache gefüllt/gespiegelt wird.

Ich nutze die NFS-Freigabe, weil das am einfachsten zu relaisieren ist.

Und eigene Repositories braucht man z.Bsp um Treiber RPMs oder sonstige RPMs zentral zur Verfügung zu stellen.
tell people what you want to do, and they'll probably help you to do it.
PackMan
LinWiki : Das Wiki für Linux User

pospiech
Hacker
Hacker
Beiträge: 250
Registriert: 19. Mai 2005, 22:52

Beitrag von pospiech » 6. Jul 2006, 23:29

oc2pus hat geschrieben:
smart config --set remove-packages=false
damit wird nichts im cache gelöscht
Danke, auf setwas hatte ich gehofft.
Bleibt nur die Frage wie ich schon installierte Pakete wieder in den Cache bekomme, sowie Pakete die online verfügbar sind bei meinem Rechner aber nicht installiert werden sollen ebenfalls in den Cache bekomme.

Matthias

Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus » 7. Jul 2006, 07:18

tja um alles in den cache zu packen was installiert ist:

Code: Alles auswählen

myRPMS=`rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" `
mirror="http://ftp.gwdg.de......"
cd /var/lib/smart/packages
for i in $myRPMS; do
    wget -c <mirror>/$i.rpm
done
das sollte alle installierten Pakete holen.

und zur zweiten Frage: rsync verwenden um die Pakete runterzuladen.
Dazu gibt es schon ein script hier im Forum.
Zuletzt geändert von oc2pus am 7. Jul 2006, 09:24, insgesamt 1-mal geändert.
tell people what you want to do, and they'll probably help you to do it.
PackMan
LinWiki : Das Wiki für Linux User

pospiech
Hacker
Hacker
Beiträge: 250
Registriert: 19. Mai 2005, 22:52

Beitrag von pospiech » 7. Jul 2006, 09:20

Vielen Danke für das Skript, allerdings führt die Anweisung
rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARRCH}\n"

bei mir nur zu dem Fehler
error: incorrect format: empty tag name

Leider weiß ich mit dem Fehler nichts anzufangen.

Matthias

Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus » 7. Jul 2006, 09:25

Code: Alles auswählen

rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARRCH}\n" 
sorry typo von mir ;)

muss heissen:

Code: Alles auswählen

rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" 
tell people what you want to do, and they'll probably help you to do it.
PackMan
LinWiki : Das Wiki für Linux User

pospiech
Hacker
Hacker
Beiträge: 250
Registriert: 19. Mai 2005, 22:52

Beitrag von pospiech » 7. Jul 2006, 09:39

Jetzt läuft das Skript prinzipiell durch. Aber die Liste in myRPMS enthält nur die Dateien, und keinen Pfad.
Die Dateien sind jedoch nicht alle auf dem gleichen Pfad eines Servers zu finden. Daher weiß ich nicht welchen Mirror/Pfad ich angeben soll.
Mit einem mirror="ftp://ftp.gwdg.de/pub/linux/suse/" wird in jedem Fall nichts gefunden.

EDIT: Stimmt nicht. ganz Eine Anpassung des Skriptes nach
wget -c $mirror$i.rpm
führt dazu, dass das Skript überhaupt erst versucht die Dateien runterzuuladen.

Das jedoch scheitert daran, dass sie wie vermutet nicht gefunden werde

Code: Alles auswählen

--09:46:51--  ftp://ftp.gwdg.de/pub/linux/suse/kdebase3-SuSE-10.1-58.3.i586.rpm
           => `kdebase3-SuSE-10.1-58.3.i586.rpm'
Auflösen des Hostnamen »ftp.gwdg.de«.... 134.76.11.100
Verbindungsaufbau zu ftp.gwdg.de|134.76.11.100|:21... verbunden.
Anmelden als anonymous ... Angemeldet!
==> SYST ... fertig.    ==> PWD ... fertig.
==> TYPE I ... fertig.  ==> CWD /pub/linux/suse ... fertig.
==> PASV ... fertig.    ==> RETR kdebase3-SuSE-10.1-58.3.i586.rpm ...
Die Datei »kdebase3-SuSE-10.1-58.3.i586.rpm« gibt es nicht.
Matthias

Benutzeravatar
oc2pus
Ultimate Guru
Ultimate Guru
Beiträge: 6506
Registriert: 21. Jun 2004, 13:01

Beitrag von oc2pus » 7. Jul 2006, 09:52

naja, ein paar "Hausaufgaben" musst du schon selber machen ..

zunächst musst du die Pakete trennen nach noarch, i386, i586, i686 und daraus ergeben sich bestimmte Verzeichnisse auf dem Server

und aus der Liste der RPMs musst du die gpg-pubkey-* skippen, das sind keine Pakete.
tell people what you want to do, and they'll probably help you to do it.
PackMan
LinWiki : Das Wiki für Linux User

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast