How to repair a local pacman database (Русский)

Tango-user-trash-full.png

Tango-user-trash-full.png

This article or section is being considered for deletion.

Reason: This article is only in Russian, it describes probably possible way of recovering pacman database, which is not needed such often to be in ArchWiki, so delete this article and remove it from ArchWiki Translation Team. Another solution is to remove all content and make it a redirect to pacman or pacman tips, but title will be confusing. (Discuss in Talk:How to repair a local pacman database (Русский)#)

Tango-two-arrows.png

Tango-two-arrows.png

Эта статья или раздел является кандидатом на объединение с Pacman Tips (Русский).

Причина: пожалуйста, используйте второй аргумент шаблона для указания причины. (обсуждение: Talk:How to repair a local pacman database (Русский)#)

Tango-preferences-desktop-locale.png

Tango-preferences-desktop-locale.png

Эта страница нуждается в сопроводителе

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

Введение

У Вас что-то не так с pacman. 'pacman -Q' не дает никаких результатов, и 'pacman -Syu' говорит Вам, что система обновлена, хотя Вы знаете, что это не так. Когда Вы пытаетесь установить пакет командой 'pacman -S package', Вам выводится список зависимостей, хотя вы знаете, что эти зависимости уже установлены.

Ваша проблема в том, что база данных (далее БД) pacman '/var/lib/pacman/local' была повреждена или удалена. Это серьёзная проблема, Вы можете попытаться восстановить '/var/lib/pacman/local', следуя инструкции ниже.

Отказ от Ответственности

Прежде чем начать, я хотел бы подчеркнуть, что эти инструкции могут не работать у Вас. По сути, ваша система, возможно, никогда не будет прежней.

ИСПОЛЬЗУЙТЕ НА СВОЙ СТРАХ И РИСК!

Командная Строка

В строке ниже показана команда набранная в терминале обычным пользователем (не root):

$ ls

Следующая строка, показывает также набранную команду пользователем root, тот кто имеет полные права в Вашей системе.

# ls

Большинство инструкций ниже, требуют прав root для доступа к Вашей системе. Используйте su для переключения пользователя или sudo для выполнения команд с правами root.

Инструкция

  • Сначала, удостовертесь, что у Вас есть файл журнала pacman.
$ ls /var/log/pacman.log

Если файл журнала отсутствует, Вы можете не продолжать. Единственный вариант, переустановка системы с самого начала.

Хорошо, Ваш файл /var/log/pacman.log существует. Вот что нужно сделать:

  • Создайте файл pkglist.sh (это одна многострочная команда - просто скопируйте и вставьте её):
# cat <<END > pkglist.sh
awk '
  $3 == "installed" || $3 == "upgraded" { pkg[$4] = 1 } 
  $3 == "removed" { pkg[$4] = 0 } 
  END { for (i in pkg) if ( pkg[i] == 1 ) print i; }
' /var/log/pacman.log
END

Спасибо 'rdt' https://bbs.archlinux.org/viewtopic.php?id=38531 за идею

# chmod 744 pkglist.sh
  • Теперь запустите pklglist.sh и вывод перенаправьте в pkglist.
# ./pkglist.sh > pkglist
  • pkglist теперь содержит весь список программ, которые были установлены или обновлены. Отредактируйте pkglist и удалите всё, что Вы не хотите переустанавливать. Эта Вам может понадобится в том случае, если Вы собирали пакеты вручную, например, с 'abs'.
# vi pkglist

или

# nano pkglist
  • Если Вас устраивает содержимое файла pkglist, Вы можете переустановить все программы используя его и восстановить '/var/lib/pacman/local'.

Проверка зависимостей Вам не нужна, а сами программы необходимо установить принудительно, с ключом 'force', так как программы уже установлены:

# pacman -Sdf $(cat pkglist)

Pacman покажет Вам длинный список программ, которые надо установить. Скажите 'yes' и ждите пока pacman всё сделает.

  • По завершению, Вам необходимо найти все конфигурационные файлы, которые были изменены. Вы можете сначала обновить БД 'locate':
# updatedb
  • Теперь, Вы можете посмотреть все изменённые конфигурационные файлы:
# locate pacorig

Это команда покажет Вам список всех конфигурационных файлов, которые были заменены. Ваши оригинальные файлы будут иметь расширение .pacorig. Удалите новые файлы и переименуйте файлы с расширением .pacorig, чтобы восстановить Вашу конфигурацию для всех программ. Также, на некотрых директориях изменятся права. Проверьте их, если что-то не запускается.

Поздравляем, Вы удачно восстановили локальную базу данных pacman.