Arch Linux: как найти пакет, который предоставляет требование

Вопрос или проблема

Я хотел бы запросить базу данных pacman для пакета, который удовлетворяет требованию: по сути, пакет, который будет установлен, если я выполню pacman -S <требование>.

Похоже, есть три случая:

  • Требование – это имя пакета.
  • Требование – это имя файла или библиотеки.
  • Требование появляется в поле provides другого пакета.

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

Например, требование apache-ant предоставляет пакет ant.
pacman -S apache-ant правильно находит и устанавливает ant.
pacman -Q apache-ant возвращает нужную мне информацию, но только если пакет уже установлен.

Есть ли команда, которая работает аналогично pacman -Q, но не дает сбой, если пакет не установлен локально?

Нет встроенного метода для третьего случая, но я использовал это:

pacprovides(){
    pacman -Si | sed -n '/^Name.*: /{s///;h}; /^Provides.*'"$1"'/{g; p}'
}

hранит имя пакета, gет и pечатает его, когда находит соответствующую строку.

--print показывает цели транзакции:

$ pacman –sync –print libtagparser.so

file:///var/cache/pacman/pkg/cpp-utilities-5.20.0-100-x86_64.pkg.tar.zst

file:///var/cache/pacman/pkg/tagparser-11.5.0-100-x86_64.pkg.tar.zst

Пакет – это последняя цель, обрезанная:

$ pacman –sync –print libtagparser.so | tail -n1 | rev | cut –delimiter=”https://superuser.com/” –fields=1 | cut –delimiter=”-” –fields=4- | rev

tagparser

Это должно сработать

pacman -Ss "^<требование>$"

Это дает все пакеты, которые обеспечивают требование.

Он не скажет, какой будет установлен, но быстрее, чем pacman -Sp

Попробуйте pacman -F string1 string2 ...

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

.

Ответ или решение

Как найти пакет в Arch Linux, который удовлетворяет требованию

Arch Linux — это мощная дистрибуция, известная своей гибкостью и управляемостью. Часто пользователи сталкиваются с необходимостью определить, какой пакет может удовлетворять определённым требованиям. Рассмотрим подробно три случая, с которыми вы можете столкнуться, и предоставим советы по их решению.

1. Требование — это имя пакета

Если вы знаете название пакета, который хотите установить, вы можете просто выполнить следующую команду:

pacman -S <имя_пакета>

Если пакет доступен в репозиториях и не установлен, pacman автоматически его установит. Вы также можете подтвердить наличие пакета, выполнив:

pacman -Q <имя_пакета>

Это покажет информацию о пакете, если он у вас установлен.

2. Требование — это имя файла или библиотеки

Если требуемый элемент — это файл или библиотека, вы можете использовать команду:

pacman -Fy

Это обновит базу данных файлов и должна занять некоторое время. После этого вы сможете выполнить следующую команду:

pacman -F <имя_файла>

Эта команда покажет, какой пакет предоставляет запрашиваемый файл.

3. Требование содержится в поле provides другого пакета

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

Способ 1: Использование кастомной функции в bash

Можно создать функцию, которая поможет вам найти пакет, предоставляющий требование, обрабатывая информацию из базы данных пакетов:

pacprovides() {
    pacman -Si | sed -n '/^Name.*: /{s///;h}; /^Provides.*'"$1"'/{g; p}'
}

Эта функция проходит по списку доступных пакетов и ищет среди них те, которые предоставляют запрашиваемую зависимость.

Способ 2: Использование pacman -Ss

Для получения общего списка пакетов, предоставляющих требование, можно использовать команду:

pacman -Ss "^<требование>$"

Это выдаст все пакеты, которые соответствуют запрашиваемому требованию. Имейте в виду, что такая команда не указывает, какой конкретно пакет будет установлен при выполнении pacman -S <требование>.

Способ 3: Использование pacman -F

Для поиска пакетов по именам файлов или библиотек можно использовать:

pacman -F <строка_поиска>

Эта команда поможет вам найти пакеты, которые содержат указанную строку в их названиях или описаниях.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...