У меня есть каталог со всеми необходимыми мне пакетами. Не очень-то хочется просматривать несколько десятков файлов и вручную вызывать для них pkgadd.
Есть ли способ автоматизировать этот процесс или вызвать pkgadd, чтобы он установил все в каталоге?
Спасибо.
Пакеты Solaris могут храниться как один файл или как дерево каталогов файлов. Параметр -d поддерживает установку нескольких пакетов, если они хранятся в формате дерева каталогов. Ты можешь использовать pkgtrans
для распаковки файлов пакетов:
pkgtrans FOObar.pkg /var/tmp/pkgs
Это создаст каталог /var/tmp/pkgs/FOObar
, содержащий файлы и подкаталоги, составляющие пакет. Вы можете распаковать все свои пакеты в одно и то же место, а затем запустить:
pkgadd -d /var/tmp/pkgs all
чтобы установить их все сразу.
Я не пробовал, но pkgadd -s
опция утверждает, что нужно распаковать пакеты в /var/spool/pkg
, а pkgadd без -d ищет пакеты в этом каталоге. Итак, последовательность:
pkgadd -s file1.pkg
pkgadd -s file2.pkg
...
pkgadd all
вероятно также будет работать.
Это должно помочь вам начать работу - вам нужно его улучшить и расширить, если вы действительно собираетесь его использовать. Сейчас он не будет корректно обрабатывать пробелы управляющих символов в именах файлов. И если это на Solaris, вам, вероятно, придется настроить расположение sh.
#!/bin/sh
dir=/path/to/dir/with/pkgs
pkgs=`ls $dir`
for i in $pkgs
do
pkgadd $i
done
pkgadd -d /path/to/directory all
должен делать то, что хочешь. Однако, если некоторые пакеты зависят от других, вместо all
вам нужно будет перечислить их в том порядке, в котором они должны быть установлены.