Ab AIX 7.2 unterstützt NIM die Verwendung von HTTP. Hierzu gibt es den neuen NIM-Service Handler nimhttp (Port 4901). Dies bietet die Möglichkeit YUM Repositories auf einem NIM-Server mit Hilfe dieses NIM-Service Handlers zur Verfügung zu stellen. Die Repositories müssen hierzu unterhalb des Document-Root (standardmäßig /export/nim) abgespeichert werden. Der Zugriff von einem AIX-Client aus kann dann über HTTP erfolgen.
Die Repositories müssen dazu auf dem AIX-Client unter /opt/freeware/etc/yum/yum.conf oder /opt/freeware/etc/yum/repos.d konfiguriert werden. Alle verfügbaren YUM Operationen werden auf diesem Wege unterstützt.
Wird auf dem NIM-Server ohnehin nimhttp genutzt, entsteht hierdurch kein zusätzlicher Aufwand.
Im Folgenden ist die Konfiguration für die Verwendung von YUM mit nimhttp gezeigt.
Voraussetzung ist zunächst das der NIM-Service Handler nimhttp auf dem NIM-Server aktiv ist:
aixnim # lssrc -s nimhttp Subsystem Group PID Status nimhttp 19136996 active aixnim #
Sollte nimhttp noch nicht aktiviert worden sein, kann dies im einfachsten Fall mit Hilfe des Kommandos nimconfig auf dem NIM-Server nachgeholt werden:
aixnim # nimconfig -h 0513-077 Subsystem has been changed. 0513-059 The nimhttp Subsystem has been started. Subsystem PID is 19136996. aixnim #
Hinweis: Die Konfiguration von nimhttp wird an anderer Stelle gezeigt.
Für Testzwecke legen wir unter /export/nim (Document-Root) eine kleine Text-Datei auf dem NIM-Server an:
aixnim # echo "testfile for nimhttp" >/export/nim/testfile aixnim #
Als nächstes überprüfen wir auf dem NIM-Client die Funktionalität indem wir mit dem NIM-Client Kommando nimhttp die angelegte Test-Datei vom NIM-Server herunterladen:
aix01 # nimhttp -f testfile -o dest=/tmp -v nimhttp: (source) testfile nimhttp: (dest_dir) /tmp nimhttp: (verbose) debug nimhttp: (master_ip) aixnim nimhttp: (master_port) 4901 sending to master... size= 46 pull_request= "GET /testfile HTTP/1.1 Connection: close " Writing 21 bytes of data to /tmp/testfile Total size of datalen is 21. Content_length size is 21. aix01 #
(Die Option ‚-v‘ sorgt für den gezeigten Debugging-Output.)
Die Testdatei wurde unter /tmp/testfile abgespeichert.
Ein weiterer Test mit dem Kommando curl (verfügbar über die AIX-Toolbox) zeigt ebenfalls das nimhttp erfolgreich für den Download von Daten verwendet werden kann:
aix01 # curl http://aixnim:4901/testfile testfile for nimhttp aix01 #
Die Verwendung von nimhttp für den Zugriff auf YUM-Repositories sollte also prinzipiell möglich sein.
Wir haben Kopien der von IBM bereitgestellten Repositories der AIX-Toolbox auf unserem NIM-Server in den folgenden Verzeichnissen abgelegt:
/export/nim/aixtoolbox/RPMS/noarch AIX_Toolbox_noach (AIX noarch repository)
/export/nim/aixtoolbox/RPMS/ppc AIX_Toolbox (AIX generic repository)
/export/nim/aixtoolbox/RPMS/ppc-7.1 AIX_Toolbox_71 (AIX 7.1 specific repository)
/export/nim/aixtoolbox/RPMS/ppc-7.2 AIX_Toolbox_72 (AIX 7.2 specific repository)
Damit ein AIX Client System auf diese Repositories zugreifen kann, müssen diese in der YUM Konfiguration hinterlegt sein. Wir haben der Einfachheit halber die Repositories in die Konfigurations-Datei /opt/freeware/etc/yum/yum.conf eingetragen:
aix01 # vi /opt/freeware/etc/yum/yum.conf [main] cachedir=/var/cache/yum keepcache=1 debuglevel=2 logfile=/var/log/yum.log exactarch=1 obsoletes=1 [AIX_Toolbox] name=AIX generic repository baseurl=http://aixnim:4901/aixtoolbox/RPMS/ppc/ enabled=1 gpgcheck=0 [AIX_Toolbox_noarch] name=AIX noarch repository baseurl=http://aixnim:4901/aixtoolbox/RPMS/noarch/ enabled=1 gpgcheck=0 [AIX_Toolbox_72] name=AIX 7.2 specific repository baseurl=http://aixnim:4901/aixtoolbox/RPMS/ppc-7.2/ enabled=1 gpgcheck=0 aix01 #
Alternativ kann für jede Repository auch ein eigenes repoid-File unter /opt/freeware/etc/yum/repos.d angelegt werden.
Der entscheidende Eintrag ist jeweils das Attribut baseurl. Hier wird als URL http verwendet. Dem Hostnamen des NIM-Servers wird mit Doppelpunkt getrennt die Port-Nummer von nimhttp (Port 4901) mitgegeben. Der Pfad ist dann relativ zu /export/nim (Document-Root) auf dem NIM-Server.
Ein Auflisten der verfügbaren YUM-Repositories mit dem Kommando yum zeigt die erwarteten Repositories:
aix01 # yum repolist repo id repo name status AIX_Toolbox AIX generic repository 2740 AIX_Toolbox_72 AIX 7.2 specific repository 417 AIX_Toolbox_noarch AIX noarch repository 301 repolist: 3458 aix01 #
Um zu demonstrieren das auch das Installieren von RPMs auf diesem Wege mit nimhttp möglich ist, zeigen wir die Installation von wget:
aix01 # yum install wget Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package wget.ppc 0:1.21.1-1 will be installed --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================== Package Arch Version Repository Size ======================================================================================================== Installing: wget ppc 1.21.1-1 AIX_Toolbox 703 k Transaction Summary ======================================================================================================== Install 1 Package Total size: 703 k Installed size: 1.4 M Is this ok [y/N]: y Downloading Packages: Running Transaction Check Running Transaction Test Transaction Test Succeeded Running Transaction Installing : wget-1.21.1-1.ppc 1/1 From wget-1.21.1 onwards, symbolic link of wget in /usr/bin is removed. The binary is shipped in /opt/freeware/bin. Please use absolute path or add /opt/freeware/bin in PATH environment variable to use the binary. Installed: wget.ppc 0:1.21.1-1 Complete! aix01 #
Das AIX-System muss nicht zwingend ein NIM-Client sein, da YUM nicht auf NIM zurückgreift. YUM verwendet lediglich den vom NIM-Master bereitgestellten http-Server. Die AIX-Version spielt ebenfalls keine Rolle, der AIX-Client kann unter AIX 7.1 oder AIX 7.2 laufen.
Hinweis: Für AIX 7.3 wird anstelle von YUM der Dandified YUM (DNF) verwendet.
AIX-System mit direkter Internet-Anbindung
AIX-System ohne direkte Internet-Anbindung
Dependent module /opt/freeware/lib/libcrypto.a(libcrypto.so) could not be loaded
db-4.8.24-3.ppc conflicts with file from package db4-4.7.25-2.ppc
Welche Repositories sind verfügbar?
Konfigurieren von existierenden Repositories
Hinzufügen eines lokalen Repositories
Repository mit HTTP- oder HTTPS-Zugriff
Repository mit HTTP- oder HTTPS-Zugriff über Proxy-Server
Erzeugen einer lokalen Repository