markround.com

DevOps, Sound Engineering and other things of interest...

Solaris 11 Packages

About

Welcome to my collection of Solaris 11 packages. Here you’ll find IPS-packaged open source utilities and tools that I have been using for my own personal projects, and have made available in the hope that they may prove useful to other people. They are currently available for the x86 platform only (contact me if you’re interested in Sparc versions – see the “Feedback” section below) and are provided in Solaris 11 native IPS format. You can browse the repositories directly at http://pkg.markround.com.

Overview & Goals

These packages are designed never to interfere with the base system, or packages from another source such as OpenCSW. While some of these packages could have been relocated to /usr, others are an updated version of a package already included in Solaris 11, such as my package of GNU screen (with the “vertical split” patch included). As such, they all install under a base of /opt/mar, and use the “mar” prefix in the package FMRI.

There are currently two repositories (or release “branches”) to pick from :

  • stable : These contain packages that have been tested together and shouldn’t have any major packaging or compilation issues (see disclaimer below).

  • dev : This repository will contain more up to date versions of the packages, but they may be in a state of flux while I work on bugs, packaging problems and other issues. This is one step downstream from my internal repository, so most bugs should have been ironed out by the time they get here, but you should still only use this if you don’t mind occasional breakage.

These packages have been compiled with options that made the most sense for my usage (and hopefully, yours too!). For example, the screen package is built as a basic 32-bit binary; the NginX webserver is 64-bit and has many default modules enabled. They have been built on a base of Solaris 11.1, and should work on all subsequent versions. My aim is not to effectively become another distro, with my own version of components such as OpenSSL and so on; where possible, packages therefore use libraries that ship as part of Solaris 11.

All packages should be usable “out of the box”, and anything that runs as a daemon ships with a suitable SMF manifest that will be auto-imported and enabled when the package is installed. Configuration files are set up with reasonable defaults, and local modifications to files under /etc will be preserved during upgrades. See below for a demonstration.

Usage

Setup

Simply add “markround” as a IPS publisher :

$ pkg set-publisher -g http://pkg.markround.com/stable markround

Or, to use the dev repository :

$ pkg set-publisher -g http://pkg.markround.com/dev markround

Path

You will need to add /opt/mar/bin and /opt/mar/sbin your $PATH environment variable. Simply drop this into your ~/.profile or equivalent :

PATH=$PATH:/opt/mar/bin:/opt/mar/sbin
export PATH

Switching between repositories

To switch between the dev and stable repositories, just repoint the origin :

$ pkg set-publisher -O http://pkg.markround.com/stable markround

Or to switch to the dev repository :

$ pkg set-publisher -O http://pkg.markround.com/dev markround

Package management

Searching for a package

Either use the web interfaces available at http://pkg.markround.com, or try the following commands (assuming you’re using the stable repository):

$ pkgrepo -s http://pkg.markround.com/stable list
$ pkgrepo -s http://pkg.markround.com/stable info
$ pkg search <search criteria>
$ pkg list -g http://pkg.markround.com/stable

Install a package

If a package name does not “clash” with an OS-provided package, you can simply install it using it’s shortened name. e.g.

$ pkg install nginx

Install a package that supersedes a OS-provided package

You will need to use the full FMRI of the package. For example, GNU screen already exists in Solaris 11 as terminal/screen, so you would need to use :

$ pkg install pkg://markround/mar/terminal/screen

Install a package with a service

As mentioned above, packages that run as a daemon ship with a corresponding SMF manifest and example configuration file. So, to install and run the redis key-value store, you would enter the following command :

$ pkg install redis

And you should then see the package install, create the “redis” user account and bring the service online:

$ id -a redis
uid=6(redis) gid=2(bin) groups=2(bin)

$ svcs -a | grep redis
online      10:16:08 svc:/network/redis:default

$ redis-cli
127.0.0.1:6379> ping
PONG

If the service failed to start, check the output of svcs -xv, which will usually contain some relevant information and a link to a log file that should help you diagnose the problem. Most likely this will be an issue with the default configuration on your system, e.g. binding to ports already in use and so on.

Uninstall / upgrade a package

Packages should clear up behind themselves, and will never touch your configuration files so you can simply run :

$ pkg uninstall <package name>

Or

$ pkg upgrade <package name>

Locally-modified configuration files will be preserved, and any new package-provided defaults will be installed as <config file>.new for you to review and merge as necessary.

Feedback

If you have any feedback, comments, or package requests, you can leave a comment below or email me at packages [at] markround [dot] com (address obfuscated to avoid spam.)

Disclaimer

These packages are provided in the hope that they will be useful to others. However, the following big scary all-caps disclaimer applies :

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR DISTRIBUTOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Comments