Pacman (Русский)
From ArchWiki
| i18n |
|---|
| Česky |
| Deutsch |
| English |
| Español |
| Français |
| Italiano |
| Nederlands |
| Polski |
| Português de Portugal |
| Romanian |
| Русский |
| 简体中文 |
| 한국어 |
Contents |
[edit] Общее
Arch Linux использует менеджер пакетов Pacman, который соединяет в себе простой формат бинарных пакетов и простую в использовании систему сборки (смотрите ABS), позволяющую пользователям с легкостью управлять и настраивать под себя пакеты, вне зависимости от того, официальные ли они или собранные пользователем. Система репозиториев позволяет пользователям создавать и поддерживать собственные репозитории с собранными пакетами, что способствует росту сообщества (смотрите AUR).
Pacman может держать систему в новейшем состоянии, синхронизируя пакеты с главным сервером, тем самым позволяя сознательному администратору поддерживать систему. Клиент-серверная модель позволяет скачивать/устанавливать пакеты одной командой со всеми требуемыми зависимостями (похоже на apt-get от Debian).
NB: Pacman был написан (на языке С) и поддерживается Джаддом Винетом, создателем Arch Linux. Но он используется и как инструмент по управлению пакетами другими дистрибутивами, например FrugalWare (смотрите также [[1]]), Rubix, UfficioZero (на итальянском, основан на Ubuntu) и, конечно, производными от ArchLinux, Archie и AEGIS.
[edit] Использование
Pacman является универсальным менеджером пакетов, способным скачивать, устанавливать и обновлять пакеты и из репозитория, и собственные локальные, удалять и искать их. Вам только необходимо знать, какой ключ используется функцией для желаемых действий. Вот несколько наиболее часто используемых:
[edit] Установка и удаление пакетов
Перед установкой и обновлением пакетов полезно синхронизировать базу данных локально установленных пакетов с удалёнными репозиториями
pacman -Sy
Для того чтобы установить или обновить один пакет или группу пакетов (включая зависимости), используйте следующую команду:
pacman -S package_name1 package_name2
Иногда пакет имеет несколько версий в разных репозиториях (например в extra и testing). Вы можете указать, какой именно вы хотите установить:
pacman -S extra/package_name
или
pacman -S testing/package_name
Вы можете совмещать параметры, например, эта команда установит пакет и синхронизирует базы данных:
pacman -Sy package_name
Удалить пакет (оставляя все зависимости в системе):
pacman -R package_name
Удалить пакет со всеми зависимостями, не используемыми другими установленными пакетами:
pacman -Rs package_name
[edit] Обновление системы
Pacman может обновить все пакеты системы одной командой. Количество пакетов зависит от того, насколько ваша система современна.
pacman -Su
NB: вы можете синхронизировать базы данных репозиториев И обновить все установленные пакеты одной командой:
pacman -Syu
Хорошо выполнять эту команду каждые несколько дней.
[edit] Запросы к базе данных пакетов
- Поиск пакетов в репозиториях, вы можете указать только часть названия:
pacman -Ss package
- Поиск среди установленных пакетов:
pacman -Qs package
- Вывод информации о пакете:
pacman -Si package pacman -Qi package
- Вывод списка файлов пакета:
pacman -Ql package
- Какой пакет является владельцем файла?
pacman -Qo /path/to/a/file
[edit] Одновременный поиск в репозитории и среди установленных пакетов
Вы можете использовать следующий bash скрипт в качестве эквивалента для одновременного вызова pacman -Ss foo и pacman -Qs foo, для того чтобы узнать, какие из пакетов в выводе установлены на вашей системе. Последние будут помечены звёздочкой.
#!/bin/bash if [ -z "$1" ]; then echo "usage: pacsearch [regex pattern]" echo "usage: pacsearch -h|--help" exit 0 fi if [ "$1" = "-h" -o "$1" = "--help" ]; then echo "usage: pacsearch [regex pattern]" echo " Like pacman -Ss [regex pattern] but installed packages are flagged with a *" echo "usage: pacsearch -h|--help" echo " Prints this message. No other options allowed" exit 0 fi firstchar=`echo "$1" | cut -c1` if [ $firstchar = "-" ]; then echo "Sorry, $1 is not a valid option!" echo "usage: pacsearch [regex pattern]" echo "usage: pacsearch -h|--help" exit 0 fi instpkg=`pacman -Qs $1 | egrep '^[^ ]' | sed 's|^local/||' | sed 's/ .\+$//'` syncdump=`mktemp` pacman -Ss $1 > $syncdump for pkg in $instpkg; do sed -i "s@^\(.\+/$pkg\) @\*\1 @" $syncdump done cat $syncdump
Сохраните этот скрипт в каталоге, включенном в переменную PATH (например, ~/bin/), и назовите его pacsearch. Сделайте его исполняемым с помощью
chmod a+x pacsearch
Теперь если вы напишете, например:
pacsearch ^qt
вывод может выглядеть так:
extra/qca 1.0-1 QT Cryptography Architecture extra/qsynth 0.2.5-1 Qt GUI for fluidsynth *extra/qt 3.3.5-8 The QT gui toolkit. extra/qt-doc 3.3.5-1 The QT gui toolkit documentation. extra/qtella 0.6.5-1 Qtella is a Gnutella client for Linux using QT extra/qtiplot 0.7.7-1 Data analysis and scientific plotting - free clone of Origin extra/qtparted 0.4.5-3 A Partition Magic clone written in C++ using the Qt toolkit extra/qwt 4.2.0-3 Qt Widgets for Technical Applications extra/qwtplot3d 0.2.6-2 Qt/OpenGL-based C++ programming library containing 3d-widgets
В этом случае вы узнаете, что ни один из вышеперечисленных пакетов (кроме самого qt) на вашей системе не установлен.
NB1: был добавлен запрос на flyspray с предложением интегрировать вышеуказанную функциональность в сам pacman, чтобы 'грязные' хитрости bash стали стать ненужными с последующими версиями pacman.
NB2: вы можете изменить этот bash скрипт с помощью этого wiki, для того чтобы установленные пакеты были выделены различными цветами в выводе.
[edit] Другое использование
- Скачать пакет, но не устанавливать его:
pacman -Sw package_name
- Установить локальный пакет (не из репозитория):
pacman -A /путь/к/пакету/package_name-version.pkg.tar.gz
- Очистка кэша pacman`а (/var/cache/pacman/pkg):
pacman -Scc
Для более детальной информацией о возможных ключах обратитесь к pacman --help или man pacman.
[edit] Настройка
Настройки pacman`a находятся в /etc/pacman.conf. Важными секциями являются:
[edit] Основные опции
Основные опции находятся в секции [options]. Есть одна полезная опция IgnorePkg. Например, если вы изменяли или накладывали патч на пакет, добавление его в IgnorePkg укажет pacman'у не обновлять его при выходе следующей версии пакета. Но pacman всё же предупредит вас о том, что доступна более свежая версия, так что в итоге вы можете обновить ваш изменённый пакет. Опция также полезна для БОЛЬШИХ пакетов (например, openoffice-base), если вы хотите избежать скачивания и обновления всего пакета каждый раз, когда в репозитории появляется маленькое изменение. Поскольку pacman всё равно предупредит вас о последней версии, вы можете обновить пакет вручную.
[edit] Репозитории
В этой секции вы указываете используемые репозитории. Они могут быть указаны напрямую или как файл, содержащий список серверов. Последнее удобно для официальных репозиториев, имеющих множество зеркал.
[repository-name] Server = ftp://server.net/repo
[current] Include = /etc/pacman.d/current
За более подробной информацией обратитесь к man pacman.
[edit] Ссылки по теме
Boost Pacman
Colored Pacman output
Downgrade packages
Redownloading all installed packages
Server configuration in pacman.conf
ArchLinux User-community Repository (AUR)
Local repository HOW-TO
Custom local repository with ABS and gensync
Howto Upgrade via Home Network
rucksack
Pacman GUI Frontends