Я разрабатываю плагин PostgresDB. Плагин запускается в Postgres в Centos 6.3. Чтобы скомпилировать свой проект, мне пришлось установить некоторые библиотеки из репозитория epel, а некоторые - из rpmforge. Интересно, что некоторые пакеты дублируются в обоих репозиториях, например:
# 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:
Теперь мой проект компилируется, но не связан с отсутствующими ссылками:
/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'
что, скорее всего, означает, что некоторые пакеты перепутались: некоторые устанавливаются из одного репо, а некоторые - из другого.
Вопросы: (i) как я могу сказать yum установить пакет из одного репо, а затем переустановить из другого (чтобы посмотреть, исчезнут ли ошибки связывания); (ii) как я могу увидеть, какие пакеты в системе установлены из одного репо, а какие из другого?
Чтобы установить пакет из одного, исключите пакет (ы) в файлах /etc/yum.repos.d/epel или /etc/yum.repos.d/rpmforge.
exclude = <имя пакета>
добавлен в конце, вы можете добавить несколько строк, если хотите.
Установленные пакеты должны быть перечислены в /var/log/yum.log.
yum list installed
сообщит вам, из какого репо был установлен данный пакет, например:
bonnie++.x86_64 1.96-2.el6 @epel/6.2
Чтобы выбрать вариант для установки, просто используйте точное название варианта, который вы хотите установить, со своего whatprovides
список:
yum install postgis-1.3.6-1.el6.rf.x86_64
Для получения дополнительной информации см. specify package names
раздел man yum
.