Мне нужно понизить версию PHP 5.3 до 5.2, и я нахожусь на машине CentOS 5.5 x86_64 с Apache 2.2.3 и MySQL 5.1.54. У меня были некоторые проблемы, и теперь я просто заблудился ... Не уверен, что именно включать с точки зрения шагов / еще много чего, поэтому я просто попытаюсь сломать то, что я сделал, что привело меня к моей критической точке ... .
Вот шаги, которые я сделал до сих пор:
(1) Я попытался удалить PHP 5.3 с помощью:
rpm -e --nodeps php-devel php php-cli php-common php-mcrypt php-mysql
php-pdo php-ldap php-mbstring php-xml php-xmlrpc php-odbc php-imap
php-snmp php-gd
//Yielded:
warning: /etc/php.ini saved as /etc/php.ini.rpmsave
(2) Затем я попытался установить php:
yum install php-devel php php-cli php-common php-mcrypt php-mysql php-pdo php-ldap php-mbstring php-xml php-xmlrpc php-odbc php-imap php-snmp php-gd
Но, по глупости, я понял (позже), что не указал репо или версию php. К счастью (?), Ничего не было установлено, потому что это дало следующее:
Transaction Check Error:
package libmcrypt-2.5.8-4.el5.centos.x86_64 (which is newer than libmcrypt-2.5.7-5.el5.i386) is already installed
(3) Хотя сначала я этого не заметил, поэтому перезапустил apache и запустил: yum upgrade
Которая все нормально пробежала.
(4) Отредактировал /etc/my.cnf, чтобы поместить туда skip-bdb и запустить mysqld.
(5) Ран: mysql_upgrade -uadmin -p
кошка / etc / psa / .psa.shadow`
(6) После попытки найти решение в Google я наткнулся на статью, в которой говорилось, что мне нужен yum-allowdowngrade, поэтому я запустил следующее: yum install yum-allowdowngrade
(7) Чтобы убедиться, что у меня не установлен php, я выполнил: yum remove php
что дало:
Loaded plugins: allowdowngrade, fastestmirror
Setting up Remove Process
No Match for argument: php
Loading mirror speeds from cached hostfile
* atomic: www6.atomicorp.com
* base: mirror.rackspace.com
* epel: mirror.cogentco.com
* extras: mirror.ash.fastserv.com
* updates: mirror.ash.fastserv.com
atomic | 1.9 kB 00:00
base | 2.1 kB 00:00
epel | 3.7 kB 00:00
extras | 2.1 kB 00:00
rusia-repo | 951 B 00:00
updates | 1.9 kB 00:00
Package(s) php available, but not installed.
No Packages marked for removal
(8) Затем я побежал:
yum --allow-downgrade --enablerepo=rusia-repo install php-devel-5.2.17-1.el5.x86_64 php-5.2.17-1.el5.x86_64 php-cli-5.2.17-1.el5.x86_64 php-common-5.2.17-1.el5.x86_64 php-mcrypt-5.2.17-1.el5.x86_64 php-mysql-5.2.17-1.el5.x86_64 php-pdo-5.2.17-1.el5.x86_64 php-ldap-5.2.17-1.el5.x86_64 php-mbstring-5.2.17-1.el5.x86_64 php-xml-5.2.17-1.el5.x86_64 php-xmlrpc-5.2.17-1.el5.x86_64 php-odbc-5.2.17-1.el5.x86_64 php-imap-5.2.17-1.el5.x86_64 php-snmp-5.2.17-1.el5.x86_64 php-gd-5.2.17-1.el5.x86_64
что дало:
Loaded plugins: allowdowngrade, fastestmirror
Loading mirror speeds from cached hostfile
* atomic: www6.atomicorp.com
* base: mirror.rackspace.com
* epel: mirror.cogentco.com
* extras: mirror.ash.fastserv.com
* updates: mirror.ash.fastserv.com
atomic | 1.9 kB 00:00
base | 2.1 kB 00:00
epel | 3.7 kB 00:00
extras | 2.1 kB 00:00
rusia-repo | 951 B 00:00
updates | 1.9 kB 00:00
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package php.x86_64 0:5.2.17-1.el5 set to be updated
--> Processing Dependency: php-common = 5.2.17-1.el5 for package: php
--> Processing Dependency: php-cli = 5.2.17-1.el5 for package: php
--> Finished Dependency Resolution
php-5.2.17-1.el5.x86_64 from rusia-repo has depsolving problems
--> Missing Dependency: php-common = 5.2.17-1.el5 is needed by package php-5.2.17-1.el5.x86_64 (rusia-repo)
php-5.2.17-1.el5.x86_64 from rusia-repo has depsolving problems
--> Missing Dependency: php-cli = 5.2.17-1.el5 is needed by package php-5.2.17-1.el5.x86_64 (rusia-repo)
Error: Missing Dependency: php-common = 5.2.17-1.el5 is needed by package php-5.2.17-1.el5.x86_64 (rusia-repo)
Error: Missing Dependency: php-cli = 5.2.17-1.el5 is needed by package php-5.2.17-1.el5.x86_64 (rusia-repo)
You could try using --skip-broken to work around the problem
You could try running: package-cleanup --problems
package-cleanup --dupes
rpm -Va --nofiles --nodigest
Я продолжал получать серию этих ошибок, поэтому решил просто запустить yum update, обновить его до php 5.3 и посмотреть, смогу ли я заставить это работать, пока я не выясню, как правильно перейти на более раннюю версию ...
Итак, я запустил yum update и получил:
yum update
Loaded plugins: allowdowngrade, fastestmirror
Loading mirror speeds from cached hostfile
* atomic: www6.atomicorp.com
* base: mirror.rackspace.com
* epel: mirror.symnds.com
* extras: mirror.symnds.com
* updates: mirror.symnds.com
Setting up Update Process
No Packages marked for Update
Затем я побежал:
yum install php-devel php php-cli php-common php-mcrypt php-mysql php-pdo php-ldap php-mbstring php-xml php-xmlrpc php-odbc php-imap php-snmp php-gd
Но это дало:
Transaction Check Error:
package libmcrypt-2.5.8-4.el5.centos.x86_64 (which is newer than libmcrypt-2.5.7-5.el5.i386) is already installed
file /usr/bin/phar.phar from install of php-cli-5.3.6-3.el5.art.i386 conflicts with file from package php-cli-5.3.6-3.el5.art.x86_64
file /usr/bin/phpize from install of php-cli-5.3.6-3.el5.art.i386 conflicts with file from package php-cli-5.3.6-3.el5.art.x86_64
Я попробовал сервис httpd restart и получил:
Stopping httpd: [FAILED]
Starting httpd: httpd: Syntax error on line 210 of /etc/httpd/conf/httpd.conf: Syntax error on line 6 of /etc/httpd/conf.d/php.conf: Cannot load /etc/httpd/modules/libphp5.so into server: /etc/httpd/modules/libphp5.so: cannot open shared object file: No such file or directory
Итак, теперь я полностью сбит с толку и действительно, действительно нуждаюсь в помощи ...
Каждый раз, когда со мной происходило что-то подобное (мне нужна была более старая копия, чем то, что находится в репозитории, или новее), мне было легче создать свой собственный RPM из исходного кода, и я рекомендую это сделать.
Это не так уж сложно, просто отнимает немного больше времени, и вы можете убедиться, что используете все самое последнее, что ЕЩЕ в вашей системе, и только старые (или новые) версии PHP.
http://www.imminentweb.com/technologies/create-centos-php-rpm
должен помочь вам с основами создания собственных PHP RPM на CentOS.
Если вы продолжите свой путь, вы, вероятно, столкнетесь с тем, что я называю «адом зависимостей». Старому PHP нужна старая версия X, которая нужна новой версии Y, и если вам нужна старая версия X, вам нужно также понизить рейтинг Y и так далее и так далее. Через 10-15 зависимостей вы используете достаточно небезопасную среду, потому что значительная часть вашей системы работает со старым кодом.
Вы можете попробовать: yum downgrade php
Перед этим отключите все репозитории надстроек. Основная проблема, с которой вы столкнетесь, заключается в том, что некоторые репозитории надстроек могут устанавливать зависимости, необходимые для PHP 5.3, но не необходимые для PHP 5.2 (например, различные версии sqlite).
В этом случае вам, возможно, придется принудительно удалить модули:
rpm -e --nodeps имя_пакета
Затем попробуйте перейти на более раннюю версию.
Если ничего не помогает, удалите все пакеты php 5.3 с помощью rpm -e --nodeps, а затем просто переустановите, используя исходные коды CentOS.
Ошибка «Отсутствует зависимость» часто возникает из-за смешивания репозиториев. Я предлагаю вам отключить atomic
, epel
репозиторий и попробуйте еще раз с CentOS тестирование репо на основе этот гид или Джейсон Литка репо.