Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
centos:repo-own [03.08.2011 20:08. ] – [createrepo] djangocentos:repo-own [20.04.2018 10:38. ] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +====== Eigenes Repository einrichten ======
 +{{:centos:repository.png |Repository Icon}}\\ Hat man mehrere Clienten im eigenen LAN zu betreuen, so ist es zweckmäßiger ein lokales Repository vorzuhalten. Die einzelnen Rechner, können sich dann über den schnellen LAN-Zugriff die Daten vom lokalen Repository holen, so z.B. bei der [[centos:centos_5_internetinstallation|Erstinstallation]] und müssen nicht die WAN-Strecke benutzen. So spart man Übertragungstraffic und die Spiegelserver werden nicht unnötig mehrfach belastet.
 +
 +===== Zielverzeichnis(se) anlegen =====
 +Als erstes legen wir unsere Zielpfade an, in denen später die Dateien abgelegt werden sollen.
 +==== Centos Base ====
 +<code># mkdir -p /var/www/repository/centos/5/addons/i386/repodata
 +# mkdir -p /var/www/repository/centos/5/addons/i386/RPMS
 +# mkdir -p /var/www/repository/centos/5/centosplus/i386/repodata
 +# mkdir -p /var/www/repository/centos/5/centosplus/i386/RPMS
 +# mkdir -p /var/www/repository/centos/5/contrib/i386/RPMS
 +# mkdir -p /var/www/repository/centos/5/contrib/i386/repodata
 +# mkdir -p /var/www/repository/centos/5/extras/i386/RPMS
 +# mkdir -p /var/www/repository/centos/5/extras/i386/repodata
 +# mkdir -p /var/www/repository/centos/5/fasttrack/i386/RPMS
 +# mkdir -p /var/www/repository/centos/5/fasttrack/i386/repodata
 +# mkdir -p /var/www/repository/centos/5/isos/i386
 +# mkdir -p /var/www/repository/centos/5/os/i386/CentOS/RPMS
 +# mkdir -p /var/www/repository/centos/5/os/i386/NOTES
 +# mkdir -p /var/www/repository/centos/5/os/i386/images/pxeboot
 +# mkdir -p /var/www/repository/centos/5/os/i386/images/xen
 +# mkdir -p /var/www/repository/centos/5/os/i386/isolinux
 +# mkdir -p /var/www/repository/centos/5/os/i386/repodata
 +# mkdir -p /var/www/repository/centos/5/updates/i386/RPMS
 +# mkdir -p /var/www/repository/centos/5/updates/i386/repodata</code>
 +==== rpmforge ====
 +Für das **rpmforge-Repository** legen wir auch gleich noch im nächsten Schritt die Verzeichnisstruktur an:
 +<code># mkdir -p /var/www/repository/rpmforge/test/RPMS
 +# mkdir -p /var/www/repository/rpmforge/test/headers
 +# mkdir -p /var/www/repository/rpmforge/test/repodata
 +# mkdir -p /var/www/repository/rpmforge/base
 +# mkdir -p /var/www/repository/rpmforge/RPMS.test
 +# mkdir -p /var/www/repository/rpmforge/RPMS.dries
 +# mkdir -p /var/www/repository/rpmforge/dries/repodata
 +# mkdir -p /var/www/repository/rpmforge/dries/headers
 +# mkdir -p /var/www/repository/rpmforge/dries/RPMS
 +# mkdir -p /var/www/repository/rpmforge/dag/repodata
 +# mkdir -p /var/www/repository/rpmforge/dag/headers
 +# mkdir -p /var/www/repository/rpmforge/dag/RPMS</code>
 +
 +==== eigenes Repository ====
 +Für etwaig eigene Repositories legen wir zu guter Letzt auich noch die benötigten Verzeichnisse an.
 +<code># mkdir -p /var/www/repository/ws500
 +# mkdir -p /var/www/repository/wview</code>
 +===== initiale Befüllung =====
 +Im nächsten Schritt befüllen wir das erste mal unsere lokalen Zielverzeichnisse, die wir im ersten Schritt angelegt haben. Je nach dem wieviel Bankbreite uns zur Verfügung steht, starten wir die nachfolgenden Befüllungen im angemessenen Abständen. Mit Rücksicht auf dem Quell-Spiegelserver verteilen wir diese ersten //massiven// Downloads über mehrere Tage. Auch wenden wir uns an den Server, der am besten erreichbar ist!
 +==== ISO-Images ====
 +   # /usr/bin/rsync -vart ftp-stud.fht-esslingen.de::centos/5.3/isos/ /var/www/repository/centos/5/isos/ --exclude x86_64/ --exclude SRPMS/
 +   # /usr/bin/rsync -vart ftp-stud.fht-esslingen.de::centos/5.3/os/ /var/www/repository/centos/5/os/ --exclude x86_64/ --exclude SRPMS/
 +==== Centos Base ====
 +<code># /usr/bin/rsync -vart ftp-stud.fht-esslingen.de::centos/5.3/updates/ /var/www/repository/centos/5/updates/ --exclude x86_64/ --exclude SRPMS/
 +# /usr/bin/rsync -vart ftp-stud.fht-esslingen.de::centos/5.3/extras/ /var/www/repository/centos/5/extras/ --exclude x86_64/ --exclude SRPMS/
 +# /usr/bin/rsync -vart ftp-stud.fht-esslingen.de::centos/5.3/centosplus/ /var/www/repository/centos/5/centosplus/ --exclude x86_64/ --exclude SRPMS/
 +# /usr/bin/rsync -vart ftp-stud.fht-esslingen.de::centos/5.3/fasttrack/ /var/www/repository/centos/5/fasttrack/ --exclude x86_64/ --exclude SRPMS/
 +# /usr/bin/rsync -vart ftp-stud.fht-esslingen.de::centos/5.3/addons/ /var/www/repository/centos/5/addons/ --exclude x86_64/ --exclude SRPMS/
 +# /usr/bin/rsync -vart ftp-stud.fht-esslingen.de::centos/5.3/contrib/ /var/www/repository/centos/5/contrib/ --exclude x86_64/ --exclude SRPMS/</code>
 +==== rpmforge ====
 +   # /usr/bin/rsync -vart apt.sw.be::pub/freshrpms/pub/dag/redhat/el5/en/i386/ /var/www/repository/rpmforge/ --exclude RPMS.dag/ --exclude SRPMS.dag/ --exclude x86_64/ --exclude SRPMS/
 +===== täglicher automatischer Abgleich =====
 +Damit unser vorhandenes gespiegeltes Repository immer schön aktuell bleibt, werden wir nun einmal täglich automatisch die Dateien abgleichen lassen. 
 +==== repository-sync-Script ====
 +Hierzu legen wir uns als erstes ein entsprechendes Script an. Mit dem editor unserer Wahl, so z.B. **vim** legen wir ein Script mit dem Namen ''sync-repository.sh'' im Verzeichnis ''/root/bin/'' an.
 +  # vim /root/bin/sync-repository.sh
 +
 +<code bash| sync-repository.sh>
 +
 +# sync-repository.sh: Script zum automatischen Abgleich verschiedener Repositories / Mirrors
 +#
 +# Copyright (C) 2009 Django
 +#
 +# This program is free software; you can redistribute it and/or
 +# modify it under the terms of the GNU General Public License
 +# as published by the Free Software Foundation; either version 2
 +# of the License, or (at your option) any later version.
 +#
 +# This program is distributed in the hope that it will be useful,
 +# but WITHOUT ANY WARRANTY; without even the implied warranty of
 +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 +# GNU General Public License for more details.
 +#
 +# You should have received a copy of the GNU General Public License
 +# along with this program; if not, write to the Free Software
 +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 +# Or, point your browser to http://www.gnu.org/copyleft/gpl.html
 +#
 +# The author can be reached at  django[aett]omni128mnet-mail[punkt]de
 +#
 +# The document-page is at http://dokuwiki.nausch.org/doku.php?id=centos:repo-one
 +#
 +#
 +#
 +# CentOS aktuell
 +#
 +# (!!! isos und os auskommentieren wenn 1. mirror gelaufen, da spaeter keine Aenderungen !!!)
 +/usr/bin/rsync -art ftp-stud.fht-esslingen.de::centos/5.3/isos/ /var/www/repository/centos/5/isos/ --exclude x86_64/ --exclude SRPMS/
 +/usr/bin/rsync -art ftp-stud.fht-esslingen.de::centos/5.3/os/ /var/www/repository/centos/5/os/ --exclude x86_64/ --exclude SRPMS/
 +#
 +echo "Syncing CentOS 5.3 Updates..."
 +/usr/bin/rsync -art ftp-stud.fht-esslingen.de::centos/5.3/updates/ /var/www/repository/centos/5/updates/ --exclude x86_64/ --exclude SRPMS/
 +echo "Syncing CentOS 5.3 Extras..."
 +/usr/bin/rsync -art ftp-stud.fht-esslingen.de::centos/5.3/extras/ /var/www/repository/centos/5/extras/ --exclude x86_64/ --exclude SRPMS/
 +echo "Syncing CentOS 5.3 Centosplus..."
 +/usr/bin/rsync -art ftp-stud.fht-esslingen.de::centos/5.3/centosplus/ /var/www/repository/centos/5/centosplus/ --exclude x86_64/ --exclude SRPMS/
 +echo "Syncing CentOS 5.3 Fasttrack..."
 +/usr/bin/rsync -art ftp-stud.fht-esslingen.de::centos/5.3/fasttrack/ /var/www/repository/centos/5/fasttrack/ --exclude x86_64/ --exclude SRPMS/
 +echo "Syncing CentOS 5.3. Addons..."
 +/usr/bin/rsync -art ftp-stud.fht-esslingen.de::centos/5.3/addons/ /var/www/repository/centos/5/addons/ --exclude x86_64/ --exclude SRPMS/
 +echo "Syncing CentOS 5.3. Contrib..."
 +/usr/bin/rsync -art ftp-stud.fht-esslingen.de::centos/5.3/contrib/ /var/www/repository/centos/5/contrib/ --exclude x86_64/ --exclude SRPMS/
 +#
 +#
 +# RPMForge Repository
 +#
 +echo "Syncing Repo RPM-Forge Repo..."
 +/usr/bin/rsync -art apt.sw.be::pub/freshrpms/pub/dag/redhat/el5/en/i386/ /var/www/repository/rpmforge/ --exclude RPMS.dag/ --exclude SRPMS.dag/ --exclude x86_64/ --exclude SRPMS/
 +
 +</code>
 +Anschließend setzen wir noch die Ausführungsrechte an unserem Script.
 +   # chmod +x vim /root/bin/sync-repository.sh
 +==== täglichen cronjob ====
 +Für den automatischen Abgleich, tragen wir den Aufruf unseres Scriptes in die ''/etc/crontab'' ein, so dass täglich um 01:20 Uhr eine Aktualisierung unseres Datenbestandes vorgenommen werden kann.
 +<code># vim /etc/crontab
 +
 + # repository update
 + # eingefügt am 21.06.2009
 + 20 1 * * *  root /root/bin/sync-repository.sh</code>
 +===== V-Host Definition für unser Repository =====
 +Für den Zugriff via Web-Browser richten wir uns noch einen V-Host auf unserem Apache-Webserver ein. Hierzu tragen wir in die ''vim /etc/httpd/conf.d/vhosts.conf'' nachfolgende Konfigurationszeilen ein.
 +  # vim /etc/httpd/conf.d/vhosts.conf
 +<code apache vhosts.conf>
 +
 +#
 +# repository
 +#
 +
 +<VirtualHost *:80>
 +        ServerAdmin webmaster@nausch.org
 +        ServerName repository.nausch.org:80
 +        ServerAlias repository.nausch.org www.repository.nausch.org
 +        ServerPath /
 +        DocumentRoot "/var/www/repository"
 +        <Directory "/var/www/repository">
 +                Options Indexes FollowSymLinks
 +                AllowOverride None
 +                Order allow,deny
 +                Allow from all
 +        </Directory>
 +        # Hide file favicon.ico from indexes
 +        IndexIgnore favicon.ico
 +        # Hide file robots.txt from indexes
 +        IndexIgnore robots.txt
 +        # Hide directory repodata from indexes
 +        IndexIgnore repodata
 +        # Hide file mirrotlist from indexes
 +        IndexIgnore mirrorlist
 +        # Protect directory repodata from direct access
 +        <Directory "/var/www/repository/repodata">
 +                Options FollowSymLinks
 +                AllowOverride None
 +                Order deny,allow
 +                Deny from all
 +        </Directory>
 +        <Directory "/var/www/repository/centos">
 +                Options Indexes FollowSymLinks
 +                AllowOverride None
 +                Order Deny,Allow
 +                Deny from all
 +                Allow from 127.0.0.1
 +                Allow from 192.168.10.0/24
 +        </Directory>
 +        <Directory "/var/www/repository/rpmforge">
 +                Options Indexes FollowSymLinks
 +                AllowOverride None
 +                Order Deny,Allow
 +                Deny from all
 +                Allow from 127.0.0.1
 +                Allow from 192.168.10.0/24
 +        </Directory>
 +
 +        DirectoryIndex index.html
 +        ErrorLog logs/repository_error.log
 +        CustomLog logs/repository_access.log combined
 +</VirtualHost>
 +</code>
 +Anschließend geben wir unserem neuen V-Host unserem Webserver bekannt, in dem wir diesen 1x durchstarten.
 +   # service httpd restart
 +===== /etc/yum.repos.d =====
 +Damit nun unsere Clienten auf unser eigenen lokales Repository zugreifen, definieren wir im Verzeichnis ''/etc/yum.repos.d'' unser eigenes Repository als Quelle.
 +Zuerst aber sichern wir die Originaldateien, in dem wir diese umbenennen.
 +   # mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
 +   # mv /etc/yum.repos.d/rpmforge.repo /etc/yum.repos.d/rpmforge.repo.backup
 +Anschließend erstellen wir unsere eigenen Konfigurationsdateien.
 +<code># vim /etc/yum.repos.d/CentOS-LOCAL.repo
 +
 +# CentOS-LOCAL.repo
 +#
 +# This file uses a new mirrorlist system developed by Lance Davis for CentOS.
 +# The mirror system uses the connecting IP address of the client and the
 +# update status of each mirror to pick mirrors that are updated to and
 +# geographically close to the client.  You should use this for CentOS updates
 +# unless you are manually picking other mirrors.
 +#
 +# If the mirrorlist= does not work for you, as a fall back you can try the 
 +# remarked out baseurl= line instead.
 +#
 +# Version für den Zugriff auf das lokale Centos-Repository
 +
 +[base-LC]
 +name=CentOS-5 - Base
 +baseurl=http://repository.nausch.org/centos/5/os/i386/
 +priority=1
 +gpgcheck=1
 +gpgkey=http://repository.nausch.org/centos/5/os/i386/RPM-GPG-KEY-CentOS-5
 +
 +#released updates 
 +[updates-LC]
 +name=CentOS-5 - Updates
 +baseurl=http://repository.nausch.org/centos/5/updates/i386/
 +priority=1
 +gpgcheck=1
 +gpgkey=http://repository.nausch.org/centos/5/os/i386/RPM-GPG-KEY-CentOS-5
 +
 +#packages used/produced in the build but not released
 +[addons-LC]
 +name=CentOS-5 - Addons
 +baseurl=http://repository.nausch.org/centos/5/addons/i386/
 +priority=1
 +gpgcheck=1
 +gpgkey=http://repository.nausch.org/centos/5/os/i386/RPM-GPG-KEY-CentOS-5
 +
 +#additional packages that may be useful
 +[extras-LC]
 +name=CentOS-5 - Extras
 +baseurl=http://repository.nausch.org/centos/5/extras/i386/
 +priority=1
 +gpgcheck=1
 +gpgkey=http://repository.nausch.org/centos/5/os/i386/RPM-GPG-KEY-CentOS-5
 +enabled = 1
 +
 +#additional packages that extend functionality of existing packages
 +[centosplus-LC]
 +name=CentOS-5 - Plus
 +baseurl=http://repository.nausch.org/centos/5/centosplus/i386/
 +priority=2
 +gpgcheck=1
 +enabled=1
 +gpgkey=http://repository.nausch.org/centos/5/os/i386/RPM-GPG-KEY-CentOS-5</code>
 +Das Gleiche machen wir nun für das **rpmforge-Repository**
 +<code># vim /etc/yum.repos.d/rpmforge-LOCAL.repo
 +
 +# Name: RPMforge RPM Repository for Red Hat Enterprise 5 - dag
 +# URL: http://rpmforge.net/
 +# geändert auf locales Repository
 +
 +[rpmforge-LC]
 +name = Red Hat Enterprise $releasever - RPMforge.net - dag
 +baseurl = http://repository.nausch.org/rpmforge/dag
 +enabled = 1
 +priority=10
 +protect = 0
 +gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
 +gpgcheck = 1</code>
 +Mit einem ''yum clean all'' löschen wir erst einmal die alte Repository-Datenbank auf unserem Client.
 +   # yum clean all
 +   Loaded plugins: fastestmirror, priorities
 +   Cleaning up Everything
 +   Cleaning up list of fastest mirrors
 +Abschließend bauen wir die Datenbank neu auf:
 +<code># yum check-update
 +Loaded plugins: fastestmirror, priorities
 +Determining fastest mirrors
 +rpmforge-LC                                                                                                                                          | 1.1 kB     00:00     
 +primary.xml.gz                                                                                                                                       | 3.2 MB     00:00     
 +rpmforge-LC                                                    8863/8863
 +extras-LC                                                                                                                                            | 1.1 kB     00:00     
 +primary.xml.gz                                                                                                                                       | 100 kB     00:00     
 +extras-LC                                                      311/311
 +addons-LC                                                                                                                                            |  951 B     00:00     
 +primary.xml.gz                                                                                                                                        157 B     00:00     
 +base-LC                                                                                                                                              | 1.1 kB     00:00     
 +primary.xml.gz                                                                                                                                       | 878 kB     00:00     
 +base-LC                                                        2508/2508
 +adobe-linux-i386                                                                                                                                      951 B     00:00     
 +primary.xml.gz                                                                                                                                        11 kB     00:00     
 +adobe-linux-i386                                               17/17
 +updates-LC                                                                                                                                            951 B     00:00     
 +primary.xml.gz                                                                                                                                       | 222 kB     00:00     
 +updates-LC                                                     339/339
 +centosplus-LC                                                                                                                                        |  951 B     00:00     
 +primary.xml.gz                                                                                                                                        73 kB     00:00     
 +centosplus-LC                                                  111/111
 +491 packages excluded due to repository priority protections</code>
 +====== Repository Metadaten für eigenes Repository generieren ======
 +Möchte man RPM-Pakete aus dem zuvor generierten Repository komfortabel einbinden, muss aus den RPM-Paketen in dem gewählten Verzeichnis noch ein gemeinsames metadata Repository generiert werden. Hierzu bedienen wir uns des Dienstprogrammes ''createrepo''.
 +
 +===== Installation =====
 +Wie soll es anders sein, funktioniert die Installation des benötigten Programms im gewohnten Rahmen via **yum**, welches wir als User **root** ausführen.
 +   # su -
 +
 +   # yum install createrepo
 +Was uns das Paket **createrepo** alles mitbringt offenbart eine Blick, nach erfolgter Installation des Paketes, in das **RPM**.
 +<code>
 +# rpm -iql createrepo
 +Name        : createrepo                   Relocations: (not relocatable)
 +Version     : 0.4.11                            Vendor: CentOS
 +Release     : 3.el5                         Build Date: So 25 Mai 2008 08:20:52 CEST
 +Install Date: Mo 28 Dez 2009 23:42:06 CET      Build Host: builder15.centos.org
 +Group       : System Environment/Base       Source RPM: createrepo-0.4.11-3.el5.src.rpm
 +Size        : 221261                           License: GPLv2
 +Signature   : DSA/SHA1, So 15 Jun 2008 01:29:52 CEST, Key ID a8a447dce8562897
 +URL         : http://linux.duke.edu/projects/metadata/
 +Summary     : Erstellt ein einfaches Metadaten-Depot
 +Description :
 +Dieses Dienstprogramm wird ein gemeinsames metadata Repository aus einem
 +Verzeichnis von rpm Paketen generieren
 +/usr/bin/createrepo
 +/usr/bin/modifyrepo
 +/usr/share/createrepo
 +/usr/share/createrepo/dumpMetadata.py
 +/usr/share/createrepo/dumpMetadata.pyc
 +/usr/share/createrepo/dumpMetadata.pyo
 +/usr/share/createrepo/genpkgmetadata.py
 +/usr/share/createrepo/genpkgmetadata.pyc
 +/usr/share/createrepo/genpkgmetadata.pyo
 +/usr/share/createrepo/modifyrepo.py
 +/usr/share/createrepo/modifyrepo.pyc
 +/usr/share/createrepo/modifyrepo.pyo
 +/usr/share/createrepo/readMetadata.py
 +/usr/share/createrepo/readMetadata.pyc
 +/usr/share/createrepo/readMetadata.pyo
 +/usr/share/doc/createrepo-0.4.11
 +/usr/share/doc/createrepo-0.4.11/COPYING
 +/usr/share/doc/createrepo-0.4.11/ChangeLog
 +/usr/share/doc/createrepo-0.4.11/README
 +/usr/share/man/man8/createrepo.8.gz</code>
 +===== createrepo =====
 +Die Metadaten für unser eigenes Repository legen wir dann mit dem Programm **createrepo** an.
 +   # createrepo /var/www/repository/public/
 +Möchten wir einzelne Pakete die im entsprechende Verzeichnis liegen ausnehmen, so können wir diese einfach "//excludieren//".
 +<code>createrepo -x mod_evasive-1.10.1-3.el5.i386.rpm /var/www/repository/public/
 +1/1 - dansguardian-2.10.1.1-1.0.el5.i386.rpm                                    
 +Saving Primary metadata
 +Saving file lists metadata
 +Saving other metadata</code>
 +Einfacher geht es natürlich, wenn man in einer separaten Liste nur die Dateien aufführt, die in das Repository aufgenommen werden sollen. Hierzu legen wir uns eine entsprechende Datei an.
 +   # vim /root/nausch.repo
 +Darin hinterlegen wir unsere Dateiennamen in einer Liste.
 +<code># vim /root/nausch.repo
 +
 +dansguardian-2.10.1.1-1.0.el5.i386.rpm</code>
 +Anschließend rufen wir **//createrepo//** mit der Option **-i** auf.
 +<code># createrepo -i /root/nausch.repo /var/www/repository/public/
 +1/1 - dansguardian-2.10.1.1-1.0.el5.i386.rpm                                    
 +Saving Primary metadata
 +Saving file lists metadata
 +Saving other metadata</code>
 +