Manjaro Difference between revisions of "Pacman troubleshooting/ru"

Difference between revisions of "Pacman troubleshooting/ru"

From Manjaro
Tags: Mobile web edit Mobile edit
 
(28 intermediate revisions by 2 users not shown)
Line 15: Line 15:
  error: could not open file /var/lib/pacman/sync/multilib.db: Unrecognized archive format
  error: could not open file /var/lib/pacman/sync/multilib.db: Unrecognized archive format


Ошибка связана с несоответствием информации, содержащейся в файлах db в указанном месте и файлах db на первом зеркале в вашем списке зеркал. Pacman проверяет пакет в базе данных и смотрит, совпадает ли файл сигнатуры с файлом в базе данных. Если нет, то pacman сообщит, что пакет поврежден.
Ошибка связана с содержимым файлов db. Ошибка возникает, когда pacman получает разметку с зеркала вместо архивов базы данных.


Хотя иногда проблему можно решить, просто удалив файлы и запустив обновление pacman, это возможно далеко не каждый раз.
Хотя иногда проблему можно решить, просто удалив файлы и запустив обновление pacman, это возможно далеко не каждый раз.


=== Один рецепт для исправления этого ===
'''Запустите pacman-mirrors для обновления списка зеркал'''
 
{{UserCmd|command=sudo pacman-mirrors -c Global}}
Обязательно нужно убедиться, что связки ключей актуальны. Убедившись, что ключи в актуальном состоянии, а затем заново загрузив базы данных, мы восстановим связь между ключами и пакетами.
 
'''Вы должны будете найти правильные имена, посмотрев на'''.
[https://mirror.easyname.at/manjaro/pool/overlay/ https://mirror.easyname.at/manjaro/pool/overlay/] для текущего manjaro-keyring
и
[https://mirror.easyname.at/manjaro/pool/sync https://mirror.easyname.at/manjaro/pool/sync] для текущего archlinux-keyring
 
'''Замените yyyymmdd и x на информацию, найденную по вышеуказанным ссылкам'''.
 
{{UserCmd|command=sudo pacman -U <nowiki>https://mirror.easyname.at/manjaro/pool/overlay/manjaro-keyring-yyyymmdd-x-any.pkg.tar.xz</nowiki>}}
{{UserCmd|command=sudo pacman -U <nowiki>https://mirror.easyname.at/manjaro/pool/sync/archlinux-keyring-yyyymmdd-x-any.pkg.tar.xz</nowiki>}}
 
'''Удалите неисправные базы данных'''
{{UserCmd|command=sudo rm -f /var/lib/pacman/sync/*}}


'''Загрузите базы данных и обновите систему'''
'''Загрузите базы данных и обновите систему'''
{{UserCmd|command=sudo pacman -Syyu}}
{{UserCmd|command=sudo pacman -Syu}}


== Ошибка "Невозможно заблокировать базу данных" ==
== Ошибка "Невозможно заблокировать базу данных" ==
Line 64: Line 50:
{{Warning|Следующие команды работают только тогда, когда ваше системное время установлено правильно!}}
{{Warning|Следующие команды работают только тогда, когда ваше системное время установлено правильно!}}


'''1. Удалите старые (и, возможно, сломанные) ключи''', введя эту команду:
{{BoxInfo|Info|Получение последних пакетов ключей может быть сделано путем просмотра каталогов пула текущих зеркал. Например, с '''https://mirror.easyname.at/manjaro/pool''' - используя '''overlay''' для ключей Manjaro и '''sync''' - для Arch и загрузив их в свою систему. Не загружайте файлы '''.sig'''.}}
{{UserCmd|command=sudo rm -r /etc/pacman.d/gnupg}}


'''2. Переустановите связки ключей, включая последние ключи''':
{{BoxInfo|Info|Те, кто работает на ARM, могут найти '''archlinuxarm-keyring''' и '''manjaro-arm-keyring''' в каталогах '''sync-arm''' и '''overlay-arm''' соответственно.}}
{{UserCmd|command=sudo pacman -Sy gnupg archlinux-keyring manjaro-keyring}}


'''3. Инициализируйте связку ключей pacman''':
'''Загрузите новые пакеты ключей''''
{{UserCmd|command=sudo pacman-key --init}}
Перед загрузкой убедитесь, что в текущем каталоге нет пакетов ключей.
{{UserCmd|command=rm manjaro-keyring* archlinux-keyring*}}


'''4. Загрузите ключи подписи''':
Для загрузки используйте либо браузер, либо curl. Использование curl предполагает, что вы знаете правильное имя пакета, доступное с зеркала. Замените '''YYYYMMDD-R''' на доступное с зеркала.
{{UserCmd|command=sudo pacman-key --populate archlinux manjaro}}


'''5. Обновите и актуализируйте ключи подписей''':
{{UserCmd|command=curl -O <nowiki>https://mirror.easyname.at/manjaro/pool/overlay/manjaro-keyring-YYYYMMDD-R-any.pkg.tar.zst</nowiki>}}
{{UserCmd|command=sudo pacman-key --refresh-keys}}
{{UserCmd|command=curl -O <nowiki>https://mirror.easyname.at/manjaro/pool/sync/archlinux-keyring-YYYYMMDD-R-any.pkg.tar.zst</nowiki>}}


'''6. Очистите пакеты программ, загруженные во время прерванной установки''' (необязательно):
'''Удалите неработающие ключи''', введя эту команду:
{{UserCmd|command=sudo pacman -Sc}}</s>
 
{{BoxInfo|Info|Добавлена улучшенная версия, так как выше она не работает. Пакеты подписаны, и поскольку '''/etc/pacman.d/gnupg''' был удален, он не может быть установлен из-за проверки. Вместо редактирования '''/etc/pacman.conf''' и понижения SigLevel, было бы лучше установить ключи без проверки вручную, чтобы решить эту проблему.}}
 
'''1. Удалите старые (и, возможно, сломанные) ключи''', введя эту команду:
{{UserCmd|command=sudo rm -r /etc/pacman.d/gnupg}}
{{UserCmd|command=sudo rm -r /etc/pacman.d/gnupg}}


'''2. Инициализируйте связку ключей pacman''':
'''Инициализируйте связку ключей pacman''':
{{UserCmd|command=sudo pacman-key --init}}
{{UserCmd|command=sudo pacman-key --init}}


'''3. Скачайте пакеты:'''
'''Установите загруженные пакеты'''
{{BoxInfo|Информация| Ошибки проверки GPG можно игнорировать, так как загружаются только пакеты связок ключей.
Предполагая, что файлы находятся в текущем каталоге и используя подстановочный знак, чтобы не пришлось разбираться с датами и версиями - удалите пакеты после успешной установки
 
{{UserCmd|command=sudo pacman -U manjaro-keyring*.pkg.tar.zst archlinux-keyring*.pkg.tar.zst}}
Тем, кто работает на ARM, возможно, также потребуется загрузить archlinuxarm-keyring и manjaro-arm-keyring.
 
}}
{{UserCmd|command=mkdir -pv $HOME/.cache/pkg/ && sudo pacman -Syw archlinux-keyring manjaro-keyring --cachedir $HOME/.cache/pkg/}}
 
'''4. Удалите подписи:'''
{{BoxInfo|Info| Подписи должны быть удалены во избежание автоматической проверки пакетов.}}
{{UserCmd|command=rm -f $HOME/.cache/pkg/*.sig}}


'''5. Установите загруженные пакеты вручную:
'''Заполнить ключи''' - (необязательно, так как процесс установки сделает это сам)
{{BoxInfo|Информация|Это также запустит процесс заполнения.}}
{{UserCmd|command=sudo pacman-key --populate manjaro archlinux}}
{{UserCmd|command=sudo pacman -U $HOME/.cache/pkg/*.tar.zst}}
{{UserCmd|command=sudo pacman -U $HOME/.cache/pkg/*.tar.xz}}


'''6. Очистите пакеты программ, загруженные во время прерванной установки''' (необязательно):  
'''Очистите пакеты программ, загруженные во время прерванной установки''' (необязательно):  
{{warning|Вышеуказанная команда полностью очищает кэш pacman и вы не сможете перейти к предыдущей версии пакета при необходимости. Вместо этого пакеты, вызывающие ошибки подписи, могут быть удалены по отдельности при обновлении}}.
{{warning|Команда полностью очищает кэш pacman, и будет невозможно при необходимости перейти к предыдущей версии пакета. Вместо этого пакеты, вызывающие ошибки подписи, могут быть удалены по отдельности при обновлении.}}
{{UserCmd|command=sudo pacman -Sc}}
{{UserCmd|command=sudo pacman -Sc}}
'''7. Удалите каталог пользовательских пакетов:''' (необязательно):
{{UserCmd|command=sudo rm -Rf $HOME/.cache/pkg/}}


После этого попробуйте запустить '''sudo pacman -Syu''' и посмотреть, были ли устранены ошибки.
После этого попробуйте запустить '''sudo pacman -Syu''' и посмотреть, были ли устранены ошибки.
Line 129: Line 95:
'''Почему это происходит?'''
'''Почему это происходит?'''


По своей конструкции pacman '''не'' перезаписывает существующие файлы. Это особенность разработки, а не недостаток - менеджеры пакетов предназначены для отслеживания установленных файлов.
По своей конструкции pacman '''не''' перезаписывает существующие файлы. Это особенность разработки, а не недостаток - менеджеры пакетов предназначены для отслеживания установленных файлов.


Обычно эта проблема возникает, когда вы вручную добавляете, копируете или создаете файл. Это также может произойти, если вы устанавливаете программное обеспечение с помощью загруженного исполняемого файла, выполняете make install или используете пакетную систему сторонних производителей, например conda. Это также происходит при установке пакета AUR, устанавливающий файлы, конфликтующие с пакетом из репозитория.
Обычно эта проблема возникает, когда вы вручную добавляете, копируете или создаете файл. Это также может произойти, если вы устанавливаете программное обеспечение с помощью загруженного исполняемого файла, выполняете make install или используете пакетную систему сторонних производителей, например conda. Это также происходит при установке пакета AUR, устанавливающий файлы, конфликтующие с пакетом из репозитория.
Line 147: Line 113:
Этот пост был вдохновлен (и адаптирован из):
Этот пост был вдохновлен (и адаптирован из):


https://wiki.archlinux.org/title/Pacman#%22Failed_to_commit_transaction_(conflicting_files)%22_error
[https://wiki.archlinux.org/title/Pacman_(Русский)#Failed_to_commit_transaction_(conflicting_files) Pacman - Решение проблем]


В приведенном выше сообщении также есть ссылки на дальнейшее чтение.
В приведенном выше сообщении также есть ссылки на дальнейшее чтение.
Line 153: Line 119:
== Ошибка "Файл конфигурации...не распознан" ==
== Ошибка "Файл конфигурации...не распознан" ==


Менеджер пакетов Manjaro - '''[[pacman]]'''' - использует файл под названием ''mirrorlist'', сообщающий ему интернет-адреса серверов Manjaro для загрузки с них обновлений и программ. Эта ошибка возникает, если один или несколько адресов серверов, содержащихся в файле mirrorlist, не были указаны правильно, в результате чего pacman не может подключиться к ним. Еще одним признаком является то, что эта проблема также возникнет сразу после:
Менеджер пакетов Manjaro - '''[[pacman]]''' - использует файл под названием ''mirrorlist'', сообщающий ему интернет-адреса серверов Manjaro для загрузки с них обновлений и программ. Эта ошибка возникает, если один или несколько адресов серверов, содержащихся в файле mirrorlist, не были указаны правильно, в результате чего pacman не может подключиться к ним. Еще одним признаком является то, что эта проблема также возникнет сразу после:


* Установки Manjaro и редактирования файла mirrorlist во время установки, или
* Установки Manjaro и редактирования файла mirrorlist во время установки, или
Line 162: Line 128:


== Ошибка "GPGME error: No data" ==
== Ошибка "GPGME error: No data" ==
{{Warning|Этот раздел дублирует информацию из [[Pacman_troubleshooting/ru#Ошибки_ключей]] рассмотрите возможность удаления дублирующей информации}}


Наиболее вероятная причина этой проблемы заключается в том, что ''pacman'' обнаружил ошибку или повреждение в одном или нескольких загружаемых пакетах программного обеспечения. Подписи и контрольные суммы пакетов используются для проверки достоверности загружаемого программного обеспечения, и если они не работают, попытка установки будет прервана для защиты вашей системы, пока проблема не будет решена.
Наиболее вероятная причина этой проблемы заключается в том, что ''pacman'' обнаружил ошибку или повреждение в одном или нескольких загружаемых пакетах программного обеспечения. Подписи и контрольные суммы пакетов используются для проверки достоверности загружаемого программного обеспечения, и если они не работают, попытка установки будет прервана для защиты вашей системы, пока проблема не будет решена.
Line 173: Line 141:
1. Загрузите базы данных пакетов и обновите систему:
1. Загрузите базы данных пакетов и обновите систему:


  {{UserCmd|command=sudo pacman -Syyu}}
  {{UserCmd|command=sudo pacman -Syu}}


2. Очистите пакеты программного обеспечения, загруженные во время прерванной установки, введя команду:  
2. Очистите пакеты программного обеспечения, загруженные во время прерванной установки, введя команду:  
Line 186: Line 154:


1. Выполните повторную синхронизацию с серверами Manjaro, чтобы убедиться, что все данные обновлены, введя команду:
1. Выполните повторную синхронизацию с серверами Manjaro, чтобы убедиться, что все данные обновлены, введя команду:
{{UserCmd|command=sudo pacman -Syy}}
{{UserCmd|command=sudo pacman -Sy}}


2. Обновите ключи подписей, введя команду:
2. Обновите ключи подписей, введя команду:
Line 200: Line 168:


Если ошибка не исчезла, то рекомендуется '''[[Change to a Different Download Server/ru|переход на другой сервер загрузки]]''''.
Если ошибка не исчезла, то рекомендуется '''[[Change to a Different Download Server/ru|переход на другой сервер загрузки]]''''.


== Ошибка "keyserver refresh failed: No dirmngr" ==
== Ошибка "keyserver refresh failed: No dirmngr" ==

Latest revision as of 16:33, 27 July 2024

Other languages:
English • ‎Türkçe • ‎español • ‎français • ‎русский • ‎中文(中国大陆)‎

Установка программ

Здесь рассматриваются различные вопросы, связанные с загрузкой и установкой программных пакетов из репозиториев Manjaro.

Ошибка "Нераспознанный формат архива"

Это происходило неоднократно, обновление выдает эти сообщения в, казалось бы, бесконечном потоке. Pacman не смог открыть файл: синхронизировать файлы.

error: could not open file /var/lib/pacman/sync/core.db: Unrecognized archive format
error: could not open file /var/lib/pacman/sync/extra.db: Unrecognized archive format
error: could not open file /var/lib/pacman/sync/community.db: Unrecognized archive format
error: could not open file /var/lib/pacman/sync/multilib.db: Unrecognized archive format

Ошибка связана с содержимым файлов db. Ошибка возникает, когда pacman получает разметку с зеркала вместо архивов базы данных.

Хотя иногда проблему можно решить, просто удалив файлы и запустив обновление pacman, это возможно далеко не каждый раз.

Запустите pacman-mirrors для обновления списка зеркал

user $ sudo pacman-mirrors -c Global COPY TO CLIPBOARD


Загрузите базы данных и обновите систему

user $ sudo pacman -Syu COPY TO CLIPBOARD


Ошибка "Невозможно заблокировать базу данных"

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

  • Другая установка все еще выполняется и еще не завершена, или
  • Предыдущая попытка установки не завершилась должным образом (например, была прервана раньше времени).

Поэтому целесообразно сначала убедиться, что в момент возникновения ошибки не выполняется (или не выполнялась) другая установка. Убедившись в этом необходимо вручную удалить файл блокировки базы данных. Для этого откройте терминал и введите следующую команду:

user $ sudo rm /var/lib/pacman/db.lck COPY TO CLIPBOARD


После этого вы сможете успешно повторить попытку установки.

Ошибки ключей

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

В процессе установки, после загрузки любых пакетов программного обеспечения, система сначала проверит их ключи подписи, чтобы убедиться в их подлинности, прежде чем приступить к установке. Если по какой-либо причине ключ подписи не может быть проверен, процесс установки будет прерван. Эта проблема обычно возникает по следующим причинам:

  • один или несколько ключей подписи, содержащихся в базе данных вашей системы, отозваны, изменены, повреждены или устарели
  • один или несколько пакетов программного обеспечения не были должным образом подписаны при размещении в репозитории

Если пакет не был подписан должным образом перед помещением в репозиторий, ответственность за исправление лежит на разработчике(-ах). Однако, поскольку эта проблема, скорее всего, связана с проблемой проверки ключа подписи в вашей системе, ее можно решить в три простых шага. Требуется рабочее подключение к сети. После того как вы открыли свой терминал:


Warning
Следующие команды работают только тогда, когда ваше системное время установлено правильно!


Info
Получение последних пакетов ключей может быть сделано путем просмотра каталогов пула текущих зеркал. Например, с https://mirror.easyname.at/manjaro/pool - используя overlay для ключей Manjaro и sync - для Arch и загрузив их в свою систему. Не загружайте файлы .sig.


Info
Те, кто работает на ARM, могут найти archlinuxarm-keyring и manjaro-arm-keyring в каталогах sync-arm и overlay-arm соответственно.

Загрузите новые пакеты ключей' Перед загрузкой убедитесь, что в текущем каталоге нет пакетов ключей.

user $ rm manjaro-keyring* archlinux-keyring* COPY TO CLIPBOARD


Для загрузки используйте либо браузер, либо curl. Использование curl предполагает, что вы знаете правильное имя пакета, доступное с зеркала. Замените YYYYMMDD-R на доступное с зеркала.

user $ curl -O https://mirror.easyname.at/manjaro/pool/overlay/manjaro-keyring-YYYYMMDD-R-any.pkg.tar.zst COPY TO CLIPBOARD


user $ curl -O https://mirror.easyname.at/manjaro/pool/sync/archlinux-keyring-YYYYMMDD-R-any.pkg.tar.zst COPY TO CLIPBOARD


Удалите неработающие ключи, введя эту команду:

user $ sudo rm -r /etc/pacman.d/gnupg COPY TO CLIPBOARD


Инициализируйте связку ключей pacman:

user $ sudo pacman-key --init COPY TO CLIPBOARD


Установите загруженные пакеты Предполагая, что файлы находятся в текущем каталоге и используя подстановочный знак, чтобы не пришлось разбираться с датами и версиями - удалите пакеты после успешной установки

user $ sudo pacman -U manjaro-keyring*.pkg.tar.zst archlinux-keyring*.pkg.tar.zst COPY TO CLIPBOARD


Заполнить ключи - (необязательно, так как процесс установки сделает это сам)

user $ sudo pacman-key --populate manjaro archlinux COPY TO CLIPBOARD


Очистите пакеты программ, загруженные во время прерванной установки (необязательно):

Warning
Команда полностью очищает кэш pacman, и будет невозможно при необходимости перейти к предыдущей версии пакета. Вместо этого пакеты, вызывающие ошибки подписи, могут быть удалены по отдельности при обновлении.
user $ sudo pacman -Sc COPY TO CLIPBOARD


После этого попробуйте запустить sudo pacman -Syu и посмотреть, были ли устранены ошибки.

Конфликтующие файлы - FILENAME exists in filesystem

Если вы не можете установить или обновить пакет из-за ошибки, подобной этой:

error: could not prepare transaction
error: failed to commit transaction (conflicting files)
libname: /insert/file/name/here exists in filesystem
Errors occurred, no packages were upgraded.

Затем менеджер пакетов pacman обнаружил неожиданный файл, который уже существует на диске.

Почему это происходит?

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

Обычно эта проблема возникает, когда вы вручную добавляете, копируете или создаете файл. Это также может произойти, если вы устанавливаете программное обеспечение с помощью загруженного исполняемого файла, выполняете make install или используете пакетную систему сторонних производителей, например conda. Это также происходит при установке пакета AUR, устанавливающий файлы, конфликтующие с пакетом из репозитория.

При использовании сторонней программы установки всегда указывайте альтернативное место установки, например, в вашем домашнем каталоге или в каталоге /opt или /usr/local/. Никогда не устанавливайте непосредственно в / или /usr.

Как мне это исправить?

Первый шаг - определить, какой пакет, если таковой имеется, владеет файлом. Это можно легко сделать с помощью:

user $ pacman -Qo /путь/к/файлу COPY TO CLIPBOARD


Если при этом обнаружится конфликтующий пакет, то вы можете решить удалить его с помощью команды pacman -R. Если пакет не обнаружен, вы можете удалить файл (или переместить его в резервное место).

Где можно прочитать больше?

Этот пост был вдохновлен (и адаптирован из):

Pacman - Решение проблем

В приведенном выше сообщении также есть ссылки на дальнейшее чтение.

Ошибка "Файл конфигурации...не распознан"

Менеджер пакетов Manjaro - pacman - использует файл под названием mirrorlist, сообщающий ему интернет-адреса серверов Manjaro для загрузки с них обновлений и программ. Эта ошибка возникает, если один или несколько адресов серверов, содержащихся в файле mirrorlist, не были указаны правильно, в результате чего pacman не может подключиться к ним. Еще одним признаком является то, что эта проблема также возникнет сразу после:

  • Установки Manjaro и редактирования файла mirrorlist во время установки, или
  • Редактирования файла mirrorlist позднее.

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


Ошибка "GPGME error: No data"

Warning
Этот раздел дублирует информацию из Pacman_troubleshooting/ru#Ошибки_ключей рассмотрите возможность удаления дублирующей информации

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


Вариант 1: Базовое разрешение

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


1. Загрузите базы данных пакетов и обновите систему:

user $ sudo pacman -Syu COPY TO CLIPBOARD


2. Очистите пакеты программного обеспечения, загруженные во время прерванной установки, введя команду:

user $ sudo pacman -Sc COPY TO CLIPBOARD


3. Повторите попытку прерванной загрузки.

Вариант 2: Комплексное решение

Если основная процедура не приведет к решению вопроса, можно предпринять дальнейшие шаги:

1. Выполните повторную синхронизацию с серверами Manjaro, чтобы убедиться, что все данные обновлены, введя команду:

user $ sudo pacman -Sy COPY TO CLIPBOARD


2. Обновите ключи подписей, введя команду:

user $ sudo pacman-key --refresh-keys COPY TO CLIPBOARD


3. Перезагрузите ключи подписей, введя команду:

user $ sudo pacman-key --populate archlinux manjaro COPY TO CLIPBOARD


4. Очистите пакеты программного обеспечения, загруженные во время прерванной установки, введя команду:

user $ sudo pacman -Sc COPY TO CLIPBOARD


5. Повторите попытку прерванной загрузки.

Если ошибка не исчезла, то рекомендуется переход на другой сервер загрузки'.

Ошибка "keyserver refresh failed: No dirmngr"

Попробуйте выполнить следующую команду:

user $ sudo dirmngr </dev/null COPY TO CLIPBOARD


Смотрите также

Cookies help us deliver our services. By using our services, you agree to our use of cookies.