更多好文章见作者电子书集《Linux运维入门指南:生产运维需要掌握的技能》

一、IPS介绍

Oracle Solaris 映像包管理系统 (IPS) 是一个框架,使您可以列出、搜索、安装、更新和删除 Oracle Solaris 11 操作系统的软件包。可以看成是Linux的YUM服务。

IPS 工具提供以下功能。
列出、搜索、安装、限制安装、更新和删除软件包。
列出、添加和删除软件包发布者。更改发布者属性,如搜索优先级和粘滞性。设置发布者属性,如签名策略。
将映像更新到新的操作系统发行版。
创建现有 IPS 软件包系统信息库的副本。创建新的软件包系统信息库。
创建并发布软件包。
创建引导环境。

如果系统能联网,可以直接使用Oracle提供的地址安装软件。
不过一般Solaris都是用来安装数据库,基本上都是不能联网的,就需要设置本地IPS或者集中一台服务提供远程IPS服务。

二、IPS的pkg基本命令

子命令 说明
pkg publisher 列出系统当前活跃的以及被禁用的存储库发布者
pkg set-publisher 在系统发布者列表上添加一个发布者
pkg unset-publisher 在系统发布者列表删除一个发布者
pkg list 列出已安装的软件包
pkg search 在系统活跃发布者列表中搜索软件包,直到找到第一个匹配项
pkg install 安装和更新软件包
pkg uninstall 从系统中御载一个软件包
pkg refresh 更新系统可用软件包的缓存列表(来自活跃发布者)
pkg update 不使用参数,将所有已安装的软件包更新到最新可用的安装版本,或指定一个将更新的软件包
pkg info 显示软件包信息
pkg contents 显示软件包中的文件和目录内容
pkg verify 验证已安装和经过数字签名的软件包
pkg history 显示映像的历史命令记录
pkg help 显示pkg子命令的一些使用信息

三、下载IPS的软件包

Solaris11.3版本创建IPS跟以前版本不一样,Solaris11.3官方提供了脚本创建,更简单方便了。
注册Oracle账号,到官方https://edelivery.oracle.com下载:

其中V78246-01_1of5.zip、V78246-01_2of5.zip、V78246-01_3of5.zip、V78246-01_4of5.zip、V78246-01_5of5.zip五个包是构建IPS所需要的软件源包。

V78247-01.zip安装指南包也要下载,里有有一个说明文档README-zipped-repo.txt和一个脚本文件install-repo.ksh。脚本install-repo.ksh,可以用来自动制作IPS。

四、创建IPS

4.1 创建一个pool

首先在 rpool/repo 下创建一个 ZFS 数据集(假设另外有一个名为 rpool 的 ZFS 池)来托管信息库。
# zfs create -o mountpoint=/repo rpool/repo
# zfs set atime=off rpool/repo

4.2 执行脚本install-repo.ksh

把脚本install-repo.ksh和下载的5个IPS源放在同一目录下,执行脚本
#./install-repo.ksh -d /repo/ -v
Using V78246-01 files for sol-11_3-repo download.
Uncompressing V78246-01_1of5.zip…done.
Uncompressing V78246-01_2of5.zip…done.
Uncompressing V78246-01_3of5.zip…done.
Uncompressing V78246-01_4of5.zip…done.
Uncompressing V78246-01_5of5.zip…done.
Repository can be found in /repo/solaris/.
Initiating repository verification.
pkg://solaris/system/locale 3490/5480 |

整个过程会花点时间。
脚本执行完,本地IPS即创建完成。

我们来看看生成的 /repo下的文件:
# ls -1 /repo
COPYRIGHT
NOTICES
pkg5.repository
publisher
README-repo-iso.txt

4.3 修改设置指向本地IPS

现在,我们已经复制了数据,接下来需要更改默认 IPS 发布者,使其指向这个新信息库。
注意,我们尚未启用允许客户端通过 HTTP 或 HTTPS 连接到此信息库的 IPS 信息库 depot 服务;
目前只能通过标准文件系统访问此信息库。

删除原来官网的地址,添加上新的IPS:
# pkg set-publisher -G http://pkg.oracle.com/solaris/release -g /repo solaris
# pkg publisher
PUBLISHER TYPE STATUS P LOCATION
solaris origin online F file:///repositories/

至此,就可以使用pkg命令使用本地IPS进行软件的安装。

五、IPS的NFS和HTTP的发布方法

如果服务器不多的话,使用本地IPS就可以了。如果有多台服务器,系统版本也一样的话,就只需要一台建设IPS,再使用NFS或者HTTP方式提供给其它服务器使用即可。

5.1 采用NFS方式分布

在一台主机系统上进行本地IPS的部署,然后其它各主机通过NFS的方式进行软件包的获取和升级更新。
NFS发布的方法是在制作本地IPS时,其中创建ZFS文件系统时候需要打开NFS:
#zfs create -o mountpoint=/repo -o sharenfs=on rpool/repo

或者后期添加上NFS共享:
# zfs set share=name=reposhare,path=/repo,prot=nfs rpool/repo
# zfs set sharenfs=on rpool/repo

在其它主机上,先将远程nfs文件系统mount到本地。
dfshares 远程主机IP可以看到share出来的路径:
# dfshares 192.168.0.3
RESOURCE SERVER ACCESS TRANSPORT
192.168.0.3:/repo 192.168.0.3 – –

挂载到本地:
# mount -F nfs 192.168.0.3:/repo /repo

删除无用的IPS源:
# pkg set-publisher -G http://pkg.oracle.com/solaris/release/ solaris
启用新的IPS源:
# pkg set-publisher –g /repo solaris

5.2 采用http方式发布

在创建本地local IPS发布的基础上,通过网络,也可以采用http的方式将IPS包发布到网络里所有的其他solaris 11系统主机。Solaris 11带有一个pkg/server的web服务程序应用包,首先将应用enable起来,系统将运行pkg.deportd进程来提供服务:
# svccfg -s application/pkg/server setprop pkg/inst_r oot=/export/repoSolaris11
# svccfg -s application/pkg/server setprop pkg/readonly=true
使用ps来查看是否具有pkg.deportd进程:
# ps -ef |grep pkg.depotd
root 1188 1 0 17:43:56 ? 0:08 /usr/bin/python2.6 /usr/lib/pkg.depotd –cfg svc:/application/pkg/server:default
缺省情况下pkg/server程序包使用80端口作为程序pkg.deportd的监听端口,如果系统中有其他应用程序使用80端口,那么就必须使用以下命令改变pkg.deportd的监听端口:
# svccfg -s application/pkg/server setprop pkg/port=port_number
port_number可以根据系统具体情况进行设定。
修改好端口号以及定制好其他属性后,就可以重新启动web服务进程了:
# svcadm refresh application/pkg/server
# svcadm enable application/pkg/server

至此可以通过pkg set-publisher进行发布了:
# pkg set-publisher -G ’*’ -M ’*’ -g http://localhost:port_number/ solaris
客户端可以直接使用pkg set-publisher设置http服务端的分布,然后可以通过浏览器或者pkg命令直接管理和安装软件包和update系统了。

浏览器访问界面: