Назад | Перейти на главную страницу

yum: одинаковые пакеты в двух репозиториях, принудительная установка пакета из другого репозитория

Я разрабатываю плагин 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.