Difference between revisions of "Pacman (Русский)"

From ArchWiki
Jump to: navigation, search
(Использование: updated translation)
(update interlanguage links)
(Tag: wiki-scripts)
(40 intermediate revisions by 10 users not shown)
Line 9: Line 9:
 
[[en:Pacman]]
 
[[en:Pacman]]
 
[[es:Pacman]]
 
[[es:Pacman]]
 +
[[fa:Pacman]]
 
[[fr:Pacman]]
 
[[fr:Pacman]]
 
[[id:Pacman]]
 
[[id:Pacman]]
Line 14: Line 15:
 
[[ja:Pacman]]
 
[[ja:Pacman]]
 
[[ko:Pacman]]
 
[[ko:Pacman]]
[[lt:Pacman]]
 
 
[[nl:Pacman]]
 
[[nl:Pacman]]
 
[[pl:Pacman]]
 
[[pl:Pacman]]
Line 21: Line 21:
 
[[sr:Pacman]]
 
[[sr:Pacman]]
 
[[sv:Pacman]]
 
[[sv:Pacman]]
[[tr:pacman]]
+
[[zh-hans:Pacman]]
[[uk:Pacman]]
+
[[zh-hant:Pacman]]
[[zh-CN:Pacman]]
 
[[zh-TW:Pacman]]
 
 
{{Related articles start (Русский)}}
 
{{Related articles start (Русский)}}
{{Related2|Downgrading packages (Русский)|Откат пакетов}}
+
{{Related|Откат пакетов}}
{{Related|Ускорение работы Pacman}}
+
{{Related|Ускорение работы pacman}}
{{Related2|Pacman GUI Frontends (Русский)|Графические оболочки для pacman}}
+
{{Related|Графические оболочки для pacman}}
{{Related|Pacman Rosetta}}
+
{{Related|pacman Rosetta}}
{{Related2|Pacman Tips (Русский)|Советы по pacman}}
+
{{Related|pacman/Советы и приёмы}}
{{Related2|DeveloperWiki:Package signing|Создание подписей пакетов}}
+
{{Related|pacman package signing}}
{{Related|FAQ (Русский)#Управление пакетами}}
+
{{Related|ЧаВо#Управление пакетами}}
 
{{Related|pacman-key (Русский)}}
 
{{Related|pacman-key (Русский)}}
{{Related2|Pacnew and Pacsave Files|Файлы Pacnew и Pacsave}}
+
{{Related|Файлы Pacnew и Pacsave}}
{{Related2|List of applications/Utilities (Русский)#Управление пакетами|Список приложений для управления пакетами}}
+
{{Related|Список приложений/Утилиты#Управление пакетами}}
{{Related2|Arch Build System (Русский)|Система сборки для Arch}}
+
{{Related|Arch Build System (Русский)}}
 
{{Related|Официальные репозитории}}
 
{{Related|Официальные репозитории}}
{{Related|Пользовательский репозиторий Arch}}
+
{{Related|Arch User Repository (Русский)}}
 
{{Related articles end}}
 
{{Related articles end}}
 +
{{Unmaintained (Русский)}}
 +
{{Translateme (Русский)|1=Обновление pacman до версии 5.0, добавление флага {{ic|-F}} и {{ic|-D}} [https://projects.archlinux.org/pacman.git/tree/NEWS?h=v5.0.0].}}
  
[[Wikipedia:ru:Система управления пакетами|Система управления пакетами]] '''[https://www.archlinux.org/pacman/ pacman]''' является одной из основных особенностей Arch Linux. Она сочетает в себе простой формат двоичных пакетов и легкую в использовании [[Arch Build System (Русский)|систему сборки]]. Цель pacman - предоставление возможности легкого управления пакетами вне зависимости от того, откуда они взяты: из [[Official repositories (Русский)|официальных репозиториев]] или же собраны самостоятельно.
+
[[Wikipedia:ru:Система управления пакетами|Система управления пакетами]] '''[https://www.archlinux.org/pacman/ pacman]''' является одной из основных особенностей Arch Linux. Она сочетает в себе простой формат двоичных пакетов и легкую в использовании [[Arch Build System (Русский)|систему сборки]]. Цель ''pacman'' — предоставление возможности легкого управления пакетами вне зависимости от того, откуда они взяты: из [[Official repositories (Русский)|официальных репозиториев]] или же собраны самостоятельно.
  
Pacman, синхронизируя пакеты с главным сервером, поддерживает систему в актуальном состоянии. Такая клиент-серверная модель позволяет пользователю скачивать/устанавливать пакеты со всеми требуемыми зависимостями всего одной командой.
+
''pacman'' поддерживает систему в актуальном состоянии, синхронизируя пакеты с сервером. Такая клиент-серверная модель позволяет пользователю скачивать/устанавливать пакеты со всеми требуемыми зависимостями всего одной командой.
  
Pacman написан на языке C и использует формат пакетов {{ic|.pkg.tar.xz}}.
+
''pacman'' написан на языке C и использует формат пакетов ''.pkg.tar.xz''.
  
{{Tip (Русский)|Официальный пакет {{Pkg|pacman}} включает в себя много дополнительных полезных инструментов, таких как '''makepkg''', '''pactree''', '''vercmp''' и т.д.: выполните {{ic|pacman -Ql pacman <nowiki>|</nowiki> grep bin}}, чтобы увидеть полный список}}
+
{{Tip (Русский)|Официальный пакет {{Pkg|pacman}} включает в себя много дополнительных полезных инструментов, таких как '''makepkg''', '''pactree''', '''vercmp''' и [[#Частичные обновления не поддерживаются|checkupdates]]. Выполните {{ic|pacman -Ql pacman <nowiki>|</nowiki> grep bin}}, чтобы увидеть полный список.}}
  
 
== Настройка ==
 
== Настройка ==
  
Основные настройки pacman находятся в {{ic|/etc/pacman.conf}}. В этом файле пользователь может указать все нужные ему настройки программы. Подробнее о конфигурировании можно прочесть в [https://www.archlinux.org/pacman/pacman.conf.5.html man pacman.conf].
+
Основные настройки ''pacman'' находятся в {{ic|/etc/pacman.conf}}. В этом файле пользователь может указать все нужные ему настройки программы. Подробнее о конфигурировании можно прочесть в [https://www.archlinux.org/pacman/pacman.conf.5.html man pacman.conf].
 
 
{{Note (Русский)|Есть пасхалка. При добавлении в секцию {{ic|# Misc options}} параметра {{ic|ILoveCandy}} скучные решетки превращаются в пакмена и точки, которые он ест :D}}
 
  
 
=== Основные параметры ===
 
=== Основные параметры ===
  
Основные параметры находятся в секции {{ic|[options]}}. Для получения дополнительной информации о параметрах прочтите страницу справочного руководства (man) или изучите установленный по умолчанию файл {{ic|pacman.conf}}.
+
Основные параметры находятся в секции {{ic|[options]}}. Для получения дополнительной информации о параметрах прочтите [[man page (Русский)|страницу справочного руководства]] или изучите установленный по умолчанию файл {{ic|pacman.conf}}.
  
 
==== Пропуск обновления пакетов ====
 
==== Пропуск обновления пакетов ====
Line 63: Line 61:
 
Для пропуска какого-либо пакета во время [[#Обновление пакетов|обновления]] системы добавьте его название в строку:
 
Для пропуска какого-либо пакета во время [[#Обновление пакетов|обновления]] системы добавьте его название в строку:
  
{{bc|<nowiki>IgnorePkg=имя_пакета</nowiki>}}
+
IgnorePkg=linux
  
В случае, если необходимо в строке {{ic|IgnorePkg}} перечислить несколько пакетов, разделяйте их имена пробелами или используйте несколько строк {{ic|IgnorePkg}}. Также можно использовать глобальные шаблоны (glob patterns). Если вы хотите пропустить обновление какого-либо пакета единожды, можно также использовать опцию {{ic|--ignore}} в командной строке, разделяя имена пакетов запятыми.
+
В случае, если необходимо в строке {{ic|IgnorePkg}} перечислить несколько пакетов, разделяйте их имена пробелами или используйте несколько строк {{ic|IgnorePkg}}. Также можно использовать глобальные шаблоны (glob patterns). Если вы хотите пропустить обновление каких-либо пакетов единожды, можно также использовать опцию {{ic|--ignore}} в командной строке, разделяя имена пакетов запятыми.
  
У вас по-прежнему будет возможность в будущем обновить проигнорированные пакеты с использованием {{ic|pacman -S}}: pacman напомнит вам, что есть пакеты, включенные в секцию {{ic|IgnorePkg}}.
+
У вас по-прежнему будет возможность в будущем обновить проигнорированные пакеты с использованием {{ic|pacman -S}}: ''pacman'' напомнит вам, что есть пакеты, включенные в секцию {{ic|IgnorePkg}}.
  
 
==== Пропуск обновления группы пакетов ====
 
==== Пропуск обновления группы пакетов ====
Line 73: Line 71:
 
Как и в случае с отдельными пакетами, вы можете запрещать обновления групп пакетов, например так:
 
Как и в случае с отдельными пакетами, вы можете запрещать обновления групп пакетов, например так:
  
{{bc|<nowiki>IgnoreGroup=имя_группы</nowiki>}}
+
IgnoreGroup=gnome
+
 
 
==== Игнорирование установки файлов в систему ====
 
==== Игнорирование установки файлов в систему ====
+
 
 
Для пропуска каталогов, в которые должны будут устанавливаться файлы, перечислите эти каталоги в {{Ic|NoExtract}}. Например, для игнорирования установки юнитов [[systemd (Русский)|systemd]]:
 
Для пропуска каталогов, в которые должны будут устанавливаться файлы, перечислите эти каталоги в {{Ic|NoExtract}}. Например, для игнорирования установки юнитов [[systemd (Русский)|systemd]]:
   
+
 
{{bc|<nowiki>NoExtract=usr/lib/systemd/system/*</nowiki>}}
+
  NoExtract=usr/lib/systemd/system/*
+
 
 
=== Репозитории ===
 
=== Репозитории ===
  
В этом разделе файла {{ic|pacman.conf}} указываются [[Official repositories (Русский)|репозитории]], которые будут использоваться. Их можно указать прямо здесь или подключить из другого файла (такого как {{ic|/etc/pacman.d/mirrorlist}}). Таким образом достаточно поддерживать в актуальном состоянии только один список. Смотрите [[Mirrors|эту статью]] для настройки зеркал. Для получения информации по настройке зеркал смотрите статью [[Mirrors|Зеркала]].
+
В этом разделе файла {{ic|pacman.conf}} указываются [[Official repositories (Русский)|репозитории]], которые будут использоваться. Их можно указать прямо здесь или подключить из другого файла (например {{ic|/etc/pacman.d/mirrorlist}}). Таким образом достаточно поддерживать в актуальном состоянии только один список. Для получения информации по настройке зеркал смотрите статью [[Зеркала]].
  
 
{{hc|/etc/pacman.conf|2=
 
{{hc|/etc/pacman.conf|2=
 
#[testing]
 
#[testing]
#SigLevel = PackageRequired
+
#SigLevel = PackageRequired
 
#Include = /etc/pacman.d/mirrorlist
 
#Include = /etc/pacman.d/mirrorlist
  
 
[core]
 
[core]
 
SigLevel = PackageRequired
 
SigLevel = PackageRequired
Include=/etc/pacman.d/mirrorlist
+
Include = /etc/pacman.d/mirrorlist
  
 
[extra]
 
[extra]
SigLevel = PackageOptional
+
SigLevel = PackageRequired
 
Include = /etc/pacman.d/mirrorlist
 
Include = /etc/pacman.d/mirrorlist
+
 
 
#[community-testing]
 
#[community-testing]
 
#SigLevel = PackageRequired
 
#SigLevel = PackageRequired
Line 103: Line 101:
  
 
[community]
 
[community]
SigLevel = PackageOptional
+
SigLevel = PackageRequired
 
Include = /etc/pacman.d/mirrorlist
 
Include = /etc/pacman.d/mirrorlist
  
#Если в вашей системе x86_64 необходимо запускать 32-битные программы,
+
# Если в вашей системе x86_64 необходимо запускать 32-битные программы,
#раскоментируйте нужные репозитории multilib.
+
# раскомментируйте нужные репозитории multilib.
  
 
#[multilib-testing]
 
#[multilib-testing]
Line 114: Line 112:
  
 
#[multilib]
 
#[multilib]
#SigLevel = PackageOptional
+
#SigLevel = PackageRequired
 
#Include = /etc/pacman.d/mirrorlist
 
#Include = /etc/pacman.d/mirrorlist
  
 
# Пример использования пользовательского репозитория. Обратитесь к справочной странице (man) pacman для
 
# Пример использования пользовательского репозитория. Обратитесь к справочной странице (man) pacman для
 
# получения дополнительной информации по созданию собственных репозиториев.
 
# получения дополнительной информации по созданию собственных репозиториев.
 
 
#[custom]
 
#[custom]
 
#SigLevel = Optional TrustAll
 
#SigLevel = Optional TrustAll
#Server = file:///home/custompkgs
+
#Server = file:///home/custompkgs}}
}}
 
  
{{Warning (Русский)|Будьте осторожны при использовании репозитория ''testing''. Пакеты в нём активно разрабатываются и обновляются, это может сказаться на стабильности и работоспособности других пакетов или системы в целом. Людям, использующим репозиторий ''testing'', для своевременного получения информации рекомендуется подписаться на [https://mailman.archlinux.org/mailman/listinfo/arch-dev-public почтовую рассылку arch-dev-public]}}
+
{{Warning (Русский)|Будьте осторожны при использовании репозитория ''testing''. Пакеты в нем активно разрабатываются и обновляются это может сказаться на стабильности и работоспособности других пакетов или системы в целом. Людям, использующим репозиторий ''testing'', для своевременного получения информации рекомендуется подписаться на [https://mailman.archlinux.org/mailman/listinfo/arch-dev-public почтовую рассылку arch-dev-public].}}
  
 
=== Безопасность пакетов ===
 
=== Безопасность пакетов ===
 
В Pacman 4 реализован дополнительный уровень безопасности устанавливаемых пакетов - подписи. Конфигурация по умолчанию, {{ic|1=SigLevel = Required DatabaseOptional}}, включает проверку подписей для всех пакетов на глобальном уровне. Это поведение может быть изменено для каждого конкретного репозитория в строках {{ic|SigLevel}}, как показано выше. Для получения дополнительной информации о подписях пакетов и их проверке взгляните на статью [[pacman-key (Русский)]].
 
  
== Использование  ==
+
В ''pacman'' 4 реализован дополнительный уровень безопасности устанавливаемых пакетов — подписи. Конфигурация по умолчанию, {{ic|1=SigLevel = Required DatabaseOptional}}, включает проверку подписей для всех пакетов на глобальном уровне. Это поведение может быть изменено для каждого конкретного репозитория в строках {{ic|SigLevel}}, как показано выше. Для получения дополнительной информации о подписях пакетов и их проверке посмотрите статью [[pacman-key (Русский)]].
  
Чтобы узнать обо всех возможностях pacman, изучите [https://archlinux.org/pacman/pacman.8.html man pacman]. Примеры ниже - это только небольшая подборка доступных операций. Для получения вводной информации смотрите статью [[pacman - An Introduction]].
+
== Использование ==
 +
 
 +
В этом разделе приведена небольшая подборка доступных возможностей ''pacman''. Чтобы узнать больше, изучите [https://archlinux.org/pacman/pacman.8.html man pacman].
  
 
=== Установка пакетов ===
 
=== Установка пакетов ===
 +
 +
{{Note (Русский)|Довольно часто пакеты имеют [[PKGBUILD (Русский)#optdepends|дополнительные зависимости]], которые не являются обязательными, но предоставляют дополнительную функциональность. Если вы пропустите эту информацию при установке пакета, вы можете посмотреть ее потом, используя [[#Запросы к базам данных пакетов]].}}
  
 
==== Установка определенных пакетов ====
 
==== Установка определенных пакетов ====
Line 142: Line 140:
  
 
  # pacman -S ''имя_пакета1'' ''имя_пакета2'' ...
 
  # pacman -S ''имя_пакета1'' ''имя_пакета2'' ...
 +
 +
Для установки списка пакетов при помощи поиска по регулярному выражению (смотрите раздел [[Pacman tips#Operations and Bash syntax|Операции и синтаксис Bash]]{{Broken section link}} и [https://bbs.archlinux.org/viewtopic.php?id=7179 эту ветку форума]):
 +
 +
# pacman -S $(pacman -Ssq ''регулярное_выражение'')
  
 
Если пакет имеет несколько версий в разных репозиториях (например, в ''extra'' и ''testing''), можно указать, откуда именно следует установить пакет:
 
Если пакет имеет несколько версий в разных репозиториях (например, в ''extra'' и ''testing''), можно указать, откуда именно следует установить пакет:
Line 155: Line 157:
 
вам будет предложено выбрать пакеты из группы {{Grp|gnome}}, которые вы хотели бы установить.
 
вам будет предложено выбрать пакеты из группы {{Grp|gnome}}, которые вы хотели бы установить.
  
Некоторые группы содержат большое количество пакетов, и среди них могут быть всего несколько нужных или ненужных вам. Вместо того, чтобы вводить все необходимые вам номера, иногда удобнее выбрать или исключить отдельные числа или диапазоны чисел при помощи приведенного ниже синтаксиса.
+
Некоторые группы содержат большое количество пакетов, и среди них могут быть всего несколько нужных или ненужных вам. Вместо того, чтобы вводить все необходимые вам номера, иногда удобнее выбрать или исключить отдельные числа или диапазоны чисел при помощи приведенного ниже синтаксиса:
 
 
В данном примере для установки будут выбраны все пакеты в диапазоне с 1 по 10, а также 15:
 
  
 
  Enter a selection (default=all): 1-10 15
 
  Enter a selection (default=all): 1-10 15
  
В данном примере для установки будут выбраны все пакеты, кроме входящих в диапазон с 5 по 8, а также 2:
+
будут выбраны все пакеты в диапазоне с 1 по 10, а также 15;
  
 
  Enter a selection (default=all): ^5-8 ^2
 
  Enter a selection (default=all): ^5-8 ^2
 +
 +
— будут выбраны все пакеты, кроме входящих в диапазон с 5 по 8, а также 2.
  
 
Чтобы увидеть список пакетов, принадлежащих к группе gnome, выполните:
 
Чтобы увидеть список пакетов, принадлежащих к группе gnome, выполните:
Line 171: Line 173:
 
Перечень доступных групп пакетов можно изучить, посетив https://www.archlinux.org/groups/.
 
Перечень доступных групп пакетов можно изучить, посетив https://www.archlinux.org/groups/.
  
{{Note (Русский)|Если не будет использована опция {{ic|--needed}}, то при установке группы будут переустановлены все ранее установленные в систему и принадлежащие этой группе пакеты (даже если установленные в системе пакеты будут иметь последнюю доступную версию).}}
+
{{Note (Русский)|Если пакет в списке уже установлен, он будет переустановлен даже если была установлена последняя версия. Это поведение можно изменить опцией {{ic|--needed}}.}}
  
{{Warning (Русский)|1=Перед установкой пакетов '''не''' обновляйте список пакетов без последующего [[#Обновление пакетов|обновления]] системы (например, {{ic|pacman -Sy ''имя_пакета''}}): могут возникнуть проблемы с зависимостями. Смотрите раздел [[#Частичные обновления не поддерживаются]] и ветку форума https://bbs.archlinux.org/viewtopic.php?id=89328}}
+
{{Warning (Русский)|1=Перед установкой пакетов '''не''' обновляйте список пакетов без последующего [[#Обновление пакетов|обновления]] системы (например, {{ic|pacman -Sy ''имя_пакета''}}), иначе могут возникнуть проблемы с зависимостями. Смотрите раздел [[#Частичные обновления не поддерживаются]] и ветку форума https://bbs.archlinux.org/viewtopic.php?id=89328.}}
  
 
=== Удаление пакетов ===
 
=== Удаление пакетов ===
Line 187: Line 189:
 
Для удаления пакета, его зависимостей и всех пакетов, зависящих от целевого пакета:
 
Для удаления пакета, его зависимостей и всех пакетов, зависящих от целевого пакета:
  
{{Warning (Русский)|Эта операция рекурсивна и должна использоваться с осторожностью, так как появляется риск удалить много потенциально необходимых пакетов}}
+
{{Warning (Русский)|Эта операция рекурсивна и должна использоваться с осторожностью, так как появляется риск удалить много потенциально необходимых пакетов.}}
  
 
  # pacman -Rsc ''имя_пакета''
 
  # pacman -Rsc ''имя_пакета''
Line 195: Line 197:
 
  # pacman -Rdd ''имя_пакета''
 
  # pacman -Rdd ''имя_пакета''
  
pacman создает резервные копии конфигурационных файлов удаляемых приложений и добавляет к ним расширение {{ic|.pacsave}}. Если вы хотите удалить и эти файлы, используйте ключ  {{ic|-n}}:
+
''pacman'' создает резервные копии конфигурационных файлов удаляемых приложений и добавляет к ним расширение ''.pacsave''. Если вы хотите удалить и эти файлы, используйте ключ  {{ic|-n}}:
  
 
  # pacman -Rn ''имя_пакета''
 
  # pacman -Rn ''имя_пакета''
  
{{Note (Русский)|pacman не удаляет конфигурационных файлов, созданных самими приложениями (например, скрытые файлы (имя которых начинается с точки) в вашем домашнем каталоге)}}
+
{{Note (Русский)|''pacman'' не удаляет конфигурационных файлов, созданных самими приложениями (например, скрытые файлы (имя которых начинается с точки) в вашем домашнем каталоге).}}
  
 
=== Обновление пакетов ===
 
=== Обновление пакетов ===
  
pacman может обновить все пакеты системы одной командой. Количество пакетов зависит от того, насколько свежие пакеты установлены в вашей системе. Лучший вариант - синхронизация базы данных репозиториев ''и'' обновление вашей системы одной командой (не будут обновлены 'локальные' пакеты, отсутствующие в настроенных репозиториях):
+
''pacman'' может обновить все пакеты системы одной командой. Это может занять длительное время в зависимости от того, насколько свежие пакеты установлены в вашей системе. Следующая команда выполнит одновременно синхронизацию локальной базы данных репозиториев ''и'' обновление вашей системы (не будут обновлены 'локальные' пакеты, отсутствующие в настроенных репозиториях):
  
 
  # pacman -Syu
 
  # pacman -Syu
  
{{Warning (Русский)|В связи с тем, что Arch является постоянно обновляемым дистрибутивом, пользователям следует помнить, что после или в процессе обновления могут возникнуть непредвиденные трудности. Поэтому обновляться следует с осторожностью. Это означает, что если, например, ожидаются большие изменения или нововведения в обновляемых пакетах, то обновлять систему лучше тогда, когда у пользователя будет достаточно свободного времени и он будет готов к решению возможных проблем}}
+
{{Warning (Русский)|В связи с тем, что Arch является постоянно обновляемым дистрибутивом, пользователям следует помнить, что после или в процессе обновления могут возникнуть непредвиденные трудности. Поэтому обновляться следует с осторожностью. Это означает, что если, например, ожидаются большие изменения или нововведения в обновляемых пакетах, то обновлять систему лучше тогда, когда у вас будет достаточно свободного времени и вы будете готовы к решению возможных проблем.}}
  
pacman является мощным инструментом по управлению пакетами, но он не сможет обработать все возможные ситуации. Если вас это смущает, прочтите статью [[The Arch Way (Русский)]]. Пользователь должен быть внимателен и сам заниматься обеспечением работоспособности своей системы. '''При выполнении обновления системы крайне важно читать и осмысливать всю информацию, которую выводит pacman.''' Если вы изменяли конфигурационный файл, то при обновлении, во избежание перезаписи, будет создан новый конфигурационный файл {{ic|.pacnew}}. pacman предложит объединить его с вашим конфигурационным файлом. Выполнять объединение файлов придется вручную и, лучше всего, сразу после обновления. Для получения дополнительной информации обратитесь к статье [[Pacnew and Pacsave Files|Файлы Pacnew и Pacsave]].
+
''pacman'' является мощным инструментом по управлению пакетами, но он не решает и не пытается решать абсолютно все возможные проблемы. Если вас это смущает, прочтите статью [[Философия Arch]]. Пользователь должен быть внимателен и сам заниматься обеспечением работоспособности своей системы. '''При выполнении обновления системы крайне важно читать и осмысливать всю информацию, которую выводит ''pacman''.''' Если вы изменяли конфигурационный файл, то при обновлении, во избежание перезаписи, будет создан новый конфигурационный файл ''.pacnew''. ''pacman'' предложит объединить его с вашим конфигурационным файлом. Выполнять объединение файлов придется вручную и, лучше всего, сразу после обновления. Для получения дополнительной информации обратитесь к статье [[Файлы Pacnew и Pacsave]].
  
{{Tip (Русский)|Не забывайте, что вывод pacman заносится в {{ic|/var/log/pacman.log}}}}
+
{{Tip (Русский)|Не забывайте, что вывод pacman сохраняется в {{ic|/var/log/pacman.log}}.}}
  
Перед обновлением желательно посетить [https://www.archlinux.org/ главную страницу Arch Linux] и [http://www.archlinux.org.ru/ главную страницу русскоязычного сообщества Arch Linux] и проверить там последние новости (другие варианты - подписаться на [http://archlinux.org.ru/news/feed/ RSS-ленту новостей], [https://mailman.archlinux.org/mailman/listinfo/arch-announce/ почтовую рассылку] или [https://twitter.com/archlinux @archlinux] в Twitter): для обновлений, требующих дополнительного вмешательства (если выполнения указанных pacman-ом действий не достаточно), будут добавлены соответствующие новости.
+
Перед обновлением желательно посетить [https://www.archlinux.org/ главную страницу Arch Linux] и [http://www.archlinux.org.ru/ главную страницу русскоязычного сообщества Arch Linux] и проверить там последние новости (также вы можете подписаться на [http://archlinux.org.ru/news/feed/ RSS-ленту новостей], [https://mailman.archlinux.org/mailman/listinfo/arch-announce/ почтовую рассылку] или [https://twitter.com/archlinux @archlinux] в Twitter): для обновлений, требующих дополнительного вмешательства (если выполнения указанных ''pacman'''ом действий не достаточно), будут добавлены соответствующие новости.
  
Если решить проблемы согласно инструкциям не удаётся, поищите подобные сообщения на форуме. Вполне возможно, что другие пользователи, столкнувшиеся с подобными проблемами, уже предоставили варианты по их решению.
+
Если решить проблемы согласно инструкциям не удается, поищите подобные сообщения на форуме. Вполне возможно, что другие пользователи, столкнувшиеся с подобными проблемами, уже предоставили варианты по их решению.
  
 
=== Запросы к базам данных пакетов ===
 
=== Запросы к базам данных пакетов ===
  
pacman с помощью флага {{ic|-Q}} может искать пакеты в локальной базе данных; смотрите:
+
''pacman'' с помощью флага {{ic|-Q}} может искать пакеты в локальной базе данных:
  
 
  $ pacman -Q --help
 
  $ pacman -Q --help
  
а с помощью флага {{ic|-S}} - в базе данных, синхронизированной с репозиториями; смотрите:
+
а с помощью флага {{ic|-S}} в базе данных, синхронизированной с репозиториями:
  
 
  $ pacman -S --help
 
  $ pacman -S --help
  
pacman умеет искать пакеты в базе данных как по названиям, так и по описаниям:
+
''pacman'' умеет искать пакеты в базе данных как по названиям, так и по описаниям:
  
 
  $ pacman -Ss ''условие1'' ''условие2'' ...
 
  $ pacman -Ss ''условие1'' ''условие2'' ...
 
Поиск пакета по имени в базе данных (вывод без дополнительной информации):
 
 
$ pacman -Sqs  ''условие1'' ''условие2'' ...
 
  
 
Для поиска среди установленных пакетов:
 
Для поиска среди установленных пакетов:
Line 239: Line 237:
 
  $ pacman -Qs ''условие1'' ''условие2'' ...
 
  $ pacman -Qs ''условие1'' ''условие2'' ...
  
Для отображения обширной информации о данном пакете:
+
Для отображения подробной информации об указанном пакете:
  
 
  $ pacman -Si ''имя_пакета''
 
  $ pacman -Si ''имя_пакета''
  
для установленных пакетов:
+
и для установленных пакетов:
  
 
  $ pacman -Qi ''имя_пакета''
 
  $ pacman -Qi ''имя_пакета''
  
Использование сдвоенного флага {{ic|-i}} позволит просмотреть список резервных копий файлов и список измененных файлов:
+
Использование сразу двух флагов {{ic|-i}} позволит просмотреть список резервных копий файлов и список измененных файлов:
  
 
  $ pacman -Qii ''имя_пакета''
 
  $ pacman -Qii ''имя_пакета''
Line 255: Line 253:
 
  $ pacman -Ql ''имя_пакета''
 
  $ pacman -Ql ''имя_пакета''
  
Для неустановленных пакетов используйте [[pkgfile]].
+
Для неустановленных пакетов используйте [[pkgfile (Русский)|pkgfile]].
  
 
Чтобы проверить наличие файлов, установленных пакетом:
 
Чтобы проверить наличие файлов, установленных пакетом:
Line 261: Line 259:
 
  $ pacman -Qk ''имя_пакета''
 
  $ pacman -Qk ''имя_пакета''
  
Использование двойного флага {{ic|k}} ({{ic|-Qkk}}) даст более тщательную проверку.
+
Использование сразу двух флагов {{ic|k}} выполнит более тщательную проверку.
  
 
Чтобы узнать, какому пакету принадлежит нужный файл:
 
Чтобы узнать, какому пакету принадлежит нужный файл:
Line 267: Line 265:
 
  $ pacman -Qo ''/путь/к/файлу/имя_файла''
 
  $ pacman -Qo ''/путь/к/файлу/имя_файла''
  
Для получения списка пакетов, которые больше не требуются как зависимости (пакеты, которые могут быть безопасно удалены или сироты):
+
Для получения списка пакетов, которые больше не требуются как зависимости (пакеты, которые могут быть безопасно удалены или "осиротевшие" пакеты):
  
 
  $ pacman -Qdt
 
  $ pacman -Qdt
 +
 +
Для отображения пакетов, которые были установлены явно и от которых не зависят другие пакеты:
 +
 +
$ pacman -Qet
  
 
Для отображения зависимостей в виде дерева:
 
Для отображения зависимостей в виде дерева:
+
 
 
  $ pactree ''имя_пакета''
 
  $ pactree ''имя_пакета''
  
Для получения списка пакетов, которые зависят от конкретного ''установленного'' пакета, можно воспользоваться утилитой {{ic|whoneeds}} из состава пакета [[pkgtools]]:
+
Для получения списка пакетов, которые зависят от конкретного ''установленного'' пакета, можно использовать утилиту ''whoneeds'' из состава пакета [[pkgtools]]:
  
 
  $ whoneeds ''имя_пакета''
 
  $ whoneeds ''имя_пакета''
 +
 +
или ''pactree'' c флагом {{ic|r}}:
 +
 +
$ pactree -r ''имя_пакета''
 +
 +
Для просмотра других команд обратитесь к статье [[pacman/Советы и приёмы]].
  
 
=== Очистка кэша пакетов ===
 
=== Очистка кэша пакетов ===
  
pacman сохраняет скачиваемые пакеты в каталоге ({{ic|/var/cache/pacman/pkg/}}) и автоматически не удаляет старые или удаленные версии, поэтому следует самостоятельно и обдуманно время от времени чистить этот каталог, чтобы предотвратить его разрастание.
+
''pacman'' сохраняет скачиваемые пакеты в каталоге ({{ic|/var/cache/pacman/pkg/}}) и не удаляет их файлы автоматически, поэтому следует время от времени самостоятельно чистить этот каталог, чтобы предотвратить его разрастание.
  
 
Есть встроенная опция для удаления из кэша всех пакетов, не установленных на данный момент:
 
Есть встроенная опция для удаления из кэша всех пакетов, не установленных на данный момент:
Line 288: Line 296:
  
 
{{Warning (Русский)|
 
{{Warning (Русский)|
* Делайте это только в том случае, если у вас есть определенная уверенность, что установленные пакеты стабильны и вам не потребуется [[Downgrading packages (Русский)|откат версии]], поскольку данная команда удалит все старые версии из каталога кэша, оставив только те, которые установлены в системе на данный момент. Сохранение более старых версий пакетов может пригодиться в тех случаях, когда обновление приводит к неправильной работе системы или отдельных программ. Если не следовать этому совету, может возникнуть ситуация, в которой пользователь будет вынужден использовать альтернативный источник устаревших пакетов, такой как [[Downgrading packages (Русский)#ARM|Arch Rollback Machine]]
+
* Делайте это только в том случае, если у вас есть определенная уверенность, что установленные пакеты стабильны и вам не потребуется [[Downgrading packages (Русский)|откат версии]], поскольку данная команда удалит все старые версии из каталога кэша, оставив только те, которые установлены в системе на данный момент. Сохранение более старых версий пакетов может пригодиться в тех случаях, когда обновление приводит к неправильной работе системы или отдельных программ. Если не следовать этому совету, может возникнуть ситуация, в которой пользователь будет вынужден использовать альтернативный источник устаревших пакетов, такой как [[Откат пакетов#ARM|Arch Rollback Machine]].
* Также есть возможность полностью очистить каталог кэша при помощи команды {{ic|pacman -Scc}}, но ее использование считается плохой практикой, так как, в дополнение к вышесказанному, в случае необходимости вы не сможете переустановить пакет непосредственно из директории кэша, и вам придется скачивать его заново. Настоятельно не рекомендуется использовать эту команду, за исключением случаев, когда у вас есть острая потребность в получении дополнительного дискового пространства
+
* Также есть возможность полностью очистить каталог кэша при помощи команды {{ic|pacman -Scc}}, однако ее использование считается плохой практикой, так как, в дополнение к вышесказанному, в случае необходимости вы не сможете переустановить пакет непосредственно из директории кэша, и вам придется скачивать его заново. Настоятельно не рекомендуется использовать эту команду, за исключением случаев, когда у вас есть острая потребность в освобождении дискового пространства.
 
}}
 
}}
  
В связи с приведенными выше предостережениями рекомендуется использовать альтернативный, зарекомендовавший себя скрипт для получения большего контроля над тем, какие и как много пакетов будет удалено из кэша:
+
В связи с приведенными выше предостережениями рекомендуется использовать специальный скрипт для более гибкой установки того, какие и как много пакетов будут удалены из кэша:
  
* Команда ''paccache'', предоставляемая пакетом {{Pkg|pacman}}, по умолчанию удаляет из кэша все версии каждого пакета, кроме трех недавно использовавшихся: {{bc|$ paccache -r}} Для просмотра всех опций смотрите {{ic|paccache -h}}. ''paccache'', однако, ''не'' будет проверять, установлен ли пает на данный момент, оставляя таким образом удаленные пакеты в кэше
+
* Команда ''paccache'', предоставляемая пакетом {{Pkg|pacman}}, по умолчанию удаляет из кэша все версии каждого пакета, кроме трех недавно использовавшихся: {{bc|$ paccache -r}} Однако, в этом случае ''paccache'' '''не будет''' проверять, установлен ли пакет на данный момент, оставляя удаленные пакеты в кэше. Для удаления из кэша всех версий удаленных пакетов придется запустить команду еще раз с другими опциями: {{bc|$ paccache -ruk0}} Для просмотра всех опций смотрите {{ic|paccache -h}}.
* В качестве альтернативы, которая также удаляет все удаленные пакеты, вы можете использовать пакет {{AUR|pkgcacheclean}} из [[Arch User Repository (Русский)|пользовательского репозитория Arch]]: {{bc|# pkgcacheclean}}
+
* Альтернативный вариант — использование пакета {{AUR|pkgcacheclean}} из [[Arch User Repository (Русский)|AUR]]: {{bc|# pkgcacheclean}}
  
 
=== Дополнительные команды ===
 
=== Дополнительные команды ===
Line 311: Line 319:
 
  # pacman -U /путь/к/пакету/имя_пакета-версия.pkg.tar.xz
 
  # pacman -U /путь/к/пакету/имя_пакета-версия.pkg.tar.xz
  
{{Tip (Русский)|Чтобы сохранить копию локального устанавливаемого пакета в кэше pacman'а, используйте:
+
{{Tip (Русский)|Чтобы сохранить копию локального устанавливаемого пакета в кэше ''pacman'''а, используйте:
  # pacman -U file://путь/к/пакету/имя_пакета-версия.pkg.tar.xz
+
  # pacman -U file:///путь/к/пакету/имя_пакета-версия.pkg.tar.xz
 
}}
 
}}
  
Установить 'не локальный' пакет (но и не из репозиториев, перечисленных в конфигурационном файле pacman'a):
+
Скачать и установить пакет из удаленного источника (но и не из репозиториев, перечисленных в конфигурационном файле pacman'a):
  
 
  # pacman -U <nowiki>http://www.example.com/repo/example.pkg.tar.xz</nowiki>
 
  # pacman -U <nowiki>http://www.example.com/repo/example.pkg.tar.xz</nowiki>
Line 321: Line 329:
 
=== Частичные обновления не поддерживаются ===
 
=== Частичные обновления не поддерживаются ===
  
Arch Linux - постоянно обновляемый дистрибутив, и это значит, что в репозиториях всегда находятся новые версии [[Wikipedia:ru:Библиотека (программирование)|библиотек]]. Разработчики и доверенные пользователи собирают пакеты для репозиториев с использованием этих библиотек. Для пакетов, установленных локально (например, пакетов из [[Arch User Repository (Русский)|AUR]]), нужно самостоятельно решать вопрос с зависимостями согласно данным [[Wikipedia:soname|soname]].
+
Arch Linux постоянно обновляемый дистрибутив, и это значит, что в репозиториях всегда находятся новые версии [[Wikipedia:ru:Библиотека (программирование)|библиотек]]. Разработчики и доверенные пользователи собирают пакеты для репозиториев с использованием этих библиотек. Для пакетов, установленных локально (например, пакетов из [[Arch User Repository (Русский)|AUR]]), нужно самостоятельно решать вопрос с зависимостями согласно данным [[Wikipedia:soname|soname]].
  
 
Именно поэтому частичное обновление '''не поддерживается'''. Не используйте {{ic|pacman -Sy имя_пакета}} или другие эквиваленты, такие как {{ic|pacman -Sy}} и {{ic|pacman -S имя_пакета}}. Всегда перед установкой пакетов синхронизируйте репозитории и обновляйте систему полностью. По той же самой причине нужно быть осторожными при использовании {{ic|IgnorePkg}} и {{ic|IgnoreGroup}}.
 
Именно поэтому частичное обновление '''не поддерживается'''. Не используйте {{ic|pacman -Sy имя_пакета}} или другие эквиваленты, такие как {{ic|pacman -Sy}} и {{ic|pacman -S имя_пакета}}. Всегда перед установкой пакетов синхронизируйте репозитории и обновляйте систему полностью. По той же самой причине нужно быть осторожными при использовании {{ic|IgnorePkg}} и {{ic|IgnoreGroup}}.
  
Если после частичного обновления оказалось, что двоичные файлы не могут найти нужных версий библиотек, '''не "решайште" проблему простым созданием символической ссылки''' (библиотеки '''не имеют обратной совместимости'''). Выполните {{ic|pacman -Syu}}: как правило, этого будет достаточно для устранения проблемы, если она не затронула сам pacman.
+
Если после частичного обновления оказалось, что двоичные файлы не могут найти нужных версий библиотек, '''не "решайте" проблему простым созданием символических ссылок''' (библиотеки '''не имеют обратной совместимости'''). Выполните {{ic|pacman -Syu}}: как правило, этого будет достаточно для устранения проблемы, если она не затронула сам pacman.
 +
 
 +
Скрипт '''checkupdates''', поставляемый с пакетом pacman, позволяет безопасно проверить установленные пакеты на наличие обновления без запуска собственно обновления при этом.
  
 
=== Общие рекомендации ===
 
=== Общие рекомендации ===
  
{{Warning (Русский)|Будьте осторожны при использовании ключа {{ic|--force}}, поскольку это может повлечь за собой серьезные проблемы. Настоятельно рекомендуется использовать эту опцию ''только'' в том случае, когда это указано в новостях Arch}}
+
{{Warning (Русский)|Будьте осторожны при использовании ключа {{ic|--force}}, поскольку это может повлечь за собой серьезные проблемы. Настоятельно рекомендуется использовать эту опцию ''только'' в том случае, когда это указано в инструкциях по обновлению из новостей Arch.}}
 +
 
 +
''pacman'' поставляется с рядом утилит, которые могут значительно упростить ваше взаимодействие с системой. Для просмотра опций каждую из них можно запускать с ключом {{ic|--help}}. Для просмотра списка всех утилит выполните команду:
 +
 
 +
$ pacman -Ql pacman | awk -F"[/ ]" '/\/usr\/bin/ {print $5}'
  
 
== Решение проблем ==
 
== Решение проблем ==
 
=== Обновление пакета XYZ сломало мою систему! ===
 
  
Arch Linux - передовой, постоянно обновляемый дистрибутив. Обновления для пакетов становятся доступными тогда, когда их посчитают достаточно стабильными для повседневного использования. Тем не менее, обновления иногда требуют вмешательства пользователя: может потребоваться обновление конфигурационных файлов, могут измениться дополнительные зависимости и т.д.
+
=== Обновления пакетов сломали мою систему ===
  
Запомните основное правило: не обновляйте систему "вслепую". Всегда внимательно изучайте список обновляемых пакетов. Обращайте внимание на обновление "критически важных" компонентов ({{Pkg|linux}}, {{Pkg|xorg-server}} и т.д.). Если такие пакеты есть, проверьте наличие новостей на https://www.archlinux.org/ или http://www.archlinux.org.ru/ и просмотрите последние сообщения на форуме, возможно, кто-то уже столкнулся с проблемами при обновлении.
+
Arch Linux является дистрибутивом с плавающей системой релизов, позволяющей быстро получать наиболее свежие версии программ. Обновления для пакетов становятся доступными тогда, когда их посчитают достаточно стабильными для повседневного использования. Тем не менее, обновления иногда требуют вмешательства пользователя: может потребоваться обновление конфигурационных файлов, могут измениться дополнительные зависимости и т.д.
  
Если известно/ожидается, что после обновления могут возникнуть проблемы, pacman выведет соответствующее сообщение. Если вы упустили какую-то информацию, которую вывел pacman, то её можно еще раз просмотреть в логе ({{ic|/var/log/pacman.log}}).
+
Запомните основное правило: не обновляйте систему "вслепую". Всегда внимательно изучайте список обновляемых пакетов. Обращайте внимание на обновление "критически важных" компонентов ({{Pkg|linux}}, {{Pkg|xorg-server}} и т.д.). Если такие пакеты есть, проверьте наличие новостей на https://www.archlinux.org/ или http://www.archlinux.org.ru/ и просмотрите последние сообщения на форуме — возможно, кто-то уже столкнулся с проблемами при обновлении и сообщил об этом.
  
Теперь, '''если не было никаких предупреждений от pacman, отсутствуют соответствующие новости на https://www.archlinux.org/ и http://www.archlinux.org.ru/ и нет сообщений относительно обновлений на форуме''', имеет смысл обратиться за помощью на форум, [[IRC Channel|IRC-канал]], или [[Downgrading packages (Русский)|откатить пакет к работающей версии]].
+
Если известно/ожидается, что после обновления могут возникнуть проблемы, сопроводители пакета добавляют в него предупреждение, которое ''pacman'' выведет при обновлении. Если вы упустили какую-то информацию, которую вывел ''pacman'', то ее можно еще раз просмотреть в логе ({{ic|/var/log/pacman.log}}).
  
Перечитайте последний абзац.
+
Теперь, '''если не было никаких предупреждений от ''pacman'', отсутствуют соответствующие новости на https://www.archlinux.org/ и http://www.archlinux.org.ru/ и нет сообщений относительно обновлений на форуме''', имеет смысл обратиться за помощью на форум, [[IRC channel|IRC-канал]], или выполнить [[Откат пакетов]] к работающей версии.
  
=== Я знаю, что для пакета ABC доступны обновления, но pacman сообщает мне, что система в актуальном состоянии! ===
+
=== Для пакета доступно обновление, но pacman сообщает, что система в актуальном состоянии ===
  
 
Зеркала pacman синхронизируются не мгновенно. Иногда может пройти более 24 часов, прежде чем обновления станут доступны вам. Будьте терпеливы или используйте другое зеркало. Страница [https://www.archlinux.org/mirrors/status/ MirrorStatus] поможет вам выбрать обновленное зеркало.
 
Зеркала pacman синхронизируются не мгновенно. Иногда может пройти более 24 часов, прежде чем обновления станут доступны вам. Будьте терпеливы или используйте другое зеркало. Страница [https://www.archlinux.org/mirrors/status/ MirrorStatus] поможет вам выбрать обновленное зеркало.
  
=== При обновлении появляется сообщение об ошибке: "file exists in filesystem" ("файл существует в файловой системе")! ===
+
=== Ошибка "Failed to commit transaction (conflicting files)" ===
  
Дополнительно: ''Взято из https://bbs.archlinux.org/viewtopic.php?id=56373 у Misfit138.''
+
Если вы видите следующее сообщение об ошибке: [https://bbs.archlinux.org/viewtopic.php?id=56373]
  
 
  error: could not prepare transaction
 
  error: could not prepare transaction
 
  error: failed to commit transaction (conflicting files)
 
  error: failed to commit transaction (conflicting files)
  package: /путь/к/файлу exists in filesystem
+
  ''пакет'': ''/путь/к/файлу'' exists in filesystem
 
  Errors occurred, no packages were upgraded.
 
  Errors occurred, no packages were upgraded.
  
Почему это происходит? pacman, при обнаружении конфликтующих файлов, по умолчанию не будет их перезаписывать автоматически. Это не ошибка, так сделано специально.
+
Почему так происходит? ''pacman'', при обнаружении конфликтующих файлов, не будет их перезаписывать автоматически. Это не ошибка, так сделано специально.
 
Проблема решается тривиально. Сначала проверьте, не принадлежит ли файл другому пакету ({{ic|pacman -Qo /путь/к/файлу}}). Если принадлежит, создайте [[Reporting Bug Guidelines (Русский)|отчет об ошибке]]. Если проблемный файл не нужен другим пакетам, переименуйте его и перезапустите команду обновления. Если в дальнейшем проблем не возникнет, то старый файл можно удалить.
 
 
Если программа была установлена вручную без использования pacman или его оболочек, вам нужно будет удалить программу и все ее файлы, а затем выполнить установку при помощи pacman.
 
 
Информация о каждом установленном файле хранится в файле с метаданными пакета {{ic|/var/lib/pacman/local/$имя_пакета-$версия/файлы}}. При повреждении этого файла (он может быть пустым или отсутствовать) во время обновления пакета и будет получена ошибка "file exists in filesystem" ("файл существует в файловой системе"). Обычно такие ошибки возникают во время установки или обновления всего лишь одного пакета, поэтому вместо ручного переименования или удаления конфликтующих файлов, принадлежащих данному пакету, выполните {{ic|pacman -S --force $имя_пакета}}. После этой команды pacman принудительно перезапишет эти файлы.
 
 
Никогда '''не''' запускайте {{ic|pacman -Syu --force}}.
 
  
=== При установке пакета я получаю сообщение об ошибке: "not found in sync db" ("не найдено в синхронизированной базе данных") ===
+
Проблема решается тривиально. Сначала проверьте, не принадлежит ли файл другому пакету ({{ic|pacman -Qo ''/путь/к/файлу''}}). Если принадлежит, создайте [[Reporting bug guidelines (Русский)|отчет об ошибке]]. Если проблемный файл не нужен другим пакетам, переименуйте его и перезапустите команду обновления. Если в дальнейшем проблем не возникнет, то старый файл можно удалить.
  
Для начала убедитесь, что пакет вообще существует (и вы нигде не опечатались!). Если пакет существует, то проблема может быть в том, что ваша база пакетов не синхронизирована с репозиториями или репозитории неправильно настроены. Для принудительного обновления списка пакетов и всей системы попробуйте выполнить {{ic|pacman -Syyu}}.
+
Если программа была установлена вручную без использования ''pacman'' или его оболочек — например, при помощи команды {{ic|make install}}, вам нужно будет удалить программу и все ее файлы, а затем выполнить установку при помощи ''pacman''. Смотрите также раздел [[pacman tips#Identify files not owned by any package]].
  
=== При установке пакета я получаю сообщение об ошибке: "target not found" ("цель не найдена") ===
+
Информация о каждом установленном файле хранится в файле с метаданными пакета {{ic|/var/lib/pacman/local/''$пакет-$версия''/files}}. При повреждении этого файла (он может быть пустым или отсутствовать) во время обновления пакета и будет получена ошибка {{ic|file exists in filesystem}} ("файл существует в файловой системе"). Обычно такие ошибки возникают во время установки или обновления всего лишь одного пакета. Вместо ручного переименования или удаления конфликтующих файлов, принадлежащих данному пакету, вы можете запустить выборочную команду {{ic|pacman -S --force $пакет}}, чтобы ''pacman'' принудительно перезаписал эти файлы.
  
Во-первых, удостоверьтесь, что пакет существует (и вы не допустили опечаток). Если это так, возможно, ваш список пакетов устарел или репозитории на вашей машине настроены неправильно. Для принудительного обновления списка пакетов и всей системы попробуйте выполнить {{ic|pacman -Syyu}}. <br> Также есть вероятность того, что в вашей системе не включен репозиторий, содержащий данный пакет (например, пакет находится в репозитории ''multilib'', но ''multilib'' не включен в вашем файле ''pacman.conf'').
+
{{Warning (Русский)|Будьте осторожны при использовании ключа {{ic|--force}} (например, {{ic|pacman -Syu --force}}), поскольку это может повлечь за собой серьезные проблемы. Настоятельно рекомендуется использовать эту опцию только в том случае, когда это указано в инструкциях по обновлению из новостей Arch.}}
  
=== pacman несколько раз обновляет один и тот же пакет! ===
+
=== Ошибка "Failed to commit transaction (invalid or corrupted package)" ===
  
Это может быть связано с дублированием записей в {{ic|/var/lib/pacman/local/}}, К примеру, имеется два экземпляра {{ic|linux}}. {{ic|pacman -Qi}} выведет правильную версию, а {{ic|pacman -Qu}} покажет её как устаревшую и, следовательно, требующую обновления.
+
Удалите все файлы ''.part'' (частично скачанные пакеты) из каталога кеша ''pacman'' {{ic|/var/cache/pacman/pkg}} (часто это проявляется при использовании собственной команды {{ic|XferCommand}} в файле {{ic|pacman.conf}}).
  
Решение: удалить лишнюю запись из {{ic|/var/lib/pacman/local/}}.
+
=== Ошибка "Failed to init transaction (unable to lock database)" ===
  
{{Note (Русский)|pacman версии 3.4 в случае обнаружения повторяющихся записей должен вывести сообщение об ошибке, что делает эту заметку устаревшей}}
+
Когда ''pacman'' собирается внести изменения в базу данных пакетов, например, при установке пакета, он создает файл блокировки {{ic|/var/lib/pacman/db.lck}}. Благодаря этому другой экземпляр ''pacman'' не сможет работать в то же самое время, что позволяет избежать повреждения базы.
  
=== pacman сбоит при обновлении! ===
+
Если работа ''pacman'' была прервана во время внесения изменений в базу, этот файл блокировки может остаться не удаленным. Если вы уверены, что на вашей машине не запущено других экземпляров ''pacman'', удалите этот файл блокировки:
  
Если при попытке удаления, переустановки или обновления пакетов pacman падает с ошибкой "database write" ("записи в базу данных"):
+
# rm /var/lib/pacman/db.lck
#Загрузитесь, используя Arch live CD
 
#Смонтируйте корневую файловую систему
 
#Обновите базу данных pacman и всю систему с помощью {{ic|pacman -Syyu}}
 
#Переустановите сломанный пакет через {{ic|pacman -r /путь/к/корневому_разделу -S имя_пакета}}
 
  
=== Я установил программу, используя "make install"; теперь эти файлы не принадлежат ни одному из пакетов! ===
+
=== Ошибка "Not found in sync db" при установке пакета ===
  
При обнаружении "конфликтующих файлов", чтобы их не перезаписывать вручную, можно использовать pacman с ключом {{ic|--force}} ({{ic|pacman -S --force}}). Почитайте раздел [[pacman tips#Identify files not owned by any package|Идентификация файлов, не принадлежащих ни одному пакету]] о скрипте, проверяющем файловую систему на наличие ''брошенных'' файлов.
+
Для начала убедитесь, что пакет вообще существует (и вы нигде не опечатались!). Если пакет существует, то проблема может быть в том, что ваша база пакетов не синхронизирована с репозиториями или репозитории неправильно настроены. Для принудительного обновления списка пакетов и полного обновления всей системы попробуйте выполнить {{ic|pacman -Syyu}}.
{{Warning (Русский)|Будьте осторожны при использовании ключа {{ic|--force}}, поскольку это может повлечь за собой серьезные проблемы. Настоятельно рекомендуется использовать эту опцию ''только'' в том случае, когда это указано в новостях Arch}}
 
  
=== Мне нужен пакет с определенным файлом. Как узнать, какому пакету это файл принадлежит? ===
+
=== Ошибка "Target not found" при установке пакета ===
  
Установите [[pkgfile]], использующий отдельную базу данных со всеми файлами и связанными с ними пакетами.
+
Во-первых, удостоверьтесь, что пакет существует (и вы не допустили опечаток). Если это так, возможно, ваш список пакетов устарел или репозитории на вашей машине настроены неправильно. Для принудительного обновления списка пакетов и полного обновления всей системы попробуйте выполнить {{ic|pacman -Syyu}}.
  
=== pacman полностью неработоспособен! Как мне его переустановить? ===
+
Также есть вероятность того, что в вашей системе не включен репозиторий, содержащий данный пакет — например, пакет находится в репозитории ''multilib'', но ''multilib'' не включен в вашем файле ''pacman.conf''.
  
Если pacman не работает и не получается его восстановить, скачайте вручную пакеты ({{Pkg|openssl}}, {{Pkg|libarchive}} и {{Pkg|pacman}}) и распакуйте их в корневой раздел. Двоичный файл pacman'a будет восстановлен вместе с конфигурационным файлом по умолчанию. Затем, для поддержания целостности базы данных пакетов, переустановите скачанные пакеты стандартными средствами pacman. Дополнительную информацию и пример (устарел) скрипта, автоматизирующего этот процесс, можно найти в [https://bbs.archlinux.org/viewtopic.php?id=95007 этом] сообщении форума.
+
=== Один и тот же пакет обновляется повторно ===
  
=== После обновления системы получаю следующее сообщение об ошибке: "unable to find root device". После перезагрузки система не загружается ===
+
Это может быть связано с дублированием записей в {{ic|/var/lib/pacman/local/}}, например, имеется два экземпляра {{ic|linux}}. {{ic|pacman -Qi}} выведет правильную версию, а {{ic|pacman -Qu}} покажет ее как устаревшую и, следовательно, требующую обновления.
  
Вероятно, при обновлении ядра "поломалась" initramfs (например, при использовании pacman с опцией {{ic|--force}}). Для восстановления работоспособности есть два варианта:
+
Для решения проблемы удалите лишнюю запись из {{ic|/var/lib/pacman/local/}}.
  
# Попробуйте выбрать пункт ''Fallback''. <br> {{Tip (Русский)|Если вы удалили этот пункт по каким-либо причинам, вы можете нажать клавишу {{ic|Tab}} (при использовании Syslinux) или {{ic|e}} (при использовании GRUB), когда на экране появится меню загрузчика, переименовать в {{ic|initramfs-linux-fallback.img}} и нажать {{ic|Enter}} или {{ic|b}} (в зависимости от используемого вами загрузчика), чтобы выполнить загрузку с новыми параметрами}} Когда система загрузится, выполните команду пересборки образа initramfs либо из консоли, либо из терминала (для стандартного ядра {{Pkg|linux}}): <br> {{bc|# mkinitcpio -p linux}}
+
{{Note (Русский)|''pacman'' версии 3.4 в случае обнаружения повторяющихся записей должен вывести сообщение об ошибке, что делает эту заметку устаревшей.}}
# Если это не сработает, загрузите текущий релиз операционной системы Arch (с CD/DVD или USB) и выполните команды: <br> {{Note (Русский)|Если у вас нет текущего релиза, или есть только какой-либо другой "live"-дистрибутив Linux, вы можете выполнить [[Change Root (Русский)|chroot]], используя старый способ. Очевидно, при этом вам придется напечатать больше, чем просто {{ic|arch-chroot}} для запуска соответствующего скрипта}} {{bc|<nowiki>
+
 
# mount /dev/sdxY /mnt        #Ваш корневой раздел
+
=== pacman падает при обновлении ===
# mount /dev/sdxZ /mnt/boot    #Если вы используете отдельный раздел /boot
+
 
# arch-chroot /mnt
+
Если при удалении пакетов ''pacman'' завершает свою работу с ошибкой "database write" ("записи в базу данных"), и после этого попытки переустановки или обновления пакетов завершаются неудачей, сделайте следующее:
# pacman -Syu mkinitcpio systemd linux</nowiki>}} {{Note (Русский)|Если pacman выдает ошибку {{ic|Could not resolve host}}, пожалуйста, [[Network_configuration#Check_the_connection|проверьте ваше соединение с интернет]]}} Переустановка ядра (пакета {{Pkg|linux}}) автоматически перегенерирует образ initramfs при помощи {{ic|mkinitcpio -p linux}}. Нет необходимости дополнительно вводить эту команду. <br> После всего этого рекомендуется выполнить {{ic|exit}}, {{ic|umount /mnt/{boot,} }} и {{ic|reboot}}. {{Note (Русский)|Если вы не можете войти в окружение arch-chroot или chroot, но нуждаетесь в переустановке пакетов, можете использовать команду {{ic|pacman -r /mnt -Syu foo bar}}, чтобы указать менеджеру пакетов pacman ваш корневой раздел}}
+
 
 +
# Загрузитесь, используя Arch live CD.
 +
# Смонтируйте корневую файловую систему.
 +
# Обновите базу данных pacman и всю систему с помощью {{ic|pacman -Syyu}}.
 +
# Переустановите поврежденный пакет через {{ic|pacman -r /путь/к/корневому_разделу -S имя_пакета}}.
 +
 
 +
=== Поиск пакета, содержащего требуемый файл ===
 +
 
 +
Установите [[pkgfile (Русский)|pkgfile]], использующий отдельную базу данных со всеми файлами и связанными с ними пакетами.
 +
 
 +
=== pacman поврежден, и восстановить его не получается ===
 +
 
 +
Если ''pacman'' не работает и не получается его восстановить, скачайте вручную пакеты ({{Pkg|openssl}}, {{Pkg|libarchive}} и {{Pkg|pacman}}) и распакуйте их в корневой раздел. Двоичный файл ''pacman'''a будет восстановлен вместе с конфигурационным файлом по умолчанию. Затем, для поддержания целостности базы данных пакетов, переустановите скачанные пакеты стандартными средствами ''pacman''. Дополнительную информацию и пример (устарел) скрипта, автоматизирующего этот процесс, можно найти в [https://bbs.archlinux.org/viewtopic.php?id=95007 этом] сообщении форума.
 +
 
 +
=== Ошибка "Unable to find root device" после перезагрузки ===
 +
 
 +
Вероятно, при обновлении ядра повредился образ initramfs (например, при использовании pacman с опцией {{ic|--force}}). Для восстановления работоспособности есть два варианта, и первый из них — попробовать режим ''Fallback''.
 +
 
 +
{{Tip (Русский)|Если вы удалили этот пункт по каким-либо причинам, вы можете нажать клавишу {{ic|Tab}} (при использовании Syslinux) или {{ic|e}} (при использовании GRUB), когда на экране появится меню загрузчика, переименовать образ в {{ic|initramfs-linux-fallback.img}} и нажать {{ic|Enter}} или {{ic|b}} (в зависимости от используемого вами загрузчика), чтобы выполнить загрузку с новыми параметрами.}}
 +
 
 +
Когда система загрузится, выполните команду пересборки образа initramfs либо из консоли, либо из терминала (для стандартного ядра {{Pkg|linux}}):
 +
 
 +
# mkinitcpio -p linux
 +
 
 +
Если способ, описанный выше, не сработает, загрузитесь в live-окружение установочного образа Arch и выполните команды:
 +
 
 +
{{Note (Русский)|Если у вас нет текущего релиза, или есть только какой-либо другой "live"-дистрибутив Linux, вы можете выполнить [[Change root (Русский)|chroot]], используя старый способ. Очевидно, при этом вам придется напечатать больше, чем просто {{ic|arch-chroot}} для запуска соответствующего скрипта.}}
 +
 
 +
# mount /dev/sd''xY'' /mnt        # Ваш корневой раздел
 +
# mount /dev/sd''xZ'' /mnt/boot    # Если /boot вынесен на отдельный раздел
 +
# arch-chroot /mnt
 +
# pacman -Syu mkinitcpio systemd linux
 +
 
 +
{{Note (Русский)|Если pacman выдает ошибку {{ic|Could not resolve host}}, пожалуйста, [[Network configuration (Русский)#Проверка подключения|проверьте ваше интернет-соединение]].}}
 +
 
 +
Переустановка ядра (пакета {{Pkg|linux}}) автоматически пересоздаст образ initramfs при помощи {{ic|mkinitcpio -p linux}}. Нет необходимости дополнительно вводить эту команду.
 +
 
 +
После всего этого рекомендуется выполнить {{ic|exit}}, {{ic|umount /mnt/{boot,} }} и {{ic|reboot}}.
 +
 
 +
{{Note (Русский)|Если вы не можете войти в окружение arch-chroot или chroot, но нуждаетесь в переустановке пакетов, можете использовать команду {{ic|pacman -r /mnt -Syu foo bar}}, чтобы указать ''pacman'''у ваш корневой раздел.}}
  
 
=== Signature from "User <email@gmail.com>" is unknown trust, installation failed ===
 
=== Signature from "User <email@gmail.com>" is unknown trust, installation failed ===
  
Следуйте инструкциям из раздела [[pacman-key#Resetting all the keys|Сброс всех ключей]]. Также сперва вы можете попробовать вручную обновить пакет {{Pkg|archlinux-keyring}}, например, так: {{ic|pacman -S archlinux-keyring}}
+
Следуйте инструкциям из раздела [[pacman-key#Resetting all the keys]]. Также сперва вы можете попробовать вручную обновить пакет {{Pkg|archlinux-keyring}}, например, так: {{ic|pacman -S archlinux-keyring}}
  
 
=== Signature from "User <email@archlinux.org>" is invalid, installation failed ===
 
=== Signature from "User <email@archlinux.org>" is invalid, installation failed ===
  
  error: ИмяПакета: signature from "User <email@archlinux.org>" is invalid
+
Это происходит, когда системное время установлено неверно и подписи ключей кажутся устаревшими:
 +
 
 +
  error: ''пакет'': signature from "User <email@archlinux.org>" is invalid
 
  error: failed to commit transaction (invalid or corrupted package (PGP signature))
 
  error: failed to commit transaction (invalid or corrupted package (PGP signature))
  Errors occured, no packages were upgraded.  
+
  Errors occured, no packages were upgraded.
 +
 
 +
Установите [[Time (Русский)|время]] (например, командой {{ic|ntpd -qg}} от имени root) и выполните {{bc|hwclock -w}} от имени root перед тем, как пытаться вновь установить/обновить пакет.
 +
 
 +
=== Ошибка "Warning: current locale is invalid; using default "C" locale" ===
 +
 
 +
Как сказано в тексте ошибки, локаль настроена неправильно. Смотрите статью [[Locale (Русский)]].
 +
 
 +
=== рacman не использует настройки прокси ===
  
Это происходит, когда системное время установлено неверно. Установите [[Time (Русский)|время]] и выполните: {{bc|# hwclock -w}} перед тем, как пытаться вновь установить/обновить пакет.
+
Удостоверьтесь, что соответствующие переменные окружения ({{ic|$http_proxy}}, {{ic|$ftp_proxy}} и т.д.) заданы верно. Если вы используете ''pacman'' вместе с [[Sudo (Русский)|sudo]], необходимо настроить sudo на [[sudo (Русский)#Переменные окружения|передачу переменных окружения среды в pacman]].
  
=== Я продолжаю получать ошибку "failed to commit transaction (invalid or corrupted package)" ===
+
=== Как я могу переустановить все пакеты, сохраняя при этом информацию о том, какие пакеты были явно установлены, а какие установлены в качестве зависимостей? ===
  
Просмотрите каталог {{ic|/var/cache/pacman/pkg}} на предмет наличия файлов с расширением {{ic|*.part}} (частично скачанные пакеты) и удалите их в случае необходимости (часто это проявляется при использовании ручного {{ic|XferCommand}} в файле {{ic|pacman.conf}}).
+
Чтобы переустановить все пакеты из официальных репозиториев, выполните {{ic|pacman -S $(pacman -Qnq)}} (опция {{ic|-S}} сохраняет причину установки по умолчанию).
  
=== Каждый раз, когда я использую pacman, я вижу ошибку 'warning: current locale is invalid; using default "C" locale'. Что мне делать? ===
+
После этого необходимо переустановить все пакеты из неизвестных источников, список которых можно получить командой {{ic|pacman -Qmq}}.
  
Как сказано в тексте ошибки, локаль не настроена правильно. Смотрите статью [[Locale (Русский)]].
+
=== Ошибка "Cannot open shared object file" ===
  
=== Как я могу заставить Pacman использовать мои настройки прокси? ===
+
Скорее всего, это означает, что при выполнении предыдущей операции ''pacman'' удалил или повредил разделяемые библиотеки, необходимые для него самого.
  
Удостоверьтесь, что соответствующие переменные окружения ({{ic|$http_proxy}}, {{ic|$ftp_proxy}} и т.д.) заданы верно. Если вы используете Pacman вместе с [[Sudo (Русский)|sudo]], необходимо настроить sudo на [[sudo#Environment variables|использование переменных окружения в Pacman]].
+
Чтобы выйти из этой ситуации, нужно вручную распаковать необходимые библиотеки в вашу файловую систему. Сперва определите, в каком пакете содержится требуемая библиотека, а затем найдите этот пакет в кэше ''pacman'''a ({{ic|/var/cache/pacman/pkg/}}). Распакуйте разделяемую библиотеку в файловую систему. Это позволит вам запустить ''pacman''.
  
=== Как я могу переустановить все пакеты, сохраняя при этом информацию о том, какие пакеты были явно установлены, а какие установлены в качестве зависимостей? ===
+
Теперь необходимо [[#Установка определенных пакетов|переустановить]] испорченный пакет. При этом обязательно используйте ключ {{ic|--force}}, поскольку вы лишь распаковали системные файлы, но ''pacman'' об этом не знает. ''pacman'' корректно заменит ваш файл разделяемой библиотеки на тот, что имеется в пакете.
 +
 
 +
Вот и все. Обновите оставшуюся часть системы.
 +
 
 +
=== Проблемы с загрузкой пакетов ===
  
Чтобы переустановить все родные (native) пакеты, выполните {{ic|pacman -S $(pacman -Qnq)}} (опция {{ic|-S}} сохраняет причину установки по умолчанию). <br> После этого необходимо переустановить все пакеты из неизвестных источников, список которых можно получить командой {{ic|pacman -Qmq}}.
+
Были сообщения о некоторых сетевых проблемах, которые приводят к невозможности обновления/синхронизации. [https://bbs.archlinux.org/viewtopic.php?id&#61;68944] [https://bbs.archlinux.org/viewtopic.php?id&#61;65728] При обычной установке Arch Linux эти проблемы не появляются, так как стандартный загрузчик файлов при этом заменяется другим (смотрите [[Improve pacman performance (Русский)]]). При установке Arch Linux в [[VirtualBox]] эта проблема также появляется, когда вы используете опцию виртуальной машины ''Host interface'' вместо ''NAT''.
  
==Смотрите также==
+
== Смотрите также ==
  
 
* [https://www.archlinux.org/pacman/libalpm.3.html Страница руководства (man) libalpm(3)]
 
* [https://www.archlinux.org/pacman/libalpm.3.html Страница руководства (man) libalpm(3)]

Revision as of 21:44, 13 December 2017

ro:Pacman

Tango-preferences-desktop-locale.pngЭта страница нуждается в сопроводителеTango-preferences-desktop-locale.png

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

Tango-preferences-desktop-locale.pngЭта статья или раздел нуждается в переводеTango-preferences-desktop-locale.png

Примечания: Обновление pacman до версии 5.0, добавление флага -F и -D [1]. (обсуждение: Talk:Pacman (Русский)#)

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

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

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

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

Contents

Настройка

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

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

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

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

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

IgnorePkg=linux

В случае, если необходимо в строке IgnorePkg перечислить несколько пакетов, разделяйте их имена пробелами или используйте несколько строк IgnorePkg. Также можно использовать глобальные шаблоны (glob patterns). Если вы хотите пропустить обновление каких-либо пакетов единожды, можно также использовать опцию --ignore в командной строке, разделяя имена пакетов запятыми.

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

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

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

IgnoreGroup=gnome

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

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

NoExtract=usr/lib/systemd/system/*

Репозитории

В этом разделе файла pacman.conf указываются репозитории, которые будут использоваться. Их можно указать прямо здесь или подключить из другого файла (например /etc/pacman.d/mirrorlist). Таким образом достаточно поддерживать в актуальном состоянии только один список. Для получения информации по настройке зеркал смотрите статью Зеркала.

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

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

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

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

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

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

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

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

# Пример использования пользовательского репозитория. Обратитесь к справочной странице (man) 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 -S имя_пакета1 имя_пакета2 ...

Для установки списка пакетов при помощи поиска по регулярному выражению (смотрите раздел Операции и синтаксис Bash[broken link: invalid section] и эту ветку форума):

# pacman -S $(pacman -Ssq регулярное_выражение)

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

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

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

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

# pacman -S gnome

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

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

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

— будут выбраны все пакеты в диапазоне с 1 по 10, а также 15;

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

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

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

# pacman -Sg gnome

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

Примечание: Если пакет в списке уже установлен, он будет переустановлен даже если была установлена последняя версия. Это поведение можно изменить опцией --needed.
Важно: Перед установкой пакетов не обновляйте список пакетов без последующего обновления системы (например, pacman -Sy имя_пакета), иначе могут возникнуть проблемы с зависимостями. Смотрите раздел #Частичные обновления не поддерживаются и ветку форума https://bbs.archlinux.org/viewtopic.php?id=89328.

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

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

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

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

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

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

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

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

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

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

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

Обновление пакетов

pacman может обновить все пакеты системы одной командой. Это может занять длительное время в зависимости от того, насколько свежие пакеты установлены в вашей системе. Следующая команда выполнит одновременно синхронизацию локальной базы данных репозиториев и обновление вашей системы (не будут обновлены 'локальные' пакеты, отсутствующие в настроенных репозиториях):

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

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

Совет: Не забывайте, что вывод 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 -Qs условие1 условие2 ...

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

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

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

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

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

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

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

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

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

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

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

Использование сразу двух флагов k выполнит более тщательную проверку.

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

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

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

$ pacman -Qdt

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

$ pacman -Qet

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

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

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

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

или pactree c флагом r:

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

Для просмотра других команд обратитесь к статье pacman/Советы и приёмы.

Очистка кэша пакетов

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

Есть встроенная опция для удаления из кэша всех пакетов, не установленных на данный момент:

# pacman -Sc
Важно:
  • Делайте это только в том случае, если у вас есть определенная уверенность, что установленные пакеты стабильны и вам не потребуется откат версии, поскольку данная команда удалит все старые версии из каталога кэша, оставив только те, которые установлены в системе на данный момент. Сохранение более старых версий пакетов может пригодиться в тех случаях, когда обновление приводит к неправильной работе системы или отдельных программ. Если не следовать этому совету, может возникнуть ситуация, в которой пользователь будет вынужден использовать альтернативный источник устаревших пакетов, такой как Arch Rollback Machine.
  • Также есть возможность полностью очистить каталог кэша при помощи команды pacman -Scc, однако ее использование считается плохой практикой, так как, в дополнение к вышесказанному, в случае необходимости вы не сможете переустановить пакет непосредственно из директории кэша, и вам придется скачивать его заново. Настоятельно не рекомендуется использовать эту команду, за исключением случаев, когда у вас есть острая потребность в освобождении дискового пространства.

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

  • Команда paccache, предоставляемая пакетом pacman, по умолчанию удаляет из кэша все версии каждого пакета, кроме трех недавно использовавшихся:
    $ paccache -r
    Однако, в этом случае paccache не будет проверять, установлен ли пакет на данный момент, оставляя удаленные пакеты в кэше. Для удаления из кэша всех версий удаленных пакетов придется запустить команду еще раз с другими опциями:
    $ paccache -ruk0
    Для просмотра всех опций смотрите paccache -h.
  • Альтернативный вариант — использование пакета pkgcachecleanAUR из AUR:
    # pkgcacheclean

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

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

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

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

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

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

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

Скачать и установить пакет из удаленного источника (но и не из репозиториев, перечисленных в конфигурационном файле pacman'a):

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

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

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

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

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

Скрипт checkupdates, поставляемый с пакетом pacman, позволяет безопасно проверить установленные пакеты на наличие обновления без запуска собственно обновления при этом.

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

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

pacman поставляется с рядом утилит, которые могут значительно упростить ваше взаимодействие с системой. Для просмотра опций каждую из них можно запускать с ключом --help. Для просмотра списка всех утилит выполните команду:

$ pacman -Ql pacman | awk -F"[/ ]" '/\/usr\/bin/ {print $5}'

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

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

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

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

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

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

Для пакета доступно обновление, но pacman сообщает, что система в актуальном состоянии

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

Ошибка "Failed to commit transaction (conflicting files)"

Если вы видите следующее сообщение об ошибке: [2]

error: could not prepare transaction
error: failed to commit transaction (conflicting files)
пакет: /путь/к/файлу exists in filesystem
Errors occurred, no packages were upgraded.

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

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

Если программа была установлена вручную без использования pacman или его оболочек — например, при помощи команды make install, вам нужно будет удалить программу и все ее файлы, а затем выполнить установку при помощи pacman. Смотрите также раздел pacman tips#Identify files not owned by any package.

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

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

Ошибка "Failed to commit transaction (invalid or corrupted package)"

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

Ошибка "Failed to init transaction (unable to lock database)"

Когда pacman собирается внести изменения в базу данных пакетов, например, при установке пакета, он создает файл блокировки /var/lib/pacman/db.lck. Благодаря этому другой экземпляр pacman не сможет работать в то же самое время, что позволяет избежать повреждения базы.

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

# rm /var/lib/pacman/db.lck

Ошибка "Not found in sync db" при установке пакета

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

Ошибка "Target not found" при установке пакета

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

Также есть вероятность того, что в вашей системе не включен репозиторий, содержащий данный пакет — например, пакет находится в репозитории multilib, но multilib не включен в вашем файле pacman.conf.

Один и тот же пакет обновляется повторно

Это может быть связано с дублированием записей в /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 имя_пакета.

Поиск пакета, содержащего требуемый файл

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

pacman поврежден, и восстановить его не получается

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

Ошибка "Unable to find root device" после перезагрузки

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

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

Когда система загрузится, выполните команду пересборки образа initramfs либо из консоли, либо из терминала (для стандартного ядра linux):

# mkinitcpio -p linux

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

Примечание: Если у вас нет текущего релиза, или есть только какой-либо другой "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

Signature from "User <email@archlinux.org>" is invalid, installation failed

Это происходит, когда системное время установлено неверно и подписи ключей кажутся устаревшими:

error: пакет: 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.

Установите время (например, командой ntpd -qg от имени root) и выполните

hwclock -w

от имени root перед тем, как пытаться вновь установить/обновить пакет.

Ошибка "Warning: current locale is invalid; using default "C" locale"

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

рacman не использует настройки прокси

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

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

Чтобы переустановить все пакеты из официальных репозиториев, выполните pacman -S $(pacman -Qnq) (опция -S сохраняет причину установки по умолчанию).

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

Ошибка "Cannot open shared object file"

Скорее всего, это означает, что при выполнении предыдущей операции pacman удалил или повредил разделяемые библиотеки, необходимые для него самого.

Чтобы выйти из этой ситуации, нужно вручную распаковать необходимые библиотеки в вашу файловую систему. Сперва определите, в каком пакете содержится требуемая библиотека, а затем найдите этот пакет в кэше pacman'a (/var/cache/pacman/pkg/). Распакуйте разделяемую библиотеку в файловую систему. Это позволит вам запустить pacman.

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

Вот и все. Обновите оставшуюся часть системы.

Проблемы с загрузкой пакетов

Были сообщения о некоторых сетевых проблемах, которые приводят к невозможности обновления/синхронизации. [3] [4] При обычной установке Arch Linux эти проблемы не появляются, так как стандартный загрузчик файлов при этом заменяется другим (смотрите Improve pacman performance (Русский)). При установке Arch Linux в VirtualBox эта проблема также появляется, когда вы используете опцию виртуальной машины Host interface вместо NAT.

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