{"id":1417,"date":"2016-05-03T09:00:04","date_gmt":"2016-05-03T08:00:04","guid":{"rendered":"https:\/\/www.my-it-brain.de\/wordpress\/?p=1417"},"modified":"2016-10-21T23:27:33","modified_gmt":"2016-10-21T21:27:33","slug":"lokaler-spiegelserver-fuer-centos-fedora-und-rhel","status":"publish","type":"post","link":"https:\/\/www.my-it-brain.de\/wordpress\/lokaler-spiegelserver-fuer-centos-fedora-und-rhel\/","title":{"rendered":"Lokaler Spiegelserver f\u00fcr CentOS, Fedora und RHEL"},"content":{"rendered":"<p>Durch die Nutzung eines lokalen Spiegelservers lassen sich Softwarepakete im lokalen Netzwerk bereitstellen. Dies schont die Internetverbindung und spart damit Bandbreite und evtl. Kosten.<\/p>\n<p>Dieser Artikel beschreibt und dokumentiert die Einrichtung eines lokalen Spiegelservers f\u00fcr CentOS, Fedora und RHEL. Er bietet jedoch keine Schritt-f\u00fcr-Schritt-Anleitung. F\u00fcr detaillierte Informationen wird auf die Quellen am Ende des Artikels sowie auf die <code>manpages<\/code> der einzelnen Kommandos verwiesen.<\/p>\n<h2 id=\"konfiguration-spiegelserver\">Konfiguration des Spiegelservers<\/h2>\n<p>F\u00fcr den Betrieb eines lokalen Spiegelservers m\u00fcssen ein Webserver sowie die CLI-Programme <em>reposync<\/em> und <em>createrepo<\/em> auf dem Host installiert werden, welcher als Spiegelserver dienen soll.<\/p>\n<p><em>Hinweis f\u00fcr RHEL:<\/em> Bei Verwendung von RHEL k\u00f6nnten nur jene Paketquellen gespiegelt werden, f\u00fcr welche der Spiegelserver eine g\u00fcltige Subskription besitzt. Sollen auch solche Paketquellen gespiegelt werden, f\u00fcr die der Host keine Subskription besitzt, ist der Einsatz des kostenpflichtigen Satellite Servers erforderlich.<\/p>\n<p>Diese Pakete befinden sich in der Regel in den Paketquellen, welche standardm\u00e4\u00dfig zur jeweiligen Distribution geh\u00f6ren. F\u00fcr CentOS\/RHEL k\u00f6nnen die Pakete zum Beispiel mit den folgenden Befehlen installiert werden:<\/p>\n<pre>$ sudo yum groupinstall \"Einfacher Webserver\"\r\n$ sudo yum install yum-utils createrepo\r\n<\/pre>\n<p>Verwendet man bereits eine Fedora-Version mit dem YUM-Nachfolger DNF, so k\u00f6nnen die Pakete wie folgt installiert werden:<\/p>\n<pre>$ sudo dnf groupinstall \"Web Server\"\r\n$ sudo dnf install yum-utils createrepo\r\n<\/pre>\n<p>F\u00fcr eine Minimalkonfiguration des Webservers ist es erforderlich, den FQDN des Hosts als <em>ServerName<\/em> in der Datei <strong>\/etc\/httpd\/conf\/httpd.conf<\/strong> zu setzen.<\/p>\n<p>Verwendet man die Hostfirewall, so ist der Zugriff auf den Webserver in dieser noch freizugeben.<\/p>\n<pre>$ sudo firewall-cmd --add-service http\r\n<\/pre>\n<p>Im n\u00e4chsten Schritt wird unterhalb des Webserver-Wurzelverzeichnisses ein Verzeichnis erstellt, in dem zuk\u00fcnftig die gespiegelten Repositories abgelegt werden.<\/p>\n<pre>sudo mkdir \/var\/www\/html\/repomirror\r\n<\/pre>\n<p>Nun k\u00f6nnen mit <code>reposync<\/code> Pakete aus Online-Quellen auf den Spiegelserver heruntergeladen werden:<\/p>\n<pre>$ sudo reposync --gpgcheck -l --repoid= --download_path=\/var\/www\/html\/repomirror --downloadcomps --download-metadata -n\r\n<\/pre>\n<p>Die ben\u00f6tigte Repo-ID kann der ersten Spalte der Ausgabe von <code>sudo yum repolist<\/code> entnommen werden. Mit dem Parameter <code>-n<\/code> wird nur die aktuellste verf\u00fcgbare Paketversion heruntergeladen.<\/p>\n<p>M\u00f6chte man bspw. das <code>base<\/code>-Repository von CentOS spiegeln, so geschieht dies mit dem Kommando:<\/p>\n<pre>$ sudo reposync --gpgcheck -l --repoid=base --download_path=\/var\/www\/html\/repomirror --downloadcomps --download-metadata -n\r\n<\/pre>\n<p>Dadurch wird im Verzeichnis <em>\/var\/www\/html\/repomirror<\/em> das Unterverzeichnis <em>base<\/em> erstellt.<\/p>\n<p>Damit die lokale Paketquelle nun von anderen Servern im lokalen Netzwerk genutzt werden kann, m\u00fcssen noch die Metadaten mit Hilfe des folgenden Befehls erstellt werden. Beispiel f\u00fcr das <code>base<\/code>-Repository aus CentOS:<\/p>\n<pre># cd \/var\/www\/html\/repomirror\/base\r\n# createrepo -v \/var\/www\/html\/repomirror\/base\/ -g comps.xml\r\n<\/pre>\n<p>Um den Abgleich der Paketquellen und die Erstellung der Metadaten zu automatisieren, kann folgendes Skript \u00fcber den Cron-Dienst ausgef\u00fchrt werden. Hier sind lediglich noch die REPO-ID und der Download-Pfad f\u00fcr die entsprechenden Variablen zu definieren.<br \/>\n<code>#!\/bin\/bash<br \/>\n#<br \/>\n# Beschreibung: Skript zur Synchronisierung des RHEL-Repositories<br \/>\n#               auf dem Spiegelserver<br \/>\n# Autor: Joerg Kastning &lt;joerg(Punkt)kastning(aet)uni-bielefeld.de&gt;<\/p>\n<p>LOG=\"\/var\/log\/do_reposync.log\"<br \/>\nREPOID=\" \"<br \/>\nDOWNLOADPATH=\" \"<\/p>\n<p>echo \\# `date +%Y-%m-%d` - START REPOSYNC \\# &gt; $LOG<\/p>\n<p>reposync --gpgcheck -l --repoid=$REPOID --download_path=\/var\/www\/html\/$DOWNLOADPATH --downloadcomps --download-metadata -n &gt;&gt; $LOG<\/p>\n<p>echo \\# `date +%Y-%m-%d` - END REPOSYNC \\# &gt;&gt; $LOG<br \/>\necho \\# `date +%Y-%m-%d` - START CREATEREPO \\# &gt;&gt; $LOG<\/p>\n<p>cd \/var\/www\/html\/$DOWNLOADPATH\/$REPOID<br \/>\ncreaterepo -v \/var\/www\/html\/$DOWNLOADPATH\/$REPOID -g comps.xml &gt;&gt; $LOG<\/p>\n<p>echo \\# `date +%Y-%m-%d` - END CREATEREPO \\# &gt;&gt; $LOG<\/p>\n<p>exit 0<br \/>\n<\/code><\/p>\n<h2 id=\"repo-datei-erstellen\">Erzeugung einer *.repo-Datei<\/h2>\n<p>Um die Paketquellen auf dem Spiegelserver zu verwenden, m\u00fcssen diese auf dem Client bekannt gemacht werden. Dies geschieht zum Beispiel, indem auf dem Client eine *.repo-Datei im Verzeichnis <em>\/etc\/yum.repos.d\/<\/em> angelegt wird. Der Aufbau dieser Datei wird am Beispiel des CentOS-Repositories <code>base<\/code> demonstriert:<\/p>\n<pre>[base]\r\nname= CentOS-$releasever - Base (local)\r\nbaseurl=http:\/\/FQDN\/repomirror\/base\/\r\nenabled=1\r\ngpgcheck=1\r\ngpgkey=file:\/\/\/etc\/pki\/rpm-gpg\/RPM-GPG-KEY-CentOS-7\r\n<\/pre>\n<p>Legt man diese Datei auf dem lokalen Spiegelserver in einem Verzeichnis ab, welches \u00fcber den Webserver erreichbar ist, kann sie von einem Client mit dem folgenden Kommando importiert werden:<\/p>\n<pre># yum-config-manager --add-repo http:\/\/FQDN\/repomirror\/DATEINAME.repo\r\n<\/pre>\n<h3 id=\"besonderheit-selinux\">Besonderheit bei Verwendung von SELinux<\/h3>\n<p>Bei Verwendung von SELinux, m\u00fcssen die Dateien noch mit dem Attribut <code>httpd_sys_content_t<\/code> ausgestattet werden. F\u00fcr Dateien in \/var\/www\/html geschieht dies mit:<\/p>\n<pre>\r\nrestorecon -R -v \/var\/www\/html\/*\r\n<\/pre>\n<h2>Quellen und weiterf\u00fchrende Links<\/h2>\n<ul>\n<li><a href=\"https:\/\/access.redhat.com\/solutions\/23016\" target=\"_blank\">How to create a local mirror of the latest update for Red Hat Enterprise Linux 5, 6, 7 without using Satellite server?<\/a><\/li>\n<li><a href=\"https:\/\/access.redhat.com\/solutions\/9892\" target=\"_blank\">How to use &#8222;createrepo&#8220; or &#8222;reposync&#8220; to create a local repository for updates<\/a><\/li>\n<li><a href=\"https:\/\/access.redhat.com\/articles\/1343513\" target=\"_blank\">How to create and host a yum repository over httpd<\/a><\/li>\n<li><a href=\"https:\/\/access.redhat.com\/solutions\/627583\" target=\"_blank\">How to add or remove package from local yum repository?<\/a><\/li>\n<li>Kofler, Michael: Linux &#8211; Das umfassende Handbuch: 1. Auflage 2014; 1. korrigierter Nachdruck 2014: S. 1171-1171<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Durch die Nutzung eines lokalen Spiegelservers lassen sich Softwarepakete im lokalen Netzwerk bereitstellen. Dies schont die Internetverbindung und spart damit Bandbreite und evtl. Kosten. Dieser Artikel beschreibt und dokumentiert die Einrichtung eines lokalen Spiegelservers f\u00fcr CentOS, Fedora und RHEL. Er bietet jedoch keine Schritt-f\u00fcr-Schritt-Anleitung. F\u00fcr detaillierte Informationen wird auf die Quellen am Ende des Artikels<span class=\"continue-reading\"> <a href=\"https:\/\/www.my-it-brain.de\/wordpress\/lokaler-spiegelserver-fuer-centos-fedora-und-rhel\/\">[Weiterlesen&#8230;]<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_metis_text_type":"","_metis_text_length":0,"_post_count":0,"footnotes":""},"categories":[51],"tags":[392,430,393,305,394,391],"class_list":["post-1417","post","type-post","status-publish","format-standard","hentry","category-linux","tag-mirror","tag-osbn","tag-paketquelle","tag-planet","tag-repository","tag-spiegelserver"],"_links":{"self":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/1417","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/comments?post=1417"}],"version-history":[{"count":10,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/1417\/revisions"}],"predecessor-version":[{"id":1435,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/posts\/1417\/revisions\/1435"}],"wp:attachment":[{"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/media?parent=1417"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/categories?post=1417"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.my-it-brain.de\/wordpress\/wp-json\/wp\/v2\/tags?post=1417"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}