Einbinden weiterer Repository unter CentOS
!!! Achtung !!!
Mit der Verwendung neuer Repositorys besteht die Möglichkeit einen Server instabil zu machen.
Wenn möglich weitere Repositorys mit yum nachinstallieren.
Welche externen Quellen verwenden?
Von Fedora wird das Projekts Extra Packages for Enterprise Linux kurz EPEL betrieben. Dieses Repository enthält nur Programme (aktuell über 5.600 RPM Pakete), die im RHEL und Centos Grundpaket nicht enthalten sind. In der Regel sind die Pakete auch aktueller im Vergleich zum RPMForge-Repository.
Priorities installieren
Als erstes installieren wird das Paket priorities.
yum install yum-priorities -y
Anschließend prüfen wir, ob in der Konfigurationsdatei /etc/yum/pluginconf.d/priorities.conf folgende Zeilen eingetragen sind:
vim /etc/yum/pluginconf.d/priorities.confEs muss so aussehen:
[main] enabled = 1
Die *.repo Dateien werden jetzt erweitert. Hier am Beispiel CentOS-Base.repo:
vim /etc/yum.repos.d/CentOS-Base.repoDiese Zeile einfügen
priority=n # n= 1 - 99
Falls uns der Proxy nervt:
export http_proxy=http://192.168.1.2:3128
dies ermöglicht die Verwendung eines Proxy auf der aktuellen shell
Eine Quelle hinzufügen
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm # wget http://mirror.de.leaseweb.net/epel/6/i386/epel-release-6-8.noarch.rpm rpm --import https://fedoraproject.org/static/0608B895.txt rpm -K epel-release-6-8.noarch.rpm epel-release-6-8.noarch.rpm: rsa sha1 (md5) pgp md5 OK rpm -i epel-release-6-8.noarch.rpm vim /etc/yum.repos.d/epel.repoHierdurch werden die Dateien /etc/yum.repos.d/epel.repo und /etc/yum.repos.d/epel-testing.repo erstellt. Hier dei Datei epel.repo:
[epel] name=Extra Packages for Enterprise Linux 6 - $basearch baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch enabled=0 gpgcheck=0 [epel-debuginfo] name=Extra Packages for Enterprise Linux 6 - $basearch - Debug baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch/debug mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=$basearch enabled=0 gpgcheck=0 [epel-source] name=Extra Packages for Enterprise Linux 6 - $basearch - Source baseurl=http://download.fedoraproject.org/pub/epel/6/SRPMS mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=$basearch enabled=0 gpgcheck=0
Repositorys mit yum erweitern
Welch e weiteren Repositorys zur Verfügung stehen wird geprüft mit:
yum search yum-conf|grep -i Repository
Führt dies zu diesem Ergebnis:
yum-conf-adobe.i686 : linux.adobe.com Repository Configuration yum-conf-elrepo.noarch : ElRepo.org Community Enterprise Linux Repository yum-conf-epel.noarch : Extra Packages for Enterprise Linux repository yum-conf-rpmforge.i686 : RPMforge release file and RPM repository configuration yum-conf-rpmfusion.noarch : RPMfusion release file and RPM repository yum-conf-sl-other.noarch : Repository configuration for other SL yumkönnen die Repositorys adobe, elrepo, epel, rpmforge, rpmfusion und sl-other mittels yum nachinstalliert werden.
yum install yum-conf-adobe yum install yum-conf-elrepo yum install yum-conf-epel yum install yum-conf-rpmforge yum install yum-conf-rpmfusion yum install yum-conf-sl-other
Ein lokales Repository erstellen
Um lokal gespeicherte Installationsdateien mit yum verwenden zu können, kann ein lokales Repository erstellt werden.
Dies ist ein Ordner indem alle lokalen rpms gepeichert sind und eine *.repo-Datei.
Ordner erstellen
mkdir -p /opt/repo/RPMS/i386 /opt/repo/RPMS/noarch /opt/repo/RPMS/x86_64
dies erstellt Ordner für verschiedene Architekturen.
Die rpms werden dann nach ihrer Architektur, 32Bit, 64Bit oder noarch in die Ordner kopiert.
Repodatenbank erstellen
yum install createrepo
installiert ein Programm um aus Ordnern Repositoryordner zu machen. Es wird so ausgeführt:
createrepo /opt/repo/RPMS/i386 createrepo /opt/repo/RPMS/x86_64 createrepo /opt/repo/RPMS/noarch
Damit wird aus allen im Ordner vorhandenen rpms eine DAtenbank erstellt auf di eYum zurück greifen kann. Ändert sich der Inhalt des Ordners, muss createrepo erneut ausgeführt werden.
Reop-Datei erstellen
Die Datei /etc/yum.repo/local.repo erstellen:
[local_noarch] name=localrepo noarch baseurl=file:///opt/repo/RPMS/noarch enabled=1 gpgcheck=0 [local_x64] name=localrepo X64 baseurl=file:///opt/repo/RPMS/x86_64 enabled=1 gpgcheck=0 [local_x32] name=localrepo X32 baseurl=file:///opt/repo/RPMS/i386 enabled=1 gpgcheck=0
Jetzt kann yum rpms in diesen Ordnern finden und mit allen Abhängigkeiten, soweit vorhanden, installieren.
Etwas Vereinfachen
Es ist nicht nötig die verschiedenen Architekturen getrennt zu verwalten. Grundsätzlich reicht ein lokaler Ordner für alle rpms aus. Trotzdem ist die Trennung der Architekture der elegantere Weg, besonders wenn dieses Repository online bekannt gemacht werden soll.
Fehler beheben
Defekte Quelle
Wenn nach dem Erweitern der Quellen dieser Fehler auftritt:
Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again
so ist eine der *.repo Dateien fehlerhaft. Hier liegt der Fehler an der Einstellung für epel. Um weiterarbeiten zu können muss das epel.Repository deaktiviert werden:
vim /etc/yum.repos.d/epel.repo
Innerhalb dieser Datei müssen alle Zeilen:
enabled=1
zu
enabled=0
geändert werden, dies deaktiviert die Quelle.
Yum läuft schon
Wird diese Meldung angezeigt:
Existing lock /var/run/yum.pid: another copy is running as pid 16838. Another app is currently holding the yum lock; waiting for it to exit... The other application is: PackageKit Memory : 30 M RSS ( 65 MB VSZ) Started: Wed Feb 6 09:04:57 2013 - 00:06 ago State : Sleeping, pid: 16838ist schon eine Instanz von yum gestartet. Dieses yum hat die pid: 16838. Der Dienst yum darf aus Sicherheitsgründen aber immer nur einmal laufen. Um weiter arbeiten zu können muss diese pid beendet werden:
kill -sigterm 16838
reicht dies nicht, kann es sein dass sich yum nicht beenden lässt und nicht mehr reagiert. Dann muss es „hart“ beendet werden:
kill -9 16838