pacman (Русский)

From ArchWiki
Revision as of 18:47, 28 April 2014 by Kycok (talk | contribs) (Fixed russian Template:Warning)
Jump to: navigation, search

zh-CN:Pacman zh-TW:Pacman

Система управления пакетами pacman является одной из основных особенностей Arch Linux. Он сочетает в себе простой формат бинарных пакетов и легкую в использовании систему сборки (смотрите Arch Build System и makepkg). Pacman позволяет пользователям с легкостью управлять и настраивать под себя пакеты, вне зависимости от того, откуда они взяты: из официального репозитория или же собраны самостоятельно.

Pacman, синхронизируя пакеты с главным сервером, поддерживает систему в актуальном состоянии. Такая клиент-серверная модель позволяет пользователю скачивать/устанавливать пакеты со всеми требуемыми зависимостями всего одной командой.

Pacman написан на языке C и использует формат пакетов .pkg.tar.xz.

Tip: Официальный пакет pacman включает в себя много дополнительных полезных инструментов, таких как makepkg, pactree, vercmp и т.д.: выполните pacman -Ql pacman | grep bin, чтобы увидеть полный список

Contents

Конфигурация

Основные настройки pacman находятся в /etc/pacman.conf. В этом файле пользователь может указать все нужные ему настройки программы. Подробнее о конфигурировании можно прочесть в man pacman.conf.

Есть пасхалка: при добавлении в # Misc options параметра ILoveCandy скучные решетки превращаются в пакмена и точки, которые он ест :D

Основные параметры

Основные параметры находятся в секции [options]. Для получения дополнительной информации о параметрах прочтите страницу man или изучите установленный по умолчанию файл pacman.conf.

Пропуск обновления пакетов

Для пропуска какого-либо пакета во время обновления системы добавьте его название в строку:

IgnorePkg=имя_пакета

В случае, если необходимо в строке IgnorePkg перечислить несколько пакетов, разделяйте их имена пробелами:

IgnorePkg=имя_пакета1 имя_пакета2 имя_пакета3

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

У вас по-прежнему будет возможность в будущем обновить проигнорированные пакеты с использованием pacman -S: pacman напомнит вам, что есть пакеты, включенные в IgnorePkg.

Пропуск обновления группы пакетов

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

IgnoreGroup=имя_группы

Игнорирование установки файлов в систему

Для пропуска каталогов, в которые должны будут устанавливаться файлы, перечислите эти каталоги в NoExtract. Например, для игнорирования установки юнитов systemd:

NoExtract=usr/lib/systemd/system/*

Репозитории

В этом разделе файла pacman.conf указываются репозитории, которые будут использоваться. Их можно указать прямо здесь или подключить из другого файла.

Все официальные репозитории перечислены в одном файле - /etc/pacman.d/mirrorlist, для доступа к ним используется переменная $repo; таким образом достаточно поддерживать в актуальном состоянии только один список. Смотрите эту статью для настройки зеркал.

Далее приведен пример использования зеркал официальных репозиториев, которые перечислены в /etc/pacman.d/mirrorlist.


#[testing]
#SigLevel = PackageRequired	
#Include = /etc/pacman.d/mirrorlist

[core]
#SigLevel = PackageRequired
Include=/etc/pacman.d/mirrorlist

[extra]
#SigLevel = PackageOptional
Include = /etc/pacman.d/mirrorlist
	
#[community-testing]
#SigLevel = PackageRequired
#Include = /etc/pacman.d/mirrorlist

[community]
#SigLevel = PackageOptional
Include = /etc/pacman.d/mirrorlist

#Если в вашей x86_64 системе необходимо запускать 32-битные программы,
#раскоментируйте нужные multilib репозитории.

#[multilib-testing]
#SigLevel = PackageRequired
#Include = /etc/pacman.d/mirrorlist

[multilib]
#SigLevel = PackageOptional
Include = /etc/pacman.d/mirrorlist

# Использование собственного репозитория. Обратитесь к справочной странице pacman для
# получения дополнительной информации по созданию собственных репозиториев.
	
#[custom]
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs
Важно: Будьте осторожны при использовании репозитория testing. Пакеты в нём активно разрабатываются и обновляются, это может сказаться на стабильности и работоспособности других пакетов или системы в целом. Людям, использующим репозиторий testing, для своевременного получения информации рекомендуется подписаться на список рассылки arch-dev-public.

Безопасность пакетов

В Pacman 4 реализован дополнительный уровень безопасности устанавливаемых пакетов - подписи. Конфигурация по умолчанию, SigLevel = Required DatabaseOptional, включает проверку подписей для всех пакетов на глобальном уровне. Это поведение может быть изменено для каждого конкретного репозитория в строках SigLevel, как показано выше. Для получения дополнительной информации о подписях пакетов и их проверке взгляните на статью pacman-key (Русский).

Использование

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

Для получения вводной информации смотрите статью pacman - An Introduction.

Установка пакетов

Установка определенных пакетов

Для установки одного пакета или группы пакетов (включая зависимости) используйте следующую команду:

# pacman -S имя_пакета1 имя_пакета2 ...

Если пакет имеет несколько версий в разных репозиториях (например, в extra и testing), можно указать, откуда именно следует установить пакет:

# pacman -S extra/имя_пакета

Установка группы пакетов

Некоторые пакеты объединены в группы пакетов, и они могут быть установлены одновременно. Например, при выполнении команды:

# pacman -S gnome

вам будет предложено выбрать пакеты из группы gnome, которые вы хотели бы установить.

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

В данном примере для установки будут выбраны все пакеты в диапазоне с 1 по 10, а также 15:

Enter a selection (default=all): 1-10 15

В данном примере для установки будут выбраны все пакеты, кроме входящих в диапазон с 5 по 8, а также 2:

Enter a selection (default=all): ^5-8 ^2

Чтобы увидеть список пакетов, принадлежащих к группе gnome, выполните:

# pacman -Sg gnome

Перечень доступных групп пакетов можно изучить, посетив https://www.archlinux.org/groups/.

Примечание: Если не будет использована опция --needed, то при установке группы будут переустановлены все ранее установленные в систему и принадлежащие этой группе пакеты (даже если установленные в системе пакеты будут иметь последнюю доступную версию).
Важно: При установке недостаточно одного обновления списка пакетов (например, pacman -Sy имя_пакета): могут возникнуть проблемы с зависимостями. Смотрите разделы [1] и Частичные обновления не поддерживаются. В первую очередь, перед установкой новых пакетов выполняйте полное обновление системы.

Удаление пакетов

Для удаления пакета без удаления установленных зависимостей:

# pacman -R имя_пакета

Для удаления пакета со всеми зависимостями, не используемыми другими установленными пакетами:

# pacman -Rs имя_пакета

Для удаления пакета, его зависимостей и всех пакетов, зависящих от целевого пакета:

Важно: Эта операция рекурсивна и должна использоваться с осторожностью, так как появляется риск удалить много потенциально необходимых пакетов.
# pacman -Rsc имя_пакета

Для удаления пакета, который требуется другому пакету, без удаления зависимого пакета:

# pacman -Rdd package_name

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

# pacman -Rn имя_пакета
Примечание: pacman не удаляет конфигурационных файлов, созданных самими приложениями (например, "dot-файлы" в вашей домашней папке).

Обновление системы

pacman может обновить все пакеты системы одной командой. Количество пакетов зависит от того, насколько свежие пакеты стоят в вашей системе. Лучший вариант - синхронизация базы данных репозиториев И обновление вашей системы одной командой (не будут обновлены пакеты из 'локальных' и не настроенных репозиториев):

# pacman -Syu
Важно: В связи с тем, что Arch является постоянно обновляемым дистрибутивом, пользователям следует помнить, что после или в процессе обновления могут возникнуть непредвиденные трудности. Поэтому обновляться следует с осторожностью. Это означает, что если, например, ожидаются большие изменения или нововведения в обновляемых пакетах, то обновлять систему лучше тогда, когда у пользователя будет достаточно свободного времени и он будет готов к решению возможных проблем.

pacman является мощным инструментом по управлению пакетами, но он не сможет обработать все возможные ситуации. Если вас это смущает - прочтите Путь Arch Linux. Пользователь должен быть внимателен и сам заниматься обеспечением работоспособности своей системы. При выполнении обновления системы крайне важно читать и осмысливать всю информацию, которую выводит pacman. Если вы изменяли конфигурационный файл, то при обновлении, во избежание перезаписи, будет создан новый конфигурационный файл .pacnew. pacman предложит объединить его с вашим конфигурационным файлом. Выполнять объединение файлов придется вручную и, лучше всего, сразу после обновления. Для получения дополнительной информации обратитесь к руководству Pacnew and Pacsave Files.

Tip: Не забывайте, что вывод pacman заносится в /var/log/pacman.log.

Перед обновлением желательно посетить главную страницу Arch Linux, главную страницу русскоязычного сообщества Arch Linux и проверить там последние новости (другие варианты - подписаться на RSS-ленту новостей, список рассылки, или @archlinux в Twitter): для обновлений, требующих дополнительного вмешательства (если выполнения указанных pacman-ом действий не достаточно), будут добавлены соответствующие новости.

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

Запросы к базе данных пакетов

pacman с помощью флага -Q может искать пакеты в локальной базе данных; смотрите:

$ pacman -Q --help

и с помощью флага -S в базе данных (репозиториях); смотрите:

$ pacman -S --help

pacman умеет искать пакеты в базе данных как по названиям, так и по описаниям:

$ pacman -Ss условие1 условие2 ...

Поиск пакета по имени в базе данных (вывод без дополнительной информации):

$ pacman -Sqs  условие1 условие2 ...

Для поиска среди установленных пакетов:

$ pacman -Qs условие1 условие2 ...

Для отображения обширной информации о данном пакете:

$ pacman -Si имя_пакета

для установленных пакетов:

$ pacman -Qi имя_пакета

Использование сдвоенного флага -i позволит просмотреть список резервных копий файлов и список измененных файлов:

$ pacman -Qii имя_пакета

Для получения списка файлов установленного пакета:

$ pacman -Ql имя_пакета

Для неустановленных пакетов используйте pkgfile.

Чтобы проверить наличие файлов, установленных пакетом:

$ pacman -Qk имя_пакета

Использование двойного флага k (-Qkk) даст более тщательную проверку.

Чтобы узнать, какому пакету принадлежит нужный файл:

$ pacman -Qo /путь/к/файлу/имя_файла

Для получения списка пакетов, которые больше не требуются как зависимости (пакеты, которые могут быть безопасно удалены или сироты):

$ pacman -Qdt

Для отображения зависимостей в виде дерева:

$ pactree имя_пакета

Для получения списка пакетов, которые зависят от конкретного установленного пакета, можно воспользоваться утилитой whoneeds из состава пакета pkgtools:

$ whoneeds имя_пакета

Получение списка установленных пакетов для быстрого восстановления системы

Хорошей практикой является сохранение списка всех установленных пакетов. Если ваша система "упала" и её сложно восстановить, pacman может легко переустановить эти пакеты.

Сначала сохраните в список пакеты (доступные в репозитории):

pacman -Qqe | grep -v "$(pacman -Qmq)" > pkglist

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

comm -13 <(pacman -Qmq | sort) <(pacman -Qqe | sort) > pkglist

Сохраните этот файл на флешке или на другом носителе.

Скопируйте файл pkglist в новую систему, перейдите в эту папку. Для восстановления используйте команду:

pacman -S $(cat pkglist)

Получение списка файлов, не принадлежащих ни одному пакету

Если вы всегда хотите держать свою систему в чистоте и уважаете Путь Arch, вы должны иногда проверять файлы, отсутствующие в базе данных pacman. Эти файлы зачастую установлены сторонними приложениями с использованием ./configure; make; make install и т.п. Вы можете найти все эти установленные файлы (или симлинки), используя этот простой скрипт:

#!/bin/bash
time /usr/bin/pacman -Ql | cut -d ' ' -f 2- | sort -u > db.txt
time find /arch /bin /boot /etc /lib /opt /sbin /usr 2>/dev/null | while read i; do
	if [ ! -d "$i" ]; then
		echo "$i"
	fi;
done | sort -u > fs.txt
time comm -23 fs.txt db.txt > non-db.txt

#для проверки:
#cat non-db.txt | while read i; do pacman -Qo "$i" 2>&1; done | tee test.txt

Заметьте, все файлы, указанные в non-db.txt, НЕ БУДУТ удалены без подтверждения. Здесь могут находиться конфигурационные файлы, журналы и др. Используйте этот список только если знаете, что вы делаете.

Дополнительные команды

Обновление системы и установка списка пакетов (за одну операцию):

# pacman -Syu имя_пакета1 имя_пакета2 ...

Скачать пакет, но не устанавливать его:

# pacman -Sw имя_пакета

Установить локальный пакет (не из репозитория):

# pacman -U /путь/к/пакету/имя_пакета-version.pkg.tar.xz
Tip: Чтобы сохранить копию локального устанавливаемого пакета в кэше pacman'а, используйте:
# pacman -U file://путь/к/пакету/имя_пакета-version.pkg.tar.xz

Установить 'не локальный' пакет (не из репозитория):

# pacman -U http://www.example.com/repo/example.pkg.tar.xz

Удалить из кэша (/var/cache/pacman/pkg) не установленные на данный момент пакеты:

Важно: Делайте это только в том случае, если у вас есть определенная уверенность, что установленные пакеты стабильны и вам не потребуется откат версии, поскольку данная команда удалит все старые версии из каталога кэша, оставив только те, которые установлены в системе на данный момент. Сохранение более старых версий пакетов может пригодиться в тех случаях, когда обновление приводит к неправильной работе системы или отдельных программ
# pacman -Sc

Полная очистка кэша пакетов:

Важно: Данная команда полностью очистит кэш пакетов. Ее применение считается плохой практикой, поскольку это лишит вас возможности произвести откат пакета(ов) непосредственно из каталога кэша, и пользователь будет вынужден использовать альтернативный источник, например, Arch Rollback Machine
# pacman -Scc
Tip: В качестве альтернативы ключам -Sc и -Scc можно использовать утилиту paccache из пакета pacman. Она предлагает больше контроля над тем, какие и как много пакетов будет удалено. Выполните команду paccache -h для получения инструкций

Частичные обновления официально не поддерживаются

Arch Linux - постоянно обновляемый дистрибутив, и это значит, что в репозиториях всегда находятся новые версии библиотек. Разработчики и доверенные пользователи собирают пакеты для репозиториев с использованием этих библиотек. Для пакетов, установленных локально (например, пакеты из AUR), нужно самостоятельно решать вопрос с зависимостями согласно данным soname.

Именно поэтому частичное обновление не поддерживается. Не используйте pacman -Sy package или другие эквиваленты pacman -Sy и pacman -S package. Всегда перед установкой пакетов синхронизируйте репозитории и обновляйте систему полностью. По той же самой причине нужно быть осторожными при использовании IgnorePkg и IgnoreGroup.

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

Общие рекомендации

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

Устранение проблем

Мне нужно запустить pacman-key --init, но отсутствуют ssh / X или генераторы случайных чисел. Как мне получить энтропию?

Для решения проблемы нужно перемещать указатель мыши, нажимать на клавиатуре случайные кнопки или запустить дисковую активность, например, с помощью updatedb. Будьте терпеливы, процесс может затянуться на длительное время. При этом переход в другую консоль, по Alt+F2-6, временно работать не будет.

Мне нужно запустить pacman-key --init через ssh. Как мне получить энтропию?

На целевой машине соберите и установите пакет rng-tools из AUR (Русский). Подключитесь через ssh и выполните следующие команды:

# sed -i 's/0/10/' /etc/conf.d/rngd
# rngd -f -r /dev/urandom &
# pacman-key --init

После успешного выполнения pacman-key просто остановите rngd и удалите пакет.

# killall rngd
# pacman -Rns rng-tools

Pacman не находит PGP ключи для импорта и не обновляет пакеты. Как можно это исправить?

На самом деле проблема не в pacman. Проблема в сервере ключей, используемом по умолчанию. Измените сервер ключей на более надежный таким способом:

# sed -i '/keyserver/ s,keys.gnupg.net,pgp.mit.edu,' /etc/pacman.d/gnupg/gpg.conf

Pacman4 теперь готов к использованию.

Обновление пакета XYZ сломало мою систему!

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

Запомните основное правило: не обновляйте систему "вслепую". Всегда внимательно изучайте список обновляемых пакетов. Обращайте внимание на обновление "критически важных" компонентов (linux, xorg-server и т.д.). Если такие пакеты есть, проверьте наличие новостей на https://www.archlinux.org/ и просмотрите последние сообщения на форуме, возможно, кто-то уже столкнулся с проблемами при обновлении.

Если известно/ожидается, что после обновления могут возникнуть проблемы, pacman выведет соответствующее сообщение. Если вы упустили какую-то информацию, которую вывел pacman, то её можно еще раз просмотреть в /var/log/pacman.log.

Теперь, если не было никаких предупреждений от pacman, отсутствуют соответствующие новости на https://www.archlinux.org/ и нет сообщений относительно обновлений на форуме, имеет смысл обратиться за помощью на форум, IRC-канал, или откатить пакет к работающей версии.

Перечитайте последний абзац.

Я знаю, что для пакета ABC доступны обновления, но pacman сообщает мне, что система в актуальном состоянии!

Зеркала pacman синхронизируются не мгновенно. Иногда может пройти более 24 часов, прежде чем обновления станут доступны вам.

В качестве решения можно посоветовать сменить зеркало. На MirrorStatus можно посмотреть состояние зеркал.

При обновлении появляется сообщение об ошибке: "file exists in filesystem" ("файл существует в файловой системе")!

Дополнительно: Взято из https://bbs.archlinux.org/viewtopic.php?id=56373 у Misfit138.

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

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

Проблема решается тривиально. Сначала проверьте, не принадлежит ли файл другому пакету (pacman -Qo /path/to/file). Если принадлежит, создайте отчет об ошибке. Если проблемный файл не нужен другим пакетам, переименуйте его и перезапустите команду обновления. Если в дальнейшем проблем не возникнет, то старый файл можно удалить.

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

Информация о каждом установленном файле хранится в файле с метаданными пакета /var/lib/pacman/local/$package-$version/files. При повреждении этого файла (он может быть пустым или отсутствовать) во время обновления пакета и будет получена ошибка "file exists in filesystem" ("файл существует в файловой системе").

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

Никогда не запускайте pacman -Syu --force.

При установке пакета я получаю сообщение об ошибке: "not found in sync db"

Для начала убедитесь, что пакет вообще существует (и вы нигде не опечатались!). Если пакет не существует, то проблема может быть в том, что ваша база пакетов не синхронизирована с репозиториями или репозитории неправильно настроены. Для принудительного обновления списка пакетов и всей системы попробуйте выполнить pacman -Syyu.

При установке пакета я получаю сообщение об ошибке: "target not found" ("цель не найдена")

Во-первых, удостоверьтесь, что пакет существует (и вы не допустили опечаток). Если это так, возможно, ваш список пакетов устарел или репозитории на вашей машине настроены неправильно. Для принудительного обновления списка пакетов и всей системы попробуйте выполнить pacman -Syyu.
Также есть вероятность того, что в вашей системе не включен репозиторий, содержащий данный пакет (например, пакет находится в репозитории multilib, но multilib не включен в вашем файле pacman.conf).

pacman несколько раз обновляет один и тот же пакет!

Это может быть связано с дублированием записей в /var/lib/pacman/local/, К примеру, имеется два экземпляра linux. pacman -Qi выведет правильную версию, а pacman -Qu покажет её как устаревшую и, следовательно, требующую обновления.

Решение: удалить лишнюю запись из /var/lib/pacman/local/.

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

pacman сбоит при обновлении!

Если при попытке удаления, переустановки или обновления пакетов pacman падает с ошибкой "database write" ("записи в базу данных"):

  1. Загрузитесь, используя Arch live CD
  2. Смонтируйте корневую файловую систему
  3. Обновите базу данных pacman и всю систему с помощью pacman -Syyu
  4. Переустановите сломанный пакет через pacman -r /путь/к/корневому_разделу -S package

Я установил программу, используя make install; теперь эти файлы не принадлежат ни одному из пакетов!

При обнаружении "конфликтующих файлов", чтобы их не перезаписывать вручную, можно использовать pacman с ключом --force (pacman -S --force). Почитайте pacman Tips#Identify files not owned by any package о скрипте, проверяющем файловую систему на наличие брошенных файлов.

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

Мне нужен пакет с определенным файлом. Как узнать, какому пакету это файл принадлежит?

Установите pkgtools, в его состав входит pkgfile, использующий отдельную базу данных со всеми файлами и связанными с ними пакетами.

pacman полностью неработоспособен! Как мне его переустановить?

Если pacman не работает и не получается его восстановить, скачайте вручную пакеты (openssl, libarchive и pacman) и распакуйте их в корневой раздел. Бинарный pacman будет восстановлен вместе с конфигурационным файлом по умолчанию. Затем, для поддержания целостности базы данных пакетов, переустановите скачанные пакеты стандартными средствами pacman. Дополнительную информацию и пример (устарел) скрипта, автоматизирующего этот процесс, можно найти в этом сообщении форума.

После обновления системы получаю следующее сообщение об ошибке: "unable to find root device". После перезагрузки система не загружается.

Вероятно, при обновлении ядра "поломалась" initramfs (например, при использовании pacman с опцией --force). Для восстановления работоспособности есть два варианта:

1. Попробуйте выбрать пункт Fallback.

Tip: Если вы удалили этот пункт по каким-либо причинам, вы можете нажать клавишу Tab (при использовании Syslinux) или e (при использовании GRUB), когда на экране появится меню загрузчика, переименовать в initramfs-linux-fallback.img и нажать Enter или b (в зависимости от используемого вами загрузчика), чтобы выполнить загрузку с новыми параметрами
Когда система загрузится, выполните команду пересборки образа initramfs либо из консоли, либо из терминала (для стандартного ядра linux):
# mkinitcpio -p linux

2. Если это не сработает, загрузите текущий релиз операционной системы Arch (с CD/DVD или USB) и выполните команды:

Примечание: Если у вас нет текущего релиза, или есть только какой-либо другой "live"-дистрибутив Linux, вы можете выполнить chroot, используя старый способ. Очевидно, при этом вам придется напечатать больше, чем просто arch-chroot для запуска соответствующего скрипта
# mount /dev/sdxY /mnt         #Ваш корневой раздел
# mount /dev/sdxZ /mnt/boot    #Если вы используете отдельный раздел /boot
# arch-chroot /mnt
# pacman -Syu mkinitcpio systemd linux
Примечание: Если pacman выдает ошибку Could not resolve host, пожалуйста, проверьте ваше соединение с интернет
Переустановка ядра (пакета linux) автоматически перегенерирует образ initramfs при помощи mkinitcpio -p linux. Нет необходимости дополнительно вводить эту команду.
После всего этого рекомендуется выполнить exit, umount /mnt/{boot,} и reboot.
Примечание: Если вы не можете войти в окружение arch-chroot или chroot, но нуждаетесь в переустановке пакетов, можете использовать команду pacman -r /mnt -Syu foo bar, чтобы указать менеджеру пакетов pacman ваш корневой раздел

Signature from "User <email@gmail.com>" is unknown trust, installation failed

Следуйте инструкциям из раздела pacman-key#Resetting all the keys. Также сперва вы можете попробовать вручную обновить пакет archlinux-keyring, например, так: pacman -S archlinux-keyring.

Я по-прежнему вижу "error: PackageName: signature from "User <email@archlinux.org>" is invalid"

error: PackageName: signature from "User <email@archlinux.org>" is invalid
error: failed to commit transaction (invalid or corrupted package (PGP signature))
Errors occured, no packages were upgraded. 
Это происходит, когда системное время установлено неверно. Установите время и выполните:
# hwclock -w
перед тем, как пытаться вновь установить/обновить пакет.

Я продолжаю получать ошибку "failed to commit transaction (invalid or corrupted package)"

Просмотрите каталог /var/cache/pacman/pkg на предмет наличия файлов с расширением *.part (частично скачанные пакеты) и удалите их в случае необходимости (часто это проявляется при использовании ручного XferCommand в файле pacman.conf).

Каждый раз, когда я использую pacman, я вижу ошибку 'warning: current locale is invalid; using default "C" locale'. Что мне делать?

Как сказано в тексте ошибки, локаль не настроена правильно. Смотрите статью Locale (Русский).

Как я могу заставить Pacman использовать мои настройки прокси?

Удостоверьтесь, что соответствующие переменные окружения ($http_proxy, $ftp_proxy и т.д.) заданы верно. Если вы используете Pacman вместе с sudo, необходимо настроить sudo на использование переменных окружения в Pacman.

Как я могу переустановить все пакеты, сохраняя при этом информацию о том, какие пакеты были явно установлены, а какие установлены в качестве зависимостей?

Чтобы переустановить все родные (native) пакеты, выполните pacman -S $(pacman -Qnq) (опция -S сохраняет причину установки по умолчанию).
После этого необходимо переустановить все пакеты из неизвестных источников, список которых можно получить командой pacman -Qmq.

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