Поиск по сайту:

Начало работы с командами Pacman в дистрибутивах Linux на базе Arch


Кратко. В этом руководстве для начинающих показано, что можно делать с командами pacman в Linux, как использовать их для поиска новых пакетов, установки и обновления новых пакетов, а также очистки системы.

Менеджер пакетов pacman — одно из главных отличий Arch Linux от других основных дистрибутивов, таких как Red Hat и Ubuntu/Debian. Он сочетает в себе простой формат двоичного пакета с простой в использовании системой сборки. Цель pacman — легко управлять пакетами как из официальных репозиториев, так и из собственных сборок пользователя.

Если вы когда-либо использовали дистрибутивы на основе Ubuntu или Debian, возможно, вы использовали команды apt-get или apt. Pacman является эквивалентом в Arch Linux. Если вы только что установили Arch Linux, первое, что вам нужно сделать после установки Arch Linux, — это научиться использовать команды pacman.

В этом руководстве для начинающих я объясню некоторые основные моменты использования команды pacmand, которые вам следует знать для управления вашей системой на базе Arch.

Основные команды pacman, которые должны знать пользователи Arch Linux

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

Установка пакетов с помощью pacman

Вы можете установить один пакет или несколько пакетов с помощью команды pacman следующим образом:

pacman -S _package_name1_ _package_name2_ ...

-S означает синхронизацию. Это означает, что pacman сначала синхронизирует

База данных pacman делит установленные пакеты на две группы в зависимости от причины их установки:

  • установлено явно: пакеты, которые были установлены с помощью общей команды pacman -S или -U.

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

Удалить установленный пакет

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

pacman -R package_name_

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

pacman -Rs _package_name_

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

pacman -Qdtq | pacman -Rs -

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

Pacman предоставляет простой способ обновления Arch Linux. Вы можете обновить все установленные пакеты всего одной командой. Это может занять некоторое время в зависимости от того, насколько обновлена система.

Следующая команда синхронизирует базы данных репозитория и обновляет пакеты системы, исключая «локальные» пакеты, которых нет в настроенных репозиториях:

pacman -Syu
  • S означает синхронизацию

  • y — обновление (локальный кеш)

  • ты за обновление системы

По сути, речь идет о синхронизации с центральным репозиторием (базой данных главных пакетов), обновлении локальной копии базы данных главных пакетов, а затем выполнении обновления системы (путем обновления всех пакетов, для которых доступна более новая версия).

Внимание!

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

Также не забудьте просмотреть соответствующий форум перед обновлением основного программного обеспечения (например, ядра, xorg, systemd или glibc) на предмет обнаруженных проблем.

Частичные обновления не поддерживаются в таких периодических выпусках, как Arch и Manjaro. Это означает, что когда новые версии библиотек помещаются в репозитории, все пакеты в репозиториях необходимо пересобрать с использованием библиотек. Например, если два пакета зависят от одной и той же библиотеки, обновление только одного пакета может привести к поломке другого пакета, который зависит от более старой версии библиотеки.

Используйте pacman для поиска пакетов

Pacman запрашивает локальную базу данных пакетов с флагом -Q, базу данных синхронизации с флагом -S и базу данных файлов с флагом -F.

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

pacman -Ss _string1_ _string2_ ...

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

pacman -Qs _string1_ _string2_ ...

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

pacman -F _string1_ _string2_ ...

Чтобы просмотреть дерево зависимостей пакета:

pactree _package_naenter code hereme_

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

Pacman хранит загруженные пакеты в /var/cache/pacman/pkg/ и не удаляет старые или неустановленные версии автоматически. Это имеет некоторые преимущества:

  1. Это позволяет понизить версию пакета без необходимости получения предыдущей версии из других источников.

  2. Удаленный пакет можно легко переустановить непосредственно из папки кэша.

Однако необходимо периодически очищать кеш, чтобы предотвратить увеличение размера папки.

Скрипт pacache(8), входящий в состав пакета pacman-contrib, по умолчанию удаляет все кэшированные версии установленных и неустановленных пакетов, за исключением трех последних:

paccache -r

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

pacman -Sc

Чтобы удалить все файлы из кеша, дважды используйте переключатель очистки. Это наиболее агрессивный подход, который ничего не оставит в папке кеша:

pacman -Scc

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

Установите «локальный» пакет не из удаленного репозитория:

pacman -U _/path/to/package/package_name-version.pkg.tar.xz_

Установите «удаленный» пакет, не содержащийся в официальном репозитории:

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

Бонус: устранение распространенных ошибок с помощью pacman.

Вот некоторые распространенные ошибки, с которыми вы можете столкнуться при управлении пакетами с помощью pacman.

Не удалось подтвердить транзакцию (конфликтующие файлы)

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

error: could not prepare transaction
error: failed to commit transaction (conflicting files)
package: /path/to/file exists in filesystem
Errors occurred, no packages were upgraded.

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

Безопасный способ решить эту проблему — сначала проверить, принадлежит ли файл другому пакету (pacman -Qo /path/to/file). Если файл принадлежит другому пакету, отправьте отчет об ошибке. Если файл не принадлежит другому пакету, переименуйте файл, который «существует в файловой системе», и повторно введите команду обновления. Если все пойдет хорошо, файл можно будет удалить.

Вместо того, чтобы вручную переименовывать, а затем удалять все файлы, принадлежащие рассматриваемому пакету, вы можете явно запустить pacman -S –overwrite glob package, чтобы заставить pacman перезаписать файлы, которые соответствует glob.

Не удалось зафиксировать транзакцию (неверный или поврежденный пакет)

Найдите файлы .part (частично загруженные пакеты) в /var/cache/pacman/pkg/ и удалите их. Это часто вызвано использованием специального XferCommand в pacman.conf.

Не удалось инициировать транзакцию (невозможно заблокировать базу данных)

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

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

Проверьте, содержит ли процесс файл блокировки:

lsof /var/lib/pacman/db.lck

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

rm /var/lib/pacman/db.lck

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

Надеюсь, вам понравится моя скромная попытка объяснить основные команды pacman. Пожалуйста, оставляйте свои комментарии ниже и не забудьте подписаться на наши социальные сети. Будьте в безопасности!

Статьи по данной тематике: