Я в странной ситуации. У меня есть компьютер с веб-сервером с CentOS версии 6.6 (Final), установленный с nginx, mysql, ISPConfig и Webmin, который работает без сбоев. Недавно я заметил, что при использовании phpMyAdmin выскакивает сообщение о том, что есть более новая версия phpMyAdmin. Webmin не сообщил о доступных обновлениях, поэтому я бегу "yum update"
получение множества ошибок, например:
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
Eg. $releasever is not a valid release or hasnt been released yet/
Попробовав некоторую конфигурацию и выполнив "yum clean all"
, перезапустив сервер, я снова могу запустить yum, но теперь кажется, что база данных yum стерта или что-то в этом роде. Когда я бегу "yum list installed"
Я ничего не получаю! Когда я бегу "yum update"
я получил "No Packages marked for Update"
. Все репозитории включены. Все пакеты установлены, но теперь внутри yum db ничего нет. Например, когда я бегу "yum install phpMyAdmin"
Я получил:
Installing:
phpMyAdmin noarch 4.3.7-1.el6.remi remi 4.5 M
Installing for dependencies:
MAKEDEV x86_64 3.24-6.el6 base 89 k
apr x86_64 1.3.9-5.el6_2 base 123 k
apr-util x86_64 1.3.9-3.el6_0.1 base 87 k
apr-util-ldap x86_64 1.3.9-3.el6_0.1 base 15 k
audit-libs x86_64 2.3.7-5.el6 base 71 k
basesystem noarch 10.0-4.el6 base 4.7 k
bash x86_64 4.1.2-29.el6 base 907 k
binutils x86_64 2.20.51.0.2-5.42.el6 base 2.8 M
......
Transaction Summary
===========================
Install 158 Package(s)
Total download size: 98 M
Installed size: 346 M
Is this ok [y/N]:
Это означает, что все, что было установлено yum, теперь удалено из базы данных yum, но все еще установлено.
Есть ли способ восстановить базу данных yum или заставить yum определять, какие пакеты установлены на сервере?
Похоже, проблема была в полностью уничтоженной базе данных RPM. Что я сделал, так это то, что я использовал все оригинальные RPM, чтобы просто обновить базу данных, ничего не устанавливая.
Вы можете найти список установленных пакетов в файлах /root/install.log
или /var/log/yum.log*
если у вас установлен yum log. Если у вас нет файлов журнала, вы можете собрать все установленные пакеты из структуры каталогов базы данных yum с помощью этого PHP-скрипта. yumdb_scan.php.
Я бы хотел, чтобы все мои RPM были кэшированы, но мне наконец удалось найти все, выполнив поиск на поисковых сайтах RPM. Я также создал еще один скрипт для загрузки всего, что я установил и был на базовой ОС. хранилище. Затем я собрал все пакеты RPM, проверил, все ли они у меня есть, и создал другой скрипт, который он использует. rpm -Uvh --nodeps --justdb {$pckg}
для обновления базы данных RPM для каждого установленного пакета без изменения каких-либо системных файлов.
Все сделано хорошо, и теперь я наконец могу использовать yum для установки новых пакетов и обновления старых с помощью репозиториев.
Итак, мои шаги были:
rpm -Uvh --nodeps --justdb <package-path>
чтобы поместить запись RPM в базу данных RPM без установки каких-либо файлов.У меня раньше была похожая ситуация. Что я сделал:
Не самое быстрое решение. Если бы это была не критическая система, я бы ее перестроил.