我有一个包含我需要的每个软件包的目录。我真的不想浏览几十个文件并手动为它们调用 pkgadd。
有没有办法使这个过程自动化或者调用 pkgadd 让它安装目录中的所有内容?
谢谢。
答案1
Solaris 软件包可以存储为单个文件,也可以存储为文件目录树。如果软件包以目录树格式存储,则 -d 选项支持安装多个软件包。您可以使用以下命令pkgtrans
解压软件包文件:
pkgtrans FOObar.pkg /var/tmp/pkgs
这将创建一个目录/var/tmp/pkgs/FOObar
,其中包含组成包的文件和子目录。您可以将所有包解压到同一个位置,然后运行:
pkgadd -d /var/tmp/pkgs all
一次性安装所有这些。
我还没有尝试过,但是 pkgadd-s
选项声称将软件包解压到/var/spool/pkg
,并且不带 -d 的 pkgadd 会在该目录中查找软件包。因此顺序如下:
pkgadd -s file1.pkg
pkgadd -s file2.pkg
...
pkgadd all
也可能有效。
答案2
这应该可以让您入门 - 如果您真的要使用它,您需要美化它并扩展它。目前它无法优雅地处理文件名中的控制字符空格。如果这是在 Solaris 上,您可能需要调整 sh 的位置。
#!/bin/sh
dir=/path/to/dir/with/pkgs
pkgs=`ls $dir`
for i in $pkgs
do
pkgadd $i
done
答案3
pkgadd -d /path/to/directory all
应该可以满足您的要求。但是,如果某些软件包依赖于其他软件包,则all
您需要按照安装顺序列出它们。