2

Я пытаюсь скачать драйвер AUR для установки на вновь установленную систему (без подключения к интернету), однако, когда я печатаю

makepkg -s

Это требует, чтобы другие пакеты были установлены. Поскольку в этой системе нет Интернета, я хотел бы загрузить эти пакеты (и все их зависимости) с другого компьютера, подключенного к Интернету, а затем установить его в новой системе. На сайте archlinux я нашел руководство по установке пакетов в автономном режиме. С помощью

pacman -Sp <package_name> > /myPackages.list

Создадим список всех пакетов, которые я укажу в package_name . Однако мне тоже нужны все их зависимости. Итак, я хочу знать:

  1. Есть ли простой способ сделать это?
  2. Нужно ли вручную вводить команды для каждого необходимого пакета зависимостей?
  3. Можно ли написать сценарий оболочки для этого? Если да, как мне это сделать?

1 ответ1

1

Ответ

Существует программа pactree, которая устанавливается вместе с пакетом pacman .
Он используется для отображения дерева зависимостей для указанного пакета.

Вы можете использовать это так:

pactree -u <package_name>

Однако, в отличие от pacman -Sp <package_name> , pactree принимает только одно имя пакета.

Одно решение

Есть несколько способов обойти эту проблему, но, судя по вашему вопросу, у меня нет ощущения, что вы знакомы со скриптами оболочки (извините, если я ошибаюсь), поэтому я объясню одно решение в деталях:

echo "package_name1 package_name2 ..." | xargs -n 1 pactree -u | sort -u | xargs -n 1 pacman -Sp > /myPackages.list

echo - Встроенная команда оболочки: печатает аргумент в стандартный stdout (с добавленной новой строкой).

| - Pipe: перенаправляет стандартный stdout с левой команды на стандартный stdin правой команды.

xargs - Внешняя команда: принимает стандартный stdin и добавляет его в список аргументов данной команды.
-n 1 - опция xargs : выполнить данную команду один раз для каждого аргумента из stdin .

pactree - Внешняя команда: Показать дерево зависимостей для данного пакета.
-u - опция pactree : вместо графика выведите каждый пакет зависимостей в отдельной строке.

sort - Внешняя команда: сортирует текст из стандартного stdin и записывает его в стандартный stdout .
-u - опция sort : удаляет дубликаты из отсортированного стандартного stdin .
(Это необходимо, потому что некоторые пакеты могут иметь одинаковые зависимости.)

Вы знакомы с остальной частью линии.

Заметка

pacman -Sp сообщит об ошибке, если вы передадите ей пакет из AUR.

РЕДАКТИРОВАТЬ 17.09.2018

Как указывает JdeBP, pactree сейчас находится в пакете pacman-contrib .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .