fragen stichworte

yum: die gleichen Pakete in zwei Repositorys, erzwingen Sie die Installation des Pakets aus einem anderen Repository

Ich entwickle ein PostgresDB-Plugin. Das Plugin wird in Postgres in Centos 6.3 ausgeführt. Um mein Projekt kompilieren zu können, musste ich einige Bibliotheken aus dem epel-Repository und einige aus dem rpmforge installieren. Zwar sind einige der Pakete in beiden Repositorys doppelt vorhanden, z. B.:

# yum whatprovides postgis

Loaded plugins: fastestmirror, presto, priorities, refresh-packagekit
Loading mirror speeds from cached hostfile
 * Webmin: download.webmin.com
 * base: mirror2.hs-esslingen.de
 * epel: mirror.awanti.com
 * extras: mirror2.hs-esslingen.de
 * rpmforge: mirror.nl.leaseweb.net
 * updates: mirror.netcologne.de
postgis-1.5.3-1.el6.x86_64 : Geographic Information Systems Extensions to
                           : PostgreSQL
Repo        : epel
Matched from:



postgis-1.3.6-1.el6.rf.x86_64 : Geographic Information Systems Extensions to
                              : PostgreSQL
Repo        : rpmforge
Matched from:

Nun wird mein Projekt kompiliert, aber es wird kein Link mit fehlenden Referenzen erstellt:

/usr/pgsql-9.1/lib/postgis-1.5.so: undefined reference to `accumArrayResult'
/usr/pgsql-9.1/lib/postgis-1.5.so: undefined reference to `TupleDescGetAttInMetadata'
/usr/pgsql-9.1/lib/postgis-1.5.so: undefined reference to `repalloc'
/usr/pgsql-9.1/lib/postgis-1.5.so: undefined reference to `SPI_exec'
/usr/pgsql-9.1/lib/postgis-1.5.so: undefined reference to `init_MultiFuncCall'

was höchstwahrscheinlich bedeutet, dass einige Pakete durcheinander geraten sind: einige werden von einem Repo installiert, andere von anderen.

Fragen: (i) Wie kann ich yum sagen, dass es das Paket von einem Repo installieren und dann vom anderen neu installieren soll (um zu sehen, ob die Verknüpfungsfehler verschwinden würden)? (ii) Wie kann ich sehen, welche Pakete auf dem System von einem Repo installiert werden und welche vom anderen?

antworten

Um ein Paket von einem zu installieren, schließen Sie das/die Paket (e) in den Dateien/etc/yum.repos.d/epel oder/etc/yum.repos.d/rpmforge aus.

ausschließen = & lt; Paketname>

am Ende hinzugefügt, können Sie mehrere Zeilen hinzufügen, wenn Sie möchten.

Die installierten Pakete sollten in/var/log/yum.log

aufgeführt sein

yum list installed zeigt Ihnen an, aus welchem ​​Repository ein bestimmtes Paket installiert wurde, z. B .:

bonnie++.x86_64                     1.96-2.el6                  @epel/6.2

Um auszuwählen, welche Variante installiert werden soll, verwenden Sie einfach den genauen Namen der Variante, die Sie installieren möchten, aus Ihrer whatprovides -Liste:

yum install postgis-1.3.6-1.el6.rf.x86_64

Weitere Informationen finden Sie im Abschnitt specify package names von man yum.