.. CDDL HEADER START .. The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. .. You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License. .. When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner] .. CDDL HEADER END .. Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. Packaging and Delivering Software with the Image Packaging System ================================================================= A developer's guide ^^^^^^^^^^^^^^^^^^^ .. raw:: pdf Spacer 0 100 .. class:: figure |logo| .. raw:: pdf SetPageCounter 0 arabic Spacer 0 450 .. class:: titletable +--------------------------+--------------------+ | | | | |ologo| | |version| | | | | +--------------------------+--------------------+ .. header:: .. oddeven:: .. class:: headertable +-----------------------------------------------+ | .. class:: footerright | | | | ###Section### | | | +-----------------------------------------------+ .. class:: headertable +-----------------------------------------------+ | .. class:: footerleft | | | | ###Section### | | | +-----------------------------------------------+ .. footer:: .. oddeven:: .. class:: footertableright +------------------------------------------------------+ | .. class:: pageright | | | | ###Page### | +------------------------------------------------------+ .. class:: footertableleft +---------------------+--------------------------------+ | .. class:: pageleft | .. class:: footerleft | | | | | ###Page### | ###Title### | +---------------------+--------------------------------+ .. raw:: pdf PageBreak oneColumn :: Copyright © 2011, Oracle and/or its affiliates. All rights reserved. This document is provided for information purposes only and the contents hereof are subject to change without notice. This document is not warranted to be error-free, nor subject to any other warranties or conditions, whether expressed orally or implied in law, including implied warranties and conditions of merchantability or fitness for a particular purpose. We specifically disclaim any liability with respect to this document and no contractual obligations are formed either directly or indirectly by this document. This document may not be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose, without our prior written permission. Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners. Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark licensed through X/Open Company, Ltd. 0611 Preface ------- In Oracle Solaris 11 and onwards, system software is packaged with the Image Packaging System, or IPS. IPS takes care of installing new software and upgrading that software. This manual is for developers and advanced administrators who want to better understand IPS, how to use it to package their own software, and want to understand how Oracle Solaris is packaged with IPS. Special attention is given to the underlying design concepts and design patterns so that readers can more readily understand and utilize the more advanced features of IPS. How this book is organized -------------------------- **Chapter 1** - *Design Goals and Concepts*, outlines the basic design philosophy of IPS and its expression as software patterns. **Chapter 2** - *Package Lifecycle*, provides an overview of the software package lifecycle with IPS. **Chapter 3** - *Basic Terminology*, lays out the basic terminology and describes the various components that form IPS. **Chapter 4** - *Packaging Software with IPS*, gets the new user started constructing their own packages. **Chapter 5** - *Installing, Removing, and Updating Software Packages*, shows basic operation of pkg(1). **Chapter 6** - *Specifying Dependencies*, explains the different types of IPS dependencies and how they can be used to construct working software systems. **Chapter 7** - *Allowing Variations*, explains how variants, facets and mediated links are used to allow software publishers to define multiple installation forms for their packages. **Chapter 8** - *Modifying Package Manifests Programmatically*, explains how package manifests can be machine edited to permit the automated annotation and checking of package manifests. **Chapter 9** - *Causing System Change With SMF*, explains how to use the Service Management Facility to automatically handle any necessary system changes that should occur as a result of package installation. **Chapter 10**, *Advanced Update*, deals with more complex package upgrade issues, and describes several features in IPS designed to simplify these problems. **Chapter 11**, *Signing Packages*, explains how package signing works and how developers and QA organizations can sign either new or existing, already signed packages. **Chapter 12**, *Handling Non-Global Zones*, describes how IPS handles zones and discusses those cases where package developers should be aware of zones. **Chapter 13**, *How IPS Features Are Used When Packaging the Oracle Solaris OS*, describes how the packages for the operating system are constructed and how the various dependency types in IPS are used to define working package sets. **Chapter 14**, *Republishing Packages*, describes how administrators can modify existing packages if needed for local conditions. **Appendix A**: *Classifying Packages*, contains info.classification scheme definitions. **Appendix B**: *Converting SVR4 packages to IPS*, gives an example of converting an SVR4 package to IPS, and highlights some areas that might need special attention.