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

From ArchWiki
Jump to: navigation, search
(Устранение проблем)
m (Fixed mistakes and russian links)
Line 45: Line 45:
 
{{Article summary end}}
 
{{Article summary end}}
  
[[Wikipedia:Package management system|Менеджер пакетов]] '''[https://www.archlinux.org/pacman/ pacman]''' — является одной из основных особенностей Arch Linux. Он сочетает в себе простой формат бинарных пакетов и легкую в использовании систему сборки (смотрите [[Arch Build System]] и [[makepkg]]). '''Pacman''' позволяет пользователям с легкостью управлять и настраивать под себя пакеты, вне зависимости от того, из официального ли они репозитория Arch или собранные самостоятельно.
+
[[Wikipedia:Package management system|Система управления пакетами]] '''[https://www.archlinux.org/pacman/ pacman]''' является одной из основных особенностей Arch Linux. Он сочетает в себе простой формат бинарных пакетов и легкую в использовании систему сборки (смотрите [[Arch Build System]] и [[makepkg]]). '''Pacman''' позволяет пользователям с легкостью управлять и настраивать под себя пакеты, вне зависимости от того, из официального ли они репозитория Arch или собраны самостоятельно.
  
'''Pacman''', синхронизируя пакеты с главным сервером, поддерживает систему в актуальном состоянии. Такая клиент-серверная модель, позволяет скачивать/устанавливать пакеты со всеми требуемыми зависимостями всего одной командой.
+
'''Pacman''', синхронизируя пакеты с главным сервером, поддерживает систему в актуальном состоянии. Такая клиент-серверная модель позволяет скачивать/устанавливать пакеты со всеми требуемыми зависимостями всего одной командой.
  
 
'''Pacman''' написан на языке C и использует формат пакетов {{ic|.pkg.tar.xz}}.
 
'''Pacman''' написан на языке C и использует формат пакетов {{ic|.pkg.tar.xz}}.
Line 57: Line 57:
 
Основные настройки 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].
  
Есть пасхалка, добавив в # Misc options параметр ILoveCandy , то скучные решетки привращаются в пакмена и точки которые он ест :D  
+
Есть пасхалка: при добавлении в # Misc options параметра ILoveCandy скучные решетки превращаются в пакмена и точки, которые он ест :D  
  
 
=== Основные параметры ===
 
=== Основные параметры ===
  
Основные параметры находятся в секции {{ic|[options]}}. Для получения дополнительной информации о параметрах - прочтите страницу man или изучите установленный по умолчанию файл {{ic|pacman.conf}}.
+
Основные параметры находятся в секции {{ic|[options]}}. Для получения дополнительной информации о параметрах прочтите страницу man или изучите установленный по умолчанию файл {{ic|pacman.conf}}.
  
 
==== Пропуск обновления пакетов ====
 
==== Пропуск обновления пакетов ====
  
Для пропуска обновления какого-либо пакета, добавьте его название в строку:
+
Для пропуска обновления какого-либо пакета добавьте его название в строку:
  
 
{{bc|<nowiki>IgnorePkg=имя_пакета</nowiki>}}
 
{{bc|<nowiki>IgnorePkg=имя_пакета</nowiki>}}
  
В случае, если необходимо в строке {{ic|IgnorePkg}} перечислить несколько пакетов - разделяйте имена пакетов пробелами:
+
В случае, если необходимо в строке {{ic|IgnorePkg}} перечислить несколько пакетов, разделяйте их имена пробелами:
  
 
{{bc|<nowiki>IgnorePkg=имя_пакета1 имя_пакета2 имя_пакета3</nowiki>}}
 
{{bc|<nowiki>IgnorePkg=имя_пакета1 имя_пакета2 имя_пакета3</nowiki>}}
Line 81: Line 81:
 
==== Игнорирование установки файлов в систему ====
 
==== Игнорирование установки файлов в систему ====
 
   
 
   
Для пропуска каталогов, в которые должны будут устанавливаться файлы, перечислите эти каталоги в {{Ic|NoExtract}}. Например, для игнорирования установки юнитов [[systemd]]:
+
Для пропуска каталогов, в которые должны будут устанавливаться файлы, перечислите эти каталоги в {{Ic|NoExtract}}. Например, для игнорирования установки юнитов [[systemd (Русский)|systemd]]:
 
   
 
   
 
{{bc|<nowiki>NoExtract=usr/lib/systemd/system/*</nowiki>}}
 
{{bc|<nowiki>NoExtract=usr/lib/systemd/system/*</nowiki>}}
Line 89: Line 89:
 
В этом разделе файла {{ic|pacman.conf}} указываются репозитории, которые будут использоваться. Их можно указать прямо здесь или подключить из другого файла.
 
В этом разделе файла {{ic|pacman.conf}} указываются репозитории, которые будут использоваться. Их можно указать прямо здесь или подключить из другого файла.
  
Все официальные репозитории перечислены в одном файле - {{ic|/etc/pacman.d/mirrorlist}}, для доступа к ним используется переменная {{ic|$repo}}, таким образом достаточно поддерживать в актуальном состоянии только один список.
+
Все официальные репозитории перечислены в одном файле - {{ic|/etc/pacman.d/mirrorlist}}, для доступа к ним используется переменная {{ic|$repo}}; таким образом достаточно поддерживать в актуальном состоянии только один список.
  
Далее приведен пример использования [[mirrors|зеркал]] [[Official Repositories|официальных репозиториев]], которые перечислены в {{ic|/etc/pacman.d/mirrorlist}}.
+
Далее приведен пример использования [[mirrors|зеркал]] [[Official Repositories (Русский)|официальных репозиториев]], которые перечислены в {{ic|/etc/pacman.d/mirrorlist}}.
  
 
{{bc|<nowiki>
 
{{bc|<nowiki>
Line 134: Line 134:
 
</nowiki>}}
 
</nowiki>}}
  
{{Note|Будьте осторожны при использовании репозитория [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 реализован дополнительный уровень безопасности устанавливаемых пакетов - подписи пакетов. Для включения проверки подписей перейдите [[pacman-key|сюда]].
+
В Pacman 4 реализован дополнительный уровень безопасности устанавливаемых пакетов - подписи пакетов. Для включения проверки подписей перейдите [[pacman-key (Русский)|сюда]].
  
 
== Использование  ==
 
== Использование  ==
Line 147: Line 147:
  
 
====Установка определенных пакетов====
 
====Установка определенных пакетов====
Для установки одного пакета или группы пакетов (включая зависимости), используйте следующую команду:
+
Для установки одного пакета или группы пакетов (включая зависимости) используйте следующую команду:
  
 
  # pacman -S имя_пакета1 имя_пакета2 ...
 
  # pacman -S имя_пакета1 имя_пакета2 ...
  
Если пакет имеет несколько версий в разных репозиториях (например в [extra] и [testing]). Можно указать, откуда именно следует установить пакет:
+
Если пакет имеет несколько версий в разных репозиториях (например в [extra] и [testing]), можно указать, откуда именно следует установить пакет:
  
 
  # pacman -S extra/имя_пакета
 
  # pacman -S extra/имя_пакета
Line 159: Line 159:
  
 
  # pacman -S gnome
 
  # pacman -S gnome
будут установлены все пакеты входящие в группу {{ic|gnome}}. Чтобы увидеть список пакетов принадлежащих к группе gnome, выполните:
+
будут установлены все пакеты, входящие в группу {{ic|gnome}}. Чтобы увидеть список пакетов, принадлежащих к группе gnome, выполните:
  
 
  # pacman -Sg gnome
 
  # pacman -Sg gnome
  
Перечень доступных групп пакетов можно изучить посетив 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 185: Line 185:
 
  # pacman -Rsc имя_пакета
 
  # pacman -Rsc имя_пакета
  
По умолчанию pacman создает резервные копии конфигурационных файлов удаляемых приложений с помощью добавления к ним расширения: {{ic|.pacsave}}. Если вы хотите удалить и эти файлы - используйте ключ  {{ic|-n}}:
+
Для удаления пакета, который требуется другому пакету, без удаления зависимого пакета:
 +
 
 +
# pacman -Rdd ''package_name''
 +
 
 +
По умолчанию pacman создает резервные копии конфигурационных файлов удаляемых приложений с помощью добавления к ним расширения {{ic|.pacsave}}. Если вы хотите удалить и эти файлы, используйте ключ  {{ic|-n}}:
  
 
  # pacman -Rn имя_пакета
 
  # pacman -Rn имя_пакета
  
{{Note|pacman не удаляет конфигурационных файлов, созданных самими приложениями (например "dot-файлы" в вашей домашней папке).}}
+
{{Note|pacman не удаляет конфигурационных файлов, созданных самими приложениями (например, "dot-файлы" в вашей домашней папке).}}
  
===Обновление Системы===
+
===Обновление системы===
  
 
pacman может обновить все пакеты системы одной командой. Количество пакетов зависит от того, насколько свежие пакеты стоят в вашей системе. Лучший вариант - синхронизация базы данных репозиториев '''И''' обновление вашей системы одной командой (не будут обновлены пакеты из 'локальных' и не настроенных репозиториев):
 
pacman может обновить все пакеты системы одной командой. Количество пакетов зависит от того, насколько свежие пакеты стоят в вашей системе. Лучший вариант - синхронизация базы данных репозиториев '''И''' обновление вашей системы одной командой (не будут обновлены пакеты из 'локальных' и не настроенных репозиториев):
Line 197: Line 201:
 
  # pacman -Syu
 
  # pacman -Syu
  
{{Warning|В связи с тем, что Arch является постоянно-обновляемым дистрибутивом, пользователям следует помнить, что после или в процессе обновления могут возникнуть непредвиденные трудности. Поэтому обновляться следует с осторожностью. Это означает, что если, например, ожидаются большие изменения или нововведения в обновляемых пакетах, то обновлять систему лучше тогда, когда у пользователя будет достаточно свободного времени и он будет готов к решению возможных проблем.}}
+
{{Warning|В связи с тем, что Arch является постоянно обновляемым дистрибутивом, пользователям следует помнить, что после или в процессе обновления могут возникнуть непредвиденные трудности. Поэтому обновляться следует с осторожностью. Это означает, что если, например, ожидаются большие изменения или нововведения в обновляемых пакетах, то обновлять систему лучше тогда, когда у пользователя будет достаточно свободного времени и он будет готов к решению возможных проблем.}}
  
pacman является мощным инструментом по управлению пакетами, но он не сможет обработать все возможные ситуации. Если вас это смущает - прочтите [[The Arch Way|Путь Arch Linux]]. Пользователь должен быть внимателен и сам заниматься обеспечением работоспособности своей системы. '''При выполнении обновления системы, крайне важно, читать и осмысливать всю информацию которую выводит pacman.''' Если вы изменяли конфигурационный файл, то при обновлении, во избежание перезаписи, будет создан новый конфигурационный файл {{ic|.pacnew}}. pacman предложит объединить его с вашим конфигурационным файлом. Выполнять объединение файлов придется вручную и, лучше всего, сразу после обновления. Для получения дополнительной информации обратитесь к руководству [[Pacnew and Pacsave Files]].
+
pacman является мощным инструментом по управлению пакетами, но он не сможет обработать все возможные ситуации. Если вас это смущает - прочтите [[The Arch Way (Русский)|Путь Arch Linux]]. Пользователь должен быть внимателен и сам заниматься обеспечением работоспособности своей системы. '''При выполнении обновления системы крайне важно читать и осмысливать всю информацию, которую выводит pacman.''' Если вы изменяли конфигурационный файл, то при обновлении, во избежание перезаписи, будет создан новый конфигурационный файл {{ic|.pacnew}}. pacman предложит объединить его с вашим конфигурационным файлом. Выполнять объединение файлов придется вручную и, лучше всего, сразу после обновления. Для получения дополнительной информации обратитесь к руководству [[Pacnew and Pacsave Files]].
  
 
{{Tip|Не забывайте, что вывод pacman заносится в {{ic|/var/log/pacman.log}}.}}
 
{{Tip|Не забывайте, что вывод pacman заносится в {{ic|/var/log/pacman.log}}.}}
  
Перед обновлением желательно посетить [https://www.archlinux.org/ главную страницу Arch Linux], [https://www.archlinux.org.ru/ главную страницу русскоязычного сообщества Arch Linux] и проверить там  последние новости (или подписаться на канал RSS): для обновлений требующих дополнительного вмешательства (если выполнения указанных pacman-ом действий не достаточно) будут добавлены соответствующие новости.
+
Перед обновлением желательно посетить [https://www.archlinux.org/ главную страницу Arch Linux], [https://www.archlinux.org.ru/ главную страницу русскоязычного сообщества Arch Linux] и проверить там  последние новости (или подписаться на канал RSS): для обновлений, требующих дополнительного вмешательства (если выполнения указанных 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 ...
Line 245: Line 249:
 
  $ pacman -Ql имя_пакета
 
  $ pacman -Ql имя_пакета
  
Для получения списка файлов неустановленного пакета можно использовать утилиту {{ic|pkgfile}}, из состава пакета [[pkgtools]], или {{ic|nosr}}, входящую в пакет {{aur|nosr-git}}, который расположен в [[AUR]].
+
Для получения списка файлов неустановленного пакета можно использовать утилиту {{ic|pkgfile}} из состава пакета [[pkgtools]] или {{ic|nosr}}, входящую в пакет {{aur|nosr-git}}, который расположен в [[AUR (Русский)]].
  
Чтобы узнать какому пакету принадлежит нужный файл:
+
Чтобы узнать, какому пакету принадлежит нужный файл:
  
 
  $ pacman -Qo /путь/к/файлу/имя_файла
 
  $ pacman -Qo /путь/к/файлу/имя_файла
Line 267: Line 271:
 
Хорошей практикой явлется сохранение списка всех установленых пакетов. Если ваша система "упала" и её сложно восстановить, pacman может легко переустановить эти пакеты.
 
Хорошей практикой явлется сохранение списка всех установленых пакетов. Если ваша система "упала" и её сложно восстановить, pacman может легко переустановить эти пакеты.
  
Сначала, сохраните в список пакетов (доступных в репозитории):
+
Сначала сохраните в список пакеты (доступные в репозитории):
  
 
  pacman -Qqe | grep -v "$(pacman -Qmq)" > pkglist
 
  pacman -Qqe | grep -v "$(pacman -Qmq)" > pkglist
  
  # безопасная, но и более сложная альтернатива (во избежание удаления частичных совпадений)
+
  безопасная, но и более сложная альтернатива (во избежание удаления частичных совпадений)
  comm -13 <(pacman -Qmq | sort) <(pacman -Qqe | sort) > pkglist
+
  # comm -13 <(pacman -Qmq | sort) <(pacman -Qqe | sort) > pkglist
  
 
Сохраните этот файл на флешке или на другом носителе.
 
Сохраните этот файл на флешке или на другом носителе.
  
Скопируйте файл pkglist в новую систему, перейдите в эту папку.
+
Скопируйте файл pkglist в новую систему, перейдите в эту папку. Для восстановления используйте команду:
 
+
Для восстановления используйте команду:
+
 
  pacman -S $(cat pkglist)
 
  pacman -S $(cat pkglist)
  
=== Получение списка файлов, не принадлежащих любому пакету ===
+
=== Получение списка файлов, не принадлежащих ни одному пакету ===
  
Если вы всегда хотите держать свою систему в чистоте и уважаете [[Путь Arch]], вы должны иногда проверять файлы отсутствующие в базе данных pacman. Эти файлы, зачастую установлены сторонними приложениями с использованием '''./configure; make; make install''' и т.п. Вы можете найти все эти установленные файлы (или симлинки) используя этот простой скрипт:
+
Если вы всегда хотите держать свою систему в чистоте и уважаете [[Путь Arch]], вы должны иногда проверять файлы, отсутствующие в базе данных pacman. Эти файлы зачастую установлены сторонними приложениями с использованием '''./configure; make; make install''' и т.п. Вы можете найти все эти установленные файлы (или симлинки), используя этот простой скрипт:
  
 
  #!/bin/bash
 
  #!/bin/bash
Line 297: Line 299:
 
  #cat non-db.txt | while read i; do pacman -Qo "$i" 2>&1; done | tee test.txt
 
  #cat non-db.txt | while read i; do pacman -Qo "$i" 2>&1; done | tee test.txt
  
Заметьте - все файлы указанные в non-db.txt НЕ БУДУТ удалены без подтверждения. Здесь могут находиться конфигурационные файлы, журналы и др. Используйте этот список только если знаете, что вы делаете.
+
Заметьте, все файлы, указанные в non-db.txt, НЕ БУДУТ удалены без подтверждения. Здесь могут находиться конфигурационные файлы, журналы и др. Используйте этот список только если знаете, что вы делаете.
  
 
=== Дополнительные команды ===
 
=== Дополнительные команды ===
Line 319: Line 321:
 
Удалить из кэша ({{ic|/var/cache/pacman/pkg}}) неустановленные пакеты:
 
Удалить из кэша ({{ic|/var/cache/pacman/pkg}}) неустановленные пакеты:
  
{{Warning|Будут удалены все пакеты из кэша. Поэтому, в случае возникновения проблем после обновлениий - появятся дополнительные трудности, связанные с откатом версий пакетов.}}
+
{{Warning|Будут удалены все пакеты из кэша. Поэтому, в случае возникновения проблем после обновлениий, появятся дополнительные трудности, связанные с откатом версий пакетов.}}
  
 
  # pacman -Sc
 
  # pacman -Sc
Line 329: Line 331:
 
  # pacman -Scc
 
  # pacman -Scc
  
В качестве альтернативы ключам {{ic|-Sc}} и {{ic|-Scc}} - можно использовать пакет {{AUR|Cacheclean}}, доступный в [[AUR]]. Это скрипт на python, который позволяет выборочно очищать кэш pacman'а от старых версий пакетов.
+
{{Tip|В качестве альтернативы ключам {{ic|-Sc}} и {{ic|-Scc}} можно использовать пакет {{AUR|Cacheclean}}, доступный в [[AUR]]. Это скрипт на python, который позволяет выборочно очищать кэш pacman'а от старых версий пакетов}}
  
 
===Частичные обновления официально не поддерживаются===
 
===Частичные обновления официально не поддерживаются===
Arch Linux - постоянно обновляемый дистрибутив, и это значит, что в репозиториях всегда находятся новые версии [[Wikipedia:Library (computing)|библиотек]]. Разработчики и доверенные пользователи собирают пакеты для репозиториев с использованием этих библиотек. Для пакетов, установленных локально (например пакеты из [[Arch User Repository|AUR]]), нужно самостоятельно решать вопрос с зависимостями согласно данным [[Wikipedia:soname|soname]].
+
Arch Linux - постоянно обновляемый дистрибутив, и это значит, что в репозиториях всегда находятся новые версии [[Wikipedia:Library (computing)|библиотек]]. Разработчики и доверенные пользователи собирают пакеты для репозиториев с использованием этих библиотек. Для пакетов, установленных локально (например, пакеты из [[Arch User Repository (Русский)|AUR]]), нужно самостоятельно решать вопрос с зависимостями согласно данным [[Wikipedia:soname|soname]].
  
 
Именно поэтому частичное обновление '''не поддерживается'''. Не используйте {{ic|pacman -Sy package}} или другие эквиваленты {{ic|pacman -Sy}} и {{ic|pacman -S package}}. Всегда перед установкой пакетов синхронизируйте репозитории и обновляйте систему полностью. По той же самой причине нужно быть осторожными при использовании {{ic|IgnorePkg}} и {{ic|IgnoreGroup}}.
 
Именно поэтому частичное обновление '''не поддерживается'''. Не используйте {{ic|pacman -Sy package}} или другие эквиваленты {{ic|pacman -Sy}} и {{ic|pacman -S package}}. Всегда перед установкой пакетов синхронизируйте репозитории и обновляйте систему полностью. По той же самой причине нужно быть осторожными при использовании {{ic|IgnorePkg}} и {{ic|IgnoreGroup}}.
  
Если после частичного обновления оказалось, что бинарные файлы не могут найти нужных версий библиотек и проблему '''не возможно "решить" созданием символической ссылки''' (библиотеки не имеют '''обратной совместимости''') - выполните {{ic|pacman -Syu}}, как правило, этого будет достаточно для устранения проблемы.
+
Если после частичного обновления оказалось, что бинарные файлы не могут найти нужных версий библиотек и проблему '''невозможно "решить" созданием символической ссылки''' (библиотеки не имеют '''обратной совместимости'''), выполните {{ic|pacman -Syu}}, как правило, этого будет достаточно для устранения проблемы.
  
 
== Устранение проблем ==
 
== Устранение проблем ==
Line 342: Line 344:
 
{{FAQ
 
{{FAQ
 
|question=Мне нужно запустить pacman-key --init, но отсутствуют ssh / X или генераторы случайных чисел. Как мне получить энтропию?
 
|question=Мне нужно запустить pacman-key --init, но отсутствуют ssh / X или генераторы случайных чисел. Как мне получить энтропию?
|answer=Для решения проблемы нужно перемещать указатель мыши, нажимать на клавиатуре случайные кнопки или запустить дисковую активность, например с помощью {{ic|updatedb}}. Будьте терпиливы, процесс может затянуться на длительное время. При этом переход в другую консоль, по Alt+F2-6, временно работать не будет.}}
+
|answer=Для решения проблемы нужно перемещать указатель мыши, нажимать на клавиатуре случайные кнопки или запустить дисковую активность, например, с помощью {{ic|updatedb}}. Будьте терпеливы, процесс может затянуться на длительное время. При этом переход в другую консоль, по Alt+F2-6, временно работать не будет.}}
  
 
{{FAQ
 
{{FAQ
 
|question=Мне нужно запустить pacman-key --init через ssh. Как мне получить энтропию?
 
|question=Мне нужно запустить pacman-key --init через ssh. Как мне получить энтропию?
|answer=На целевой машине соберите и установите пакет {{AUR|rng-tools}} из [[AUR]]. Подключитесь через ssh и выполните следующие команды:
+
|answer=На целевой машине соберите и установите пакет {{AUR|rng-tools}} из [[AUR (Русский)]]. Подключитесь через ssh и выполните следующие команды:
 
{{bc|# sed -i 's/0/10/' /etc/conf.d/rngd
 
{{bc|# sed -i 's/0/10/' /etc/conf.d/rngd
 
# rngd -f -r /dev/urandom &
 
# rngd -f -r /dev/urandom &
Line 366: Line 368:
 
{{FAQ
 
{{FAQ
 
|question=Обновление пакета XYZ сломало мою систему!
 
|question=Обновление пакета XYZ сломало мою систему!
|answer=Arch Linux - передовой, постоянно обновляемый дистрибутив. Обновления для пакетов становятся доступными тогда, когда их посчитают достаточно стабильными для повседневного использования. Тем не менее, обновления иногда требуют вмешательства пользователя: может потребоваться обновление конфигурационных файлов, могут измениться дополнительные зависимости, и т.д.
+
|answer=Arch Linux - передовой, постоянно обновляемый дистрибутив. Обновления для пакетов становятся доступными тогда, когда их посчитают достаточно стабильными для повседневного использования. Тем не менее, обновления иногда требуют вмешательства пользователя: может потребоваться обновление конфигурационных файлов, могут измениться дополнительные зависимости и т.д.
  
Запомните основное правило - не обновляйте систему "вслепую". Всегда внимательно изучайте список обновляемых пакетов. Обращайте внимание на обновление "критически важных" компонентов ({{ic|linux}}, {{ic|xorg-server}}, и т.д.). Если такие пакеты есть - проверьте наличие новостей на https://www.archlinux.org/ и просмотрите последние сообщения на форуме, возможно кто-то уже столкнулся с проблемами при обновлении.
+
Запомните основное правило: не обновляйте систему "вслепую". Всегда внимательно изучайте список обновляемых пакетов. Обращайте внимание на обновление "критически важных" компонентов ({{ic|linux}}, {{ic|xorg-server}} и т.д.). Если такие пакеты есть, проверьте наличие новостей на https://www.archlinux.org/ и просмотрите последние сообщения на форуме, возможно, кто-то уже столкнулся с проблемами при обновлении.
  
Если известно/ожидается, что после обновления могут возникнуть проблемы - pacman выведет соответствующее сообщение. Если вы упустили какую-то информацию, которую вывел pacman, то её можно еще раз просмотреть в ({{ic|/var/log/pacman.log}}).  
+
Если известно/ожидается, что после обновления могут возникнуть проблемы, pacman выведет соответствующее сообщение. Если вы упустили какую-то информацию, которую вывел pacman, то её можно еще раз просмотреть в {{ic|/var/log/pacman.log}}.  
  
 
Теперь, '''если не было никаких предупреждений от pacman, отсутствуют соответствующие новости на https://www.archlinux.org/ и нет сообщений относительно обновлений на форуме''', имеет смысл обратиться за помощью на форум, [[IRC Channel|IRC-канал]], или [[Downgrading Packages|откатить пакет к работающей версии]].
 
Теперь, '''если не было никаких предупреждений от pacman, отсутствуют соответствующие новости на https://www.archlinux.org/ и нет сообщений относительно обновлений на форуме''', имеет смысл обратиться за помощью на форум, [[IRC Channel|IRC-канал]], или [[Downgrading Packages|откатить пакет к работающей версии]].
Line 377: Line 379:
  
 
{{FAQ
 
{{FAQ
|question=Я знаю что для пакета ABC доступны обновления, но pacman сообщает мне, что система в актуальном состоянии!
+
|question=Я знаю, что для пакета ABC доступны обновления, но pacman сообщает мне, что система в актуальном состоянии!
 
|answer=Зеркала pacman синхронизируются не мгновенно. Иногда может пройти более 24 часов, прежде чем обновления станут доступны вам.  
 
|answer=Зеркала pacman синхронизируются не мгновенно. Иногда может пройти более 24 часов, прежде чем обновления станут доступны вам.  
  
Line 391: Line 393:
 
  Errors occurred, no packages were upgraded.
 
  Errors occurred, no packages were upgraded.
  
Почему это происходит: pacman при обнаружении конфликтующих файлов, по умолчанию, не будет их перезаписывать автоматически. Это не ошибка, так сделано специально.
+
Почему это происходит? pacman, при обнаружении конфликтующих файлов, по умолчанию не будет их перезаписывать автоматически. Это не ошибка, так сделано специально.
 
   
 
   
Вопрос решается тривиально. Сначала проверьте не принадлежит ли файл другому пакету: ({{ic|pacman -Qo /path/to/file}}). Если принадлежит - создайте [[Reporting Bug Guidelines|отчет об ошибке]]. Если проблемный файл не нужен другим пакетам - переименуйте его и перезапустите команду обновления. Если в дальнейшем проблем не возникнет, то старый файл можно удалить.
+
Вопрос решается тривиально. Сначала проверьте, не принадлежит ли файл другому пакету ({{ic|pacman -Qo /path/to/file}}). Если принадлежит, создайте [[Reporting Bug Guidelines (Русский)|отчет об ошибке]]. Если проблемный файл не нужен другим пакетам, переименуйте его и перезапустите команду обновления. Если в дальнейшем проблем не возникнет, то старый файл можно удалить.
 
   
 
   
 
Если программа была установлена вручную, без использования pacman или его оболочек, вам нужно будет удалить программу и все ее файлы, а затем выполнить установку при помощи pacman.
 
Если программа была установлена вручную, без использования pacman или его оболочек, вам нужно будет удалить программу и все ее файлы, а затем выполнить установку при помощи pacman.
 
   
 
   
Информация, о каждом установленном файле, храниться в файле с метаданными пакета {{ic|/var/lib/pacman/local/$package-$version/files}}. При повреждении этого файла (может быть пустым или отсутствовать), во время обновления пакета, и будет получена ошибка - "file exists in filesystem" ("файл существует в файловой системе").
+
Информация о каждом установленном файле хранится в файле с метаданными пакета {{ic|/var/lib/pacman/local/$package-$version/files}}. При повреждении этого файла (он может быть пустым или отсутствовать) во время обновления пакета и будет получена ошибка "file exists in filesystem" ("файл существует в файловой системе").
 
   
 
   
Обычно такие ошибки возникают во время установки или обновления всего лишь одного пакета, поэтому вместо ручного переименования или удаления конфликтующих файлов, принадлежащих данному пакету, выполните {{ic|pacman -S --force $package}}, после этой команды pacman принудительно перезапишет эти файлы.
+
Обычно такие ошибки возникают во время установки или обновления всего лишь одного пакета, поэтому вместо ручного переименования или удаления конфликтующих файлов, принадлежащих данному пакету, выполните {{ic|pacman -S --force $package}}. После этой команды pacman принудительно перезапишет эти файлы.
 
   
 
   
 
Никогда '''не''' запускайте {{ic|pacman -Syu --force}}.
 
Никогда '''не''' запускайте {{ic|pacman -Syu --force}}.
Line 410: Line 412:
 
{{FAQ
 
{{FAQ
 
|question=pacman несколько раз обновляет один и тот же пакет!
 
|question=pacman несколько раз обновляет один и тот же пакет!
|answer=Это может быть связано с дублированием записей в {{ic|/var/lib/pacman/local/}}, к примеру имеется два экземпляра {{ic|linux}}. {{ic|pacman -Qi}} выведет правильную версию, а {{ic|pacman -Qu}} покажет её как устаревшую и, следовательно, требующую обновления.
+
|answer=Это может быть связано с дублированием записей в {{ic|/var/lib/pacman/local/}}, К примеру, имеется два экземпляра {{ic|linux}}. {{ic|pacman -Qi}} выведет правильную версию, а {{ic|pacman -Qu}} покажет её как устаревшую и, следовательно, требующую обновления.
  
 
Решение: удалить лишнюю запись из {{ic|/var/lib/pacman/local/}}.
 
Решение: удалить лишнюю запись из {{ic|/var/lib/pacman/local/}}.
  
{{Note|pacman версии 3.4, в случае обнаружения повторяющихся записей, должен вывести сообщение об ошибке.}}}}
+
{{Note|pacman версии 3.4 в случае обнаружения повторяющихся записей должен вывести сообщение об ошибке.}}}}
  
 
{{FAQ
 
{{FAQ
 
|question=pacman сбоит при обновлении!
 
|question=pacman сбоит при обновлении!
 
|answer=Если при попытке удаления, переустановки или обновления пакетов pacman падает с ошибкой "database write" ("записи в базу данных"):
 
|answer=Если при попытке удаления, переустановки или обновления пакетов pacman падает с ошибкой "database write" ("записи в базу данных"):
#Загрузитесь используя Arch live CD
+
#Загрузитесь, используя Arch live CD
 
#Смонтируйте корневую файловую систему
 
#Смонтируйте корневую файловую систему
 
#Обновите базу данных pacman с помощью {{ic|pacman -Syy}}
 
#Обновите базу данных pacman с помощью {{ic|pacman -Syy}}
Line 425: Line 427:
  
 
{{FAQ
 
{{FAQ
|question=Я установил программу используя {{ic|make install}}; теперь эти файлы не принадлежат ни одному из пакетов!
+
|question=Я установил программу, используя {{ic|make install}}; теперь эти файлы не принадлежат ни одному из пакетов!
 
|answer=При обнаружении "конфликтующих файлов", чтобы их не перезаписывать вручную, можно использовать pacman с ключом {{ic|--force}} ({{ic|pacman -S --force}}).
 
|answer=При обнаружении "конфликтующих файлов", чтобы их не перезаписывать вручную, можно использовать pacman с ключом {{ic|--force}} ({{ic|pacman -S --force}}).
  
Почитайте [[pacman Tips#Identify files not owned by any package]], о скрипте, проверяющем файловую систему на наличие ''брошенных'' файлов.}}
+
Почитайте [[pacman Tips#Identify files not owned by any package]] о скрипте, проверяющем файловую систему на наличие ''брошенных'' файлов.}}
  
 
{{FAQ
 
{{FAQ
|question=Мне нужен пакет с определенным файлом. Как узнать какому пакету это файл принадлежит?
+
|question=Мне нужен пакет с определенным файлом. Как узнать, какому пакету это файл принадлежит?
 
|answer=Установите [[pkgtools]], в его состав входит {{ic|pkgfile}}, использующий отдельную базу данных со всеми файлами и связанными с ними пакетами.}}
 
|answer=Установите [[pkgtools]], в его состав входит {{ic|pkgfile}}, использующий отдельную базу данных со всеми файлами и связанными с ними пакетами.}}
  
 
{{FAQ
 
{{FAQ
|question=pacman полностью не работоспособен! Как мне его переустановить?
+
|question=pacman полностью неработоспособен! Как мне его переустановить?
|answer=Если pacman не работает и не получается его восстановить - скачайте вручную пакеты ({{Pkg|openssl}}, {{Pkg|libarchive}} и {{Pkg|pacman}}) и распакуйте их в корневой раздел. Бинарный pacman будет восстановлен вместе с конфигурационным файлом по умолчанию. Затем, для поддержания целостности базы данных пакетов, переустановите скачанные пакеты стандартными средствами pacman. Дополнительную информацию и пример (устарел) скрипта, автоматизирующего этот процесс, можно найти в [https://bbs.archlinux.org/viewtopic.php?id=95007 этом] сообщении форума.}}
+
|answer=Если pacman не работает и не получается его восстановить, скачайте вручную пакеты ({{Pkg|openssl}}, {{Pkg|libarchive}} и {{Pkg|pacman}}) и распакуйте их в корневой раздел. Бинарный pacman будет восстановлен вместе с конфигурационным файлом по умолчанию. Затем, для поддержания целостности базы данных пакетов, переустановите скачанные пакеты стандартными средствами pacman. Дополнительную информацию и пример (устарел) скрипта, автоматизирующего этот процесс, можно найти в [https://bbs.archlinux.org/viewtopic.php?id=95007 этом] сообщении форума.}}
  
 
{{FAQ
 
{{FAQ
|question=После обновления системы получаю следующее сообщение об ошибке - "unable to find root device", после перезагрузки система не загружается.
+
|question=После обновления системы получаю следующее сообщение об ошибке: "unable to find root device". После перезагрузки система не загружается.
|answer=Вероятно при обновлении ядра "поломалась" initramfs (например при использовании pacman с опцией {{ic|--force}}). Для восстановления работоспособности выполните следующие действия.
+
|answer=Вероятно, при обновлении ядра "поломалась" initramfs (например, при использовании pacman с опцией {{ic|--force}}). Для восстановления работоспособности выполните следующие действия.
  
 
Загрузитесь с Arch live-cd. После загрузки выполните:
 
Загрузитесь с Arch live-cd. После загрузки выполните:
Line 456: Line 458:
  
 
Затем отмонтируйте смонтированные разделы и перезагрузитесь.}}
 
Затем отмонтируйте смонтированные разделы и перезагрузитесь.}}
 +
 +
==Смотрите также==
 +
 +
* [[Common Applications/Utilities#Package management]]

Revision as of 14:28, 27 January 2013

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary heading Template:Article summary link Template:Article summary link Template:Article summary link Template:Article summary link Template:Article summary end

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

NoExtract=usr/lib/systemd/system/*

Репозитории

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

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

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


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

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

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

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

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

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

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

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

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

В Pacman 4 реализован дополнительный уровень безопасности устанавливаемых пакетов - подписи пакетов. Для включения проверки подписей перейдите сюда.

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

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

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

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

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

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

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

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

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

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

# pacman -S gnome

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

# pacman -Sg gnome

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

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

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

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

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

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

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

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

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

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

# pacman -Rdd package_name

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

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

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

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

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

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

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

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

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

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

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

$ pacman -Q --help

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

$ pacman -S --help

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Для получения списка файлов неустановленного пакета можно использовать утилиту pkgfile из состава пакета pkgtools или nosr, входящую в пакет nosr-gitAUR, который расположен в AUR (Русский).

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

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

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

$ pacman -Qdt

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

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

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

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

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

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

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

pacman -Qqe | grep -v "$(pacman -Qmq)" > pkglist
безопасная, но и более сложная альтернатива (во избежание удаления частичных совпадений)
# comm -13 <(pacman -Qmq | sort) <(pacman -Qqe | sort) > pkglist

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

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

pacman -S $(cat pkglist)

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

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

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

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

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

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

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

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

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

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

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

# pacman -U /путь/к/пакету/имя_пакета-version.pkg.tar.xz

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

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

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

Warning: Будут удалены все пакеты из кэша. Поэтому, в случае возникновения проблем после обновлениий, появятся дополнительные трудности, связанные с откатом версий пакетов.
# pacman -Sc

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

Warning: Будут удалены все пакеты из кэша. Выполняйте это только в том случае, если у вас всё нормально работает и вы уверены, что вам не понадобится откатывать какой-либо пакет.
# pacman -Scc
Tip: В качестве альтернативы ключам -Sc и -Scc можно использовать пакет CachecleanAUR, доступный в AUR. Это скрипт на python, который позволяет выборочно очищать кэш pacman'а от старых версий пакетов

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

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

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

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

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

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

Template:FAQ

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