После нечистого выключения и красочного fsck пропала целая куча файлов. Вывод 'rpm -Va' - это несколько сотен строк (в основном пропускаются файлы, а также некоторые контрольные суммы и другие несоответствия). Есть ли простой способ переустановить пакеты, в которых отсутствуют и / или повреждены файлы?
Рассматриваемая ОС - Fedora 22.
yum reinstall $(rpm -qa --qf="%{N}-%{V}\n" | sort)
Ответы:
Для справки и полноты, одна команда, которая сможет достичь того, о чем изначально просили, будет выглядеть примерно так (быстро возиться вместе, но она работает)
Вот краткое объяснение различных частей:
Будет выполнена полная проверка всех пакетов, установленных в настоящее время / перечисленных в базе данных rpm. Он также перенаправит stderr в stdout, так как здесь, на моем блоке, некоторые ошибки, вызванные включением предварительной ссылки, отображаются как ошибки, но мы хотим, чтобы они были в stdout.
Внимание: необходимо запустить от имени пользователя root, чтобы иметь возможность проверить все файлы, разрешения и владельца / группу.
Подавляет вывод линий и пуста такого из Prelink ошибок (пример такой ошибки:
prelink: /tmp/#prelink#.B14JBi: Recorded 10 dependencies, now seeing -1
)отфильтрует
rpm -Va
вывод, чтобы показать только имена файловзапросит все полученные имена файлов, в которых они содержатся, и выведет имя и версию пакета
будет подавлять дубликаты комбинаций имя / версия пакета.
Всего вы получите список пакетов, которые не прошли проверку.
rpm -Va
может по-прежнему показывать некоторые не связанные с этим проблемы, так как он также проверяет зависимости между пакетами, которые, возможно, придется подавлять путем добавления--nodeps
.источник
Недавно у меня была похожая проблема с отсутствующими файлами в openSUSE 13.2, и я исправил ее:
Опции для rpm и вызова awk в моем случае предназначены для экономии времени, потому что не было никакого искажения.
источник
--nofiles
и, следовательно, в основном сделать то же самое,yum check dependencies
поскольку он будет только проверять все установленные пакеты rpm на наличие проблем с зависимостями.--nofiles
сэкономит много времени для установки без SSD, но вы также пропустите проверку файлов, которые отсутствуют. ... просто ради полноты. И, пожалуйста, имейте в виду, что если вы grep для английских строк, вы можете использовать префиксLC_ALL=C
;)