Difference between revisions of "Pacman (Русский)"
m (Fixed mistakes and russian links) |
m (spell check) |
||
Line 269: | Line 269: | ||
=== Получение списка установленных пакетов для быстрого восстановления системы === | === Получение списка установленных пакетов для быстрого восстановления системы === | ||
− | Хорошей практикой | + | Хорошей практикой является сохранение списка всех установленных пакетов. Если ваша система "упала" и её сложно восстановить, pacman может легко переустановить эти пакеты. |
Сначала сохраните в список пакеты (доступные в репозитории): | Сначала сохраните в список пакеты (доступные в репозитории): | ||
− | |||
pacman -Qqe | grep -v "$(pacman -Qmq)" > pkglist | pacman -Qqe | grep -v "$(pacman -Qmq)" > pkglist | ||
− | + | безопасная, но и более сложная альтернатива (во избежание удаления частичных совпадений): | |
− | + | comm -13 <(pacman -Qmq | sort) <(pacman -Qqe | sort) > pkglist | |
Сохраните этот файл на флешке или на другом носителе. | Сохраните этот файл на флешке или на другом носителе. |
Revision as of 01:37, 12 May 2013
ro:Pacman zh-CN:Pacman zh-TW:Pacman 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
.
pacman -Ql pacman | grep bin
Contents
- 1 Конфигурация
- 2 Использование
- 2.1 Установка пакетов
- 2.2 Удаление пакетов
- 2.3 Обновление системы
- 2.4 Запросы к базе данных пакетов
- 2.5 Получение списка установленных пакетов для быстрого восстановления системы
- 2.6 Получение списка файлов, не принадлежащих ни одному пакету
- 2.7 Дополнительные команды
- 2.8 Частичные обновления официально не поддерживаются
- 3 Устранение проблем
- 4 Смотрите также
Конфигурация
Основные настройки 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
Безопасность пакетов
В 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/.
--needed
, то при установке группы будут переустановлены все ранее установленные в систему и принадлежащие этой группе пакеты (даже если установленные в системе пакеты будут иметь последнюю доступную версию).pacman -Sy имя_пакета
): могут возникнуть проблемы с зависимостями. Смотрите разделы [1] и Частичные обновления не поддерживаются. В первую очередь, перед установкой новых пакетов выполняйте полное обновление системы.Удаление пакетов
Для удаления пакета без удаления установленных зависимостей:
# pacman -R имя_пакета
Для удаления пакета со всеми зависимостями, не используемыми другими установленными пакетами:
# pacman -Rs имя_пакета
Для удаления пакета, его зависимостей и всех пакетов, зависящих от целевого пакета:
# pacman -Rsc имя_пакета
Для удаления пакета, который требуется другому пакету, без удаления зависимого пакета:
# pacman -Rdd package_name
По умолчанию pacman создает резервные копии конфигурационных файлов удаляемых приложений с помощью добавления к ним расширения .pacsave
. Если вы хотите удалить и эти файлы, используйте ключ -n
:
# pacman -Rn имя_пакета
Обновление системы
pacman может обновить все пакеты системы одной командой. Количество пакетов зависит от того, насколько свежие пакеты стоят в вашей системе. Лучший вариант - синхронизация базы данных репозиториев И обновление вашей системы одной командой (не будут обновлены пакеты из 'локальных' и не настроенных репозиториев):
# pacman -Syu
pacman является мощным инструментом по управлению пакетами, но он не сможет обработать все возможные ситуации. Если вас это смущает - прочтите Путь Arch Linux. Пользователь должен быть внимателен и сам заниматься обеспечением работоспособности своей системы. При выполнении обновления системы крайне важно читать и осмысливать всю информацию, которую выводит pacman. Если вы изменяли конфигурационный файл, то при обновлении, во избежание перезаписи, будет создан новый конфигурационный файл .pacnew
. pacman предложит объединить его с вашим конфигурационным файлом. Выполнять объединение файлов придется вручную и, лучше всего, сразу после обновления. Для получения дополнительной информации обратитесь к руководству Pacnew and Pacsave Files.
/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
) неустановленные пакеты:
# pacman -Sc
Полная очистка кэша пакетов:
# pacman -Scc
-Sc
и -Scc
можно использовать пакет CachecleanAUR, доступный в AUR. Это скрипт на python, который позволяет выборочно очищать кэш pacman'а от старых версий пакетовЧастичные обновления официально не поддерживаются
Arch Linux - постоянно обновляемый дистрибутив, и это значит, что в репозиториях всегда находятся новые версии библиотек. Разработчики и доверенные пользователи собирают пакеты для репозиториев с использованием этих библиотек. Для пакетов, установленных локально (например, пакеты из AUR), нужно самостоятельно решать вопрос с зависимостями согласно данным soname.
Именно поэтому частичное обновление не поддерживается. Не используйте pacman -Sy package
или другие эквиваленты pacman -Sy
и pacman -S package
. Всегда перед установкой пакетов синхронизируйте репозитории и обновляйте систему полностью. По той же самой причине нужно быть осторожными при использовании IgnorePkg
и IgnoreGroup
.
Если после частичного обновления оказалось, что бинарные файлы не могут найти нужных версий библиотек и проблему невозможно "решить" созданием символической ссылки (библиотеки не имеют обратной совместимости), выполните pacman -Syu
, как правило, этого будет достаточно для устранения проблемы.