文章
服务器与存储管理
作者:Alexandre Borges
2013 年 12 月发布
|
首先,我们来谈谈网络。在 Oracle Solaris 11 中,网络发生了很大变化。当务之急不是介绍网络的每个细节,而是向您介绍基础知识。
首先,有一个不错的 GUI(如图 1 所示)可以帮助我们配置 Oracle Solaris 11 网络。要从桌面打开 GUI,请选择 System -> Administration -> Network:

图 1 — 用于配置 Oracle Solaris 11 网络的 GUI
这个新的网络工具告诉我们,我们的网络已使用 DHCP 进行了配置,IP 地址是 192.168.105/24,速度是 1Gb/s,且网络已连接。
您是否还记得我在第 1 部分中,针对从 Live Media DVD 安装 Oracle Solaris 11 时如何才能具有 DHCP 服务提出的要求?其原因是反应性网络配置 (RNC)(之前称为 NWAM)会根据一些规则自动配置网络。
可以根据网络配置文件 (NCP) 这一概念设置一些 RNC 自定义项。例如,这让系统能够根据系统的物理/逻辑位置连接至有线或无线网络。尽管如此,所有有线和无线网络仍保存在图 1 所示的列表中,RNC 将使用有序的连接过程,直至成功连接。顺便说一下,NCP 包含一个或多个网络配置单元 (NCU),后者是存储网络对象配置(如网络接口)的容器。
对于此屏幕中的 Show 框,您可以选择 Network Profile 选项。GUI 显示了两个网络配置文件(参见图 2):Automatic(反应性网络配置)和 DefaultFixed(不受反应性网络配置的控制)。最初,Oracle Solaris 11 是用 RNC(通过 DHCP 服务)配置的,但我们可以放弃这个简单的方法,改为使用 dladm 和 ipadm 命令从终端窗口手动执行所有配置。

图 2 — 网络配置文件
如果从 Automatic 切换到 DefaultFixed,则 Network Preferences 屏幕底部将显示一条消息(如图 3 所示),警告我们必须使用 dladm 和 ipadm 命令完成手动网络配置。

图 3 — Network Preferences 屏幕底部的消息
Show 框中的下一个选项为 Wired (net0),如图 4 所示:

图 4 — Showbox 屏幕中的 Wired(net0) 选项
此处没有要配置的设置;只显示了一些网络信息。
图 5 显示下一个屏幕:“How to edit Fixed network profiles。”

图 5 — How to Edit Fixed Network Profiles
我们已对使用 GUI 配置网络与使用命令行接口手动配置网络这两种方法进行了探讨。所以现在我需要指出,负责 Oracle Solaris 11 网络配置的服务有四种:
svc:/network/netcfg:defaultsvc:/network/loopback:defaultsvc:/network/location:defaultsvc:/network/physical:default现在,有必要知道最后一个服务 (svc:/network/physical:default) 负责初始化 RNC 框架。可使用以下命令验证这一事实:
# svcs -a | grep network/physical:default
online 15:20:01 svc:/network/physical:default
# svcs -p svc:/network/physical:default
STATE STIME FMRI
online 15:20:01 svc:/network/physical:default
15:19:55 617 nwamd 可以看出,负责网络配置的后台程序为 nwamd。虽然已将 NWAM 重命名为 RNC,但后台程序名称未更改。
您可能想知道在不依赖 RNC 的情况下,如何使用手动网络配置进程将固定 IP 地址关联至您的网卡。我将为您总结一下这个过程。
如果您使用的是基于 SPARC 的平台,需要运行以下命令来确保所有网络接口卡 (NIC) 使用的 MAC 地址是唯一的:
# eeprom local-mac-address? = true # reboot # dladm show-linkprop -p mac-address LINK PROPERTY PERM VALUE DEFAULT POSSIBLE net0 mac-address rw 0:c:29:aa:c5:60 0:c:29:aa:c5:60 -- net1 mac-address rw 0:c:29:aa:c5:6a 0:c:29:aa:c5:6a --
从上述输出可以看出,似乎计算机中每个 NIC 的 MAC 地址都不相同。如果两个或多个 NIC 具有相同的 MAC 地址(例如 net1),则可执行以下命令更改其中一个网络接口的 MAC 地址。例如,要更改 net1 MAC 地址,请执行以下操作:
# dladm set-linkprop -p mac-address=00:11:22:33:44:55 net1 # reboot
接下来,我们将列出系统上的所有配置文件:
# netadm list TYPE PROFILE STATE ncp Automatic online ncu:phys net0 online ncu:phys net1 online ncu:ip net0 online ncu:ip net1 online ncp DefaultFixed disabled loc Automatic online loc NoNet offline
活动配置文件为 Automatic。将其更改为 DefaultFixed 很容易;只需运行以下命令:
# netadm enable -p ncp DefaultFixed # netadm list TYPE PROFILE STATE ncp Automatic disabled ncp DefaultFixed online loc Automatic offline loc NoNet online
如果我们需要返回到 Automatic 配置文件(默认情况下使用 DHCP 服务),则需运行以下命令:
# netadm enable -p ncp Automatic
现在,我们来了解与网络配置有关的其他一些命令,然后我们可以学习如何使用固定 IP 地址进行手动配置。
有时有必要了解我们的网卡及其属性(全双工、半双工、速度、状态、IP 地址等)。要获取 Automatic 配置文件的这些信息,可以执行清单 1 所示的命令:
# dladm show-phys LINK MEDIA STATE SPEED DUPLEX DEVICE net0 Ethernet up 1000 full e1000g0 net1 Ethernet up 1000 full e1000g1 # dladm show-ether LINK PTYPE STATE AUTO SPEED-DUPLEX PAUSE net0 current up yes 1G-f bi net1 current up yes 1G-f bi # ifconfig -a lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 net0: flags=1004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4> mtu 1500 index 4 inet 192.168.1.105 netmask ffffff00 broadcast 192.168.1.255 ether 0:c:29:aa:c5:60 net1: flags=1004843<UP,BROADCAST,RUNNING,MULTICAST,DHCP,IPv4> mtu 1500 index 5 inet 192.168.1.106 netmask ffffff00 broadcast 192.168.1.255 ether 0:c:29:aa:c5:6a lo0: flags=2002000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu 8252 index 1 inet6 ::1/128 net0: flags=20002004841<UP,RUNNING,MULTICAST,DHCP,IPv6> mtu 1500 index 4 inet6 fe80::20c:29ff:feaa:c560/10 ether 0:c:29:aa:c5:60 net1: flags=20002004841<UP,RUNNING,MULTICAST,DHCP,IPv6> mtu 1500 index 5 inet6 fe80::20c:29ff:feaa:c56a/10 ether 0:c:29:aa:c5:6a
清单 1
注:我们可以对 DefaultFixed 配置文件使用相同的命令;但是在这种情况下,最后一条命令的输出将如下所示:
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 lo0: flags=2002000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu 8252 index 1 inet6 ::1/128
如果要获取有关系统上任意网络接口对象的信息,将发生类似情况。例如,如果使用 Automatic 配置文件,则 ipadm show-if 命令将显示以下内容:
# ipadm show-if IFNAME CLASS STATE ACTIVE OVER lo0 loopback ok yes -- net0 ip ok yes -- net1 ip ok yes --
但是,使用 DefaultFixed 配置文件时,命令显示如下:
# ipadm show-if IFNAME CLASS STATE ACTIVE OVER lo0 loopback ok yes --
不难看出,使用 Automatic 配置文件的 RCN 执行所有操作,但当系统使用 DefaultFixed 配置文件时,将只创建环回接口。例如,上一条命令显示没有可绑定 IP 地址的网络接口。如何解决此问题?
现在,让我们在 Oracle Solaris 11 上执行手动网络配置。请记住,我们的系统上有 net0 和 net1 网络接口(此信息来自 dladm show-phys)。因此,要完成任务,需执行以下步骤:
创建接口:
# ipadm create-ip net0
将 IP 地址绑定至接口 net0:
# ipadm create-addr -a 192.168.1.222/24 net0
列出接口:
# ipadm NAME CLASS/TYPE STATE UNDER ADDR lo0 loopback ok -- -- lo0/v4 static ok -- 127.0.0.1/8 lo0/v6 static ok -- ::1/128 net0 ip ok -- -- net0/v4 static ok -- 192.168.1.222/24
将名称与 IP 地址关联:
# echo "192.168.1.222 solaris11" >> /etc/hosts
设置默认网关:
# route -p add default 192.168.1.1
列出 IP 路由:
# netstat -rn Routing Table: IPv4 Destination Gateway Flags Ref Use Interface -------------------- -------------------- ----- ----- ---------- --------- default 192.168.1.1 UG 14 1016 127.0.0.1 127.0.0.1 UH 2 42 lo0 192.168.1.0 192.168.1.222 U 3 1 net0 Routing Table: IPv6 Destination/Mask Gateway Flags Ref Use If -------------------- ------ ------------- ------- ----- -------- ------- ::1 ::1 UH 2 0 lo0
以前在 Oracle Solaris 10 上设置 DNS 解析时,我们只需运行以下命令:
# cp /etc/nsswitch.dns /etc/nsswitch.conf
但这种方法在 Oracle Solaris 11 上不再适用。为此,Oracle Solaris 11 提供了一种新方法。刚开始可能显得更复杂一点(如以下命令),因为新方法使用了服务管理工具(实现更强大、更灵活的全名服务机制)中的一些概念。但是,我相信您一定会适应这个全新的服务框架。
用于设置 DNS 名称服务器、域主机、搜索域列表以及用于配置 Oracle Solaris 11 使之包括 DNS 解析的新命令如下所示:
设置 DNS 服务器:
# svccfg -s svc:/network/dns/client setprop config/nameserver = net_address: "(8.8.8.8 8.8.4.4)"
设置 DNS 域:
# svccfg -s svc:/network/dns/client setprop config/domain = astring: '("example.com")'
设置域的搜索列表:
# svccfg -s svc:/network/dns/client setprop config/search = astring: '("example.com")'
设置 IPv6 名称解析顺序:
# svccfg -s svc:/system/name-service/switch setprop config/ipnodes = astring: '("files dns")'
设置 IPv4 名称解析顺序:
# svccfg -s svc:/system/name-service/switch setprop config/host = astring: '("files dns")
哇,工作量如此庞大!到目前为止,我们完成了哪些工作?可以运行清单 2 所示的两个命令来查看已设置的所有参数:
# svccfg -s svc:/network/dns/client listprop config config application config/value_authorization astring solaris.smf.value.name-service.dns.client config/nameserver net_address 8.8.8.8 8.8.4.4 config/domain astring example.com config/search string example.com # svccfg -s svc:/system/name-service/switch listprop config config application config/default astring files config/value_authorization astring solaris.smf.value.name-service.switch config/host astring "files dns mdns" config/printer astring "user files" config/ipnodes astring "files dns" config/hosts astring "files dns"
清单 2
很好!但这还远远不够。我们需要确保这些设置生效(现在以及下次启动后)。要做到这一点很简单。首先,我们赢启用 DNS 客户端,如清单 3 所示:
# svcadm refresh svc:/network/dns/client # svcadm restart svc:/network/dns/client # more /etc/resolv.conf # # Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. # # # _AUTOGENERATED_FROM_SMF_V1_ # # WARNING: THIS FILE GENERATED FROM SMF DATA. # DO NOT EDIT THIS FILE. EDITS WILL BE LOST. # See resolv.conf(4) for details. domain example.com search example.com nameserver 8.8.8.8 nameserver 8.8.4.4
清单 3
最后,可以使用几乎相同的步骤进行名称服务器解析:
# svcadm refresh svc:/system/name-service/switch:default # svcadm restart svc:/system/name-service/switch:default # cat /etc/nsswitch.conf # Copyright (c) 1991, 2013, Oracle and/or its affiliates. All rights reserved. # # # _AUTOGENERATED_FROM_SMF_V1_ # # WARNING: THIS FILE GENERATED FROM SMF DATA. # DO NOT EDIT THIS FILE. EDITS WILL BE LOST. # See nsswitch.conf(4) for details. passwd: files group: files hosts: files dns mdns ipnodes: files dns mdns networks: files protocols: files rpc: files ethers: files netmasks: files bootparams: files publickey: files netgroup: files automount: files aliases: files services: files printers: user files project: files auth_attr: files prof_attr: files tnrhtp: files tnrhdb: files
清单 4
完成。DNS 服务器和 DNS 解析已配置完。现在,可以查看当前 IP 地址供下一步骤使用,如清单 5 所示:
# ifconfig -a lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 net0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 inet 192.168.1.222 netmask ffffff00 broadcast 192.168.1.255 ether 0:c:29:aa:c5:60 lo0: flags=2002000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv6,VIRTUAL> mtu 8252 index 1 inet6 ::1/128 net0: flags=20002000840<RUNNING,MULTICAST,IPv6> mtu 1500 index 2 inet6 ::/0 ether 0:c:29:aa:c5:60
清单 5
然后,可以使用 ping 命令查看系统是否处于活动状态,如清单 6 所示:
# ping www.oracle.com PING www.oracle.com: 56 data bytes 64 bytes from a23-62-166-140.deploy.akamaitechnologies.com (23.62.166.14023.62.166.140): icmp_seq=0. time=143.691 ms 64 bytes from a23-62-166-140.deploy.akamaitechnologies.com (23.62.166.140
23.62.166.140): icmp_seq=1. time=142.495 ms 64 bytes from a23-62-166-140.deploy.akamaitechnologies.com (23.62.166.140
23.62.166.140): icmp_seq=2. time=141.506 ms 64 bytes from a23-62-166-140.deploy.akamaitechnologies.com (23.62.166.140
23.62.166.140): icmp_seq=3. time=141.732 ms 64 bytes from a23-62-166-140.deploy.akamaitechnologies.com (23.62.166.140
23.62.166.140): icmp_seq=4. time=142.020 ms ----www.oracle.com PING Statistics---- 5 packets transmitted, 5 packets received, 0% packet loss round-trip (ms) min/avg/max/stddev = 141.506/142.289/143.691/0.867
清单 6
很好!一切均按预期进行。但是,如果不依赖 RCN,怎样使用 DHCP 地址完成相同的任务?可以这样吗?是的,可以。
我们来使用 DefaultFixed 配置文件和 DHCP 服务器执行相同的步骤。为了演示这些步骤,我们将使用另一个网络接口 (net1) 并采用临时模式(使用 -T 选项),如清单 7 所示:
# ipadm create-ip net1 # ipadm create-addr -T dhcp net1 # ipadm NAME CLASS/TYPE STATE UNDER ADDR lo0 loopback ok -- -- lo0/v4 static ok -- 127.0.0.1/8 lo0/v6 static ok -- ::1/128 net0 ip ok -- -- net0/v4 static ok -- 192.168.1.222/24 net1 ip ok -- -- net1/v4 dhcp ok -- 192.168.1.106/24
清单 7
完成。如我们所愿,net1 接口配置成功。
我必须承认,当我看到 Oracle Solaris 10 中的服务管理工具(它也是 Oracle Solaris 11 的一部分)时,我有点怀疑。我了解 Oracle Solaris 早期版本的服务,说实话,当时我在想“他们为什么要改变这么好的东西呢?”大约是 2004 年 12 月,我在关于 Oracle Solaris 10(当时可能是 build 71)的第一堂课上提出了这个问题。一段时间后,我意识到 Oracle Solaris 10/Oracle Solaris 11 的服务管理工具比所有其他服务机制更好、更强大。
Oracle Solaris 11 的服务管理工具由名为 svc.startd 的后台程序控制,该后台程序由 /etc/inittab 中的条目启动,如下所示:
# more /etc/inittab ap::sysinit:/usr/sbin/autopush -f /etc/iu.ap smf::sysinit:/lib/svc/bin/svc.startd >/dev/msglog 2<>/dev/msglog </dev/console p3:s1234:powerfail:/usr/sbin/shutdown -y -i5 -g0 >/dev/msglog 2<>/dev/msglog
在 Oracle Solaris 9 中,/etc/inittab 文件更为晦涩;代码行更多,而且更为费解。Oracle Solaris 11 的 /etc/inittab 文件更加简单,其中真正重要的只有一行:即启动 svc.startd 后台程序的代码行,负责初始化整个 Oracle Solaris 11 服务管理工具框架及其服务。
要获取所有 Oracle Solaris 11 服务的列表,可运行清单 8 所示的命令:
# svcs -a | more STATE STIME FMRI legacy_run 18:30:07 lrc:/etc/rc2_d/S47pppd legacy_run 18:30:07 lrc:/etc/rc2_d/S89PRESERVE disabled 18:29:32 svc:/system/device/mpxio-upgrade:default disabled 18:29:32 svc:/network/install:default disabled 18:29:32 svc:/network/ipsec/ike:default disabled 18:29:32 svc:/network/ipsec/manual-key:default disabled 18:29:32 svc:/network/nis/domain:default disabled 18:29:33 svc:/network/ipfilter:default disabled 18:29:33 svc:/system/name-service-cache:default disabled 18:29:33 svc:/network/nis/client:default disabled 18:29:33 svc:/network/ldap/client:default disabled 18:29:33 svc:/network/nfs/status:default disabled 18:29:33 svc:/network/nfs/nlockmgr:default disabled 18:29:33 svc:/network/nfs/cbd:default disabled 18:29:33 svc:/system/idmap:default disabled 18:29:33 svc:/network/nfs/mapid:default disabled 18:29:33 svc:/network/rpc/keyserv:default ... disabled 18:29:36 svc:/network/nfs/server:default disabled 18:29:36 svc:/system/console-login:terma disabled 18:29:36 svc:/system/console-login:termb disabled 18:29:36 svc:/network/ldap/server:openldap_24 online 18:29:32 svc:/system/early-manifest-import:default online 18:29:32 svc:/system/svc/restarter:default online 18:29:34 svc:/network/sctp/congestion-control:cubic online 18:29:34 svc:/network/sctp/congestion-control:vegas online 18:29:34 svc:/network/sctp/congestion-control:newreno online 18:29:34 svc:/network/sctp/congestion-control:highspeed online 18:29:34 svc:/network/tcp/congestion-control:vegas online 18:29:34 svc:/network/tcp/congestion-control:newreno ...
清单 8
哇!我的系统上有 224 项服务!有些处于禁用状态(未运行),有些在线(已启用并运行)。
在清单 8 的输出中,您会看到一些有意思的列:
legacy_run(服务使用的是旧格式和控制,如运行级别)、disabled、online(正在运行)、maintenance(存在配置问题)和 offline(因未解决的服务依赖而未运行)。我们以 cron 服务为例。了解服务是否在运行非常容易:
# svcs -a | grep cron online 18:29:59 svc:/system/cron:default
可以看出,cron 服务处于在线状态。此外,我们还可以获取此服务的其他有用信息,如清单 9 所示:
# svcs -l cron fmri svc:/system/cron:default name clock daemon (cron) enabled true state online next_state none state_time May 20, 2013 06:29:59 PM BRT logfile /var/svc/log/system-cron:default.log restarter svc:/system/svc/restarter:default contract_id 88 manifest /etc/svc/profile/generic.xml manifest /lib/svc/manifest/system/cron.xml dependency require_all/none svc:/system/filesystem/local (online) dependency require_all/none svc:/milestone/name-services (online)
清单 9
清单 9 中的输出显示了很多有用信息。另一个用于确定服务 cron 依赖项的有用命令是:
# svcs -d cron STATE STIME FMRI online 18:29:57 svc:/milestone/name-services:default online 18:29:59 svc:/system/filesystem/local:default
确定依赖于 cron 服务的服务也很简单:
# svcs -D cron STATE STIME FMRI online 18:30:07 svc:/milestone/multi-user:default
cron 启动了哪些进程?这也是一个好问题,很容易回答:
# svcs -p cron
STATE STIME FMRI
online 18:29:59 svc:/system/cron:default
18:29:59 768 cron
如果我们需要了解有关 cron 服务的更多详细信息并收集其他信息,可使用以下命令:
# svcs -x cron svc:/system/cron:default (clock daemon (cron)) State: online since May 20, 2013 06:29:59 PM BRT See: cron(1M) See: crontab(1) See: /var/svc/log/system-cron:default.log Impact: None.
到目前为止,一切都没问题。到目前为止,我们使用了很多服务命令并且收集了大量关于 Oracle Solaris 11 服务的信息,但我们是否需要更改服务状态?表 1 显示了其他一些命令的汇总:
表 1| 目标 | 命令 |
|---|---|
| 禁用服务 | # svcadm disable <fmri> |
| 临时禁用服务 | # svcadm -t disable <fmri> |
| 启用服务 | # svcadm enable <fmri> |
| 递归启用服务 | # svcadm -r enable <fmri> |
| 重新启动服务 | # svcadm restart <fmri> |
| 刷新服务配置 | # svcadm refresh <fmri> |
| 清除服务 | # svcadm clear <fmri> |
如果您不喜欢使用服务命令,也没关系。您可以使用 Oracle Solaris 11 中优秀的 GUI 服务工具(见图 6)。可通过 System -> Administration -> SMF Services 找到该工具。您可以用它执行使用命令行界面执行过的任务。

图 6 — 通过 GUI 管理 SMF 服务
现在,我想介绍映像包管理的一些基本概念,自 Oracle Solaris 10 以来,这些概念发生了很大变化。您是否还记得 pkgadd、pkgrm 和 pkginfo?恭喜,但我希望您不再需要它们了!
映像包管理系统是 Oracle Solaris 11 中引入的一款非常强大、简单、有用的映像包管理工具,同时提供命令行界面和 GUI 工具。
在探讨映像包之前,我们来讨论一下更新。每个操作系统都需要补丁,Oracle Solaris 11 也不例外。要更新 Oracle Solaris 11,请选择 System -> Administration -> Update Manager 打开图 7 所示的 Update Manager。

图 7 — Update Manager GUI
您可能会想起在第 1 部分中,我们在安装 Oracle Solaris 11 后未注册。此外,根据图 7,Oracle 信息库中目前不存在更新。如果我们拥有 Oracle 支持服务协议,那么可以更改已配置的信息库,使之指向 Oracle 支持信息库,但这不在本文的讨论范围内。
在 Oracle Solaris 11 上管理软件包很容易。首先,选择 System -> Administration -> Package Manager 打开图 8 所示的 Package Manager。

图 8 — Package Manager GUI
作为练习,我们来搜索并安装软件包。因为我喜欢安全性文章和工具,所以我将介绍如何安装 nmap 工具。首先,我们应在 Oracle 信息库中搜索 nmap 软件包(如图 9 所示)以确认其可用:

图 9 — 在软件包信息库中搜索 nmap 软件包
我们找到了 nmap 软件包。接下来,我们进行安装。为此,首先确保已选中 nmap 软件包旁边的复选框。然后单击 Install/Update 按钮。随即显示图 10 所示的屏幕。

图 10 — 单击 Install/Update 按钮后
如果您对选择满意,请单击 Proceed。系统下载并安装软件包,如图 11 所示。

图 11 — 已下载并安装软件包
nmap 软件包安装成功,如图 12 所示:

图 12 — 确认安装成功的消息
然而,许多人喜欢从命令行界面管理软件包。我们来学习一些有用的命令。
例如,要检查 Oracle 信息库中是否有 nmap 软件包,请运行清单 10 所示的命令:
# pkg search nmap INDEX ACTION VALUE PACKAGE pkg.description set Nmap is useful for inventorying the network, managing service upgrade schedules, and monitoring host or service uptime. pkg:/diagnostic/nmap@5.51-0.175.1.0.0.24.0 basename file usr/bin/nmap pkg:/diagnostic/nmap@5.51-0.175.1.0.0.24.0 pkg.fmri set solaris/diagnostic/nmap pkg:/diagnostic/nmap@5.51-0.175.1.0.0.24.0 basename dir usr/share/nmap pkg:/diagnostic/nmap@5.51-0.175.1.0.0.24.0
清单 10
虽然我们已安装此软件包,但仍然可以使用以下命令执行此操作(如果需要):
# pkg install nmap # pkg update nmap
要验证是否已成功安装软件包,可使用以下命令:
# pkg verify nmap
如果出错,我们可以进行修复:
# pkg fix --accept nmap
有时您需要列出软件包的内容。您可以使用清单 11 所示的命令实现此目的:
# pkg contents nmap PATH usr usr/bin usr/bin/ncat usr/bin/ndiff usr/bin/nmap usr/bin/nmapfe usr/bin/nping usr/bin/xnmap usr/bin/zenmap usr/lib usr/lib/python2.6 usr/lib/python2.6/vendor-packages usr/lib/python2.6/vendor-packages/radialnet usr/lib/python2.6/vendor-packages/radialnet/__init__.py usr/lib/python2.6/vendor-packages/radialnet/__init__.pyc usr/lib/python2.6/vendor-packages/radialnet/bestwidgets usr/lib/python2.6/vendor-packages/radialnet/bestwidgets/__init__.py ...
清单 11
想要卸载软件包时,可以执行以下命令:
# pkg uninstall nmap
要收集有关 nmap 软件包的信息,可以运行清单 12 所示的命令:
# pkg info nmap
Name: diagnostic/nmap
Summary: Network exploration tool and security / port scanner.
Description: Nmap is useful for inventorying the network, managing service
upgrade schedules, and monitoring host or service uptime.
Category: System/Administration and Configuration
State: Installed
Publisher: solaris
Version: 5.51
Build Release: 5.11
Branch: 0.175.1.0.0.24.0
Packaging Date: September 4, 2012 05:17:49 PM
Size: 12.28 MB
FMRI: pkg://solaris/diagnostic/nmap@5.51,5.11-0.175.1.0.0.24.0:20120904T171749Z
清单 12
可使用以下命令验证软件包许可:
# pkg info --license nmap
要检查之前执行了哪些软件包操作,请使用清单 13 所示的命令,这是跟踪系统上已执行的所有软件包操作的好方法。
# pkg history START OPERATION CLIENT OUTCOME 2012-09-19T16:48:22 set-property transfer module Succeeded 2012-09-19T16:48:22 add-publisher transfer module Succeeded 2012-09-19T16:48:22 refresh-publishers transfer module Succeeded 2012-09-19T16:48:22 image-create transfer module Succeeded 2012-09-19T16:48:30 rebuild-image-catalogs transfer module Succeeded 2012-09-19T16:48:36 set-property transfer module Succeeded 2012-09-19T16:48:37 install transfer module Succeeded 2012-09-19T17:30:12 update-publisher transfer module Succeeded 2012-09-19T17:30:12 refresh-publishers transfer module Succeeded 2012-09-19T17:30:16 rebuild-image-catalogs transfer module Succeeded 2013-05-19T17:20:26 uninstall transfer module Succeeded 2013-05-20T00:47:07 refresh-publishers pkg Succeeded 2013-05-20T00:47:14 rebuild-image-catalogs pkg Succeeded 2013-05-21T00:33:54 refresh-publishers packagemanager Succeeded 2013-05-21T00:33:58 rebuild-image-catalogs packagemanager Succeeded 2013-05-21T00:37:06 install packagemanager Succeeded
清单 13
如果要清除此历史记录,请运行以下命令:
# pkg purge-history
我希望此系列文章大有帮助。可以看出,Oracle Solaris 11 是一个卓越的操作系统,我们有很多内容待学习。依我看来,Oracle Solaris 是世界上最安全、最强大、最全面、最快速的操作系统,我相信您很快就会赞同我的观点了。
正如 1667 年 John Milton 在失乐园 中所述:“路途漫长而艰难,地狱一出即光明。”再见。
Alexandre Borge 是一位 Oracle ACE,曾于 2001 至 2010 年任职于 Sun Microsystems,并担任签约讲师,主要负责讲授 Oracle Solaris、Oracle Solaris Cluster、Oracle Solaris 安全性、Java EE、Sun 硬件和 MySQL 课程。目前,他为 Symantec、Oracle 合作伙伴和 EC-Council 提供课程教学,并且讲授一些关于信息安全的非常专业的课程。此外,他还是 Linux Magazine Brazil 的特约撰稿人和专栏作家。
| 修订版 1.0,2013 年 8 月 27 日 |