Besides the
documentation changes I mentioned last time, another place you can see
Solaris 11.1 changes before upgrading is in the online package repository, now
that the 11.1 packages have been published to
http://pkg.oracle.com/solaris/release/, as the “0.175.1.0.0.24.2” branch.
(Oracle Solaris Package Versioning explains what each field in that version
string means.)
When you’re ready to upgrade to the packages from either this repo,
or the support repository, you’ll want to first read
How to Update to Oracle Solaris 11.1 Using the Image
Packaging System by Pete Dennis,
as there are a couple issues you will need to be aware of to do that upgrade,
several of which are due to changes in the Free and Open Source Software (FOSS)
packages included with Solaris, as I’ll explain in a bit.
Solaris 11 can update more readily than Solaris 10
In the Solaris 10 and older update models, the way the updates were built
constrained what changes we could make in those releases. To change an
existing SVR4 package in those releases, we created a Solaris Patch, which
applied to a given version of the SVR4 package and replaced, added or deleted
files in it. These patches were released via the support websites (originally
SunSolve, now My Oracle Support)
for applying to existing Solaris 10 installations, and were also merged into
the install images for the next Solaris 10 update release.
(This Solaris
Patches blog post from Gerry Haskins dives deeper into that subject.)
Some of the restrictions of this model were that package refactoring, changes
to package dependencies, and even just changing the package version number,
were difficult to do in this hybrid patch/OS update model. For instance,
when Solaris 10 first shipped, it had the Xorg server from X11R6.8. Over the
first couple years of update releases we were able to keep it up to date by
replacing, adding, & removing files as necessary, taking it all the way
up to Xorg server release 1.3 (new version numbering begun after
the X11R7 split of the X11 tree into separate modules gave each module its
own version).
But if you run pkginfo on the SUNWxorg-server package, you’ll
see it still displayed a version number of 6.8, confusing users as to which
version was actually included.
We stopped upgrading the Xorg server releases in Solaris 10 after 1.3, as
later versions added new dependencies, such as
HAL,
D-Bus,
and libpciaccess,
which were very difficult to manage in this patching model. (We later got
libpciaccess to work, but HAL & D-Bus would have been much harder due to
the greater dependency tree underneath those.) Similarly, every time the
GNOME team looked into upgrading Solaris 10 past GNOME 2.6, they found these
constraints made it so difficult it wasn’t worthwhile, and eventually
GNOME’s dependencies had changed enough it was completely infeasible.
Fortunately, this worked out for both the X11 & GNOME teams, with our
management making the business decision to concentrate on the
“Nevada” branch for desktop users - first as Solaris Express
Desktop Edition, and later as OpenSolaris, so we didn’t have to fight
to try to make the package updates fit into these tight constraints.
Meanwhile, the team designing the new
packaging system for Solaris 11 was
seeing us struggle with these problems, and making this much easier to manage
for both the development teams and our users was one of their big goals for
the IPS design they were working on.
Now that we’ve reached the first update release to Solaris 11, we can
start to see the fruits of their labors, with more FOSS updates in 11.1 than
we had in many Solaris 10 update releases, keeping software more up to date
with the upstream communities.
Of course, just because we can more easily update now, doesn’t always
mean we should or will do so, it just removes the package system limitations
from forcing the decision for us. So while we’ve upgraded the X Window
System in the 11.1 release from X11R7.6 to 7.7, the Solaris GNOME team decided
it was not the right time to try to make the jump from GNOME 2 to GNOME 3,
though they did update some individual components of the desktop, especially
those with security fixes like Firefox. In other parts of the system,
decisions as to what to update were prioritized based on how they affected
other projects, or what customer requests we’d gotten for them.
So with all that background in place, what packages did we actually update
or add between Solaris 11.0 and 11.1?
Core OS Functionality
One of the FOSS changes with the biggest impact in this release is the
upgrade from Grub Legacy (0.97) to Grub 2 (1.99) for the x64 platform boot
loader. This is the cause of one of the upgrade quirks, since to go from
Solaris 11.0 to 11.1 on x64 systems, you first need to update the Boot
Environment tools (such as beadm) to a new version that can handle boot
environments that use the Grub2 boot loader. System administrators can
find the details they need to know about the new Grub in the
Administering the GRand Unified Bootloader chapter of the
Booting and Shutting Down Oracle Solaris 11.1 Systems
guide. This change was necessary to be able to support new hardware coming
into the x64 marketplace, including systems using UEFI firmware or booting off
disk drives larger than 2 terabytes.
For both platforms, Solaris 11.1 adds
rsyslog as an optional alternative to
the traditional syslogd, and OpenSCAP
for checking security configuration settings are compliant with site policies.
Note that the support repo actually has newer versions of BIND & fetchmail
than the 11.1 release, as some late breaking critical fixes came through from
the community upstream releases after the Solaris 11.1 release was frozen, and
made their way to the support repository. These are responsible for the other
big upgrade quirk in this release, in which to upgrade a system which already
installed those versions from the support repo, you need to either wait for
those packages to make their way to the 11.1 branch of the support repo, or
follow the steps in the aforementioned upgrade walkthrough
to let the package system know it's okay to temporarily downgrade those.
Developer Stack
While Solaris 11.0 included Python 2.7, many of the bundled python modules
weren’t packaged for it yet, limiting its usability. For 11.1, many more
of the python modules include 2.7 versions (enough that I filtered them out of
the below table, but you can always search on
the package repository server for them.
For other language runtimes and development tools, 11.1 expands the use of
IPS mediated links
to choose which version of a package is the default when the packages are
designed to allow multiple versions to install side by side.
For instance, in Solaris 11.0, GNU automake 1.9 and 1.10 were provided, and
developers had to run them as either automake-1.9 or
automake-1.10. In Solaris 11.1, when automake 1.11 was added, also
added was a /usr/bin/automake mediated link, which points to the
automake-1.11 program by default, but can be changed to another
version by running the pkg set-mediator command.
Mediated links were also used for the Java runtime & development kits in
11.1, changing the default versions to the Java 7 releases (the 1.7.0.x
package versions), while allowing admins to
switch
links such as /usr/bin/javac back to Java 6
if they need to for their site, to deal with
Java 7 compatibility
or other issues, without having to update each usage to use the full versioned
/usr/jdk/jdk1.6.0_35/bin/javac paths for every invocation.
Desktop Stack
As I mentioned before, we upgraded from X11R7.6 to X11R7.7, since a pleasant
coincidence made the X.Org release dates line up nicely with our feature &
code freeze dates for this release. (Or perhaps it wasn’t so
coincidental, after all, one of the benefits of being
the person making the release
is being able to decide what schedule is most convenient for you, and this one
worked well for me.) For the table below, I’ve skipped listing the
packages in which we use the X11 “katamari” version for the Solaris
package version (mainly packages combining elements of multiple upstream
modules with independent version numbers), since they just all changed from
7.6 to 7.7.
In the graphics drivers, we worked with Intel to update the Intel Integrated
Graphics Processor support to support 3D graphics and kernel mode setting on
the Ivy Bridge chipsets, and updated Nvidia’s non-FOSS graphics driver
from 280.13 to 295.20.
Higher up in the desktop stack,
PulseAudio was added for audio support,
and liblouis for Braille support,
and the GNOME applications were built to use them.
The Mozilla applications, Firefox & Thunderbird moved to the current
Extended Support
Release (ESR) versions, 10.x for each, to bring up-to-date security fixes
without having to be on Mozilla’s agressive 6 week feature cycle release
train.
Detailed list of changes
This table shows most of the changes to the FOSS packages between Solaris 11.0
and 11.1. As noted above, some were excluded for clarity, or to reduce noise
and duplication. All the FOSS packages which didn't change the version number
in their
packaging info are not included, even if they had updates to fix bugs,
security holes, or add support for new hardware or new features of Solaris.
Package11.011.1
archiver/unrar 3.8.5 4.1.4
audio/sox 14.3.0 14.3.2
backup/rdiff-backup 1.2.1 1.3.3
communication/im/pidgin 2.10.0 2.10.5
compress/gzip 1.3.5 1.4
compress/xz not included 5.0.1
database/sqlite-3 3.7.6.3 3.7.11
desktop/remote-desktop/tigervnc 1.0.90 1.1.0
desktop/window-manager/xcompmgr 1.1.5 1.1.6
desktop/xscreensaver 5.12 5.15
developer/build/autoconf 2.63 2.68
developer/build/autoconf/xorg-macros 1.15.0 1.17
developer/build/automake-111 not included 1.11.2
developer/build/cmake 2.6.2 2.8.6
developer/build/gnu-make 3.81 3.82
developer/build/imake 1.0.4 1.0.5
developer/build/libtool 1.5.22 2.4.2
developer/build/makedepend 1.0.3 1.0.4
developer/documentation-tool/doxygen 1.5.7.1 1.7.6.1
developer/gnu-binutils 2.19 2.21.1
developer/java/jdepend not included 2.9
developer/java/jdk-6 1.6.0.26 1.6.0.35
developer/java/jdk-7 1.7.0.0 1.7.0.7
developer/java/jpackage-utils not included 1.7.5
developer/java/junit 4.5 4.10
developer/lexer/jflex not included 1.4.1
developer/parser/byaccj not included 1.14
developer/parser/java_cup not included 0.10
developer/quilt 0.47 0.60
developer/versioning/git 1.7.3.2 1.7.9.2
developer/versioning/mercurial 1.8.4 2.2.1
developer/versioning/subversion 1.6.16 1.7.5
diagnostic/constype 1.0.3 1.0.4
diagnostic/nmap 5.21 5.51
diagnostic/scanpci 0.12.1 0.13.1
diagnostic/wireshark 1.4.8 1.8.2
diagnostic/xload 1.1.0 1.1.1
editor/gnu-emacs 23.1 23.4
editor/vim 7.3.254 7.3.600
file/lndir 1.0.2 1.0.3
image/editor/bitmap 1.0.5 1.0.6
image/gnuplot 4.4.0 4.6.0
image/library/libexif 0.6.19 0.6.21
image/library/libpng 1.4.8 1.4.11
image/library/librsvg 2.26.3 2.34.1
image/xcursorgen 1.0.4 1.0.5
library/audio/pulseaudio not included 1.1
library/cacao 2.3.0.0 2.3.1.0
library/expat 2.0.1 2.1.0
library/gc 7.1 7.2
library/graphics/pixman 0.22.0 0.24.4
library/guile 1.8.4 1.8.6
library/java/javadb 10.5.3.0 10.6.2.1
library/java/subversion 1.6.16 1.7.5
library/json-c not included 0.9
library/libedit not included 3.0
library/libee not included 0.3.2
library/libestr not included 0.1.2
library/libevent 1.3.5 1.4.14.2
library/liblouis not included 2.1.1
library/liblouisxml not included 2.1.0
library/libtecla 1.6.0 1.6.1
library/libtool/libltdl 1.5.22 2.4.2
library/nspr 4.8.8 4.8.9
library/openldap 2.4.25 2.4.30
library/pcre 7.8 8.21
library/perl-5/subversion 1.6.16 1.7.5
library/python-2/jsonrpclib not included 0.1.3
library/python-2/lxml 2.1.2 2.3.3
library/python-2/nose not included 1.1.2
library/python-2/pyopenssl not included 0.11
library/python-2/subversion 1.6.16 1.7.5
library/python-2/tkinter-26 2.6.4 2.6.8
library/python-2/tkinter-27 2.7.1 2.7.3
library/security/nss 4.12.10 4.13.1
library/security/openssl 1.0.0.5 (1.0.0e) 1.0.0.10 (1.0.0j)
mail/thunderbird 6.0 10.0.6
network/dns/bind 9.6.3.4.3 9.6.3.7.2
package/pkgbuild not included 1.3.104
print/filter/enscript not included 1.6.4
print/filter/gutenprint 5.2.4 5.2.7
print/lp/filter/foomatic-rip 3.0.2 4.0.15
runtime/java/jre-6 1.6.0.26 1.6.0.35
runtime/java/jre-7 1.7.0.0 1.7.0.7
runtime/perl-512 5.12.3 5.12.4
runtime/python-26 2.6.4 2.6.8
runtime/python-27 2.7.1 2.7.3
runtime/ruby-18 1.8.7.334 1.8.7.357
runtime/tcl-8/tcl-sqlite-3 3.7.6.3 3.7.11
security/compliance/openscap not included 0.8.1
security/nss-utilities 4.12.10 4.13.1
security/sudo 1.8.1.2 1.8.4.5
service/network/dhcp/isc-dhcp 4.1 4.1.0.6
service/network/dns/bind 9.6.3.4.3 9.6.3.7.2
service/network/ftp (ProFTPD) 1.3.3.0.5 1.3.3.0.7
service/network/samba 3.5.10 3.6.6
shell/conflict 0.2004.9.1 0.2010.6.27
shell/pipe-viewer 1.1.4 1.2.0
shell/zsh 4.3.12 4.3.17
system/boot/grub 0.97 1.99
system/font/truetype/liberation 1.4 1.7.2
system/library/freetype-2 2.4.6 2.4.9
system/library/libnet 1.1.2.1 1.1.5
system/management/cim/pegasus 2.9.1 2.11.0
system/management/ipmitool 1.8.10 1.8.11
system/management/wbem/wbemcli 1.3.7 1.3.9.1
system/network/routing/quagga 0.99.8 0.99.19
system/rsyslog not included 6.2.0
terminal/luit 1.1.0 1.1.1
text/convmv 1.14 1.15
text/gawk 3.1.5 3.1.8
text/gnu-grep 2.5.4 2.10
web/browser/firefox 6.0.2 10.0.6
web/browser/links 1.0 1.0.3
web/java-servlet/tomcat 6.0.33 6.0.35
web/php-53 not included 5.3.14
web/php-53/extension/php-apc not included 3.1.9
web/php-53/extension/php-idn not included 0.2.0
web/php-53/extension/php-memcache not included 3.0.6
web/php-53/extension/php-mysql not included 5.3.14
web/php-53/extension/php-pear not included 5.3.14
web/php-53/extension/php-suhosin not included 0.9.33
web/php-53/extension/php-tcpwrap not included 1.1.3
web/php-53/extension/php-xdebug not included 2.2.0
web/php-common not included 11.1
web/proxy/squid 3.1.8 3.1.18
web/server/apache-22 2.2.20 2.2.22
web/server/apache-22/module/apache-sed 2.2.20 2.2.22
web/server/apache-22/module/apache-wsgi not included 3.3
x11/diagnostic/xev 1.1.0 1.2.0
x11/diagnostic/xscope 1.3 1.3.1
x11/documentation/xorg-docs 1.6 1.7
x11/keyboard/xkbcomp 1.2.3 1.2.4
x11/library/libdmx 1.1.1 1.1.2
x11/library/libdrm 2.4.25 2.4.32
x11/library/libfontenc 1.1.0 1.1.1
x11/library/libfs 1.0.3 1.0.4
x11/library/libice 1.0.7 1.0.8
x11/library/libsm 1.2.0 1.2.1
x11/library/libx11 1.4.4 1.5.0
x11/library/libxau 1.0.6 1.0.7
x11/library/libxcb 1.7 1.8.1
x11/library/libxcursor 1.1.12 1.1.13
x11/library/libxdmcp 1.1.0 1.1.1
x11/library/libxext 1.3.0 1.3.1
x11/library/libxfixes 4.0.5 5.0
x11/library/libxfont 1.4.4 1.4.5
x11/library/libxft 2.2.0 2.3.1
x11/library/libxi 1.4.3 1.6.1
x11/library/libxinerama 1.1.1 1.1.2
x11/library/libxkbfile 1.0.7 1.0.8
x11/library/libxmu 1.1.0 1.1.1
x11/library/libxmuu 1.1.0 1.1.1
x11/library/libxpm 3.5.9 3.5.10
x11/library/libxrender 0.9.6 0.9.7
x11/library/libxres 1.0.5 1.0.6
x11/library/libxscrnsaver 1.2.1 1.2.2
x11/library/libxtst 1.2.0 1.2.1
x11/library/libxv 1.0.6 1.0.7
x11/library/libxvmc 1.0.6 1.0.7
x11/library/libxxf86vm 1.1.1 1.1.2
x11/library/mesa 7.10.2 7.11.2
x11/library/toolkit/libxaw7 1.0.9 1.0.11
x11/library/toolkit/libxt 1.0.9 1.1.3
x11/library/xtrans 1.2.6 1.2.7
x11/oclock 1.0.2 1.0.3
x11/server/xdmx 1.10.3 1.12.2
x11/server/xephyr 1.10.3 1.12.2
x11/server/xorg 1.10.3 1.12.2
x11/server/xorg/driver/xorg-input-keyboard 1.6.0 1.6.1
x11/server/xorg/driver/xorg-input-mouse 1.7.1 1.7.2
x11/server/xorg/driver/xorg-input-synaptics 1.4.1 1.6.2
x11/server/xorg/driver/xorg-input-vmmouse 12.7.0 12.8.0
x11/server/xorg/driver/xorg-video-ast 0.91.10 0.93.10
x11/server/xorg/driver/xorg-video-ati 6.14.1 6.14.4
x11/server/xorg/driver/xorg-video-cirrus 1.3.2 1.4.0
x11/server/xorg/driver/xorg-video-dummy 0.3.4 0.3.5
x11/server/xorg/driver/xorg-video-intel 2.10.0 2.18.0
x11/server/xorg/driver/xorg-video-mach64 6.9.0 6.9.1
x11/server/xorg/driver/xorg-video-mga 1.4.13 1.5.0
x11/server/xorg/driver/xorg-video-openchrome 0.2.904 0.2.905
x11/server/xorg/driver/xorg-video-r128 6.8.1 6.8.2
x11/server/xorg/driver/xorg-video-trident 1.3.4 1.3.5
x11/server/xorg/driver/xorg-video-vesa 2.3.0 2.3.1
x11/server/xorg/driver/xorg-video-vmware 11.0.3 12.0.2
x11/server/xserver-common 1.10.3 1.12.2
x11/server/xvfb 1.10.3 1.12.2
x11/server/xvnc 1.0.90 1.1.0
x11/session/sessreg 1.0.6 1.0.7
x11/session/xauth 1.0.6 1.0.7
x11/session/xinit 1.3.1 1.3.2
x11/transset 0.9.1 1.0.0
x11/trusted/trusted-xorg 1.10.3 1.12.2
x11/x11-window-dump 1.0.4 1.0.5
x11/xclipboard 1.1.1 1.1.2
x11/xclock 1.0.5 1.0.6
x11/xfd 1.1.0 1.1.1
x11/xfontsel 1.0.3 1.0.4
x11/xfs 1.1.1 1.1.2
P.S. To get the version numbers for this table, I ran a quick perl script over
the output from:
% pkg contents -H -r -t depend -a type=incorporate -o fmri \
`pkg contents -H -r -t depend -a type=incorporate -o fmri
[email protected],5.11-0.175.1.0.0.24` \
| sort /tmp/11.1
% pkg contents -H -r -t depend -a type=incorporate -o fmri \
`pkg contents -H -r -t depend -a type=incorporate -o fmri
[email protected],5.11-0.175.0.0.0.2` \
| sort /tmp/11.0