Пакетный менеджер Arch Linux


Pacman - это быстрый и удобный менеджер пакетов для Arch Linux. Pacman позволяет установить пакеты, управляет уже установленными пакетами, поддерживает зависимости, группы, установку и удаление хуков. Возможна синхронизация вашей локальной машины с удаленным ftp сервером для автоматического обновления пакетов. Пакеты Pacman'а представляют собой сжатые tar-архивы (.tar.gz).
Начиная с версии 3.0.0, Pacman стал оболочкой к libalpm (“Arch Linux Package Management” library). Эта библиотека позволяет использовать альтернативные оболочки (фронт-энды), например, GUI фронт-энды.
Операции
     -Q, --query   (запрос)
Запрос к базе данных пакетов. Эта операция позволяет просматривать установленные пакеты и их файлы, а также мета-информацию об отдельных пакетах (зависимости, конфликты, дата инсталляции, дата сборки, размер). Это может быть применено в отношении локальной базы данных пакетов или в отношении отдельных .tar.gz пакетов. В первом случае, если имя пакета не было указано в командной строке, все установленные пакеты будут запрошены. Также, с этой операцией могут быть применены различные фильтры к списку пакетов. Смотрите "Опции запроса" ниже.
     -R, --remove (удаление)
Удаляет пакеты из системы. Группы также могут быть указаны для удаления, в этом случае все пакеты, входящие в заданную группу, будут удалены. Файлы, принадлежащие указанному пакету будут удалены и база данных обновится. Большинство файлов конфигурации будет сохранено с расширением .pacsave, если не используется --nosave опция.
Смотрите "Опции удаления" ниже
     -S, --sync (установка/обновление)
Устанавливает или обновляет пакеты. Пакеты устанавливаются непосредственно с ftp серверов, включая все зависимости, необходимые для запуска. Следующая команда загрузит и установит qt и все пакеты - зависимости qt:
pacman -S qt
Если одноименный пакет существует более, чем в одном репозитории, то репозиторий может быть явно указан для уточнения нужного пакета:
pacman -S testing/qt
Также можно указать требуемую версию:
pacman -S "bash>=3.2" (кавычки нужны, чтобы ваша оболочка не интерпретировала ">" как перенаправление в файл)
Группы можно указывать также, как и пакеты. Например, если gnome определен, как группа пакетов:
pacman -S gnome Установит все пакеты, входящие в группу gnome и все зависимости этих пакетов
Могут быть обработаны и взаимозаменяемые пакеты, например:
pacman -S foo сначала будет искать пакет foo. Если foo не найден, то будет искаться пакет, обеспечивающий ту же самую функциональность. Если такой пакет будет найден, он установится
Используйте pacman -Su, чтобы обновить все пакеты, которые устарели. Смотрите "Опции установки/обновления" ниже. При обновлении, Pacman сравнивает версии пакетов, чтобы определить, которые из них нуждаются в обновлении. Вот так происходит сравнение:
               Буквенно-цифровые:
                 1.0a < 1.0alpha < 1.0b < 1.0beta < 1.0p < 1.0pre < 1.0rc < 1.0
               Цифровые:
                 1 < 1.0 < 1.1 < 1.1.1 < 1.2 < 2.0 < 3.0.0
    -T, --deptest (проверка зависимостей)
Проверяет зависимости. Полезно в скриптах, таких как makepkg, для проверки установленных пакетов. Эта операция проверяет каждую зависимость и возвращает список тех, которые в данный момент не удовлетворены в системе. Эта операция не может иметь каких-либо опций. Пример использования:
pacman -T qt "bash>=3.2"
     -U, --upgrade (обновление)
Обновление или добавление пакетов в систему. Может быть указан URL или путь к файлу. Это процесс "удалить-и-добавить".
Смотрите раздел обработка конфигурационных файлов для разъяснения, как Pacman работает с конфигами.
     -V, --version (версия)
Показывает версию Pacman'а.
     -h, --help (помощь)
Показывает синтаксис для заданной операции. Если операция не была задана, то будет приведен общий синтаксис:
pacman -h Покажет общий синтаксис
pacman -Rh Покажет синтаксис операции удаления, и все возможные ее опции с кратким описанием
Опции
     --asdeps
Установить пакет неявно. Другими словами, пакет целиком сам по себе не нужен , а лишь входит как зависимость в другой.
Эта опция полезна для makepkg и других инструментов для сборки из исходников, которым нужно установить зависимости до сборки пакета.
     --asexplicit
Установить пакет явно. Другими словами, подменяет причину установки, чтобы быть установленным явно. Это полезно, если вы хотите пометить зависимость, как явно установленную. В этом случае пакет не может быть удален по обратным связям (с применением опции удаления --recursive).
      -b, --dbpath <'путь'>
Указывает альтернативный путь расположения базы данных (путь по умолчанию “/var/lib/pacman”). Не используйте эту опцию, если не знаете, что делаете. Примечание: это абсолютный путь и корень "/" автоматически не выставлен.

     -d, --nodeps
Пропускает проверку зависимостей. Обычно, Pacman всегда проверяет зависимости пакета, чтобы обеспечить установку оных, а также, чтобы пакеты не имели конфликтов в системе.
     -f, --force
Пропускает проверку конфликтов и перезаписывает конфликтные файлы. Если устанавливаемый пакет содержит файлы, которые уже установлены, с этой опцией все эти файлы будут перезаписаны. Эта опция должна использоваться с осторожностью, в идеале - вообще не использоваться.
Примечание: эта опция может быть полезна, если вы не можете установить пакет по причине существования файлов пакета в системе. Так, например, я имел неосторожность установить версию cups 3.1.1 без интеграции с пакманом. При попытке поставить cups 4.1.2 через pacman -S cups pacman ругался на присутствие файлов от старого cups'а. Как раз для решения таких проблем может пригодиться pacman -Sf cups.
      -r, --root <'путь'>
Указывает альтернативную корневую директорию (по умолчанию "/"). Не должно быть использовано в качестве средства для установки программного обеспечения в "/usr/local" вместо "/usr". Эта опция используется, если вы хотите установить пакет на временный монтированный раздел, который принадлежит другой системе. Примечание: если не указан путь к базе данных и к логу ни в командной строке, ни в pacman.conf, то их местоположение по умолчанию будет в этой корневой директории.
     -v, --verbose
Подробная информация, такая как корневая директория, conf файл, путь к БД, путь к кэшу и так далее.
 
     --debug
Показывать отладочные сообщения. Рекомендуется использовать при предоставлении отчетов о багах.
     --cachedir <'директория'>
Указывает другое местоположение кэша пакетов (по умолчанию это "/var/cache/pacman/pkg"). Может быть задано множество кэш директорий, они будут переданы Pacman'у в том порядке, в котором задавались. Примечание: это абсолютный путь и корень "/" автоматически не выставлен.

     --config <'файл'>
Указывает альтернативный файл конфигурации.
     --logfile <'файл'>
Указывает альтернативный лог файл. Это абсолютный путь, который независим от настройки корневой директории.
     --noconfirm 
Не спрашивать любых подтверждений, таких как "Вы уверены?". Это не очень хорошая идея, если вы хотите запустить Pacman из скрипта.
     --noprogressbar
Не показывать прогрессбар при загрузке файлов. Это может быть полезно для скриптов, где вызывается Pacman и захватывается вывод.

     --noscriptlet
Не выполнять скриптлет, если он существует. Не используйте эту опцию, если не знаете, что делаете.
Опции запроса
     -c, --changelog
Просматривает список изменений пакета. Не каждый пакет имеет список изменений, поэтому он будет показан только при его наличии.

     -d, --deps
Фильтр, который покажет все пакеты, установленные в качестве зависимостей. Эта опция может быть объединена с -t для показа "пакетов-сирот", которые были установлены как зависимости, но больше не требуются ни для одного пакета (-Qdt - эквивалент опции -Qe Pacman'а 3.0.X).

      -e, --explicit 
Фильтр, показывающий явно установленные пакеты. Эта опция может быть объединена с -t для отображения всех пакетов, которые были явно установлены, но не требуются никаким другим пакетам. ( -Qet - эквивалент опции -Qe Pacman'а 2.9.X).
      -g, --groups
Показывает все пакеты, которые находятся в заданной группе. Если имя не указано, отображается список всех пакетов в группах.
     -i, --info
Показать информацию о заданном пакете. Опция -p может быть использована, если запрашивается информация из файла пакета вместо запроса из локальной бд. Передача двух -i или --info флагов покажут файлы резервных копий и состояния их изменений.

     -k --check
Проверяет, все ли файлы, принадлежащие данному пакету присутствуют в системе. Если пакеты не указаны, или не заданы флаги фильтров - проверяет все установленные пакеты.
     -l, --list
Показывает список файлов, принадлежащих заданному пакету. Можно указать несколько пакетов в командной строке.
     -m, --foreign
Фильтр для пакетов, которые не были найдены при синхронизации с базой данных. Обычно, это пакеты, которые были загружены и установлены вручную с --upgrade.
     -o, --owns <'файл'>
Поиск пакета, которому принадлежит файл. Путь может быть относительным и абсолютным.
     -p, --file
Означает, что пакет, заданный в командной строке, является файлом, а не записью в базе данных.  Этот файл будет распакован и запрошен. Полезно использовать вместе с --info и --list.
     -q, --quiet
Показывать меньше информации для некоторых операций запросов. (Полезно, когда вывод Pacman'а обрабатывается в скрипте). Поиск отобразит только имя пакета, и никаких версий, описаний, групп и так далее; владелец будет показываться только в именах пакетов вместо сообщений типа "файлом владеет pkg"; группы отобразят только название пакета и опустят имя группы; список будет содержать только файлы и опустит имена пакетов; проверка покажет только пару имен пакетов и недостающие файлы; Пустые запросы покажут только имена пакетов вместо имен и версий.

     -s, --search <'регулярное выражение'>
Будет просматривать каждый локально установленный пакет или описание пакета на предмет соответствия регулярному выражению. Когда вы задаете несколько условий поиска, то возвращены будут только пакеты, удовлетворяющие ВСЕМ условиям.
     -u, --upgrades
Фильтр, отображающий только устаревшие пакеты в вашей системе. (Используются только версии для поиска устаревших пакетов). Эту опцию желательно применять вместе с синхронизацией с базой данных, используя -Sy.

Опции удаления
     -c, --cascade
Удаляет все целевые пакеты, а также пакеты, которые зависят от одного или более целевых. Операция рекурсивна, и используйте ее с осторожностью, так как она может удалить много потенциально необходимых пакетов.
     -k, --keep
Удалит только записи в базе данных. Все файлы пакета останутся на месте.
     -n, --nosave
Заставляет Pacman игнорировать создание всех резервных копий. Обычно же, когда файл удаляется из системы, база данных проверяется и создает необходимые резервные копии с расширением ".pacsave".
     -s, --recursive
Удаляет указанный пакет, включая все его зависимости, при условии, что (а) они не нужны другим пакетам; и (б) они не были явно установлены пользователем. Операция рекурсивна и является обратным аналогом операции --sync. Помогает сохранить систему в чистоте, без пакетов-сирот. Если вы хотите исключить условие (б), поставьте эту опцию 2 раза (-ss).
     -u, --unneeded
Удаляет цели, которые не понадобятся другим пакетам. В основном, это полезно при удалении группы без использования опции -c, воизбежание нарушения зависимостей.
Опции установки/обновления
     -c, --clean
Удаляет пакеты из кэша, которые на данный момент не установлены, а также текущие неиспользуемые загруженные базы данных. Используйте для увеличения свободного места на жестком диске. Сразу после загрузки Pacman сохраняет пакет в директорию кэша. Кроме того, при каждой "синхронизации" с сервером, сохраняются базы данных, и не удаляются, даже если вы удалите их из файла конфигурации (pacman.conf). Повторите --clean один раз,  чтобы удалить неустановленные пакеты из кэша, поставьте два --clean, чтобы очистить весь кэш. В обоих случаях, у вас будет выбор "да" или "нет" чтобы удалить пакеты и/или неиспользующиеся базы данных.
Если вы используете общий сетевой кэш, смотрите параметр CleanMethod в pacman.conf.
     -g, --groups
Отображение всех пакетов, являющихся членами каждой указанной группы. Если названия групп не будут указаны, перечислятся все группы. Поставьте флаг --groups два раза, чтобы получить список всех групп и их членов.
     -i, --info
Показывает зависимости и другую информацию для данного пакета. Информация ищется по всем репозиториям для соответствующего пакета.
     -l, --list <'репозиторий'>
Показать все пакеты из указанного репозитория. Можно указать несколько репозиториев в командной строке.
     -p, --print-uris
Напечатает URI (ссылку) для каждого пакета, который будет установлен (включая его зависимости). Результат можно перенаправить в файл, и загрузить позже, используя, например, wget.
     -q, --quiet
Показывать меньше информации при некоторых операциях. (Это полезно, когда вывод Pacman'а обрабатывается в сценарии).
При поиске будет показано только имя пакета, и никаких репозиториев, версий, групп и описаний; Список будет содержать только имена пакетов и опустит базы данных и версии; группы выведут только имена пакетов, и опустят названия групп.
     -s, --search <'регулярное выражение'>
Будет искать пакет или описание пакета в удаленной базе данных на предмет соответствия регулярному выражению. Когда вы задаете несколько условий поиска, то возвращены будут только пакеты, удовлетворяющие ВСЕМ условиям.
     -u, --sysupgrade
Обновит все устаревшие пакеты. Каждый установленный в данный момент пакет будет рассмотрен и обновлен при условии сущестования новой версии. Все обновляемые пакеты будут представлены в виде списка, операция продолжится только после подтверждения пользователем. На этом уровне будет произведено разрешение зависимостей, и если необходимо, они  обновятся или доустановятся. Напишите опцию два раза, чтобы включить даунгрейд (возможность использования более старой версии пакета). В этом случае Pacman выберет пакеты, версии которых не совпадают с текущей - полезно, если пользователь хочет откатиться с версии репозитория testing до стабильной.
     -w, --downloadonly
Получить пакеты с сервера, но ничего не устанавливать/обновлять.
     -y, --refresh
Загрузить свежую копию основного списка пакетов с серверов, определенных в pacman.conf. Эта опция обычно используется
при обновлении системы, вместе с --sysupgrade или -u. Передача двух флагов -u в любом случае обновит все списки, даже если они "думают", что и так самые свежие.
     --needed
Не обновлять пакеты, которые на данный момент самые свежие.
     --ignore <'пакет'>
Поручает Pacman'у игнорировать обновление пакета, даже если он доступен. Несколько пакетов указывают, разделяя запятыми.
     --ignoregroup <'группа'>
Поручает Pacman'у игнорировать обновление всех пакетов в указанной группе, даже если доступна новая версия хоть одного из них. Несколько групп указывают, разделяя запятыми.

Обработка конфигурационных файлов

Pacman использует такую же логику, как у rpm для того, чтобы определить действия в отношении конфигов. В процессе обновления будут использованы  3 md5 хэша для каждого файла конфигурации, они определят нужные
действия: один для установленного оригинального файла, один для файла, который будет вот-вот установлен, и один для файла, фактически существующего в файловой системе. Эти 3 хэша сравниваются, и это приводит к следующим результатам:
Оригинальный = X, текущий = X, новый = X
Все три файла одинаковые, поэтому перезапись не будет проблемой для установки нового файла.
Оригинальный = X, текущий = X, новый = Y
Текущий файл такой же, как оригинальный, но новый - отличается. Так как пользователь не изменял оригинальный файл, а новый может содержать усовершенствования и багфиксы - устанавливает новый файл.
Оригинальный = X, текущий = Y, новый = X
Обе версии пакета содержат один и тот же файл, а текущий в файловой системе изменен. Оставляет текущий файл на месте.
Оригинальный = X, текущий = Y, новый = Y
Новый файл совпадает с текущим. Устанавливает новый файл.
Оригинальный = X, текущий = Y, новый = Z
Все 3 файла разные, и поэтому новый файл устанавливается с расширением .pacnew, о чем уведомляет пользователя. Пользователь должен отредактировать текущий файл для внесения необходимых изменений.
Теперь, когда вы ознакомились с переводом man pacman, вы сможете более эффективно управлять пакетами в системе.

Источник статьи: serghost.ru



0 коммент.: (+add yours?)

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.