kb

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung Beide Seiten der Revision
kb [2016/03/29 08:05]
flacco [DNS-Server bind und LDAP]
kb [2016/03/29 08:06]
flacco
Zeile 620: Zeile 620:
  
 ...to be continued. ...to be continued.
-===== ISC DHCP mit ActiveDirectory ===== 
  
-Um den DHCP-Server des ISC mit einem Active Directory als Backend zu verwenden, muss dieser so gepatcht werden, dass er andere LDAP-Attribut- und Objektklassen-Namen akzeptiert. Dies ist notwendig, da Microsoft für seinen DHCP-Server teils identische Namen für Attribute und Objektklassen verwendet. Ohne das Patchen führt der Versuch einen ISC DHCP-Server Datenbestand aus einem OpenLDAP Verzeichnis in ein Active Directory zu migrieren zu "​Objectclass Violations"​ die nicht zu beheben sind. 
- 
-==== LDAP Patch erzeugen ==== 
- 
-Den Patch zu erstellen ist etwas umständlich,​ da im openSUSE-Paket bereits Patches auf die von uns zu patchenden Dateien angewendet werden. D.h. um unseren Patch zu erzeugen müssen zunächst die anderen Patches auf den Quellcode angewendet werden. 
- 
-Zu patchen sind folgende Dateien: 
- 
-  * server/​ldap.c 
-  * contrib/​ldap/​README.ldap 
-  * contrib/​ldap/​dhcpd-conf-to-ldap 
-  * contrib/​ldap/​dhcp.shema 
- 
-Im ersten Schritt müssen aus dem Repository "​network:​dhcp"​ (https://​build.opensuse.org/​package/​show/​network:​dhcp/​dhcp) des openSUSE Buildservice das Quellcode-Archiv (dhcp-4.x.y.tar.gz),​ sowie die beiden Patches "​0007-dhcp-4.2.6-ldap-mt01.patch"​ und "​0022-dhcp-4.2.x-contrib-conf-to-ldap-reorder.886094.patch"​ heruntergeladen werden. 
- 
-Das Quellcode-Archiv ist in ein Arbeitsverzeichnis zu extrahieren. Danach sind die beiden heruntergeladenen Patches darauf anzuwenden: 
- 
-<​code>​ 
-heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ patch -p1 server/​ldap.c 0007-dhcp-4.2.6-ldap-mt01.patch 
-heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ patch -p1 contrib/​ldap/​dhcpd-conf-to-ldap 0022-dhcp-4.2.x-contrib-conf-to-ldap-reorder.886094.patch 
-</​code>​ 
- 
-Treten dabei Fehler auf, sind diese in einer auf **.rej** endenden Datei im Verzeichnis der zu patchenden Datei zu finden. Sind die Fehler überschaubar,​ lassen sich die Änderungen auch manuell durchführen. 
- 
-Jetz sind per suchen und ersetzen der Attributnamen und Objektklassen mit **//sed//** neue Dateien mit den gewünschten Änderungen zu erzeugen: 
- 
-<​code>​ 
-heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ cat server/​ldap.c | sed /​dhcp[A-Z]/​s/​dhcp/​iscDhcp/​g > server/​ad.ldap.c 
-heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ cat contrib/​ldap/​README.ldap | sed /​dhcp[A-Z]/​s/​dhcp/​iscDhcp/​g > contrib/​ldap/​ad.README.ldap 
-heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ cat contrib/​ldap/​dhcpd-conf-to-ldap | sed /​dhcp[A-Z]/​s/​dhcp/​iscDhcp/​g > contrib/​ldap/​ad.dhcpd-conf-to-ldap 
-heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ cat contrib/​ldap/​dhcp.schema | sed /​dhcp[A-Z]/​s/​dhcp/​iscDhcp/​g > contrib/​ldap/​ad.dhcp.schema 
-</​code>​ 
- 
-Jetzt werden mit //​**diff**//​ einzelne Patches für jede der Dateien erzeugt: 
-<​code>​ 
-heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ diff -u server/​ldap.c server/​ad.ldap.c > ../​ldap.c.patch 
-heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ diff -u contrib/​ldap/​README.ldap contrib/​ldap/​ad.README.ldap > ../​README.ldap.patch 
-heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ diff -u contrib/​ldap/​dhcpd-conf-to-ldap contrib/​ldap/​ad.dhcpd-conf-to-ldap > ../​dhcpd-conf-to-ldap.patch 
-heinzb@knurps:​~/​baustelle/​dhcp-4.2.6>​ diff -u contrib/​ldap/​dhcp.schema contrib/​ldap/​ad.dhcp.schema > ../​dhcp.schema.patch 
-</​code>​ 
- 
-Jetzt müssen noch die Kopfzeilen der Einzelpatches angepasst werden. Aus: 
- 
-<​code>​ 
---- server/​ldap.c ​      ​2015-03-26 14:​24:​44.905456906 +0100 
-+++ server/​ad.ldap.c ​   2015-03-26 17:​12:​52.783318249 +0100 
-</​code>​ 
- 
-wird: 
- 
-<​code>​ 
---- a/​server/​ldap.c ​      ​2015-03-26 14:​24:​44.905456906 +0100 
-+++ b/​server/​ldap.c ​   2015-03-26 17:​12:​52.783318249 +0100 
-</​code>​ 
- 
-Danach werden alle Einzelpatches zum Gesamtpatch zusammengesetzt:​ 
- 
-<​code>​ 
-heinzb@knurps:​~/​baustelle>​ cat ldap.c.patch > 0099-AD-LDAP.patch ​ 
-heinzb@knurps:​~/​baustelle>​ cat README.ldap.patch >> 0099-AD-LDAP.patch ​ 
-heinzb@knurps:​~/​baustelle>​ cat dhcpd-conf-to-ldap.patch >> 0099-AD-LDAP.patch ​ 
-heinzb@knurps:​~/​baustelle>​ cat dhcp.schema.patch >> 0099-AD-LDAP.patch 
-</​code>​ 
- 
-Danach den Patch in unser Testing-Repositorie hochladen und die Spec-Datei des dhcp-Paketes anpassen: 
- 
-Ab Zeile 138 (ca.) 
-<​code>​ 
-# invis-server.org Stefan Schaefer 
-Patch99: ​       0099-AD-LDAP.patch 
-</​code>​ 
- 
-Ab Zeile: 282 (ca.) 
-<​code>​ 
-%if %{with_ldap} 
-# Stefan Schaefer - invis-server.org 
-%patch99 -p1 
-%endif 
-%endif 
-## clean up after patching 
-find . -type f -name \*.orig\* -exec rm -f {} \; 
-find . -type f -name \*.rej\* -exec rm -f {} \; 
-</​code>​ 
- 
-Die Zeilenangaben sind natürlich nicht genau, das sich das Spec-File mit jeder neuen Version ändern kann. Wichtig ist nur, dass unser Patch als letzter angewendete wird. 
- 
-==== Paketbenennung und Konfliktverhalten ==== 
- 
-Um nicht mit den regulären DHCP-Paketen in den SUSE Repositories in Konkurrenz zu geraten, haben wir unsere Pakete umbenannt. Sie tragen jetzt die Vorsilbe "​invis":​ 
- 
-  * invisdhcp 
-  * invisdhcp-server 
-  * invisdhcp-client 
-  * invisdhcp-relay 
-  * invisdhcp-devel 
-  * invisdhcp-doc 
- 
-Die Umbenennung erfolgt im Specfile. Weiterhin wurde in den Paketen die Direktive "​Conflict"​ im Specfile verwendet. Dadurch können nur entweder die ungepatchten oder die gepatchten Pakete auf einem System installiert werden. Auch dies wird im Specfile eingetragen:​ 
- 
-**Namensdefinition** 
-ab Zeile 35: 
-<​code>​ 
-Name:           ​invisdhcp 
-%define originname dhcp 
-.... 
-Source0: ​       dhcp-%{isc_version}.tar.gz 
-Source1: ​       dhcp-%{isc_version}.tar.gz.asc 
-Source2: ​       %{originname}.keyring 
-</​code>​ 
- 
-Die Variable %originname musste hinzugefügt werden, da der Originalname weiterhin beim Paketbau benötigt wird. 
- 
-**Conflict & Requires Direktiven** 
-ab Zeile 146 
-<​code>​ 
-Conflicts: dhcp 
- 
-%package server 
-Summary: ​       ISC DHCP Server 
-Group: ​         Productivity/​Networking/​Boot/​Servers 
-Requires: ​      ​invisdhcp = %{version} 
-Requires: ​      ​net-tools 
-Conflicts:​ dhcp-server 
-PreReq: ​        ​%insserv_prereq %fillup_prereq /bin/cat /bin/mkdir /bin/cp /​usr/​sbin/​useradd 
- 
-%package client 
-Summary: ​       ISC DHCP Client 
-Group: ​         Productivity/​Networking/​Boot/​Clients 
-Requires: ​      /​sbin/​arping 
-Requires: ​      /​usr/​bin/​host 
-Requires: ​      ​invisdhcp = %{version} 
-Requires: ​      ​iproute2 
-Requires: ​      ​net-tools 
-Conflicts:​ dhcp-client 
-PreReq: ​        ​%insserv_prereq %fillup_prereq /bin/cat /bin/mkdir /bin/cp /bin/grep 
- 
-%package relay 
-Summary: ​       ISC DHCP Relay Agent 
-Group: ​         Productivity/​Networking/​Boot/​Servers 
-Requires: ​      ​invisdhcp = %{version} 
-Requires: ​      ​net-tools 
-Conflicts:​ dhcp-relay 
-PreReq: ​        ​%insserv_prereq %fillup_prereq /bin/cat /bin/mkdir /​bin/​cp ​ 
- 
-%package devel 
-Summary: ​       Header Files and Libraries for dhcpctl API 
-Group: ​         Development/​Libraries/​C and C++ 
-Requires: ​      ​invisdhcp = %{version} 
-Conflicts:​ dhcp-devel 
-Conflicts: ​     bind-devel 
- 
-%if %{with_doc_package} 
- 
-%package doc 
-Summary: ​       Documentation 
-Conflicts:​ dhcp-doc 
-Group: ​         Productivity/​Networking/​Boot/​Servers 
-%endif 
-</​code>​ 
- 
-Wie gezeigt sind Anpassungen in allen Einzelpaketen erforderlich. Mittels Conflicts und Requires werden die erforderlichen Paketabhängigkeiten gelöst. 
  • kb.txt
  • Zuletzt geändert: 2020/10/20 10:47
  • von flacco