| FOTO | AUTO | EDV | AUDIO |

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.conf
Es 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.repo
Diese 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.repo
Hierdurch 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 yum
kö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: 16838
ist 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