Назад | Перейти на главную страницу

Установка нескольких пакетов с помощью pkgadd

У меня есть каталог со всеми необходимыми мне пакетами. Не очень-то хочется просматривать несколько десятков файлов и вручную вызывать для них 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 вам нужно будет перечислить их в том порядке, в котором они должны быть установлены.