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

Установленные пакеты Centos yum resync

Я в странной ситуации. У меня есть компьютер с веб-сервером с 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 для установки новых пакетов и обновления старых с помощью репозиториев.

Итак, мои шаги были:

  1. Найдите в системе установленные RPM и создайте файл со списком их всех.
  2. Соберите все RPM, которые вы установили в системе, с соответствующими версиями для всех.
  3. Использовать rpm -Uvh --nodeps --justdb <package-path> чтобы поместить запись RPM в базу данных RPM без установки каких-либо файлов.

У меня раньше была похожая ситуация. Что я сделал:

  1. Составьте список всех файлов в файловой системе.
  2. Загрузите базы данных SQLite репозиториев yum, из которых у меня были файлы.
  3. Создайте сценарий, который запрашивает базы данных SQLite, для которых пакет предоставляет каждый файл, и переустановите пакеты.

Не самое быстрое решение. Если бы это была не критическая система, я бы ее перестроил.