Переопределение зависимости yum проверяет наличие более новых версий зависимого программного обеспечения

Я использую yum в CentOS 5.1 - я вручную скомпилировал PHP 5.2.8 из исходного кода, но другие пакеты были установлены с использованием yum. Мне нужно установить расширение PHP через pecl, и для этого также требуется установка phpize. Однако выполнение следующих действий приводит к ошибке зависимости:

sudo yum установить php-devel

Ошибка: отсутствует зависимость: php = 5.1.6-20.el5_2.1 требуется для пакета php-devel

Поскольку на самом деле у меня уже установлена ​​более новая версия PHP, как я могу заставить yum игнорировать это? Нужно ли мне вручную компилировать pecl / phpize из исходного кода? По общему признанию, раньше у меня никогда не было проблем, это только кажется из-за комбинации компиляций и установок yum.

Есть предположения?

Спасибо, Кайл


person Kyle    schedule 18.03.2009    source источник
comment
Думаю, это либо ручная компиляция, либо переустановка php (на этот раз из yum). Но я не уверен.   -  person andi    schedule 19.03.2009


Ответы (3)


Как правило, лучше иметь одно управление пакетами в системе, поэтому вам будет лучше упаковать все в RPMS и управлять им через yum. В конечном итоге это сэкономит вам много времени.

Если вы абсолютно хотите иметь что-то (например, PHP) компилятор из исходных кодов вручную, используйте stow / checkinstall / ... или любое другое решение, которое позволило бы вам выполнять элементарное управление пакетами для файлов, скомпилированных из исходного кода.

Что касается вашего вопроса, вы можете попытаться переопределить проверку зависимостей, загрузив RPM необходимого пакета, выполнив «rpm -i --force file.rpm», поскольку yum не имеет возможности для принудительной установки

person ADEpt    schedule 18.03.2009
comment
--force не работает для игнорирования зависимостей; ты должен сделать --nodeps. - person Xiong Chiamiov; 13.06.2012

В целом:

Если вы создадите его самостоятельно, он войдет в /usr/local и будет доступен только для других вещей в /usr/local.

Если вы устанавливаете из RPM / Yum, он переходит в /usr и доступен для /usr и /usr/local.

Итак, если вы хотите установить инструменты PHP с использованием скомпилированного в домашних условиях PHP, установите их также в /usr/local: как правило, с программным обеспечением типа GNU это будет примерно так:

   ./configure --prefix=/usr/local && make && sudo make install

or

   make prefix=/usr/local all && sudo make prefix=/usr/local install

… Хотя большинство программного обеспечения должно по умолчанию использовать /usr/local, если вы не измените его настройку префикса.

Если вы хотите «собирать вручную» пакеты, основанные на RPM, вы можете использовать

   yumdownloader --source WHATEVER-PACKAGE
   rpm -i WHATEVER-PACKAGE.rpm
   rpmbuild -bp ~/rpm/SPECS/WHATEVER-PACKAGE.spec

(ваш путь, эквивалентный ~/rpm, может отличаться; rpmbuild --showrc сообщит вам, где)

Это загружает пакет .src.rpm, который содержит исходный код (исходный авторский) (обычно tarball), а также патчи для конкретной ОС; устанавливает исходный код в ~/rpm (или ваш префикс rpmbuild); а затем распаковывает исходники и применяет исправления в ~/rpm/BUILD/WHATEVER-PACKAGE/

Оттуда вы можете самостоятельно выполнить настройку / выполнить шаги с префиксом /usr/local

Конечно, намного проще просто установить из RPM :-)

person BRPocock    schedule 22.02.2012

yum ничего не знает о вашей скомпилированной вручную версии php. Вы можете либо обойти разрешение зависимостей RPM, установив пакет, используя rpm --nodeps, и надеяться, что это сработает.

Или установите версию php, которую вы скомпилировали сами, в другой каталог, чтобы она могла сосуществовать со старой версией из yum, чтобы все были довольны (не уверен, возможно ли это, я думаю, это зависит от того, используют ли ваши приложения жестко заданный путь к php или нет) .

Или, если вам повезет, сторонний репозиторий, например EPEL или RPMForge может иметь более новый пакет php, поэтому вам не нужно компилировать свой собственный.

person 8jean    schedule 23.03.2009