diff options
author | Jeff Licquia <licquia@debian.org> | 2011-02-20 08:14:47 -0800 |
---|---|---|
committer | Jeff Licquia <licquia@debian.org> | 2011-02-20 08:14:47 -0800 |
commit | ec4609a58eea4f3a1be280f5eebbb98374b8db65 (patch) | |
tree | 565c4ca1ea0ae842bbdd6ec9905f086b2847a0ae /doc |
Import epm_4.2.orig.tar.gz
[dgit import orig epm_4.2.orig.tar.gz]
Diffstat (limited to 'doc')
-rw-r--r-- | doc/1-intro.html | 323 | ||||
-rw-r--r-- | doc/2-building.html | 382 | ||||
-rw-r--r-- | doc/3-packaging.html | 367 | ||||
-rw-r--r-- | doc/4-advanced.html | 615 | ||||
-rw-r--r-- | doc/5-examples.html | 738 | ||||
-rw-r--r-- | doc/Makefile.in | 65 | ||||
-rw-r--r-- | doc/a-license.html | 318 | ||||
-rw-r--r-- | doc/b-manpages.html | 19 | ||||
-rw-r--r-- | doc/c-reference.html | 455 | ||||
-rw-r--r-- | doc/d-relnotes.html | 102 | ||||
-rw-r--r-- | doc/epm-book.book | 12 | ||||
-rw-r--r-- | doc/epm-book.html | 2930 | ||||
-rw-r--r-- | doc/epm.list.man | 372 | ||||
-rw-r--r-- | doc/epm.man | 192 | ||||
-rw-r--r-- | doc/epminstall.man | 97 | ||||
-rw-r--r-- | doc/epmlogo.gif | bin | 0 -> 21303 bytes | |||
-rw-r--r-- | doc/epmlogo.tif | bin | 0 -> 37550 bytes | |||
-rw-r--r-- | doc/gradient.gif | bin | 0 -> 825 bytes | |||
-rw-r--r-- | doc/mantohtml.c | 697 | ||||
-rw-r--r-- | doc/mkepmlist.man | 74 | ||||
-rw-r--r-- | doc/preface.html | 214 | ||||
-rw-r--r-- | doc/setup.man | 59 | ||||
-rw-r--r-- | doc/setup.png | bin | 0 -> 46977 bytes | |||
-rw-r--r-- | doc/setup.types.man | 75 | ||||
-rw-r--r-- | doc/title.html | 76 |
25 files changed, 8182 insertions, 0 deletions
diff --git a/doc/1-intro.html b/doc/1-intro.html new file mode 100644 index 0000000..f5b6097 --- /dev/null +++ b/doc/1-intro.html @@ -0,0 +1,323 @@ +<HTML> +<BODY> + +<H1 ALIGN="RIGHT"><A NAME="INTRO">1 - Introduction to EPM</A></H1> + +<P>This chapter provides an introduction to the ESP Package Manager ("EPM"). + +<H2>What is EPM?</H2> + +<P>Software distribution under UNIX/Linux can be a challenge, +especially if you ship software for more than one operating +system. Every operating system provides its own software +packaging tools and each has unique requirements or implications +for the software development environment.</P> + +<P>The ESP Package Manager ("EPM") is one solution to this +problem. Besides its own "portable" distribution format, EPM +also supports the generation of several vendor-specific formats. +This allows you to build software distribution files for almost +any operating system from the same sources.</P> + +<H2>History and Evolution</H2> + +<P>When Easy Software Products was founded in 1993, we +originally shipped software only for the SGI IRIX operating +system. In 1997 we added support for Solaris, which was quickly +followed by HP-UX support in 1998.</P> + +<P>Each new operating system and supported processor required a +new set of packaging files. While this worked, it also meant +that we had to keep all of the packaging files synchronized +manually. Needless to say, this process was far from perfect and +we had more than one distribution that was not identical on all +operating systems.</P> + +<P>As we began developing CUPS +(<A HREF="http://www.cups.org/">http://www.cups.org/</A>) in +1997, our initial goal was to add support for two additional +operating systems: Linux and Compaq Tru64 UNIX. If we wanted to +avoid the mistakes of the past, we clearly had to change how we +produced software distributions.</P> + +<P>The first version of EPM was released in 1999 and supported +so-called "portable" software distributions that were not tied +to any particular operating system or packaging software. Due to +popular demand, we added support for vendor-specific packaging +formats in the second major release of EPM, allowing the +generation of portable or "native" distributions from one +program and one set of software distribution files. + +<H2>Existing Software Packaging Systems</H2> + +<P>As we looked for a solution to our problem, we naturally +investigated the existing open-source packaging systems. Under +Linux, we looked at the Red Hat Package Manager ("RPM") and +Debian packaging software ("dpkg" and "dselect"). For the +commercial UNIX's we looked at the vendor-supplied packaging +systems. <A HREF="#TABLE_1_1">Table 1.1</A> shows the results of +our investigation.</P> + +<!-- NEED 5in --> +<TABLE ALIGN="CENTER" BORDER="1"> +<CAPTION><A NAME="TABLE_1_1">Table 1.1: Software Packaging Formats</A></CAPTION> +<TR> + <TH><FONT SIZE="-4">Format</FONT></TH> + <TH><FONT SIZE="-4">Operating Systems<SUP>1</SUP></FONT></TH> + <TH><FONT SIZE="-4">Binaries</FONT></TH> + <TH><FONT SIZE="-4">Cross- Platform</FONT></TH> + <TH><FONT SIZE="-4">Patches</FONT></TH> + <TH><FONT SIZE="-4">Up- grades</FONT></TH> + <TH><FONT SIZE="-4">Con- flicts</FONT></TH> + <TH><FONT SIZE="-4">Re- quires</FONT></TH> + <TH><FONT SIZE="-4">Re- places</FONT></TH> + <TH><FONT SIZE="-4">Config Files</FONT></TH> + <TH><FONT SIZE="-4">Map Files</FONT></TH> + <TH><FONT SIZE="-4">Un- install</FONT></TH> +</TR> +<TR> + <TD ALIGN="CENTER"><SMALL>installp</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>AIX</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> +</TR> +<TR> + <TD ALIGN="CENTER"><SMALL>pkg_add</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>FreeBSD</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes<SUP>2</SUP></SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> +</TR> +<TR> + <TD ALIGN="CENTER"><SMALL>pkg_add</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>NetBSD<BR> + OpenBSD</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes<SUP>2</SUP></SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> +</TR> +<TR> + <TD ALIGN="CENTER"><SMALL>dpkg</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Corel Linux<BR> + Debian GNU/Linux</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes<SUP>2</SUP></SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> +</TR> +<TR> + <TD ALIGN="CENTER"><SMALL>depot</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>HP-UX</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> +</TR> +<TR> + <TD ALIGN="CENTER"><SMALL>inst</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>IRIX</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> +</TR> +<TR> + <TD ALIGN="CENTER"><SMALL>Install.app</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>MacOS X</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> +</TR> +<TR> + <TD ALIGN="CENTER"><SMALL>pkgadd</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Solaris</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> +</TR> +<TR> + <TD ALIGN="CENTER"><SMALL>rpm</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Mandrake<BR> + Red Hat<BR> + SuSE<BR> + TurboLinux</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes<SUP>2</SUP></SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> +</TR> +<TR> + <TD ALIGN="CENTER"><SMALL>setld</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Tru64 UNIX</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> +</TR> +<TR> + <TD ALIGN="CENTER"><SMALL>slackware</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Slackware Linux</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>No</SMALL></TD> + <TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD> +</TR> +</TABLE> + +<OL> + + <LI>Standard packaging system for named operating systems.</LI> + + <LI>These packaging systems are cross-platform but require + the package management utilities to be installed on the + platform before installing the package.</LI> + +</OL> + +<P> </P> + +<P>As you can see, none of the formats supported every feature we +were looking for. One common fault of all these formats is that +they do not support a common software specification file format. +That is, making a Debian software distribution requires +significantly different support files than required for a Solaris +pkg distribution. This makes it extremely difficult to manage +distributions for multiple operating systems.</P> + +<P>All of the package formats support binary distributions. The +RPM and Debian formats also support source distributions that +specifically allow for recompilation and installation. Only the +commercial UNIX formats support patch distributions - you have +to completely upgrade a software package with RPM and Debian. +All but the Solaris <CODE>pkg</CODE> format allow you to upgrade +a package without removing the old version first.</P> + +<P>When building the software packages, RPM and Debian force you +to create the actual directories, copy the files to those +directories, and set the ownerships and permissions. You +essentially are creating a directory for your software that can +be archived in the corresponding package format. To ensure that +all file permissions and ownerships are correct, you must build +the distribution as the root user or use the +<CODE>fakeroot</CODE> software, introducing potential security +risks and violating many corporate security policies. It can also +make building distributions difficult when dynamic data such as +changing data files or databases is involved.</P> + +<P>The commercial UNIX formats use software list files that map +source files to the correct directories and permissions. +This allows for easier delivery of dynamic data, configuration +management of what each distribution actually contains, and +eliminates security issues with special permissions and building +distributions as the root user. Using the proprietary format +also has the added benefit of allowing for software patches and +using the familiar software installation tools for that +operating system. The primary disadvantage is that the same +distributions and packaging software cannot be used on other +operating systems.</P> + +<H2>Design Goals of EPM</H2> + +<P>EPM was designed from the beginning to build binary software +distributions using a common software specification format. The +same distribution files work for all operating systems and all +distribution formats. Supporting source code distributions was +not a goal since most RPM and Debian source distributions are +little more than wrapping around a compressed tar file +containing the source files and a configure script.</P> + +<P>Over the years, additional features have made their way into +EPM to support more advanced software packages. Whenever +possible, EPM emulates a feature if the vendor package format +does not support it natively.</P> + +<H2>Resources</H2> + +<P>The EPM web site provides access to the current software, documentation, +and discussion forums for EPM:</P> + +<PRE> + <A HREF="http://www.epmhome.org/">http://www.epmhome.org/</A> +</PRE> + +<P>The EPM source code can be downloaded in compressed tar files or +via the popular Subversion software. Please see the EPM web site for +complete instructions.</P> + +<P>Send book feedback to +"<A HREF="mailto:epm-book@easysw.com">epm-book@easysw.com</A>".</P> + +</BODY> +</HTML> diff --git a/doc/2-building.html b/doc/2-building.html new file mode 100644 index 0000000..983c246 --- /dev/null +++ b/doc/2-building.html @@ -0,0 +1,382 @@ +<HTML> +<BODY> + +<H1 ALIGN="RIGHT"><A NAME="BUILDING">2 - Building EPM</A></H1> + +<P>This chapter shows how to configure, build, and install the +ESP Package Manager.</P> + +<H2>Requirements</H2> + +<P>EPM requires very little pre-installed software to work. Most +items will likely be provided as part of your OS. Your +development system will need a C compiler, the +<CODE>make(1)</CODE> program (GNU, BSD, and most vendor +<CODE>make</CODE> programs should work), the Bourne (or Korn or +Bash) shell (<CODE>sh(1)</CODE>), and <CODE>gzip(1)</CODE>.</P> + +<P>The optional graphical setup program requires a C++ compiler, +the FLTK library, version 1.1.x, and (for UNIX/Linux) the X11 +libraries. FLTK is available at the following URL:</P> + +<PRE> + <A HREF="http://www.fltk.org/">http://www.fltk.org/</A> +</PRE> + +<P>Your end-user systems will require the Bourne (or Korn or +Bash) shell (<CODE>sh</CODE>), the <CODE>df(1)</CODE> program, +the <CODE>tar(1)</CODE> program, and the <CODE>gzip(1)</CODE> +program to install portable distributions. All but the last are +standard items, and most vendors include <CODE>gzip</CODE> as +well.</P> + +<P>EPM can also generate vendor-specific distributions. These +require the particular vendor tool, such as <CODE>rpm(8)</CODE> +and <CODE>dpkg(8)</CODE>, to generate the software distribution +on the development system and load the software distribution on +the end-user system.</P> + +<H2>Configuring the Software</H2> + +<P>EPM uses GNU <CODE>autoconf(1)</CODE> to configure itself for +your system. The <CODE>configure</CODE> script is used to +configure the EPM software, as follows:</P> + +<PRE> + <KBD>./configure ENTER</KBD> +</PRE> + +<H3>Choosing Compilers</H3> + +<P>If the <CODE>configure</CODE> script is unable to determine +the name of your C or C++ compiler, set the <CODE>CC</CODE> and +<CODE>CXX</CODE> environment variables to point to the C and C++ +compiler programs, respectively. You can set these variables +using the following commands in the Bourne, Korn, or Bash +shells:</P> + +<PRE> + <KBD>export CC=/foo/bar/gcc ENTER + export CXX=/foo/bar/gcc ENTER</KBD> +</PRE> + +<P>If you are using C shell or tcsh, use the following commands +instead:</P> + +<PRE> + <KBD>setenv CC /foo/bar/gcc ENTER + setenv CXX /foo/bar/gcc ENTER</KBD> +</PRE> + +<P>Run the <CODE>configure</CODE> script again to use the new +commands.</P> + +<H3>Choosing Installation Directories</H3> + +<P>The default installation prefix is <VAR>/usr</VAR>, which +will place the EPM programs in <VAR>/usr/bin</VAR>, the setup +GUI in <VAR>/usr/lib/epm</VAR>, and the man pages in +<VAR>/usr/man</VAR>. Use the <CODE>--prefix</CODE> option to +relocate these files</P> + +<P>to another directory:</P> + +<PRE> + <KBD>./configure --prefix=/usr/local ENTER</KBD> +</PRE> + +<P>The <CODE>configure</CODE> script also accepts the +<CODE>--bindir</CODE>, <CODE>--libdir</CODE>, and +<CODE>--mandir</CODE> options to relocate each directory +separately, as follows: + +<PRE> + <KBD>./configure --bindir=/usr/local/bin --libdir=/usr/local/lib \ + --mandir=/usr/local/share/man ENTER</KBD> +</PRE> + +<H3>Options for the Setup GUI</H3> + +<P>The setup GUI requires the FLTK library. The configure script +will look for the <CODE>fltk-config</CODE> utility that comes +with FLTK 1.1.x. Set the FLTKCONFIG environment variable to the +full path of this utility if it cannot be found in the current +path:</P> + +<PRE> + <KBD>setenv FLTKCONFIG /foo/bar/bin/fltk-config ENTER</KBD> +</PRE> + +<P>or:</P> + +<PRE> + <KBD>FLTKCONFIG=/foo/bar/bin/fltk-config ENTER + export FLTKCONFIG</KBD> +</PRE> + +<H2>Building the Software</H2> + +<P>Once you have configured the software, type the following +command to compile it:</P> + +<PRE> + <KBD>make ENTER</KBD> +</PRE> + +<P>Compilation should take a few minutes at most. Then type the +following command to determine if the software</P> + +<P>compiled successfully:</P> + +<PRE> + <KBD>make test ENTER</KBD> + Portable distribution build test PASSED. + Native distribution build test PASSED. +</PRE> + +<P>The <CODE>test</CODE> target builds a portable and native +distribution of EPM and reports if the two distributions were +generated successfully.</P> + +<H2>Installing the Software</H2> + +<P>Now that you have compiled and tested the software, you can +install it using the <CODE>make</CODE> command or one of the +distributions that was created. You should be logged in as the +super-user unless you specified installation directories for +which you have write permission. The <CODE>su(8)</CODE> command +is usually sufficient to install software:</P> + +<PRE> + <KBD>su ENTER</KBD> +</PRE> + +<P>Operating systems such as MacOS X do not enable the root +account by default. The <CODE>sudo(8)</CODE> command is used +instead:</P> + +<PRE> + <KBD>sudo <I>installation command</I> ENTER</KBD> +</PRE> + +<!-- NEED 2in --> +<H3>Installing Using the <CODE>make</CODE> Command</H3> + +<P>Type the following command to install the EPM software using the +<CODE>make</CODE> command:</P> + +<PRE> + <KBD>make install ENTER</KBD> + Installing EPM setup in /usr/lib/epm + Installing EPM programs in /usr/bin + Installing EPM manpages in /usr/man/man1 + Installing EPM documentation in /usr/share/doc/epm +</PRE> + +<P>Use the <CODE>sudo</CODE> command to install on MacOS X:</P> + +<PRE> + <KBD>sudo make install ENTER</KBD> + Installing EPM setup in /usr/lib/epm + Installing EPM programs in /usr/bin + Installing EPM manpages in /usr/man/man1 + Installing EPM documentation in /usr/share/doc/epm +</PRE> + +<H3><A NAME="INSTALL_PORTABLE">Installing Using the Portable +Distribution</A></H3> + +<P>The portable distribution can be found in a subdirectory +named using the operating system, version, and architecture. For +example, the subdirectory for a Linux 2.4.x system on an +Intel-based system would be <VAR>linux-2.4-intel</VAR>. The +subdirectory name is built from the following template:</P> + +<PRE> + <I>os-major.minor-architecture</I> +</PRE> + +<P>The <CODE>os</CODE> name is the common name for the operating +system. <A HREF="#TABLE_2_1">Table 2.1</A> lists the +abbreviations for most operating systems.</P> + +<P>The <CODE>major.minor</CODE> string is the operating system +version number. Any patch revision information is stripped from +the version number, as are leading characters before the major +version number. For example, HP-UX version B.11.11 will result +in a version number string of <CODE>11.11</CODE>.</P> + +<P> </P> + +<CENTER><TABLE BORDER CELLPADDING="2"> +<CAPTION><A NAME="TABLE_2_1">Table 2.1: Operating System Name Abbreviations</A></CAPTION> +<TR> + <TH>Operating System</TH> + <TH>Name</TH> +</TR> +<TR> + <TD>AIX</TD> + <TD><CODE>aix</CODE></TD> +</TR> +<TR> + <TD>Compaq Tru64 UNIX<BR> + Digital UNIX<BR> + OSF/1</TD> + <TD><CODE>tru64</CODE></TD> +</TR> +<TR> + <TD>FreeBSD</TD> + <TD><CODE>freebsd</CODE></TD> +</TR> +<TR> + <TD>HP-UX</TD> + <TD><CODE>hpux</CODE></TD> +</TR> +<TR> + <TD>IRIX</TD> + <TD><CODE>irix</CODE></TD> +</TR> +<TR> + <TD>Linux</TD> + <TD><CODE>linux</CODE></TD> +</TR> +<TR> + <TD>MacOS X</TD> + <TD><CODE>macosx</CODE></TD> +</TR> +<TR> + <TD>NetBSD</TD> + <TD><CODE>netbsd</CODE></TD> +</TR> +<TR> + <TD>OpenBSD</TD> + <TD><CODE>openbsd</CODE></TD> +</TR> +<TR> + <TD>Solaris</TD> + <TD><CODE>solaris</CODE></TD> +</TR> +</TABLE></CENTER> + +<!-- NEED 3in --> +<CENTER><TABLE BORDER CELLPADDING="2"> +<CAPTION><A NAME="TABLE_2_2">Table 2.2: Processor Architecture Abbreviations</A></CAPTION> +<TR> + <TH>Processor(s)</TH> + <TH>Abbreviation</TH> +</TR> +<TR> + <TD>Compaq Alpha</TD> + <TD><CODE>alpha</CODE></TD> +</TR> +<TR> + <TD>HP Precision Architecture</TD> + <TD><CODE>hppa</CODE></TD> +</TR> +<TR> + <TD>INTEL 80x86</TD> + <TD><CODE>intel</CODE></TD> +</TR> +<TR> + <TD>INTEL 80x86 w/64bit Extensions</TD> + <TD><CODE>x86_64</CODE></TD> +</TR> +<TR> + <TD>MIPS RISC</TD> + <TD><CODE>mips</CODE></TD> +</TR> +<TR> + <TD>IBM Power PC</TD> + <TD><CODE>powerpc</CODE></TD> +</TR> +<TR> + <TD>SPARC<BR> + MicroSPARC<BR> + UltraSPARC</TD> + <TD><CODE>sparc</CODE></TD> +</TR> +</TABLE></CENTER> + +<P> </P> + +<P>The <CODE>architecture</CODE> string identifies the target +processor. <A HREF="#TABLE_2_2">Table 2.2</A> lists the supported +processors.</P> + +<P>Once you have determined the subdirectory containing the +distribution, type the following commands to install EPM from +the portable distribution:</P> + +<PRE> + <KBD>cd <I>os-major.minor-architecture<I> ENTER + ./epm.install ENTER</KBD> +</PRE> + +<P>The software will be installed after answering a few yes/no +questions.</P> + +<H3>Installing Using the Native Distribution</H3> + +<P>The <CODE>test</CODE> target also builds a distribution in the +native operating system format, if supported. <A +HREF="#TABLE_2_3">Table 2.3</A> lists the native formats for each +supported operating system and the command to run to install the +software.</P> + +<!-- NEED 5in --> +<CENTER><TABLE BORDER CELLPADDING="2"> +<CAPTION><A NAME="TABLE_2_3">Table 2.3: Native Operating System Formats</A></CAPTION> +<TR> + <TH>Operating System</TH> + <TH>Format</TH> + <TH>Command</TH> +</TR> +<TR> + <TD>AIX</TD> + <TD><CODE>aix</CODE></TD> + <TD NOWRAP><CODE>installp -d<I>directory</I> epm</CODE></TD> +</TR> +<TR> + <TD>Compaq Tru64 UNIX<BR> + Digital UNIX<BR> + OSF/1</TD> + <TD><CODE>setld</CODE></TD> + <TD NOWRAP><CODE>setld -a <I>directory</I></CODE></TD> +</TR> +<TR> + <TD>FreeBSD<BR> + NetBSD<BR> + OpenBSD</TD> + <TD><CODE>bsd</CODE></TD> + <TD NOWRAP><CODE>cd <I>directory</I><BR> + pkg_add epm</CODE></TD> +</TR> +<TR> + <TD>HP-UX</TD> + <TD><CODE>depot</CODE></TD> + <TD NOWRAP><CODE>swinstall -f <I>directory</I></CODE></TD> +</TR> +<TR> + <TD>IRIX</TD> + <TD><CODE>inst</CODE></TD> + <TD NOWRAP><CODE>swmgr -f <I>directory</I></CODE></TD> +</TR> +<TR> + <TD>Linux</TD> + <TD><CODE>rpm</CODE></TD> + <TD NOWRAP><CODE>rpm -i <I>directory</I>/epm-4.1.rpm</CODE></TD> +</TR> +<TR> + <TD>MacOS X</TD> + <TD><CODE>osx</CODE></TD> + <TD NOWRAP><CODE>open <I>directory</I>/<CODE>epm-4.1.pkg</CODE></TD> +</TR> +<TR> + <TD>Solaris</TD> + <TD><CODE>pkg</CODE></TD> + <TD NOWRAP><CODE>pkgadd -d <I>directory</I> epm</CODE></TD> +</TR> +</TABLE></CENTER> + +</BODY> +</HTML> diff --git a/doc/3-packaging.html b/doc/3-packaging.html new file mode 100644 index 0000000..092ad0b --- /dev/null +++ b/doc/3-packaging.html @@ -0,0 +1,367 @@ +<HTML> +<BODY> + +<H1 ALIGN="RIGHT"><A NAME="PACKAGING">3 - Packaging Your Software with EPM</A></H1> + +<P>This chapter describes how to use EPM to package your own software +packages.</P> + +<H2>The Basics</H2> + +<P>EPM reads one or more software "list" files that describe a +single software package. Each list file contains one or more +lines of ASCII text containing product or file information.</P> + +<P>Comments lines start with the <CODE>#</CODE> character, +directive lines start with the <CODE>%</CODE> character, +variables lines start with the <CODE>$</CODE> character, and +file, directory, init script, and symlink lines start with a +letter.</P> + +<!-- NEED 3in --> +<H3>Product Information</H3> + +<P>Every list file needs to define the product name, copyright, description, +license, README file, vendor, and version:</P> + +<PRE> + %product Kung Foo Firewall + %copyright 1999-2005 by Foo Industries, All Rights Reserved. + %vendor Foo Industries + %license COPYING + %readme README + %description Kung Foo firewall software for your firewall. + %version 1.2.3p4 1020304 +</PRE> + +<P>The <CODE>%license</CODE> and <CODE>%readme</CODE> directives +specify files for the license agreement and README files for the +package, respectively.</P> + +<P>The <CODE>%product</CODE>, <CODE>%copyright</CODE>, +<CODE>%vendor</CODE>, and <CODE>%description</CODE> directives +take text directly from the line. + +<P>The <CODE>%version</CODE> directive specifies the version +numbers of the package. The first number is the human-readable +version number, while the second number is the integer version +number. If you omit the integer version number, EPM will +calculate one for you.</P> + +<H3>Files, Directories, and Symlinks</H3> + +<P>Each file in the distribution is listed on a line starting +with a letter. The format of all lines is: + +<PRE> + type mode owner group destination source <I>options</I> +</PRE> + +<P>Regular files use the letter <CODE>f</CODE> for the type +field:</P> + +<PRE> + f 755 root sys /usr/bin/foo foo +</PRE> + +<P>Configuration files use the letter <CODE>c</CODE> for the +type field:</P> + +<PRE> + c 644 root sys /etc/foo.conf foo.conf +</PRE> + +<!-- NEED 2in --> +<P>Directories use the letter <CODE>d</CODE> for the type field +and use a source path of "-":</P> + +<PRE> + d 755 root sys /var/spool/foo - +</PRE> + +<P>Finally, symbolic links use the letter <CODE>l</CODE> (lowercase L) for the type field:</P> + +<PRE> + l 000 root sys /usr/bin/foobar foo +</PRE> + +<P>The source field specifies the file to link to and can be a +relative path.</P> + +<H3>Wildcards</H3> + +<P>Wildcard patterns can be used in the source field to include multiple +files on a single line: + +<PRE> + f 0444 root sys /usr/share/doc/foo *.html +</PRE> + +<!-- NEED 3in --> +<H3>Subpackages</H3> + +<P>Subpackages are optional parts of your software package. For +example, if your package includes developer files, you might +provide them as a subpackage so that users that will not be +developing add-ons to your software can omit them from the +installation.</P> + +<CENTER><TABLE BORDER WIDTH="80%" BGCOLOR="#cccccc" CELLPADDING="5"> +<TR><TD><B>Note:</B><BR> +Subpackages are implemented as native subsets of the main package +for the AIX, HPUX, IRIX, Solaris, and Tru64 formats and as +separate packages that depend on the main (parent) package for +all other formats.</TD></TR> +</TABLE></CENTER> + +<P>To define a subpackage, use the <CODE>%subpackage</CODE> +directive followed by a <CODE>%description</CODE> directive:</P> + +<PRE> + %subpackage foo + %description One-Line Description of Foo +</PRE> + +<P>Files, scripts, and dependencies that follow the +<CODE>%subpackage</CODE> directive are treated as part of that +subpackage. Specifying the <CODE>%subpackage</CODE> directive +with no name returns processing to the main (parent) package.</P> + +<!-- NEED 2in --> +<P>You can alternate between subpackages as many times as you +like:</P> + +<PRE> + %description Main package description + f 0755 /usr/bin/bar bar + + %subpackage foo + %description Foo programs + f 0755 /usr/bin/foo foo + %requires bla + + %subpackage + f 0644 /usr/share/man/man1/bar.1 + + %subpackage foo + f 0644 /usr/share/man/man1/foo.1 +</PRE> + +<P>The above example creates a package containing the "bar" +program and man page with a subpackage containing the "foo" +program and man page. The "foo" subpackage depends both on the +main package (implicit <CODE>%requires</CODE>) and another +package called "bla".</P> + +<!-- NEED 2in --> +<H2>Building a Software Package</H2> + +<P>The <CODE>epm(1)</CODE> program is used to build software +package from list files. To build a portable software package for +an application called "foo", type the following command:</P> + +<PRE> + <KBD>epm foo ENTER</KBD> +</PRE> + +<P>If your application uses a different base name than the list +file, you can specify the list filename on the command-line as +well:</P> + +<PRE> + <KBD>epm foo bar.list ENTER</KBD> +</PRE> + + +<CENTER><TABLE> +<CAPTION ALIGN="BOTTOM"><A NAME="FIGURE_3_1">Figure 3.1: The EPM +Setup GUI</A></CAPTION> +<TR><TD><IMG SRC="setup.png"></TD></TR> +</TABLE></CENTER> + +<P> </P> + +<H3>Installing the Software Package</H3> + +<P>Once you have created the software package, you can install +it. Portable packages include an installation script called +<VAR>product.install</VAR>, where "product" is the name of the +package:</P> + +<PRE> + <KBD>cd os-release-arch ENTER + ./product.install ENTER</KBD> +</PRE> + +<P>After answering a few yes/no questions, the software will be +installed. To bypass the questions, run the script with the +<CODE>now</CODE> argument:</P> + +<PRE> + <KBD>cd os-release-arch ENTER + ./product.install now ENTER</KBD> + +</PRE> + +<H3>Including the Setup GUI</H3> + +<P>EPM also provides an optional graphical setup program (<A +HREF="#FIGURE_3_1">Figure 3.1</A>). To include the setup program +in your distributions, create a product logo image in GIF or XPM +format and use the <CODE>--setup-image</CODE> option when +creating your distribution:</P> + +<PRE> + <KBD>epm --setup-image foo.xpm foo ENTER</KBD> +</PRE> + +<P>This option is only supported when creating for portable and +MacOS X software packages.</P> + +<!-- NEED 5in --> +<H3>Creating Vendor Package Files</H3> + +<P>EPM can also produce vendor-specific packages using the +<CODE>-f</CODE> option: + +<PRE> + <KBD>epm -f format foo bar.list ENTER</KBD> +</PRE> + +<P>The <I>format</I> option can be one of the following keywords: + +<UL> + + <LI><CODE>aix</CODE> - AIX software packages. + + <LI><CODE>bsd</CODE> - FreeBSD, NetBSD, or OpenBSD + software packages. + + <LI><CODE>depot</CODE> or <CODE>swinstall</CODE> - HP-UX + software packages. + + <LI><CODE>dpkg</CODE> - Debian software packages. + + <LI><CODE>inst</CODE> or <CODE>tardist</CODE> - IRIX + software packages. + + <LI><CODE>native</CODE> - "Native" software packages + (RPM, INST, DEPOT, PKG, etc.) for the platform. + + <LI><CODE>osx</CODE> - MacOS X software packages. + + <LI><CODE>pkg</CODE> - Solaris software packages. + + <LI><CODE>portable</CODE> - Portable software + packages (default). + + <LI><CODE>rpm</CODE> - Red Hat software packages. + + <LI><CODE>setld</CODE> - Tru64 (setld) software + packages. + + <LI><CODE>slackware</CODE> - Slackware software + packages. + +</UL> + +<P>Everything in the software list file stays the same - you just +use the <CODE>-f</CODE> option to select the format. For +example, to build an RPM distribution of EPM, type:</P> + +<PRE> + epm -f rpm epm +</PRE> + +<P>The result will be one or more RPM package files instead of +the portable package files.</P> + +<H2>Package Files</H2> + +<P>EPM creates the package files in the output directory. As +mentioned in <A HREF="#INSTALL_PORTABLE">Chapter 1, "Installing +Using the Portable Distribution"</A>, the default output +directory is based on the operating system name, version, and +architecture. Each package format will leave different files in +the output directory.</P> + +<H3>AIX Package Files</H3> + +<P>AIX packages are contained in a file called +<VAR>name.bff</VAR>, where "name" is the product/package name you +supplied on the command-line.</P> + +<H3>BSD Package Files</H3> + +<P>BSD packages are contained in a file called +<VAR>name.tgz</VAR>, where "name" is the product/package name you +supplied on the command-line.</P> + +<H3>HP-UX Package Files</H3> + +<P>HP-UX packages are contained in two files called +<VAR>name.depot.gz</VAR> and <VAR>name.depot.tgz</VAR>, where +"name" is the product/package name you supplied on the +command-line. The <VAR>name.depot.gz</VAR> file can be supplied +directly to the <CODE>swinstall(1m)</CODE> command, while the +<VAR>name.depot.tgz</VAR> file contains a compressed +<CODE>tar(1)</CODE> archive that can be used to install the +software from CD-ROM or network filesystem.</P> + +<H3>Debian Package Files</H3> + +<P>Debian packages are contained in a file called +<VAR>name.deb</VAR> or <VAR>name.deb.tgz</VAR> when there are +subpackages, where "name" is the product/package name you +supplied on the command-line. The <VAR>name.deb.tgz</VAR> file +contains a compressed <CODE>tar</CODE> archive containing +<VAR>name.deb</VAR> and <VAR>name-subpackage.deb</VAR> files that +can be installed from CD-ROM, disk, or network filesystem.</P> + +<H3>IRIX Package Files</H3> + +<P>IRIX packages are contained in a file called +<VAR>name.tardist</VAR>, where "name" is the product/package name +you supplied on the command-line.</P> + +<H3>MacOS X Package Files</H3> + +<P>MacOS X packages are contained in a file called +<VAR>name.dmg</VAR>, where "name" is the product/package name you +supplied on the command-line.</P> + +<H3>RPM Package Files</H3> + +<P>RPM packages are contained in a file called +<VAR>name.rpm</VAR> or <VAR>name.rpm.tgz</VAR> when there are +subpackages, where "name" is the product/package name you +supplied on the command-line. The <VAR>name.rpm.tgz</VAR> file +contains a compressed <CODE>tar</CODE> archive containing +<VAR>name.rpm</VAR> and <VAR>name-subpackage.rpm</VAR> files that +can be installed from CD-ROM, disk, or network filesystem.</P> + +<H3>Slackware Package Files</H3> + +<P>Slackware packages are contained in a file called +<VAR>name.tgz</VAR>, where "name" is the product/package name you +supplied on the command-line.</P> + +<H3>Solaris Package Files</H3> + +<P>Solaris packages are contained in two files called +<VAR>name.pkg.gz</VAR> and <VAR>name.pkg.tgz</VAR>, where "name" +is the product/package name you supplied on the command-line. The +<VAR>name.pkg.gz</VAR> file is a compressed package file that can +be used directly with the <CODE>pkgadd(1m)</CODE> command, while +the <VAR>name.pkg.tgz</VAR> file is a compressed <CODE>tar</CODE> +archive that can be used to install the software from CD-ROM, +disk, or network filesystem.</P> + +<H3>Tru64 Package Files</H3> + +<P>Tru64 packages are contained in a file called +<VAR>name.tar.gz</VAR>, where "name" is the product/package name +you supplied on the command-line.</P> + +</BODY> +</HTML> diff --git a/doc/4-advanced.html b/doc/4-advanced.html new file mode 100644 index 0000000..128794d --- /dev/null +++ b/doc/4-advanced.html @@ -0,0 +1,615 @@ +<HTML> +<BODY> + +<H1 ALIGN="RIGHT"><A NAME="ADVANCED">4 - Advanced Packaging with EPM</A></H1> + +<P>This chapter describes the advanced packaging features of EPM.</P> + +<H2>Including Other List Files</H2> + +<P>The <CODE>%include</CODE> directive includes another list +file:</P> + +<PRE> + %include filename +</PRE> + +<P>Includes can usually be nested up to 250 levels depending on +the host operating system and libraries.</P> + +<H2>Dependencies</H2> + +<P>EPM supports four types of dependencies in list files: +<CODE>%incompat</CODE>, <CODE>%provides</CODE>, +<CODE>%replaces</CODE>, and <CODE>%requires</CODE>. <A +HREF="#TABLE_4_1">Table 4.1</A> shows the level of support for +each package format.</P> + +<!-- NEED 5in --> +<CENTER><TABLE BORDER CELLPADDING="2"> +<CAPTION><A NAME="TABLE_4_1">Table 4.1: Dependency Support</A></CAPTION> +<TR> + <TH>Format</TH> + <TH>%incompat</TH> + <TH>%provides</TH> + <TH>%replaces</TH> + <TH>%requires</TH> +</TR> +<TR> + <TD ALIGN="CENTER">aix</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> +</TR> +<TR> + <TD ALIGN="CENTER">bsd</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">Yes</TD> +</TR> +<TR> + <TD ALIGN="CENTER">deb</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes<SUP>1</SUP></TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> +</TR> +<TR> + <TD ALIGN="CENTER">inst</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> +</TR> +<TR> + <TD ALIGN="CENTER">osx</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> +</TR> +<TR> + <TD ALIGN="CENTER">pkg</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">Yes</TD> +</TR> +<TR> + <TD ALIGN="CENTER">portable</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> +</TR> +<TR> + <TD ALIGN="CENTER">rpm</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">Yes</TD> +</TR> +<TR> + <TD ALIGN="CENTER">setld</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> +</TR> +<TR> + <TD ALIGN="CENTER">slackware</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> +</TR> +<TR> + <TD ALIGN="CENTER">swinstall</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> +</TR> +</TABLE></CENTER> + +<OL> + + <LI>Debian's package format does not currently support + version numbers for <CODE>%provides</CODE> + dependencies.</LI> + +</OL> + +<P> </P> + +<P>Software conflicts and requirements are specified using the +<CODE>%incompat</CODE> and <CODE>%requires</CODE> directives.</P> + +<P>If your software replaces another package, you can specify +that using the <CODE>%replaces</CODE> directive. +<CODE>%replaces</CODE> is silently mapped to +<CODE>%incompat</CODE> when the package format does not support +package replacement.</P> + +<P>If your package provides certain functionality associated with +a standard name, the <CODE>%provides</CODE> directive can be +used.</P> + +<!-- NEED 1in --> +<P>Dependencies are specified using the package name and optionally the +lower and upper version numbers: + +<PRE> + %requires foobar + %requires foobar 1.0 + %incompat foobar 0.9 + %replaces foobar + %replaces foobar 1.2 3.4 + %provides foobar +</PRE> + +<P>or the filename:</P> + +<PRE> + %requires /usr/lib/libfoobar.so + %incompat /usr/lib/libfoobar.so.1.2 +</PRE> + +<P>Package dependencies are currently enforced only for the same +package format, so a portable distribution that requires package +"foobar" will only look for an installed "foobar" package in +portable format.</P> + + +<P>Filename dependencies are only supported by the Debian, +portable, and RPM distribution formats. + +<H2>Scripts</H2> + +<P>Bourne shell script commands can be executed before or after +installation, patching, or removal of the software. <A +HREF="#TABLE_4_2">Table 4.2</A> shows the support for scripts in +each package format.</P> + +<P>The <CODE>%preinstall</CODE> and <CODE>%postinstall</CODE> +directives specify commands to be run before and after +installation, respectively:</P> + +<PRE> + %preinstall echo Command before installing + %postinstall echo Command after installing +</PRE> + +<P>Similarly, the <CODE>%prepatch</CODE> and <CODE>%postpatch</CODE> +directives specify commands to be executed before and after patching +the software:</P> + +<PRE> + %prepatch echo Command before patching + %postpatch echo Command after patching +</PRE> + +<P>Finally, the <CODE>%preremove</CODE> and <CODE>%postremove</CODE> +directives specify commands that are run before and after removal +of the software:</P> + +<PRE> + %preremove echo Command before removing + %postremove echo Command after removing +</PRE> + +<!-- NEED 3in --> +<CENTER><TABLE ALIGN="CENTER" BORDER="1"> +<CAPTION><A NAME="TABLE_4_2">Table 4.2: Scripts Support</A></CAPTION> +<TR> + <TH><SMALL>Format</SMALL></TH> + <TH><SMALL>%preinstall</SMALL></TH> + <TH><SMALL>%postinstall</SMALL></TH> + <TH><SMALL>%prepatch</SMALL></TH> + <TH><SMALL>%postpatch</SMALL></TH> + <TH><SMALL>%preremove</SMALL></TH> + <TH><SMALL>%postremove</SMALL></TH> +</TR> +<TR> + <TD ALIGN="CENTER">aix</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> +</TR> +<TR> + <TD ALIGN="CENTER">bsd</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">No</TD> +</TR> +<TR> + <TD ALIGN="CENTER">deb</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> +</TR> +<TR> + <TD ALIGN="CENTER">inst</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> +</TR> +<TR> + <TD ALIGN="CENTER">osx</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> +</TR> +<TR> + <TD ALIGN="CENTER">pkg</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> +</TR> +<TR> + <TD ALIGN="CENTER">portable</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> +</TR> +<TR> + <TD ALIGN="CENTER">rpm</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> +</TR> +<TR> + <TD ALIGN="CENTER">setld</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> +</TR> +<TR> + <TD ALIGN="CENTER">slackware</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> +</TR> +<TR> + <TD ALIGN="CENTER">swinstall</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">No</TD> + <TD ALIGN="CENTER">Yes</TD> + <TD ALIGN="CENTER">Yes</TD> +</TR> +</TABLE></CENTER> + +<P> </P> + +<P>To include an external script file, use the +<CODE><filename</CODE> notation:</P> + +<PRE> + %postinstall <filename +</PRE> + +<P>To include multiple lines directly, use the +<CODE><<string</CODE> notation (a.k.a. a "here" document):</P> + +<PRE> + %postinstall <<EOF + echo Command before installing + /usr/bin/foo + EOF +</PRE> + +<P>Note that all commands specified in the list file will use +the variable expansion provided by EPM, so be sure to quote any +dollar sign (<CODE>$</CODE>) characters in your commands. For +example, "$foo" is replaced by the value of "foo", but "$$foo" +becomes "$foo".</P> + +<!-- NEED 4in --> +<H2>Conditional Directives</H2> + +<P>The <CODE>%system</CODE> directive can match or not match +specific operating system names or versions. The operating +system name is the name reported by <CODE>uname</CODE> in +lowercase, while the operating system version is the major and +minor version number reported by <CODE>uname -r</CODE>: + +<DL><DD><DL> + + <DT><CODE>%system irix</CODE> + <BR> </DT> + + <DD>Only include the following files when building a distribution + for the IRIX operating system. + <BR> </DD> + + <DT><CODE>%system linux-2.0</CODE> + <BR> </DT> + + <DD>Only include the following files when building a distribution + for Linux 2.0.x. + <BR> </DD> + + <DT><CODE>%system !irix !linux-2.0</CODE> + <BR> </DT> + + <DD>Only include the following files when building a distribution + for operating systems other than IRIX and Linux 2.0.x. + <BR> </DD> + +</DL></DD></DL> + +<P>The special name <CODE>all</CODE> is used to match all +operating systems:</P> + +<PRE> + %system all +</PRE> + +<P>For format-specific files, the <CODE>%format</CODE> directive +can be used:</P> + +<DL><DD><DL> + + <DT><CODE>%format rpm</CODE> + <BR> </DT> + + <DD>Only include the following files when building an RPM distribution. + <BR> </DD> + + <DT><CODE>%format !rpm</CODE> + <BR> </DT> + + <DD>Only include the following files when not building an RPM + distribution.x. + <BR> </DD> + + <DT><CODE>%format all</CODE> + <BR> </DT> + + <DD>Include the following files for all types of distributions. + <BR> </DD> + +</DL></DD></DL> + +<P>The <CODE>%arch</CODE> directive can match or not match specific +architectures. The architecture name is the name reported by +<CODE>uname -m</CODE>; "arm" is a synonym for "armv6", "armv7", and "armv8", +"intel" is a synonym for "i386", "i486", "i586", and "i686", and "powerpc" is a +synonym for "ppc":</P> + +<DL><DD><DL> + + <DT><CODE>%arch intel</CODE> + <BR> </DT> + + <DD>Only include the following files when building a package for 32-bit + Intel processors. + <BR> </DD> + + <DT><CODE>%arch armv6</CODE> + <BR> </DT> + + <DD>Only include the following files when building a package for ARMv6 + processors. + <BR> </DD> + + <DT><CODE>%system !powerpc</CODE> + <BR> </DT> + + <DD>Only include the following files when building a package for + processors other than PowerPC. + <BR> </DD> + +</DL></DD></DL> + +<P>The special name <CODE>all</CODE> is used to match all architectures:</P> + +<PRE> + %arch all +</PRE> + +<P>Finally, EPM can conditionally include lines using the +<CODE>%if</CODE>, <CODE>%elseif</CODE>, <CODE>%ifdef</CODE>, +<CODE>%elseifdef</CODE>, <CODE>%else</CODE>, and +<CODE>%endif</CODE> directives.</P> + +<P><CODE>%if</CODE> directives include the text that follows if +the named variable(s) are defined to a non-empty string:</P> + +<PRE> + %if FOO + f 755 root sys /usr/bin/foo foo + %elseif BAR + f 755 root sys /usr/bin/bar bar + %endif +</PRE> + +<P><CODE>%ifdef</CODE> directives only include the text if the +named variable(s) are defined to any value:</P> + +<PRE> + %ifdef OSTYPE + f 755 root sys /usr/bin/program program-$OSTYPE + %else + f 755 root sys /usr/bin/program program.sh + %endif +</PRE> + +<H2>Protecting Object Files from Stripping</H2> + +<P>The <CODE>nostrip()</CODE> option can be included at the end +of a file line to prevent EPM from stripping the symbols and +debugging information from a file:</P> + +<PRE> + f 755 root sys /usr/lib/libfoo.so libfoo.so nostrip() +</PRE> + +<H2>Software Patches</H2> + +<P>EPM supports portable software patch distributions which +contain only the differences between the original and patch +release. Patch files are specified using uppercase letters for +the affected files. In the following example, the files +<VAR>/usr/bin/bar</VAR> and <VAR>/etc/foo.conf</VAR> are +marked</P> + +<!-- NEED 2in --> +<P>as changed since the original release:</P> + +<PRE> + f 755 root sys /usr/bin/foo foo + F 755 root sys /usr/bin/bar bar + f 755 root sys /usr/share/man/man1/foo.1 foo.man + f 755 root sys /usr/share/man/man1/bar.1 bar.man + C 644 root sys /etc/foo.conf foo.conf +</PRE> + +<H2>Variables</H2> + +<P>EPM imports the current environment variables for use in your +list file. You can also define new variable in the list file or +on the command-line when running EPM.</P> + +<P>Variables are defined by starting the line with the dollar +sign (<CODE>$</CODE>) followed by the name and value:</P> + +<PRE> + $name=value + $prefix=/usr + $exec_prefix=${prefix} + $bindir=$exec_prefix/bin +</PRE> + +<P>Variable substitution is performed when the variable is +defined, so be careful with the ordering of your variable +definitions.</P> + +<P>Also, any variables you specify in your list file will be +overridden by variables defined on the command-line or in your +environment, just like with <CODE>make</CODE>. This can be a +useful feature or a curse, depending on your choice of variable +names.</P> + +<P>As you can see, variables are referenced using the dollar +sign (<CODE>$</CODE>). As with most shells, variable names can +be surrounded by curly braces (<CODE>${variable}</CODE>) to +explicitly delimit the name.</P> + +<!-- NEED 1in --> +<P>If you need to insert a <CODE>$</CODE> in a filename or a +script, use <CODE>$$</CODE>:</P> + +<PRE> + %install echo Enter your name: + %install read $$name + %install echo Your name is $$name. +</PRE> + +<H2>Init Scripts</H2> + +<P>Initialization scripts are generally portable between +platforms, however the location of initialization scripts varies +greatly.</P> + +<P>The <CODE>i</CODE> file type can be used to specify and init +script that is to be installed on the system. EPM will then +determine the appropriate init file directories to use and create +any required symbolic links to support the init script:</P> + +<PRE> + i 755 root sys foo foo.sh +</PRE> + +<P>The previous example creates an init script named +<VAR>foo</VAR> on the end-user system and will create symbolic +links to run levels 0, 2, 3, and 5 as needed, using a sequence +number of 00 (or 000) for the shutdown script and 99 (or 999) for +the startup script.</P> + +<P>To specify run levels and sequence numbers, use the +<CODE>runlevel()</CODE>, <CODE>start()</CODE>, and +<CODE>stop()</CODE> options:</P> + +<PRE> + i 755 root sys foo foo.sh "runlevel(02) start(50) stop(30)" +</PRE> + +<H2>Literal Package Data</H2> + +<P>Sometimes you need to include format-specific package data such as +keywords, signing keys, and response data. The <CODE>%literal(section)</CODE> +directive adds format-specific data to the packages you create. Literal +data is currently only supported for RPM and PKG packages.</P> + +<H3>PKG Literal Data</H3> + +<P>PKG packages support request files that are used to do batch +installations when installation commands require user input. The +<CODE>%literal(request)</CODE> directive can be used to provide this user +input:</P> + +<PRE> + %literal(request) <<EOF + John Doe + 1 Any Lane + Forest Lawn, OH 12345 + EOF +</PRE> + +<H3>RPM Literal Data</H3> + +<P>RPM packages support numerous attributes in the "spec" file that control +how the package is created and what metadata is included with the package. The +<CODE>%literal(spec)</CODE> directive can be used to provide attributes for +the spec file:</P> + +<PRE> + %literal(spec) <<EOF + %changelog + * Tue Aug 26 2008 John Doe <johndoe@domain.com> + + - Added new feature "bar" + + * Fri Aug 1 2008 John Doe <johndoe@domain.com> + + - Added new feature "foo" + EOF +</PRE> + +</BODY> +</HTML> diff --git a/doc/5-examples.html b/doc/5-examples.html new file mode 100644 index 0000000..6db2df7 --- /dev/null +++ b/doc/5-examples.html @@ -0,0 +1,738 @@ +<HTML> +<BODY> + +<H1 ALIGN="RIGHT"><A NAME="EXAMPLES">5 - EPM Packaging Examples</A></H1> + +<P>This chapter shows how the EPM and CUPS software is packaged using +EPM list files. The EPM list file example highlights the basic features +of EPM, while the CUPS list file example shows the more advanced features +of EPM.</P> + +<H2>Packaging the EPM Software</H2> + +<P>The EPM software comes with its own autoconf-generated +<VAR>epm.list</VAR> file that is used to package and test EPM. +The EPM package consists of the main package plus a +"documentation" subpackage for the documentation files and a +"man" subpackage for the man pages.</P> + +<P>We start by defining variables for each of the autoconf directory +variables:</P> + +<PRE><FONT SIZE="1"> + $prefix=/usr + $exec_prefix=/usr + $bindir=${exec_prefix}/bin + $datadir=/usr/share + $docdir=${datadir}/doc/epm + $libdir=/usr/lib + $mandir=/usr/share/man + $srcdir=. +</FONT></PRE> + +<P>Then we provide the general product information that is +required for all packages; notice the use of +<CODE>${srcdir}</CODE> to reference the COPYING and README +files:</P> + +<PRE><FONT SIZE="1"> + %product ESP Package Manager + %copyright 1999-2006 by Easy Software Products, All Rights Reserved. + %vendor Easy Software Products + %license ${srcdir}/COPYING + %readme ${srcdir}/README + %description Universal software packaging tool for UNIX. + %version 4.0 400 +</FONT></PRE> + +<P>After the product information, we include all of the non-GUI +files that are part of EPM:</P> + +<PRE><FONT SIZE="1"> + # Executables + %system all + f 0555 root sys ${bindir}/epm epm + f 0555 root sys ${bindir}/epminstall epminstall + f 0555 root sys ${bindir}/mkepmlist mkepmlist + + # Documentation + %subpackage documentation + %description Documentation for EPM + f 0444 root sys ${docdir}/README $srcdir/README + f 0444 root sys ${docdir}/COPYING $srcdir/COPYING + f 0444 root sys ${docdir}/epm-book.html $srcdir/doc/epm-book.html + + # Man pages + %subpackage man + %description Man pages for EPM + f 0444 root sys ${mandir}/man1/epm.1 $srcdir/doc/epm.man + f 0444 root sys ${mandir}/man1/epminstall.1 $srcdir/doc/epminstall.man + f 0444 root sys ${mandir}/man1/mkepmlist.1 $srcdir/doc/mkepmlist.man + f 0444 root sys ${mandir}/man5/epm.list.5 $srcdir/doc/epm.list.man +</FONT></PRE> + +<P>Finally, we conditionally include the GUI files depending on +the state of a variable called <CODE>GUIS</CODE>:</P> + +<PRE><FONT SIZE="1"> + # GUI files... + $GUIS=setup uninst + + %if GUIS + %subpackage + f 0555 root sys ${libdir}/epm/setup setup + f 0555 root sys ${libdir}/epm/uninst uninst + + %system darwin + f 0444 root sys ${datadir}/epm/setup.icns macosx/setup.icns + f 0444 root sys ${datadir}/epm/setup.info macosx/setup.info + f 0444 root sys ${datadir}/epm/setup.plist macosx/setup.plist + + f 0444 root sys ${datadir}/epm/uninst.icns macosx/uninst.icns + f 0444 root sys ${datadir}/epm/uninst.info macosx/uninst.info + f 0444 root sys ${datadir}/epm/uninst.plist macosx/uninst.plist + %system all + + %subpackage man + f 0444 root sys ${mandir}/man1/setup.1 $srcdir/doc/setup.man + f 0444 root sys ${mandir}/man5/setup.types.5 $srcdir/doc/setup.types.man + + %endif +</FONT></PRE> + + +<H2>Packaging the CUPS Software</H2> + +<P>The Common UNIX Printing System provides an EPM list file to +generate software distributions for most UNIX operating systems. +This list file is more complex than the EPM example and contains +several subpackages:</P> + +<UL> + + <LI>"devel"; Developer header, library, and documentation files</LI> + + <LI>"es"; Spanish localization files</LI> + + <LI>"ja"; Japanese localization files</LI> + + <LI>"libs"; Shared libraries</LI> + + <LI>"lpd"; LPD client support</LI> + +</UL> + +<H3>Variables Used for the Distribution</H3> + +<P>In addition to the autoconf variables defined in the EPM list +file, the CUPS list file defines the following autoconf-derived +variables for the distribution:</P> + +<UL> + + <LI><CODE>AMANDIR</CODE>; + The directory for administrative manual pages. + + <LI><CODE>BINDIR</CODE>; + The directory for user programs. + + <LI><CODE>CACHEDIR</CODE>; + The directory for cache files. + + <LI><CODE>DATADIR</CODE>; + The directory for data files. + + <LI><CODE>DOCDIR</CODE>; + The directory for documentation files. + + <LI><CODE>INCLUDEDIR</CODE>; + The directory for header files. + + <LI><CODE>INITDIR</CODE>; + The directory for startup scripts. + + <LI><CODE>INITDDIR</CODE>; + The directory to reference from run-level scripts. + + <LI><CODE>LIBDIR</CODE>; + The directory for library files. + + <LI><CODE>LIB32DIR</CODE>; + The directory for 32-bit library files. + + <LI><CODE>LIB64DIR</CODE>; + The directory for 64-bit library files. + + <LI><CODE>LOCALEDIR</CODE>; + The directory for message (localization) files. + + <LI><CODE>LOGDIR</CODE>; + The directory for log files. + + <LI><CODE>MANDIR</CODE>; + The directory for man pages. + + <LI><CODE>PAMDIR</CODE>; + The directory for PAM configuration files. + + <LI><CODE>REQUESTS</CODE>; + The directory for request files. + + <LI><CODE>SBINDIR</CODE>; + The directory for administration programs. + + <LI><CODE>SERVERBIN</CODE>; + The directory for server programs. + + <LI><CODE>SERVERROOT</CODE>; + The directory for server configuration files. + + <LI><CODE>STATEDIR</CODE>; + The directory for server state files. + +</UL> + +<H3>Product Information</H3> + +<P>The list file starts with the standard product information:</P> + +<PRE><FONT SIZE="1"> + %product Common UNIX Printing System + %copyright 1993-2006 by Easy Software Products, All Rights Reserved. + %vendor Easy Software Products + %license LICENSE.txt + %readme packaging/cups.license + %version 1.2.0 + %description The Common UNIX Printing System provides a portable + %description printing layer for UNIX(r) operating systems. It + %description has been developed by Easy Software Products to + %description promote a standard printing solution for all UNIX + %description vendors and users. CUPS provides the System V and + %description Berkeley command-line interfaces. +</FONT></PRE> + +<P>We then list different dependencies depending on the package +format:</P> + +<PRE><FONT SIZE="1"> + %format rpm + %provides cups 1:1.2.0 + %provides lpd, lpr, LPRng + %replaces lpd, lpr, LPRng + + %format deb + %provides cupsys + %provides cupsys-client + %provides cupsys-bsd + + %format pkg + %replaces SUNWlpmsg LP Alerts + %replaces SUNWlpr LP Print Service, (Root) + %replaces SUNWlps LP Print Service - Server, (Usr) + %replaces SUNWlpu LP Print Service - Client, (Usr) + %replaces SUNWpsu LP Print Server, (Usr) + %replaces SUNWpsr LP Print Server, (Root) + %replaces SUNWpcu LP Print Client, (Usr) + %replaces SUNWpcr LP Print Client, (Root) + %replaces SUNWppm + %replaces SUNWmp + %replaces SUNWscplp SunOS Print Compatibility + + %format inst + %replaces patch*.print_*.* 0 0 1289999999 1289999999 + %replaces maint*.print_*.* 0 0 1289999999 1289999999 + %replaces print 0 0 1289999999 1289999999 + %replaces fw_cups 0 0 1289999999 1289999999 + %incompat patch*.print_*.* 0 0 1289999999 1289999999 + %incompat maint*.print_*.* 0 0 1289999999 1289999999 + %incompat print 0 0 1289999999 1289999999 + %incompat fw_cups 0 0 1289999999 1289999999 + + %format all +</FONT></PRE> + +<P>The subpackages come next, each with their own +dependencies:</P> + +<PRE><FONT SIZE="1"> + %subpackage libs + %description Common UNIX Printing System - shared libraries + %format rpm + %provides cups-libs 1:1.2.0 + %format deb + %provides libcups1 + %provides libcupsys2 + %provides libcupsys2-gnutls10 + %provides libcupsimage2 + %format all + + %subpackage devel + %description Common UNIX Printing System - development environment + %format rpm + %provides cups-devel 1:1.2.0 + %format deb + %provides libcupsys2-dev + %provides libcupsimage2-dev + %format all + + %subpackage lpd + %description Common UNIX Printing System - LPD support + %format rpm + %provides cups-lpd 1:1.2.0 + %format all + + %subpackage es + %description Common UNIX Printing System - Spanish support + + %subpackage ja + %description Common UNIX Printing System - Japanese support + + %subpackage +</FONT></PRE> + +<!-- NEED 3in --> +<H3>Server Programs</H3> + +<P>The server programs are installed in the <CODE>SBINDIR</CODE> +and <CODE>SERVERBIN</CODE> directories. The image and PDF filters +are conditionally included based on the <CODE>IMGFILTERS</CODE> +and <CODE>PDFTOPS</CODE> variables, respectively:</P> + +<PRE><FONT SIZE="1"> + f 0755 root sys $SBINDIR/cupsd scheduler/cupsd + + d 0755 root sys $SERVERBIN - + d 0755 root sys $SERVERBIN/backend - + f 0755 root sys $SERVERBIN/backend/ipp backend/ipp + l 0755 root sys $SERVERBIN/backend/http ipp + f 0755 root sys $SERVERBIN/backend/lpd backend/lpd + f 0755 root sys $SERVERBIN/backend/parallel backend/parallel + f 0755 root sys $SERVERBIN/backend/scsi backend/scsi + f 0755 root sys $SERVERBIN/backend/serial backend/serial + f 0755 root sys $SERVERBIN/backend/socket backend/socket + f 0755 root sys $SERVERBIN/backend/usb backend/usb + d 0755 root sys $SERVERBIN/cgi-bin - + f 0755 root sys $SERVERBIN/cgi-bin/admin.cgi cgi-bin/admin.cgi + f 0755 root sys $SERVERBIN/cgi-bin/classes.cgi cgi-bin/classes.cgi + f 0755 root sys $SERVERBIN/cgi-bin/help.cgi cgi-bin/help.cgi + f 0755 root sys $SERVERBIN/cgi-bin/jobs.cgi cgi-bin/jobs.cgi + f 0755 root sys $SERVERBIN/cgi-bin/printers.cgi cgi-bin/printers.cgi + d 0755 root sys $SERVERBIN/daemon - + f 0755 root sys $SERVERBIN/daemon/cups-deviced scheduler/cups-deviced + f 0755 root sys $SERVERBIN/daemon/cups-driverd scheduler/cups-driverd + f 0755 root sys $SERVERBIN/daemon/cups-polld scheduler/cups-polld + d 0755 root sys $SERVERBIN/driver - + d 0755 root sys $SERVERBIN/filter - + f 0755 root sys $SERVERBIN/filter/gziptoany filter/gziptoany + f 0755 root sys $SERVERBIN/filter/hpgltops filter/hpgltops + %if IMGFILTERS + f 0755 root sys $SERVERBIN/filter/imagetops filter/imagetops + f 0755 root sys $SERVERBIN/filter/imagetoraster filter/imagetoraster + %endif + %if PDFTOPS + f 0755 root sys $SERVERBIN/filter/pdftops pdftops/pdftops + %endif + f 0755 root sys $SERVERBIN/filter/pstops filter/pstops + f 0755 root sys $SERVERBIN/filter/rastertolabel filter/rastertolabel + l 0755 root sys $SERVERBIN/filter/rastertodymo rastertolabel + f 0755 root sys $SERVERBIN/filter/rastertoepson filter/rastertoepson + f 0755 root sys $SERVERBIN/filter/rastertohp filter/rastertohp + f 0755 root sys $SERVERBIN/filter/texttops filter/texttops + d 0755 root sys $SERVERBIN/notifier - + f 0755 root sys $SERVERBIN/notifier/mailto notifier/mailto +</FONT></PRE> + +<P>The <CODE>cups-lpd</CODE> program goes in the "lpd" +subpackage:</P> + +<PRE><FONT SIZE="1"> + %subpackage lpd + d 0755 root sys $SERVERBIN/daemon - + f 0755 root sys $SERVERBIN/daemon/cups-lpd scheduler/cups-lpd + %subpackage +</FONT></PRE> + +<H3>Administration Commands</H3> + +<P>The administration commands are all pretty much the same. The +only difference is that IRIX needs a symlink for the +<CODE>lpc</CODE> program in the <VAR>/usr/etc</VAR> +directory.</P> + +<PRE><FONT SIZE="1"> + d 0755 root sys $BINDIR - + l 0755 root sys $BINDIR/enable $SBINDIR/accept + l 0755 root sys $LIBDIR/accept $SBINDIR/accept + d 0755 root sys $SBINDIR - + l 0755 root sys $SBINDIR/cupsdisable accept + l 0755 root sys $SBINDIR/cupsenable accept + l 0755 root sys $BINDIR/disable $SBINDIR/accept + d 0755 root sys $LIBDIR - + l 0755 root sys $LIBDIR/lpadmin $SBINDIR/lpadmin + l 0755 root sys $LIBDIR/reject accept + f 0755 root sys $SBINDIR/accept systemv/accept + f 0755 root sys $SBINDIR/cupsaddsmb systemv/cupsaddsmb + f 0755 root sys $SBINDIR/lpadmin systemv/lpadmin + f 0755 root sys $SBINDIR/lpc berkeley/lpc + f 0755 root sys $SBINDIR/lpinfo systemv/lpinfo + f 0755 root sys $SBINDIR/lpmove systemv/lpmove + l 0755 root sys $SBINDIR/reject accept + + %system irix + l 0755 root sys /usr/etc/lpc $SBINDIR/lpc + %system all +</FONT></PRE> + +<H3>User Commands</H3> + +<P>The user commands are all pretty much the same. As with the +administration commands, IRIX needs the Berkeley commands linked +to a different directory, <VAR>/usr/bsd</VAR>.</P> + +<PRE><FONT SIZE="1"> + d 0755 root sys $BINDIR - + f 0755 root sys $BINDIR/cancel systemv/cancel + f 0755 root sys $BINDIR/cupstestdsc systemv/cupstestdsc + f 0755 root sys $BINDIR/cupstestppd systemv/cupstestppd + f 0755 root sys $BINDIR/lp systemv/lp + f 0755 root sys $BINDIR/lpoptions systemv/lpoptions + f 4755 $CUPS_USER sys $BINDIR/lppasswd systemv/lppasswd + f 0755 root sys $BINDIR/lpq berkeley/lpq + f 0755 root sys $BINDIR/lpr berkeley/lpr + f 0755 root sys $BINDIR/lprm berkeley/lprm + f 0755 root sys $BINDIR/lpstat systemv/lpstat + + %system irix + l 0755 root sys /usr/bsd/lpq $BINDIR/lpq + l 0755 root sys /usr/bsd/lpr $BINDIR/lpr + l 0755 root sys /usr/bsd/lprm $BINDIR/lprm + %system all +</FONT></PRE> + +<H3>Shared Libraries</H3> + +<P>Shared libraries present their own challenges. AIX, HP-UX, and +MacOS X uses a different extension for shared libraries than the +other operating systems, and we only include the shared libraries +if they are enabled in the build:</P> + +<PRE><FONT SIZE="1"> + %if DSOLIBS + %subpackage libs + %system hpux + f 0755 root sys $LIBDIR/libcups.sl.2 cups/libcups.sl.2 + l 0755 root sys $LIBDIR/libcups.sl libcups.sl.2 + f 0755 root sys $LIBDIR/libcupsimage.sl.2 filter/libcupsimage.sl.2 + l 0755 root sys $LIBDIR/libcupsimage.sl libcupsimage.sl.2 + %system aix + f 0755 root sys $LIBDIR/libcups_s.a cups/libcups_s.a + f 0755 root sys $LIBDIR/libcupsimage_s.a filter/libcupsimage_s.a + %system darwin + f 0755 root sys $LIBDIR/libcups.2.dylib cups/libcups.2.dylib + l 0755 root sys $LIBDIR/libcups.dylib libcups.2.dylib + f 0755 root sys $LIBDIR/libcupsimage.2.dylib filter/libcupsimage.2.dylib + l 0755 root sys $LIBDIR/libcupsimage.dylib libcupsimage.2.dylib + %system !hpux !aix !darwin + f 0755 root sys $LIBDIR/libcups.so.2 cups/libcups.so.2 + l 0755 root sys $LIBDIR/libcups.so libcups.so.2 + f 0755 root sys $LIBDIR/libcupsimage.so.2 filter/libcupsimage.so.2 + l 0755 root sys $LIBDIR/libcupsimage.so libcupsimage.so.2 + %system all + %subpackage + %endif +</FONT></PRE> + +<P>To keep things interesting, CUPS also supports separately +compiled 32-bit and 64-bit libraries on systems that support a +mix of 32-bit and 64-bit binaries. The <CODE>LIB32DIR</CODE> and +<CODE>LIB64DIR</CODE> variables are used to conditionally include +the corresponding libraries:</P> + +<PRE><FONT SIZE="1"> + %if LIB32DIR + %subpackage libs + f 0755 root sys $LIB32DIR/libcups.so.2 cups/libcups.32.so.2 + l 0755 root sys $LIB32DIR/libcups.so libcups.so.2 + f 0755 root sys $LIB32DIR/libcupsimage.so.2 filter/libcupsimage.32.so.2 + l 0755 root sys $LIB32DIR/libcupsimage.so libcupsimage.so.2 + %system all + %subpackage + %endif + + %if LIB64DIR + %subpackage libs + f 0755 root sys $LIB64DIR/libcups.so.2 cups/libcups.64.so.2 + l 0755 root sys $LIB64DIR/libcups.so libcups.so.2 + f 0755 root sys $LIB64DIR/libcupsimage.so.2 filter/libcupsimage.64.so.2 + l 0755 root sys $LIB64DIR/libcupsimage.so libcupsimage.so.2 + %system all + %subpackage + %endif +</FONT></PRE> + +<H3>Directories</H3> + +<P>The CUPS distribution uses several directories to hold the +log, request, and temporary files. The <CODE>CUPS_GROUP</CODE> +and <CODE>CUPS_PRIMARY_SYSTEM_GROUP</CODE> variables define the +group names to use for these directories:</P> + +<PRE><FONT SIZE="1"> + d 0755 root sys $LOGDIR - + d 0710 root $CUPS_GROUP $REQUESTS - + d 1770 root $CUPS_GROUP $REQUESTS/tmp - + d 0775 root $CUPS_GROUP $CACHEDIR - + d 0755 root $CUPS_GROUP $STATEDIR - + d 0511 root $CUPS_PRIMARY_SYSTEM_GROUP $STATEDIR/certs - +</FONT></PRE> + +<H3>Data Files</H3> + +<P>CUPS has lots of data files. We use wildcards whenever +possible:</P> + +<PRE><FONT SIZE="1"> + d 0755 root sys $DATADIR - + + d 0755 root sys $DATADIR/banners - + f 0644 root sys $DATADIR/banners/classified data/classified + f 0644 root sys $DATADIR/banners/confidential data/confidential + f 0644 root sys $DATADIR/banners/secret data/secret + f 0644 root sys $DATADIR/banners/standard data/standard + f 0644 root sys $DATADIR/banners/topsecret data/topsecret + f 0644 root sys $DATADIR/banners/unclassified data/unclassified + + d 0755 root sys $DATADIR/charsets - + f 0644 root sys $DATADIR/charsets data/*.txt + f 0644 root sys $DATADIR/charsets/windows-874 data/windows-874 + f 0644 root sys $DATADIR/charsets/windows-1250 data/windows-1250 + f 0644 root sys $DATADIR/charsets/windows-1251 data/windows-1251 + f 0644 root sys $DATADIR/charsets/windows-1252 data/windows-1252 + f 0644 root sys $DATADIR/charsets/windows-1253 data/windows-1253 + f 0644 root sys $DATADIR/charsets/windows-1254 data/windows-1254 + f 0644 root sys $DATADIR/charsets/windows-1255 data/windows-1255 + f 0644 root sys $DATADIR/charsets/windows-1256 data/windows-1256 + f 0644 root sys $DATADIR/charsets/windows-1257 data/windows-1257 + f 0644 root sys $DATADIR/charsets/windows-1258 data/windows-1258 + f 0644 root sys $DATADIR/charsets/iso-8859-1 data/iso-8859-1 + f 0644 root sys $DATADIR/charsets/iso-8859-2 data/iso-8859-2 + f 0644 root sys $DATADIR/charsets/iso-8859-3 data/iso-8859-3 + f 0644 root sys $DATADIR/charsets/iso-8859-4 data/iso-8859-4 + f 0644 root sys $DATADIR/charsets/iso-8859-5 data/iso-8859-5 + f 0644 root sys $DATADIR/charsets/iso-8859-6 data/iso-8859-6 + f 0644 root sys $DATADIR/charsets/iso-8859-7 data/iso-8859-7 + f 0644 root sys $DATADIR/charsets/iso-8859-8 data/iso-8859-8 + f 0644 root sys $DATADIR/charsets/iso-8859-9 data/iso-8859-9 + f 0644 root sys $DATADIR/charsets/iso-8859-10 data/iso-8859-10 + f 0644 root sys $DATADIR/charsets/iso-8859-13 data/iso-8859-13 + f 0644 root sys $DATADIR/charsets/iso-8859-14 data/iso-8859-14 + f 0644 root sys $DATADIR/charsets/iso-8859-15 data/iso-8859-15 + f 0644 root sys $DATADIR/charsets/utf-8 data/utf-8 + + d 0755 root sys $DATADIR/data - + f 0644 root sys $DATADIR/data/HPGLprolog data/HPGLprolog + f 0644 root sys $DATADIR/data/psglyphs data/psglyphs + f 0644 root sys $DATADIR/data/testprint.ps data/testprint.ps + + d 0755 root sys $DATADIR/fonts - + f 0644 root sys $DATADIR/fonts fonts/Courier* + f 0644 root sys $DATADIR/fonts/Symbol fonts/Symbol + + d 0755 root sys $DATADIR/model - + f 0644 root sys $DATADIR/model ppd/*.ppd + + d 0755 root sys $DATADIR/templates - + c 0644 root sys $DATADIR/templates templates/*.tmpl +</FONT></PRE> + +<P>The template files for each of the language localizations are +put in separate subpackages:</P> + +<PRE><FONT SIZE="1"> + # Japanese template files + %subpackage es + d 0755 root sys $DATADIR/templates/es + f 0644 root sys $DATADIR/templates/es templates/es/*.tmpl + %subpackage ja + d 0755 root sys $DATADIR/templates/ja + f 0644 root sys $DATADIR/templates/ja templates/ja/*.tmpl + %subpackage +</FONT></PRE> + +<H3>Configuration Files</H3> + +<P>The server configuration files and directories go in +<CODE>SERVERROOT</CODE>. The MIME configuration files are not +treated as configuration files in the distribution since new +versions of CUPS may add filters and file types that are required +to make CUPS work:</P> + +<PRE><FONT SIZE="1"> + d 0755 root sys $SERVERROOT - + d 0755 root $CUPS_GROUP $SERVERROOT/interfaces - + d 0755 root $CUPS_GROUP $SERVERROOT/ppd - + c $CUPS_PERM root $CUPS_GROUP $SERVERROOT conf/*.conf + f $CUPS_PERM root $CUPS_GROUP $SERVERROOT/cupsd.conf.default conf/cupsd.conf + f $CUPS_PERM root $CUPS_GROUP $SERVERROOT/mime.convs conf/mime.convs + f $CUPS_PERM root $CUPS_GROUP $SERVERROOT/mime.types conf/mime.types +</FONT></PRE> + +<P>The PAM configuration file is only included if the configure +script found a PAM configuration directory:</P> + +<PRE><FONT SIZE="1"> + %if PAMDIR + d 0755 root sys $PAMDIR - + c 0644 root sys $PAMDIR/cups conf/pam.std + %endif +</FONT></PRE> + +<H3>Developer Files</H3> + +<P>The developer files include the C header files, static +libraries, and help files. The static libraries are only included +if they have been built, which is specified using the +<CODE>INSTALLSTATIC</CODE> variable:</P> + +<PRE><FONT SIZE="1"> + %subpackage devel + f 0755 root sys $BINDIR/cups-config cups-config + d 0755 root sys $INCLUDEDIR/cups - + f 0644 root sys $INCLUDEDIR/cups/cups.h cups/cups.h + f 0644 root sys $INCLUDEDIR/cups/http.h cups/http.h + f 0644 root sys $INCLUDEDIR/cups/image.h filter/image.h + f 0644 root sys $INCLUDEDIR/cups/ipp.h cups/ipp.h + f 0644 root sys $INCLUDEDIR/cups/language.h cups/language.h + f 0644 root sys $INCLUDEDIR/cups/md5.h cups/md5.h + f 0644 root sys $INCLUDEDIR/cups/ppd.h cups/ppd.h + f 0644 root sys $INCLUDEDIR/cups/raster.h filter/raster.h + + %if INSTALLSTATIC + f 0644 root sys $LIBDIR/libcups.a cups/libcups.a + f 0644 root sys $LIBDIR/libcupsimage.a filter/libcupsimage.a + %endif + + d 0755 root sys $DOCDIR/help - + f 0644 root sys $DOCDIR/help doc/help/api*.html + f 0644 root sys $DOCDIR/help doc/help/spec*.html + %subpackage +</FONT></PRE> + +<H3>Documentation Files</H3> + +<P>The documentation files go under <CODE>DOCDIR</CODE>. +Wildcards take care of most of the work:</P> + +<PRE><FONT SIZE="1"> + d 0755 root sys $DOCDIR - + f 0644 root sys $DOCDIR doc/*.css + f 0644 root sys $DOCDIR doc/*.html + d 0755 root sys $DOCDIR/help - + f 0644 root sys $DOCDIR/help/cgi.html doc/help/cgi.html + f 0644 root sys $DOCDIR/help/glossary.html doc/help/glossary.html + f 0644 root sys $DOCDIR/help/license.html doc/help/license.html + f 0644 root sys $DOCDIR/help/network.html doc/help/network.html + f 0644 root sys $DOCDIR/help/options.html doc/help/options.html + f 0644 root sys $DOCDIR/help/overview.html doc/help/overview.html + f 0644 root sys $DOCDIR/help/security.html doc/help/security.html + f 0644 root sys $DOCDIR/help/standard.html doc/help/standard.html + f 0644 root sys $DOCDIR/help/translation.html doc/help/translation.html + f 0644 root sys $DOCDIR/help/whatsnew.html doc/help/whatsnew.html + f 0644 root sys $DOCDIR/help doc/help/man-*.html + f 0644 root sys $DOCDIR/help doc/help/ref-*.html + d 0755 root sys $DOCDIR/images - + f 0644 root sys $DOCDIR/images doc/images/*.gif + f 0644 root sys $DOCDIR/images doc/images/*.jpg + f 0644 root sys $DOCDIR/images doc/images/*.png + f 0644 root sys $DOCDIR/robots.txt doc/robots.txt +</FONT></PRE> + +<P>The Japanese and Spanish version of the documentation files go +in the corresponding subpackages:</P> + +<PRE><FONT SIZE="1"> + # Localized documentation files + %subpackage es + d 0755 root sys $DOCDIR/es + f 0644 root sys $DOCDIR/es doc/es/*.html + d 0755 root sys $DOCDIR/es/images - + f 0644 root sys $DOCDIR/es/images doc/es/images/*.gif + %subpackage ja + d 0755 root sys $DOCDIR/ja + f 0644 root sys $DOCDIR/ja doc/ja/*.html + d 0755 root sys $DOCDIR/ja/images - + f 0644 root sys $DOCDIR/ja/images doc/ja/images/*.gif + %subpackage +</FONT></PRE> + +<H3>Man Pages</H3> + +<P>Man pages are almost as much fun as initialization scripts. +HP-UX, IRIX, and Solaris follow the System V convention of using +section 1m for administration commands instead of section 8 as is +used for all other operating systems. IRIX also places +administrative commands in a separate subdirectory:</P> + +<PRE><FONT SIZE="1"> + d 0755 root sys $AMANDIR - + d 0755 root sys $AMANDIR/man$MAN8DIR - + d 0755 root sys $MANDIR - + d 0755 root sys $MANDIR/man1 - + d 0755 root sys $MANDIR/man5 - + d 0755 root sys $MANDIR/man7 - + + f 0644 root sys $MANDIR/man1/cancel.$MAN1EXT man/cancel.$MAN1EXT + f 0644 root sys $MANDIR/man1/cupstestdsc.$MAN1EXT man/cupstestdsc.$MAN1EXT + f 0644 root sys $MANDIR/man1/cupstestppd.$MAN1EXT man/cupstestppd.$MAN1EXT + f 0644 root sys $MANDIR/man1/lpoptions.$MAN1EXT man/lpoptions.$MAN1EXT + f 0644 root sys $MANDIR/man1/lppasswd.$MAN1EXT man/lppasswd.$MAN1EXT + f 0644 root sys $MANDIR/man1/lpq.$MAN1EXT man/lpq.$MAN1EXT + f 0644 root sys $MANDIR/man1/lprm.$MAN1EXT man/lprm.$MAN1EXT + f 0644 root sys $MANDIR/man1/lpr.$MAN1EXT man/lpr.$MAN1EXT + f 0644 root sys $MANDIR/man1/lpstat.$MAN1EXT man/lpstat.$MAN1EXT + f 0644 root sys $MANDIR/man1/lp.$MAN1EXT man/lp.$MAN1EXT + + f 0644 root sys $MANDIR/man5/classes.conf.$MAN5EXT man/classes.conf.$MAN5EXT + f 0644 root sys $MANDIR/man5/cupsd.conf.$MAN5EXT man/cupsd.conf.$MAN5EXT + f 0644 root sys $MANDIR/man5/mime.convs.$MAN5EXT man/mime.convs.$MAN5EXT + f 0644 root sys $MANDIR/man5/mime.types.$MAN5EXT man/mime.types.$MAN5EXT + f 0644 root sys $MANDIR/man5/printers.conf.$MAN5EXT man/printers.conf.$MAN5EXT + + f 0644 root sys $MANDIR/man7/backend.$MAN7EXT man/backend.$MAN7EXT + f 0644 root sys $MANDIR/man7/filter.$MAN7EXT man/filter.$MAN7EXT + + f 0644 root sys $AMANDIR/man$MAN8DIR/accept.$MAN8EXT man/accept.$MAN8EXT + l 0644 root sys $AMANDIR/man$MAN8DIR/reject.$MAN8EXT accept.$MAN8EXT + f 0644 root sys $AMANDIR/man$MAN8DIR/cupsaddsmb.$MAN8EXT man/cupsaddsmb.$MAN8EXT + f 0644 root sys $AMANDIR/man$MAN8DIR/cups-polld.$MAN8EXT man/cups-polld.$MAN8EXT + f 0644 root sys $AMANDIR/man$MAN8DIR/cupsd.$MAN8EXT man/cupsd.$MAN8EXT + f 0644 root sys $AMANDIR/man$MAN8DIR/cupsenable.$MAN8EXT man/cupsenable.$MAN8EXT + l 0644 root sys $AMANDIR/man$MAN8DIR/cupsdisable.$MAN8EXT cupsenable.$MAN8EXT + f 0644 root sys $AMANDIR/man$MAN8DIR/lpadmin.$MAN8EXT man/lpadmin.$MAN8EXT + f 0644 root sys $AMANDIR/man$MAN8DIR/lpc.$MAN8EXT man/lpc.$MAN8EXT + f 0644 root sys $AMANDIR/man$MAN8DIR/lpinfo.$MAN8EXT man/lpinfo.$MAN8EXT + f 0644 root sys $AMANDIR/man$MAN8DIR/lpmove.$MAN8EXT man/lpmove.$MAN8EXT + + %subpackage devel + f 0644 root sys $MANDIR/man1/cups-config.$MAN1EXT man/cups-config.$MAN1EXT + + %subpackage lpd + d 0755 root sys $AMANDIR/man$MAN8DIR - + f 0644 root sys $AMANDIR/man$MAN8DIR/cups-lpd.$MAN8EXT man/cups-lpd.$MAN8EXT + %subpackage +</FONT></PRE> + +<H3>Startup Script</H3> + +<P>The CUPS startup script is last and specifies a script name of +<CODE>cups</CODE>. Startup and shutdown scripts will be created +with the (default) names <CODE>S99cups</CODE> and +<CODE>K00cups</CODE>, respectively.</P> + +<PRE><FONT SIZE="1"> + %system all + i 0555 root sys cups init/cups.sh +</FONT></PRE> + +</BODY> +</HTML> diff --git a/doc/Makefile.in b/doc/Makefile.in new file mode 100644 index 0000000..eb0cae0 --- /dev/null +++ b/doc/Makefile.in @@ -0,0 +1,65 @@ +# +# "$Id: Makefile.in 666 2006-04-04 22:46:25Z mike $" +# +# Makefile for the ESP Package Manager (EPM) documentation. +# +# Copyright 1999-2006 by Easy Software Products, all rights reserved. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# + +# +# Programs... +# + +CC = @CC@ +HTMLDOC = @HTMLDOC@ +NROFF = @NROFF@ +RM = @RM@ -f + + +# +# Man page generation... +# + +.SUFFIXES: .html .man +.man.html: + $(RM) $@ + ./mantohtml $< >$@ + + +# +# Targets... +# + +MANPAGES = epm.html epminstall.html mkepmlist.html setup.html +HTMLFILES = preface.html 1-intro.html 2-building.html \ + 3-packaging.html 4-advanced.html 5-examples.html \ + a-license.html b-manpages.html c-reference.html \ + d-relnotes.html $(MANPAGES) + +all: $(MANPAGES) epm-book.html + +clean: + $(RM) epm-book.html $(MANPAGES) mantohtml mantohtml.o + +epm-book.html: $(HTMLFILES) epm-book.book + $(HTMLDOC) --batch epm-book.book -f epm-book.html + +mantohtml: mantohtml.o + $(CC) -o $@ mantohtml.o + +$(MANPAGES): mantohtml + + +# +# End of "$Id: Makefile.in 666 2006-04-04 22:46:25Z mike $". +# diff --git a/doc/a-license.html b/doc/a-license.html new file mode 100644 index 0000000..6e18fb9 --- /dev/null +++ b/doc/a-license.html @@ -0,0 +1,318 @@ +<HTML> +<BODY> + +<H1 ALIGN="RIGHT"><A NAME="LICENSE">A - GNU General Public License</A></H1> + +<P ALIGN=CENTER>GNU GENERAL PUBLIC LICENSE<BR> +Version 2, June 1991</P> + +<P ALIGN=CENTER>Copyright (C) 1989, 1991 Free Software Foundation, Inc.<BR> +59 Temple Place - Suite 330, Boston, MA 02111-1307, USA<BR> +Everyone is permitted to copy and distribute verbatim copies of this license +document, but changing it is not allowed.</P> + +<P ALIGN=CENTER><B>GNU GENERAL PUBLIC LICENSE<BR> +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</B></P> + +<P>0. This License applies to any program or other work which +contains a notice placed by the copyright holder saying it may be +distributed under the terms of this General Public License. The +"Program", below, refers to any such program or work, and a "work based +on the Program" means either the Program or any derivative work under +copyright law: that is to say, a work containing the Program or a +portion of it, either verbatim or with modifications and/or translated +into another language. (Hereinafter, translation is included without +limitation in the term "modification".) Each licensee is addressed as +"you".</P> + +<P>Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the Program +(independent of having been made by running the Program). Whether that +is true depends on what the Program does.</P> + +<P>1. You may copy and distribute verbatim copies of the Program's source +code as you receive it, in any medium, provided that you conspicuously +and appropriately publish on each copy an appropriate copyright notice +and disclaimer of warranty; keep intact all the notices that refer to +this License and to the absence of any warranty; and give any other +recipients of the Program a copy of this License along with the +Program.</P> + +<P>You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a +fee.</P> + +<P>2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions:</P> + +<UL> + <P>a. You must cause the modified files to carry prominent + notices stating that you changed the files and the date of any + change.</P> + + <P>b. You must cause any work that you distribute or publish, + that in whole or in part contains or is derived from the + Program or any part thereof, to be licensed as a whole at no + charge to all third parties under the terms of this + License.</P> + + <P>c. If the modified program normally reads commands + interactively when run, you must cause it, when started running + for such interactive use in the most ordinary way, to print or + display an announcement including an appropriate copyright + notice and a notice that there is no warranty (or else, saying + that you provide a warranty) and that users may redistribute + the program under these conditions, and telling the user how to + view a copy of this License. (Exception: if the Program itself + is interactive but does not normally print such an + announcement, your work based on the Program is not required to + print an announcement.)</P> + +</UL> + +<P>These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it.</P> + +<P>Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program.</P> + +<P>In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of a +storage or distribution medium does not bring the other work under the +scope of this License.</P> + +<P>3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following:</P> + +<UL> + + <P>a. Accompany it with the complete corresponding + machine-readable source code, which must be distributed under + the terms of Sections 1 and 2 above on a medium customarily + used for software interchange; or,</P> + + <P>b. Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a + medium customarily used for software interchange; or,</P> + + <P>c. Accompany it with the information you received as to the + offer to distribute corresponding source code. (This + alternative is allowed only for noncommercial distribution and + only if you received the program in object code or executable + form with such an offer, in accord with Subsection b above.)</P> +</UL> + +<P>The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to control +compilation and installation of the executable. However, as a special +exception, the source code distributed need not include anything that +is normally distributed (in either source or binary form) with the +major components (compiler, kernel, and so on) of the operating system +on which the executable runs, unless that component itself accompanies +the executable.</P> + +<P>If distribution of executable or object code is made by offering access +to copy from a designated place, then offering equivalent access to +copy the source code from the same place counts as distribution of the +source code, even though third parties are not compelled to copy the +source along with the object code.</P> + +<P>4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt otherwise +to copy, modify, sublicense or distribute the Program is void, and will +automatically terminate your rights under this License. However, +parties who have received copies, or rights, from you under this +License will not have their licenses terminated so long as such parties +remain in full compliance.</P> + +<P>5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying the +Program or works based on it.</P> + +<P>6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License.</P> + +<P>7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program.</P> + +<P>If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances.</P> + +<P>It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice.</P> + +<P>This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License.</P> + +<P>8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License may +add an explicit geographical distribution limitation excluding those +countries, so that distribution is permitted only in or among countries +not thus excluded. In such case, this License incorporates the +limitation as if written in the body of this License.</P> + +<P>9. The Free Software Foundation may publish revised and/or new +versions of the General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns.</P> + +<P>Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Program does not specify a +version number of this License, you may choose any version ever +published by the Free Software Foundation.</P> + +<P>10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the +author to ask for permission. For software which is copyrighted by the +Free Software Foundation, write to the Free Software Foundation; we +sometimes make exceptions for this. Our decision will be guided by the +two goals of preserving the free status of all derivatives of our free +software and of promoting the sharing and reuse of software +generally.</P> + +<P ALIGN=CENTER><B>NO WARRANTY</B></P> + +<P>11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS +NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE +LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS +AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF +ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.</P> + +<P>12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES.</P> + +<P ALIGN=CENTER><B>END OF TERMS AND CONDITIONS</B></P> + +<P ALIGN=CENTER><B>HOW TO APPLY THESE TERMS TO YOUR NEW PROGRAMS</B></P> + +<P>If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + +<P>To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + +<PRE> +<VAR>one line to give the program's name and an idea of what it does.</VAR> +Copyright (C) <VAR>yyyy</VAR> <VAR>name of author</VAR> + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +02111-1307, USA. +</PRE> + +<P>Also add information on how to contact you by electronic and +paper mail.</P> + +<P>If the program is interactive, make it output a short notice +like this when it starts in an interactive mode:</P> + +<PRE> +Gnomovision version 69, Copyright (C) <VAR>year</VAR> <VAR>name of author</VAR> +Gnomovision comes with ABSOLUTELY NO WARRANTY; for details +type `show w'. This is free software, and you are welcome +to redistribute it under certain conditions; type `show c' +for details. +</PRE> + +<P>The hypothetical commands <SAMP>`show w'</SAMP> and <SAMP>`show c'</SAMP> should show +the appropriate parts of the General Public License. Of course, the +commands you use may be called something other than <SAMP>`show w'</SAMP> and +<SAMP>`show c'</SAMP>; they could even be mouse-clicks or menu items--whatever +suits your program. + +<P>You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + +<PRE> +Yoyodyne, Inc., hereby disclaims all copyright +interest in the program `Gnomovision' +(which makes passes at compilers) written +by James Hacker. + +<VAR>signature of Ty Coon</VAR>, 1 April 1989 +Ty Coon, President of Vice +</PRE> + +</BODY> +</HTML> diff --git a/doc/b-manpages.html b/doc/b-manpages.html new file mode 100644 index 0000000..3a14e5d --- /dev/null +++ b/doc/b-manpages.html @@ -0,0 +1,19 @@ +<HTML> +<BODY> + +<H1 ALIGN="RIGHT"><A NAME="MANPAGES">B - Command Reference</A></H1> + +<!-- NEW PAGE --> +<EMBED SRC="epm.html"> + +<!-- NEW PAGE --> +<EMBED SRC="epminstall.html"> + +<!-- NEW PAGE --> +<EMBED SRC="mkepmlist.html"> + +<!-- NEW PAGE --> +<EMBED SRC="setup.html"> + +</BODY> +</HTML> diff --git a/doc/c-reference.html b/doc/c-reference.html new file mode 100644 index 0000000..1b44e59 --- /dev/null +++ b/doc/c-reference.html @@ -0,0 +1,455 @@ +<HTML> +<BODY> + +<H1 ALIGN="RIGHT"><A NAME="REFERENCE">C - List File Reference</A></H1> + +<P>This appendix provides a complete reference for the EPM list file +and setup types formats.</P> + +<H2>The EPM List File Format</H2> + +<P>Each <I>EPM</I> product has an associated list file that +describes the files to include with the product. Comment lines +begin with the "#" character and are ignored. All other +non-blank lines must begin with a letter, dollar sign ("$"), or +the percent sign ("%").</P> + +<!-- NEED 3in --> +<H3>List File Directives</H3> + +<P>The following list describes all of the list file directives +supported by <I>EPM</I>:</P> + +<DL><DD><DL> + + <DT>$name=value + <BR> </DT> + + <DD>Sets the named variable to <I>value</I>. + <B>Note:</B> Variables set in the list file are + overridden by variables specified on the command-line or + in the current environment. + <BR> </DD> + + <!-- NEED 2in --> + <DT>%copyright <I>copyright notice</I> + <BR> </DT> + + <DD>Sets the copyright notice for the file. + <BR> </DD> + + <DT>%description <I>description text</I> + <BR> </DT> + + <DD>Adds a line of descriptive text to the distribution. + Multiple lines are supported. + <BR> </DD> + + <DT>%format <I>format [... format]</I> + <BR> </DT> + + <DD>Uses following files and directives only if the + distribution format is the same as <I>format</I>. + <BR> </DD> + + <DT>%format !<I>format [... format]</I> + <BR> </DT> + + <DD>Uses following files and directives only if the + distribution format is not the same as + <I>format</I>. + <BR> </DD> + + <DT>%include <I>filename</I> + <BR> </DT> + + <DD>Includes files listed in <I>filename</I>. + <BR> </DD> + + <DT>%incompat <I>product</I> + <DT>%incompat <I>filename</I> + <BR> </DT> + + <DD>Indicates that this product is incompatible with the + named product or file. + <BR> </DD> + + <DT>%if <I>variable [... variable]</I><BR> + %if !<I>variable [... variable]</I><BR> + %ifdef <I>variable [... variable]</I><BR> + %ifdef !<I>variable [... variable]</I><BR> + %elseif <I>variable [... variable]</I><BR> + %elseif !<I>variable [... variable]</I><BR> + %elseifdef <I>variable [... variable]</I><BR> + %elseifdef !<I>variable [... variable]</I><BR> + %else<BR> + %endif + <BR> </DT> + + <DD>Conditionally includes lines in the list file. The + <I>%if</I> lines include the lines that follow if the + named variables are (not) defined with a value. The + <I>%ifdef</I> lines include the lines that follow if the + named variables are (not) defined with any value. These + conditional lines cannot be nested. + <BR> </DD> + + <DT>%install <I>script or program</I> + <BR> </DT> + + <DD>Specifies a script or program to be run after all + files are installed. (This has been obsoleted by the + %postinstall directive) + <BR> </DD> + + <DT>%license <I>license file</I> + <BR> </DT> + + <DD>Specifies the file to display as the software + license. + <BR> </DD> + + <DT>%packager <I>name of packager</I> + <BR> </DT> + + <DD>Specifies the name of the packager. + <BR> </DD> + + <DT>%patch <I>script or program</I> + <BR> </DT> + + <DD>Specifies a script or program to be run after all + files are patched. (This has been obsoleted by the + %postpatch directive) + <BR> </DD> + + <!-- NEED 2in --> + <DT>%postinstall <I>script or program</I><BR> + %postinstall <<I>scriptfile</I><BR> + %postinstall <<<I>string</I> + <BR> </DT> + + <DD>Specifies a script or program to be run after all + files are installed. + <BR> </DD> + + <DT>%postpatch <I>script or program</I><BR> + %postpatch <<I>scriptfile</I><BR> + %postpatch <<<I>string</I> + <BR> </DT> + + <DD>Specifies a script or program to be run after all + files are patched. + <BR> </DD> + + <DT>%postremove <I>script or program</I><BR> + %postremove <<I>scriptfile</I><BR> + %postremove <<<I>string</I> + <BR> </DT> + + <DD>Specifies a script or program to be run after removing files. + <BR> </DD> + + <DT>%preinstall <I>script or program</I><BR> + %preinstall <<I>scriptfile</I><BR> + %preinstall <<<I>string</I> + <BR> </DT> + + <DD>Specifies a script or program to be run before all + files are installed. + <BR> </DD> + + <DT>%prepatch <I>script or program</I><BR> + %prepatch <<I>scriptfile</I><BR> + %prepatch <<<I>string</I> + <BR> </DT> + + <DD>Specifies a script or program to be run before all + files are patched. + <BR> </DD> + + <DT>%preremove <I>script or program</I><BR> + %preremove <<I>scriptfile</I><BR> + %preremove <<<I>string</I> + <BR> </DT> + + <DD>Specifies a script or program to be run before removing files. + <BR> </DD> + + <DT>%product <I>product name</I> + <BR> </DT> + + <DD>Specifies the product name. + <BR> </DD> + + <!-- NEED 2in --> + <DT>%provides <I>product name</I> + <BR> </DT> + + <DD>Indicates that this product provides the named dependency. + <BR> </DD> + + <DT>%readme <I>readme file</I> + <BR> </DT> + + <DD>Specifies a README file to be included in the distribution. + <BR> </DD> + + <DT>%remove <I>script or program</I> + <BR> </DT> + + <DD>Specifies a script or program to be run before removing files. + (This has been obsoleted by the %preremove directive) + <BR> </DD> + + <DT>%release <I>number</I> + <BR> </DT> + + <DD>Specifies the release or build number of a product + (defaults to 0). + <BR> </DD> + + <DT>%replaces <I>product</I> + <BR> </DT> + + <DD>Indicates that this product replaces the named product. + <BR> </DD> + + <DT>%requires <I>product</I> + <DT>%requires <I>filename</I> + <BR> </DT> + + <DD>Indicates that this product requires the named product or file. + <BR> </DD> + + <DT>%system <I>system[-release] [... system[-release]]</I> + <BR> </DT> + + <DD>Specifies that the following files should only be + used for the specified operating systems and + releases. + <BR> </DD> + + <DT>%system !<I>system[-release] [... system[-release]]</I> + <BR> </DT> + + <DD>Specifies that the following files should not be + used for the specified operating systems and + releases. + <BR> </DD> + + <DT>%system all + <BR> </DT> + + <DD>Specifies that the following files are applicable to + all operating systems. + <BR> </DD> + + <DT>%vendor <I>vendor or author name</I> + <BR> </DT> + + <DD>Specifies the vendor or author of the product. + <BR> </DD> + + <!-- NEED 2in --> + <DT>%version <I>version number</I> + <BR> </DT> + + <DD>Specifies the version number of the product. + <BR> </DD> + + <DT>c <I>mode user group destination source</I> + <DT>C <I>mode user group destination source</I> + <BR> </DT> + + <DD>Specifies a configuration file for installation. The + second form specifies that the file has changed or is + new and should be included as part of a patch. + Configuration files are installed as "destination.N" if + the destination already exists. + <BR> </DD> + + <DT>d <I>mode user group destination -</I> + <DT>D <I>mode user group destination -</I> + <BR> </DT> + + <DD>Specifies a directory should be created when + installing the software. The second form specifies that + the directory is new and should be included as part of a + patch. + <BR> </DD> + + <!-- NEED 2in --> + <DT>f <I>mode user group destination source [nostrip()]</I> + <DT>F <I>mode user group destination source [nostrip()]</I> + <BR> </DT> + + <DD>Specifies a file for installation. The second form + specifies that the file has changed or is new and should + be included as part of a patch. If the "nostrip()" + option is included, the file will not be stripped before + the installation is created. + <BR> </DD> + + <DT>f <I>mode user group destination source/pattern [nostrip()]</I> + <DT>F <I>mode user group destination source/pattern [nostrip()]</I> + <BR> </DT> + + <DD>Specifies one or more files for installation using + shell wildcard patterns. The second form specifies that + the files have changed or are new and should be included + as part of a patch. If the "nostrip()" option is + included, the file will not be stripped before the + installation is created. + <BR> </DD> + + <DT>i <I>mode user group service-name source ["options"]</I> + <DT>I <I>mode user group service-name source ["options"]</I> + <BR> </DT> + + <DD>Specifies an initialization script for installation. + The second form specifies that the file has changed or + is new and should be included as part of a patch. + Initialization scripts are stored in + <VAR>/etc/software/init.d</VAR> and are linked to the + appropriate system-specific directories for run levels + 0, 2, 3, and 5. Initialization scripts <B>must</B> + accept at least the <I>start</I> and <I>stop</I> + commands. The optional <I>options</I> following the + source filename can be any of the following: + <BR> + + <DL> + + <DT>order(<I>string</I>)</DT> + + <DD>Specifies the relative startup order + compared to the required and used system + functions. Supported values include First, + Early, None, Late, and Last (OSX only).</DD> + + <DT>provides(<I>name(s)</I>)</DT> + + <DD>Specifies names of system functions that are + provided by this startup item (OSX only).</DD> + + <!-- NEED 3 --><DT>requires(<I>name(s)</I>)</DT> + + <DD>Specifies names of system functions that are + required by this startup item (OSX only).</DD> + + <DT>runlevels(<I>levels</I>)</DT> + + <DD>Specifies the run levels to use.</DD> + + <DT>start(<I>number</I>)</DT> + + <DD>Specifies the starting sequence number from + 00 to 99.</DD> + + <DT>stop(<I>number</I>)</DT> + + <DD>Specifies the ending sequence number from 00 + to 99.</DD> + + <DT>uses(<I>name(s)</I>)</DT> + + <DD>Specifies names of system functions that are + used by this startup item (OSX only).</DD> + + </DL> + <BR> </DD> + + <!-- NEED 2in --> + <DT>l <I>mode user group destination source</I> + <DT>L <I>mode user group destination source</I> + <BR> </DT> + + <DD>Specifies a symbolic link in the installation. The + second form specifies that the link has changed or is + new and should be included as part of a patch. + <BR> </DD> + + <DT>R <I>mode user group destination</I> + <BR> </DT> + + <DD>Specifies that the file is to be removed upon + patching. The <I>user</I> and <I>group</I> fields are + ignored. The <I>mode</I> field is only used to + determine if a check should be made for a previous + version of the file. + <BR> </DD> + +</DL></DD></DL> + +<!-- NEED 3in --> +<H3>List Variables</H3> + +<P><I>EPM</I> maintains a list of variables and their values +which can be used to substitute values in the list file. These +variables are imported from the current environment and taken +from the command-line and list file as provided. Substitutions +occur when the variable name is referenced with the dollar sign +($):</P> + +<PRE> + %postinstall <<EOF + echo What is your name: + read $$name + echo Your name is $$name + EOF + + f 0555 root sys ${bindir}/foo foo + f 0555 root sys $datadir/foo/foo.dat foo.dat +</PRE> + +<P>Variable names can be surrounded by curly brackets (${name}) +or alone ($name); without brackets the name is terminated by the +first slash (/), dash (-), or whitespace. The dollar sign can be +inserted using $$.</P> + +<!-- NEED 5in --> +<H2><A NAME="SETUPTYPES">The setup.types File</A></H2> + +<P>The EPM <B>setup</B> program normally presents the user with +a list of software products to install, which is called a +"custom" software installation.</P> + +<P>If a file called <I>setup.types</I> is present in the package +directory, the user will instead be presented with a list of +installation types. Each type has an associated product list +which determines the products that are installed by default. If +a type has no products associated with it, then it is treated as +a custom installation and the user is presented with a list of +packages to choose from.</P> + +<P>The <I>setup.types</I> file is an ASCII text file consisting +of type and product lines. Comments can be inserted by starting +a line with the pound sign (#). Each installation type is +defined by a line starting with the word <CODE>TYPE</CODE>. +Products are defined by a line starting with the word +<CODE>INSTALL</CODE>:</P> + +<PRE> + # Pre-select the user packages + TYPE Typical End-User Configuration + INSTALL foo + INSTALL foo-help + + # Pre-select the developer packages + TYPE Typical Developer Configuration + INSTALL foo + INSTALL foo-help + INSTALL foo-devel + INSTALL foo-examples + + # Allow the user to select packages + TYPE Custom Configuration +</PRE> + +<P>In the example above, three installation types are defined. +Since the last type includes no products, the user will be +presented with the full list of products to choose from.</P> + +</BODY> +</HTML> diff --git a/doc/d-relnotes.html b/doc/d-relnotes.html new file mode 100644 index 0000000..299d786 --- /dev/null +++ b/doc/d-relnotes.html @@ -0,0 +1,102 @@ +<HTML> +<BODY> + +<H1 ALIGN="RIGHT"><A NAME="RELNOTES">D - Release Notes</A></H1> + +<P>This appendix lists the change log for each release of the +EPM software.</P> + +<h2>Changes in EPM v4.2</h2> + +<ul> + <li>EPM now supports a %arch conditional directive (STR #27)</li> + <li>EPM now uses hard links whenever possible instead of copying files for distribution (STR #21)</li> + <li>EPM no longer puts files in /export in the root file set for AIX packages (STR #15)</li> + <li>EPM did not work with newer versions of RPM (STR #23, STR #25)</li> + <li>EPM did not clean up temporary files from Solaris packages (STR #20)</li> + <li>Building Solaris gzip'd packages failed if the pkg.gz file already existed (STR #16)</li> + <li>Fixed handling of %preremove and %postremove for AIX packages (STR #22)</li> + <li>Fixed directory permissions in HP-UX packages (STR #24)</li> + <li>Removed unnecessary quoting of "!" in filenames (STR #26)</li> + <li>Added support for signed RPM packages (STR #19)</li> + <li>Added support for inclusion of format-specific packaging files and directives via a %literal directive (STR #5)</li> + <li>*BSD init scripts were not installed properly.</li> + <li>EPM now displays a warning message when a variable is undefined (STR #10)</li> + <li>*BSD dependencies on versioned packages are now specified correctly (STR #4)</li> + <li>EPM now uses /usr/sbin/pkg_create on FreeBSD (STR #2)</li> + <li>FreeBSD packages are now created with a .tbz extension (STR #1)</li> + <li>FreeBSD packages incorrectly assumed that chown was installed in /bin (STR #3)</li> + <li>Added support for an "lsb" package format which uses RPM with the LSB dependencies (STR #7)</li> + <li>The configure script now supports a --with-archflags and no longer automatically builds universal binaries on Mac OS X.</li> + <li>The epm program now automatically detects when the setup GUI is not available, displays a warning message, and then creates a non-GUI package.</li> + <li>RPM packages did not map %replaces to Obsoletes:</li> +</ul> + + +<h2>Changes in EPM v4.1</h2> + +<ul> + + <li>Mac OS X portable packages did not create a correct Uninstall application. + <li>The temporary package files for portable packages are now removed after creation of the .tar.gz file unless the -k (keep files) option is used. + <li>The RPM summary string for subpackages did not contain + the first line of the package description as for other + package formats. + <li>The setup and uninst GUIs now support installing and + removing RPM packages. + <li>The setup GUI now confirms acceptance of all licenses prior to installing the first package. + <li>Subpackages are no longer automatically dependent on the main package. + <li>Multi-line descriptions were not embedded properly into portable package install/patch/remove scripts. + <li>Updated the setup and uninstall GUIs for a nicer look-n-feel. + <li>Mac OS X portable packages now show the proper name, version, and copyright for the packaged software instead of the EPM version and copyright... + <li>Fixed a problem with creation of Mac OS X metapackages with the latest Xcode. + <li>EPM now removes the individual .rpm and .deb files when creating a package with subpackages unless the -k option (keep files) is used. + <li>EPM now only warns about package names containing characters other than letters and numbers. + <li>EPM now generates disk images as well as a .tar.gz file when creating portable packages on Mac OS X. + +</ul> + + +<H2>Changes in EPM v4.0</H2> + +<UL> + + <LI>New subpackage support for creating multiple dependent + packages or a combined package with selectable + subpackages, depending on the package format. + <LI>Added support for compressing the package files in + portable packages (reduces disk space requirements on + platforms that provide gzip...) + <LI>Added support for custom platform names via the new + "-m name" option. + <LI>Added support for non-numeric %release values. + <LI>Added new --depend option to list all of the source + files that a package depends on. + <LI>The setup GUI now sets the EPM_INSTALL_TYPE environment + variable to the value of the selected TYPE line in the + setup.types file. + <LI>Fixed NetBSD and OpenBSD packaging support - no longer + use FreeBSD-specific extensions to pkg_create on those + variants. + <LI>Fixed PowerPC platform support for RPM and Debian + packages. + <LI>Many fixes to AIX package support. + <LI>Tru64 packages with init scripts now work when + installing for the first time. + <LI>RPM file dependencies should now work properly. + <LI>Portable product names containing spaces will now + display properly. + +</UL> + +<!-- NEW SHEET + HEADER CENTER "" + FOOTER LEFT "" + FOOTER RIGHT "" --> +<P> </P> + +<!-- NEW SHEET --> +<P> </P> + +</BODY> +</HTML> diff --git a/doc/epm-book.book b/doc/epm-book.book new file mode 100644 index 0000000..544105a --- /dev/null +++ b/doc/epm-book.book @@ -0,0 +1,12 @@ +#HTMLDOC 1.8.26 +-t pdf14 -f "epm-book.pdf" --book --toclevels 2 --no-numbered --toctitle "Table of Contents" --title --titleimage "title.html" --linkstyle plain --size 6x9in --left 1in --right 0.750in --top 0.750in --bottom 0.750in --header .t. --header1 ... --footer h.1 --nup 1 --tocheader .t. --tocfooter ..i --duplex --portrait --grayscale --no-pscommands --no-xrxcomments --compression=9 --jpeg=90 --fontsize 10.0 --fontspacing 1.2 --headingfont Sans --bodyfont Sans --headfootsize 9.0 --headfootfont Sans-Oblique --charset iso-8859-1 --links --embedfonts --pagemode document --pagelayout tworight --firstpage p1 --pageeffect none --pageduration 10 --effectduration 1.0 --no-encryption --permissions all --owner-password "" --user-password "" --browserwidth 680 --strict --no-overflow +preface.html +1-intro.html +2-building.html +3-packaging.html +4-advanced.html +5-examples.html +a-license.html +b-manpages.html +c-reference.html +d-relnotes.html diff --git a/doc/epm-book.html b/doc/epm-book.html new file mode 100644 index 0000000..967f776 --- /dev/null +++ b/doc/epm-book.html @@ -0,0 +1,2930 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> +<HTML> +<HEAD> +<TITLE>Software Distribution Using the ESP Package Manager</TITLE> +<META NAME="author" CONTENT="Michael Sweet"> +<META NAME="copyright" CONTENT="Copyright 1999-2010 by Easy Software Products"> +<META NAME="docnumber" CONTENT="ESP-004-20101231"> +<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=iso-iso-8859-1"> +<STYLE TYPE="text/css"><!-- +BODY { font-family: sans-serif } +H1 { font-family: sans-serif } +H2 { font-family: sans-serif } +H3 { font-family: sans-serif } +H4 { font-family: sans-serif } +H5 { font-family: sans-serif } +H6 { font-family: sans-serif } +SUB { font-size: smaller } +SUP { font-size: smaller } +PRE { font-family: monospace } +A { text-decoration: none } +--></STYLE> +</HEAD> +<BODY> +<P> </P> +<P> </P> +<P> </P> +<P> </P> +<P> </P> +<P> </P> +<P> </P> +<P> </P> +<P> </P> +<P> </P> +<H1 ALIGN="CENTER">Software Distribution Using the ESP Package Manager</H1> +<P ALIGN="CENTER">MICHAEL R. SWEET</P> +<P> </P> +<P> </P> +<P> </P> +<P> </P> +<P> </P> +<P> </P> +<P> </P> +<P> <IMG HEIGHT="10" SRC="gradient.gif" WIDTH="100"> +<BR><VAR> ESP Press</VAR> +<BR> <SMALL>Easy Software Products, 516 Rio Grand Ct, Morgan Hill, CA + 95037 USA</SMALL></P> + +<!-- NEW PAGE --> +<H2>Software Distribution Using the ESP Package Manager</H2> +<H3>Copyright © 2006-2010 by Easy Software Products</H3> +<P><SMALL>This book may be redistributed and/or modified under the terms + of version 2 of the GNU General Public License as published by the Free + Software Foundation.</SMALL></P> +<P><SMALL>This book is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details.</SMALL></P> +<P><SMALL>You should have received a copy of the GNU General Public + License along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + USA.</SMALL></P> +<P><SMALL>This book was created solely using free software tools.</SMALL> +</P> +<P><SMALL>International Standard Book Number: 978-1-4116-8913-8</SMALL></P> +<P><SMALL>First Printing: April 2006 +<BR> Second Printing: December 2010</SMALL></P> +<HR NOSHADE> +<H1 ALIGN="CENTER"><A NAME="CONTENTS">Table of Contents</A></H1> +<BR> +<BR><B><A HREF="#1">Preface</A></B> +<UL> +<LI><A HREF="#1_1">Notation Conventions</A></LI> +<LI><A HREF="#1_2">Abbreviations</A></LI> +<LI><A HREF="#1_3">Other References</A></LI> +<LI><A HREF="#1_4">Help Us Improve This Book!</A></LI> +<LI><A HREF="#1_5">Acknowledgments</A></LI> +</UL> +<B><A HREF="#INTRO">1 - Introduction to EPM</A></B> +<UL> +<LI><A HREF="#2_1">What is EPM?</A></LI> +<LI><A HREF="#2_2">History and Evolution</A></LI> +<LI><A HREF="#2_3">Existing Software Packaging Systems</A></LI> +<LI><A HREF="#2_4">Design Goals of EPM</A></LI> +<LI><A HREF="#2_5">Resources</A></LI> +</UL> +<B><A HREF="#BUILDING">2 - Building EPM</A></B> +<UL> +<LI><A HREF="#3_1">Requirements</A></LI> +<LI><A HREF="#3_2">Configuring the Software</A></LI> +<LI><A HREF="#3_3">Building the Software</A></LI> +<LI><A HREF="#3_4">Installing the Software</A></LI> +</UL> +<B><A HREF="#PACKAGING">3 - Packaging Your Software with EPM</A></B> +<UL> +<LI><A HREF="#4_1">The Basics</A></LI> +<LI><A HREF="#4_2">Building a Software Package</A></LI> +<LI><A HREF="#4_3">Package Files</A></LI> +</UL> +<B><A HREF="#ADVANCED">4 - Advanced Packaging with EPM</A></B> +<UL> +<LI><A HREF="#5_1">Including Other List Files</A></LI> +<LI><A HREF="#5_2">Dependencies</A></LI> +<LI><A HREF="#5_3">Scripts</A></LI> +<LI><A HREF="#5_4">Conditional Directives</A></LI> +<LI><A HREF="#5_5">Protecting Object Files from Stripping</A></LI> +<LI><A HREF="#5_6">Software Patches</A></LI> +<LI><A HREF="#5_7">Variables</A></LI> +<LI><A HREF="#5_8">Init Scripts</A></LI> +<LI><A HREF="#5_9">Literal Package Data</A></LI> +</UL> +<B><A HREF="#EXAMPLES">5 - EPM Packaging Examples</A></B> +<UL> +<LI><A HREF="#6_1">Packaging the EPM Software</A></LI> +<LI><A HREF="#6_2">Packaging the CUPS Software</A></LI> +</UL> +<B><A HREF="#LICENSE">A - GNU General Public License</A></B> +<BR> +<BR><B><A HREF="#MANPAGES">B - Command Reference</A></B> +<UL> +<LI><A HREF="#8_1">epm(1)</A></LI> +<LI><A HREF="#8_2">epminstall(1)</A></LI> +<LI><A HREF="#8_3">mkepmlist(1)</A></LI> +<LI><A HREF="#8_4">setup(1)</A></LI> +</UL> +<B><A HREF="#REFERENCE">C - List File Reference</A></B> +<UL> +<LI><A HREF="#9_1">The EPM List File Format</A></LI> +<LI><A HREF="#SETUPTYPES">The setup.types File</A></LI> +</UL> +<B><A HREF="#RELNOTES">D - Release Notes</A></B> +<UL> +<LI><A HREF="#10_1">Changes in EPM v4.2</A></LI> +<LI><A HREF="#10_2">Changes in EPM v4.1</A></LI> +<LI><A HREF="#10_3">Changes in EPM v4.0</A></LI> +</UL> +<HR NOSHADE> +<H1 ALIGN="RIGHT"><A NAME="1">Preface</A></H1> +<P>This book provides a tutorial and reference for the ESP Package + Manager ("EPM") software, version 4.2, and is organized into the + following chapters and appendices:</P> +<UL> +<LI><A HREF="#INTRO">1 - Introduction to EPM</A></LI> +<LI><A HREF="#BUILDING">2 - Building EPM</A></LI> +<LI><A HREF="#PACKAGING">3 - Packaging Your Software with EPM</A></LI> +<LI><A HREF="#ADVANCED">4 - Advanced Packaging with EPM</A></LI> +<LI><A HREF="#EXAMPLES">5 - EPM Packaging Examples</A></LI> +<LI><A HREF="#LICENSE">A - Software License Agreement</A></LI> +<LI><A HREF="#MANPAGES">B - Command Reference</A></LI> +<LI><A HREF="#REFERENCE">C - List File Reference</A></LI> +<LI><A HREF="#RELNOTES">D - Release Notes</A></LI> +</UL> + +<!-- NEED 6in --> +<H2><A NAME="1_1">Notation Conventions</A></H2> +<DL> +<DT>The names of commands; the first mention of a command or function in + a chapter is followed by a manual page section number: +<BR> </DT> +<DD><CODE>epm</CODE> +<BR> <CODE>epm(1)</CODE> +<BR> </DD> +<DT>File and directory names: +<BR> </DT> +<DD><VAR>/var</VAR> +<BR><VAR> /usr/bin/epm</VAR> +<BR> </DD> +<DT>Screen output: +<BR> </DT> +<DD><TT>Request ID is Printer-123</TT> +<BR> </DD> +<DT>Literal user input; special keys like <KBD>ENTER</KBD> are in ALL + CAPS: +<BR> </DT> +<DD><KBD>lp -d printer filename ENTER</KBD> +<BR> </DD> +<DT>Long commands are broken up on multiple lines using the backslash + (\) character; enter the commands without the backslash: +<BR> </DT> +<DD><KBD>foo start of long command \ +<BR> end of long command ENTER</KBD> +<BR> </DD> +<DT>Numbers in the text are written using the period (.) to indicate the + decimal point: +<BR> </DT> +<DD>12.3 +<BR> </DD> +</DL> + +<!-- NEED 3in --> +<H2><A NAME="1_2">Abbreviations</A></H2> +<P>The following abbreviations are used throughout this book:</P> +<DL> +<DD>kb</DD> +<DD>Kilobytes, or 1024 bytes +<BR> </DD> +<DD>Mb</DD> +<DD>Megabytes, or 1048576 bytes +<BR> </DD> +<DD>Gb</DD> +<DD>Gigabytes, or 1073741824 bytes +<BR> </DD> +</DL> + +<!-- NEED 4in --> +<H2><A NAME="1_3">Other References</A></H2> +<DL> +<DT><A HREF="http://www.epmhome.org/">http://www.epmhome.org/</A></DT> +<DD>The official home page of the ESP Package Manager software. +<BR> </DD> +<DT><A HREF="http://www.debian.org/devel/">http://www.debian.org/devel/</A> +</DT> +<DD>Debian Developers' Corner +<BR> </DD> +<DT><A HREF="http://techpubs.sgi.com/">http://techpubs.sgi.com/</A></DT> +<DD>IRIX Documentation On-Line +<BR> </DD> +<DT><A HREF="http://www.rpm.org/">http://www.rpm.org/</A></DT> +<DD>The Red Hat Package Manager home page. +<BR> </DD> +<DT><A HREF="http://docs.sun.com/">http://docs.sun.com/</A></DT> +<DD>Solaris Documentation On-Line +<BR> </DD> +</DL> +<H2><A NAME="1_4">Help Us Improve This Book!</A></H2> +<P>We've done our best to ensure that this book is both accurate and + clear. If you find errors or have a suggestion for improving the book, + please send us an email to "<A HREF="mailto:epm-book@easysw.com"> +epm-book@easysw.com</A>".</P> +<H2><A NAME="1_5">Acknowledgments</A></H2> +<P>We'd like to thank the following people for their contributions to + EPM:</P> +<UL> +<LI>Gareth Armstrong: HP-UX and %release enhancements</LI> +<LI>Nicolas Bazin: Openserver and Unixware support</LI> +<LI>Richard Begg: HP-UX fixes</LI> +<LI>Dirk Datzert: Bug fixes</LI> +<LI>Alan Eldridge: Makefile and RPM fixes</LI> +<LI>Vicentini Emanuele: IRIX enhancements</LI> +<LI>Jeff Harrell: IRIX enhancements</LI> +<LI>Lars Kellogg-Stedman: Debian fixes</LI> +<LI>Jochen Kmietsch: mkepmlist fixes</LI> +<LI>Aneesh Kumar K.V.: Tru64 setld package support</LI> +<LI>David Lee: Build system improvements</LI> +<LI>Scott Leerssen: mkepmlist fixes, BSD package support</LI> +<LI>Jeff Licquia: Debian support/enhancements</LI> +<LI>David Maltz: AIX fixes</LI> +<LI>Joel Nordell: SCO fixes</LI> +<LI>Rok Papez: Bug fixes and absolute output directory support</LI> +<LI>Holger Paschke: Documentation fixes</LI> +<LI>Phil Reynolds: OpenBSD fixes</LI> +<LI>Ganesan Rajagopal: Solaris fixes</LI> +<LI>Uwe Räsche: AIX support</LI> +<LI>Ralf Rohm: Solaris fixes</LI> +<LI>Jochen Schaeuble: epminstall fixes</LI> +<LI>Jason Shiffer: HP-UX fixes</LI> +<LI>Andrea Suatoni: IRIX fixes</LI> +<LI>Andy Walter: QNX support</LI> +<LI>Geoffrey Wossum: --output-directory option</LI> +<LI>Jean Yves: BSD package and mkepmlist fixes</LI> +</UL> +<HR NOSHADE> +<H1 ALIGN="RIGHT"><A NAME="INTRO">1 - Introduction to EPM</A></H1> +<P>This chapter provides an introduction to the ESP Package Manager + ("EPM").</P> +<H2><A NAME="2_1">What is EPM?</A></H2> +<P>Software distribution under UNIX/Linux can be a challenge, especially + if you ship software for more than one operating system. Every + operating system provides its own software packaging tools and each has + unique requirements or implications for the software development + environment.</P> +<P>The ESP Package Manager ("EPM") is one solution to this problem. + Besides its own "portable" distribution format, EPM also supports the + generation of several vendor-specific formats. This allows you to build + software distribution files for almost any operating system from the + same sources.</P> +<H2><A NAME="2_2">History and Evolution</A></H2> +<P>When Easy Software Products was founded in 1993, we originally + shipped software only for the SGI IRIX operating system. In 1997 we + added support for Solaris, which was quickly followed by HP-UX support + in 1998.</P> +<P>Each new operating system and supported processor required a new set + of packaging files. While this worked, it also meant that we had to + keep all of the packaging files synchronized manually. Needless to say, + this process was far from perfect and we had more than one distribution + that was not identical on all operating systems.</P> +<P>As we began developing CUPS (<A HREF="http://www.cups.org/"> +http://www.cups.org/</A>) in 1997, our initial goal was to add support + for two additional operating systems: Linux and Compaq Tru64 UNIX. If + we wanted to avoid the mistakes of the past, we clearly had to change + how we produced software distributions.</P> +<P>The first version of EPM was released in 1999 and supported so-called + "portable" software distributions that were not tied to any particular + operating system or packaging software. Due to popular demand, we added + support for vendor-specific packaging formats in the second major + release of EPM, allowing the generation of portable or "native" + distributions from one program and one set of software distribution + files.</P> +<H2><A NAME="2_3">Existing Software Packaging Systems</A></H2> +<P>As we looked for a solution to our problem, we naturally investigated + the existing open-source packaging systems. Under Linux, we looked at + the Red Hat Package Manager ("RPM") and Debian packaging software + ("dpkg" and "dselect"). For the commercial UNIX's we looked at the + vendor-supplied packaging systems. <A HREF="#TABLE_1_1">Table 1.1</A> + shows the results of our investigation.</P> + +<!-- NEED 5in --> +<TABLE ALIGN="CENTER" BORDER="1"><CAPTION> <A NAME="TABLE_1_1">Table + 1.1: Software Packaging Formats</A></CAPTION> +<TR><TH><FONT SIZE="-4">Format</FONT></TH><TH><FONT SIZE="-4">Operating + Systems<SUP>1</SUP></FONT></TH><TH><FONT SIZE="-4">Binaries</FONT></TH><TH> +<FONT SIZE="-4">Cross- Platform</FONT></TH><TH><FONT SIZE="-4">Patches</FONT> +</TH><TH><FONT SIZE="-4">Up- grades</FONT></TH><TH><FONT SIZE="-4">Con- + flicts</FONT></TH><TH><FONT SIZE="-4">Re- quires</FONT></TH><TH><FONT SIZE="-4"> +Re- places</FONT></TH><TH><FONT SIZE="-4">Config Files</FONT></TH><TH><FONT +SIZE="-4">Map Files</FONT></TH><TH><FONT SIZE="-4">Un- install</FONT></TH> +</TR> +<TR><TD ALIGN="CENTER"><SMALL>installp</SMALL></TD><TD ALIGN="CENTER"><SMALL> +AIX</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>No</SMALL></TD><TD ALIGN="CENTER"><SMALL>No</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>No</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"><SMALL>No</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>No</SMALL></TD><TD ALIGN="CENTER"><SMALL>No</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>Yes</SMALL></TD></TR> +<TR><TD ALIGN="CENTER"><SMALL>pkg_add</SMALL></TD><TD ALIGN="CENTER"><SMALL> +FreeBSD</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>Yes<SUP>2</SUP></SMALL></TD><TD ALIGN="CENTER"><SMALL>No</SMALL></TD><TD +ALIGN="CENTER"><SMALL>No</SMALL></TD><TD ALIGN="CENTER"><SMALL>No</SMALL> +</TD><TD ALIGN="CENTER"><SMALL>No</SMALL></TD><TD ALIGN="CENTER"><SMALL> +No</SMALL></TD><TD ALIGN="CENTER"><SMALL>No</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>No</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD></TR> +<TR><TD ALIGN="CENTER"><SMALL>pkg_add</SMALL></TD><TD ALIGN="CENTER"><SMALL> +NetBSD +<BR> OpenBSD</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>Yes<SUP>2</SUP></SMALL></TD><TD ALIGN="CENTER"><SMALL>No</SMALL></TD><TD +ALIGN="CENTER"><SMALL>No</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL> +</TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"><SMALL> +No</SMALL></TD><TD ALIGN="CENTER"><SMALL>No</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>No</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD></TR> +<TR><TD ALIGN="CENTER"><SMALL>dpkg</SMALL></TD><TD ALIGN="CENTER"><SMALL> +Corel Linux +<BR> Debian GNU/Linux</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD +ALIGN="CENTER"><SMALL>Yes<SUP>2</SUP></SMALL></TD><TD ALIGN="CENTER"><SMALL> +No</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>No</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD></TR> +<TR><TD ALIGN="CENTER"><SMALL>depot</SMALL></TD><TD ALIGN="CENTER"><SMALL> +HP-UX</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>No</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"><SMALL>No</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>Yes</SMALL></TD></TR> +<TR><TD ALIGN="CENTER"><SMALL>inst</SMALL></TD><TD ALIGN="CENTER"><SMALL> +IRIX</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>No</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>Yes</SMALL></TD></TR> +<TR><TD ALIGN="CENTER"><SMALL>Install.app</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>MacOS X</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>No</SMALL></TD><TD ALIGN="CENTER"><SMALL>No</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"><SMALL>No</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>No</SMALL></TD><TD ALIGN="CENTER"><SMALL>No</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>No</SMALL></TD><TD ALIGN="CENTER"><SMALL>No</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>No</SMALL></TD></TR> +<TR><TD ALIGN="CENTER"><SMALL>pkgadd</SMALL></TD><TD ALIGN="CENTER"><SMALL> +Solaris</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>No</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>No</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"><SMALL>No</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>Yes</SMALL></TD></TR> +<TR><TD ALIGN="CENTER"><SMALL>rpm</SMALL></TD><TD ALIGN="CENTER"><SMALL> +Mandrake +<BR> Red Hat +<BR> SuSE +<BR> TurboLinux</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD +ALIGN="CENTER"><SMALL>Yes<SUP>2</SUP></SMALL></TD><TD ALIGN="CENTER"><SMALL> +No</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>No</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>No</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD></TR> +<TR><TD ALIGN="CENTER"><SMALL>setld</SMALL></TD><TD ALIGN="CENTER"><SMALL> +Tru64 UNIX</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>No</SMALL></TD><TD ALIGN="CENTER"><SMALL>No</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>No</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"><SMALL>No</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>No</SMALL></TD><TD ALIGN="CENTER"><SMALL>No</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>Yes</SMALL></TD></TR> +<TR><TD ALIGN="CENTER"><SMALL>slackware</SMALL></TD><TD ALIGN="CENTER"><SMALL> +Slackware Linux</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD +ALIGN="CENTER"><SMALL>No</SMALL></TD><TD ALIGN="CENTER"><SMALL>No</SMALL> +</TD><TD ALIGN="CENTER"><SMALL>No</SMALL></TD><TD ALIGN="CENTER"><SMALL> +Yes</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>No</SMALL></TD><TD ALIGN="CENTER"><SMALL>No</SMALL></TD><TD ALIGN="CENTER"> +<SMALL>No</SMALL></TD><TD ALIGN="CENTER"><SMALL>Yes</SMALL></TD></TR> +</TABLE> +<OL> +<LI>Standard packaging system for named operating systems.</LI> +<LI>These packaging systems are cross-platform but require the package + management utilities to be installed on the platform before installing + the package.</LI> +</OL> +<P> </P> +<P>As you can see, none of the formats supported every feature we were + looking for. One common fault of all these formats is that they do not + support a common software specification file format. That is, making a + Debian software distribution requires significantly different support + files than required for a Solaris pkg distribution. This makes it + extremely difficult to manage distributions for multiple operating + systems.</P> +<P>All of the package formats support binary distributions. The RPM and + Debian formats also support source distributions that specifically + allow for recompilation and installation. Only the commercial UNIX + formats support patch distributions - you have to completely upgrade a + software package with RPM and Debian. All but the Solaris <CODE>pkg</CODE> + format allow you to upgrade a package without removing the old version + first.</P> +<P>When building the software packages, RPM and Debian force you to + create the actual directories, copy the files to those directories, and + set the ownerships and permissions. You essentially are creating a + directory for your software that can be archived in the corresponding + package format. To ensure that all file permissions and ownerships are + correct, you must build the distribution as the root user or use the <CODE> +fakeroot</CODE> software, introducing potential security risks and + violating many corporate security policies. It can also make building + distributions difficult when dynamic data such as changing data files + or databases is involved.</P> +<P>The commercial UNIX formats use software list files that map source + files to the correct directories and permissions. This allows for + easier delivery of dynamic data, configuration management of what each + distribution actually contains, and eliminates security issues with + special permissions and building distributions as the root user. Using + the proprietary format also has the added benefit of allowing for + software patches and using the familiar software installation tools for + that operating system. The primary disadvantage is that the same + distributions and packaging software cannot be used on other operating + systems.</P> +<H2><A NAME="2_4">Design Goals of EPM</A></H2> +<P>EPM was designed from the beginning to build binary software + distributions using a common software specification format. The same + distribution files work for all operating systems and all distribution + formats. Supporting source code distributions was not a goal since most + RPM and Debian source distributions are little more than wrapping + around a compressed tar file containing the source files and a + configure script.</P> +<P>Over the years, additional features have made their way into EPM to + support more advanced software packages. Whenever possible, EPM + emulates a feature if the vendor package format does not support it + natively.</P> +<H2><A NAME="2_5">Resources</A></H2> +<P>The EPM web site provides access to the current software, + documentation, and discussion forums for EPM:</P> +<PRE> + <A HREF="http://www.epmhome.org/">http://www.epmhome.org/</A> +</PRE> +<P>The EPM source code can be downloaded in compressed tar files or via + the popular Subversion software. Please see the EPM web site for + complete instructions.</P> +<P>Send book feedback to "<A HREF="mailto:epm-book@easysw.com"> +epm-book@easysw.com</A>".</P> +<HR NOSHADE> +<H1 ALIGN="RIGHT"><A NAME="BUILDING">2 - Building EPM</A></H1> +<P>This chapter shows how to configure, build, and install the ESP + Package Manager.</P> +<H2><A NAME="3_1">Requirements</A></H2> +<P>EPM requires very little pre-installed software to work. Most items + will likely be provided as part of your OS. Your development system + will need a C compiler, the <CODE>make(1)</CODE> program (GNU, BSD, and + most vendor <CODE>make</CODE> programs should work), the Bourne (or + Korn or Bash) shell (<CODE>sh(1)</CODE>), and <CODE>gzip(1)</CODE>.</P> +<P>The optional graphical setup program requires a C++ compiler, the + FLTK library, version 1.1.x, and (for UNIX/Linux) the X11 libraries. + FLTK is available at the following URL:</P> +<PRE> + <A HREF="http://www.fltk.org/">http://www.fltk.org/</A> +</PRE> +<P>Your end-user systems will require the Bourne (or Korn or Bash) shell + (<CODE>sh</CODE>), the <CODE>df(1)</CODE> program, the <CODE>tar(1)</CODE> + program, and the <CODE>gzip(1)</CODE> program to install portable + distributions. All but the last are standard items, and most vendors + include <CODE>gzip</CODE> as well.</P> +<P>EPM can also generate vendor-specific distributions. These require + the particular vendor tool, such as <CODE>rpm(8)</CODE> and <CODE> +dpkg(8)</CODE>, to generate the software distribution on the development + system and load the software distribution on the end-user system.</P> +<H2><A NAME="3_2">Configuring the Software</A></H2> +<P>EPM uses GNU <CODE>autoconf(1)</CODE> to configure itself for your + system. The <CODE>configure</CODE> script is used to configure the EPM + software, as follows:</P> +<PRE> + <KBD>./configure ENTER</KBD> +</PRE> +<H3>Choosing Compilers</H3> +<P>If the <CODE>configure</CODE> script is unable to determine the name + of your C or C++ compiler, set the <CODE>CC</CODE> and <CODE>CXX</CODE> + environment variables to point to the C and C++ compiler programs, + respectively. You can set these variables using the following commands + in the Bourne, Korn, or Bash shells:</P> +<PRE> + <KBD>export CC=/foo/bar/gcc ENTER + export CXX=/foo/bar/gcc ENTER</KBD> +</PRE> +<P>If you are using C shell or tcsh, use the following commands instead:</P> +<PRE> + <KBD>setenv CC /foo/bar/gcc ENTER + setenv CXX /foo/bar/gcc ENTER</KBD> +</PRE> +<P>Run the <CODE>configure</CODE> script again to use the new commands.</P> +<H3>Choosing Installation Directories</H3> +<P>The default installation prefix is<VAR> /usr</VAR>, which will place + the EPM programs in<VAR> /usr/bin</VAR>, the setup GUI in<VAR> + /usr/lib/epm</VAR>, and the man pages in<VAR> /usr/man</VAR>. Use the <CODE> +--prefix</CODE> option to relocate these files</P> +<P>to another directory:</P> +<PRE> + <KBD>./configure --prefix=/usr/local ENTER</KBD> +</PRE> +<P>The <CODE>configure</CODE> script also accepts the <CODE>--bindir</CODE> +, <CODE>--libdir</CODE>, and <CODE>--mandir</CODE> options to relocate + each directory separately, as follows:</P> +<PRE> + <KBD>./configure --bindir=/usr/local/bin --libdir=/usr/local/lib \ + --mandir=/usr/local/share/man ENTER</KBD> +</PRE> +<H3>Options for the Setup GUI</H3> +<P>The setup GUI requires the FLTK library. The configure script will + look for the <CODE>fltk-config</CODE> utility that comes with FLTK + 1.1.x. Set the FLTKCONFIG environment variable to the full path of this + utility if it cannot be found in the current path:</P> +<PRE> + <KBD>setenv FLTKCONFIG /foo/bar/bin/fltk-config ENTER</KBD> +</PRE> +<P>or:</P> +<PRE> + <KBD>FLTKCONFIG=/foo/bar/bin/fltk-config ENTER + export FLTKCONFIG</KBD> +</PRE> +<H2><A NAME="3_3">Building the Software</A></H2> +<P>Once you have configured the software, type the following command to + compile it:</P> +<PRE> + <KBD>make ENTER</KBD> +</PRE> +<P>Compilation should take a few minutes at most. Then type the + following command to determine if the software</P> +<P>compiled successfully:</P> +<PRE> + <KBD>make test ENTER</KBD> + Portable distribution build test PASSED. + Native distribution build test PASSED. +</PRE> +<P>The <CODE>test</CODE> target builds a portable and native + distribution of EPM and reports if the two distributions were generated + successfully.</P> +<H2><A NAME="3_4">Installing the Software</A></H2> +<P>Now that you have compiled and tested the software, you can install + it using the <CODE>make</CODE> command or one of the distributions that + was created. You should be logged in as the super-user unless you + specified installation directories for which you have write permission. + The <CODE>su(8)</CODE> command is usually sufficient to install + software:</P> +<PRE> + <KBD>su ENTER</KBD> +</PRE> +<P>Operating systems such as MacOS X do not enable the root account by + default. The <CODE>sudo(8)</CODE> command is used instead:</P> +<PRE> + <KBD>sudo <I>installation command</I> ENTER</KBD> +</PRE> + +<!-- NEED 2in --> +<H3>Installing Using the <CODE>make</CODE> Command</H3> +<P>Type the following command to install the EPM software using the <CODE> +make</CODE> command:</P> +<PRE> + <KBD>make install ENTER</KBD> + Installing EPM setup in /usr/lib/epm + Installing EPM programs in /usr/bin + Installing EPM manpages in /usr/man/man1 + Installing EPM documentation in /usr/share/doc/epm +</PRE> +<P>Use the <CODE>sudo</CODE> command to install on MacOS X:</P> +<PRE> + <KBD>sudo make install ENTER</KBD> + Installing EPM setup in /usr/lib/epm + Installing EPM programs in /usr/bin + Installing EPM manpages in /usr/man/man1 + Installing EPM documentation in /usr/share/doc/epm +</PRE> +<H3><A NAME="INSTALL_PORTABLE">Installing Using the Portable + Distribution</A></H3> +<P>The portable distribution can be found in a subdirectory named using + the operating system, version, and architecture. For example, the + subdirectory for a Linux 2.4.x system on an Intel-based system would be<VAR> + linux-2.4-intel</VAR>. The subdirectory name is built from the + following template:</P> +<PRE> + <I>os-major.minor-architecture</I> +</PRE> +<P>The <CODE>os</CODE> name is the common name for the operating system. + <A HREF="#TABLE_2_1">Table 2.1</A> lists the abbreviations for most + operating systems.</P> +<P>The <CODE>major.minor</CODE> string is the operating system version + number. Any patch revision information is stripped from the version + number, as are leading characters before the major version number. For + example, HP-UX version B.11.11 will result in a version number string + of <CODE>11.11</CODE>.</P> +<P> </P> +<CENTER> +<TABLE BORDER CELLPADDING="2"><CAPTION> <A NAME="TABLE_2_1">Table 2.1: + Operating System Name Abbreviations</A></CAPTION> +<TR><TH>Operating System</TH><TH>Name</TH></TR> +<TR><TD>AIX</TD><TD><CODE>aix</CODE></TD></TR> +<TR><TD>Compaq Tru64 UNIX +<BR> Digital UNIX +<BR> OSF/1</TD><TD><CODE>tru64</CODE></TD></TR> +<TR><TD>FreeBSD</TD><TD><CODE>freebsd</CODE></TD></TR> +<TR><TD>HP-UX</TD><TD><CODE>hpux</CODE></TD></TR> +<TR><TD>IRIX</TD><TD><CODE>irix</CODE></TD></TR> +<TR><TD>Linux</TD><TD><CODE>linux</CODE></TD></TR> +<TR><TD>MacOS X</TD><TD><CODE>macosx</CODE></TD></TR> +<TR><TD>NetBSD</TD><TD><CODE>netbsd</CODE></TD></TR> +<TR><TD>OpenBSD</TD><TD><CODE>openbsd</CODE></TD></TR> +<TR><TD>Solaris</TD><TD><CODE>solaris</CODE></TD></TR> +</TABLE> +</CENTER> + +<!-- NEED 3in --> +<CENTER> +<TABLE BORDER CELLPADDING="2"><CAPTION> <A NAME="TABLE_2_2">Table 2.2: + Processor Architecture Abbreviations</A></CAPTION> +<TR><TH>Processor(s)</TH><TH>Abbreviation</TH></TR> +<TR><TD>Compaq Alpha</TD><TD><CODE>alpha</CODE></TD></TR> +<TR><TD>HP Precision Architecture</TD><TD><CODE>hppa</CODE></TD></TR> +<TR><TD>INTEL 80x86</TD><TD><CODE>intel</CODE></TD></TR> +<TR><TD>INTEL 80x86 w/64bit Extensions</TD><TD><CODE>x86_64</CODE></TD></TR> +<TR><TD>MIPS RISC</TD><TD><CODE>mips</CODE></TD></TR> +<TR><TD>IBM Power PC</TD><TD><CODE>powerpc</CODE></TD></TR> +<TR><TD>SPARC +<BR> MicroSPARC +<BR> UltraSPARC</TD><TD><CODE>sparc</CODE></TD></TR> +</TABLE> +</CENTER> +<P> </P> +<P>The <CODE>architecture</CODE> string identifies the target processor. + <A HREF="#TABLE_2_2">Table 2.2</A> lists the supported processors.</P> +<P>Once you have determined the subdirectory containing the + distribution, type the following commands to install EPM from the + portable distribution:</P> +<PRE> + <KBD>cd <I>os-major.minor-architecture<I> ENTER + ./epm.install ENTER</I></I></KBD> +</PRE> +<P>The software will be installed after answering a few yes/no + questions.</P> +<H3>Installing Using the Native Distribution</H3> +<P>The <CODE>test</CODE> target also builds a distribution in the native + operating system format, if supported. <A HREF="#TABLE_2_3">Table 2.3</A> + lists the native formats for each supported operating system and the + command to run to install the software.</P> + +<!-- NEED 5in --> +<CENTER> +<TABLE BORDER CELLPADDING="2"><CAPTION> <A NAME="TABLE_2_3">Table 2.3: + Native Operating System Formats</A></CAPTION> +<TR><TH>Operating System</TH><TH>Format</TH><TH>Command</TH></TR> +<TR><TD>AIX</TD><TD><CODE>aix</CODE></TD><TD NOWRAP><CODE>installp -d<I> +directory</I> epm</CODE></TD></TR> +<TR><TD>Compaq Tru64 UNIX +<BR> Digital UNIX +<BR> OSF/1</TD><TD><CODE>setld</CODE></TD><TD NOWRAP><CODE>setld -a<I> + directory</I></CODE></TD></TR> +<TR><TD>FreeBSD +<BR> NetBSD +<BR> OpenBSD</TD><TD><CODE>bsd</CODE></TD><TD NOWRAP><CODE>cd<I> + directory</I> +<BR> pkg_add epm</CODE></TD></TR> +<TR><TD>HP-UX</TD><TD><CODE>depot</CODE></TD><TD NOWRAP><CODE>swinstall + -f<I> directory</I></CODE></TD></TR> +<TR><TD>IRIX</TD><TD><CODE>inst</CODE></TD><TD NOWRAP><CODE>swmgr -f<I> + directory</I></CODE></TD></TR> +<TR><TD>Linux</TD><TD><CODE>rpm</CODE></TD><TD NOWRAP><CODE>rpm -i<I> + directory</I>/epm-4.1.rpm</CODE></TD></TR> +<TR><TD>MacOS X</TD><TD><CODE>osx</CODE></TD><TD NOWRAP><CODE>open<I> + directory</I>/<CODE>epm-4.1.pkg</CODE></CODE></TD></TR> +<TR><TD>Solaris</TD><TD><CODE>pkg</CODE></TD><TD NOWRAP><CODE>pkgadd -d<I> + directory</I> epm</CODE></TD></TR> +</TABLE> +</CENTER> +<HR NOSHADE> +<H1 ALIGN="RIGHT"><A NAME="PACKAGING">3 - Packaging Your Software with + EPM</A></H1> +<P>This chapter describes how to use EPM to package your own software + packages.</P> +<H2><A NAME="4_1">The Basics</A></H2> +<P>EPM reads one or more software "list" files that describe a single + software package. Each list file contains one or more lines of ASCII + text containing product or file information.</P> +<P>Comments lines start with the <CODE>#</CODE> character, directive + lines start with the <CODE>%</CODE> character, variables lines start + with the <CODE>$</CODE> character, and file, directory, init script, + and symlink lines start with a letter.</P> + +<!-- NEED 3in --> +<H3>Product Information</H3> +<P>Every list file needs to define the product name, copyright, + description, license, README file, vendor, and version:</P> +<PRE> + %product Kung Foo Firewall + %copyright 1999-2005 by Foo Industries, All Rights Reserved. + %vendor Foo Industries + %license COPYING + %readme README + %description Kung Foo firewall software for your firewall. + %version 1.2.3p4 1020304 +</PRE> +<P>The <CODE>%license</CODE> and <CODE>%readme</CODE> directives specify + files for the license agreement and README files for the package, + respectively.</P> +<P>The <CODE>%product</CODE>, <CODE>%copyright</CODE>, <CODE>%vendor</CODE> +, and <CODE>%description</CODE> directives take text directly from the + line.</P> +<P>The <CODE>%version</CODE> directive specifies the version numbers of + the package. The first number is the human-readable version number, + while the second number is the integer version number. If you omit the + integer version number, EPM will calculate one for you.</P> +<H3>Files, Directories, and Symlinks</H3> +<P>Each file in the distribution is listed on a line starting with a + letter. The format of all lines is:</P> +<PRE> + type mode owner group destination source <I>options</I> +</PRE> +<P>Regular files use the letter <CODE>f</CODE> for the type field:</P> +<PRE> + f 755 root sys /usr/bin/foo foo +</PRE> +<P>Configuration files use the letter <CODE>c</CODE> for the type field:</P> +<PRE> + c 644 root sys /etc/foo.conf foo.conf +</PRE> + +<!-- NEED 2in --> +<P>Directories use the letter <CODE>d</CODE> for the type field and use + a source path of "-":</P> +<PRE> + d 755 root sys /var/spool/foo - +</PRE> +<P>Finally, symbolic links use the letter <CODE>l</CODE> (lowercase L) + for the type field:</P> +<PRE> + l 000 root sys /usr/bin/foobar foo +</PRE> +<P>The source field specifies the file to link to and can be a relative + path.</P> +<H3>Wildcards</H3> +<P>Wildcard patterns can be used in the source field to include multiple + files on a single line:</P> +<PRE> + f 0444 root sys /usr/share/doc/foo *.html +</PRE> + +<!-- NEED 3in --> +<H3>Subpackages</H3> +<P>Subpackages are optional parts of your software package. For example, + if your package includes developer files, you might provide them as a + subpackage so that users that will not be developing add-ons to your + software can omit them from the installation.</P> +<CENTER> +<TABLE BGCOLOR="#cccccc" BORDER CELLPADDING="5" WIDTH="80%"> +<TR><TD><B>Note:</B> +<BR> Subpackages are implemented as native subsets of the main package + for the AIX, HPUX, IRIX, Solaris, and Tru64 formats and as separate + packages that depend on the main (parent) package for all other + formats.</TD></TR> +</TABLE> +</CENTER> +<P>To define a subpackage, use the <CODE>%subpackage</CODE> directive + followed by a <CODE>%description</CODE> directive:</P> +<PRE> + %subpackage foo + %description One-Line Description of Foo +</PRE> +<P>Files, scripts, and dependencies that follow the <CODE>%subpackage</CODE> + directive are treated as part of that subpackage. Specifying the <CODE> +%subpackage</CODE> directive with no name returns processing to the main + (parent) package.</P> + +<!-- NEED 2in --> +<P>You can alternate between subpackages as many times as you like:</P> +<PRE> + %description Main package description + f 0755 /usr/bin/bar bar + + %subpackage foo + %description Foo programs + f 0755 /usr/bin/foo foo + %requires bla + + %subpackage + f 0644 /usr/share/man/man1/bar.1 + + %subpackage foo + f 0644 /usr/share/man/man1/foo.1 +</PRE> +<P>The above example creates a package containing the "bar" program and + man page with a subpackage containing the "foo" program and man page. + The "foo" subpackage depends both on the main package (implicit <CODE> +%requires</CODE>) and another package called "bla".</P> + +<!-- NEED 2in --> +<H2><A NAME="4_2">Building a Software Package</A></H2> +<P>The <CODE>epm(1)</CODE> program is used to build software package + from list files. To build a portable software package for an + application called "foo", type the following command:</P> +<PRE> + <KBD>epm foo ENTER</KBD> +</PRE> +<P>If your application uses a different base name than the list file, + you can specify the list filename on the command-line as well:</P> +<PRE> + <KBD>epm foo bar.list ENTER</KBD> +</PRE> +<CENTER> +<TABLE><CAPTION ALIGN="BOTTOM"> <A NAME="FIGURE_3_1">Figure 3.1: The EPM + Setup GUI</A></CAPTION> +<TR><TD><IMG HEIGHT="371" SRC="setup.png" WIDTH="592"></TD></TR> +</TABLE> +</CENTER> +<P> </P> +<H3>Installing the Software Package</H3> +<P>Once you have created the software package, you can install it. + Portable packages include an installation script called<VAR> + product.install</VAR>, where "product" is the name of the package:</P> +<PRE> + <KBD>cd os-release-arch ENTER + ./product.install ENTER</KBD> +</PRE> +<P>After answering a few yes/no questions, the software will be + installed. To bypass the questions, run the script with the <CODE>now</CODE> + argument:</P> +<PRE> + <KBD>cd os-release-arch ENTER + ./product.install now ENTER</KBD> + +</PRE> +<H3>Including the Setup GUI</H3> +<P>EPM also provides an optional graphical setup program (<A HREF="#FIGURE_3_1"> +Figure 3.1</A>). To include the setup program in your distributions, + create a product logo image in GIF or XPM format and use the <CODE> +--setup-image</CODE> option when creating your distribution:</P> +<PRE> + <KBD>epm --setup-image foo.xpm foo ENTER</KBD> +</PRE> +<P>This option is only supported when creating for portable and MacOS X + software packages.</P> + +<!-- NEED 5in --> +<H3>Creating Vendor Package Files</H3> +<P>EPM can also produce vendor-specific packages using the <CODE>-f</CODE> + option:</P> +<PRE> + <KBD>epm -f format foo bar.list ENTER</KBD> +</PRE> +<P>The<I> format</I> option can be one of the following keywords:</P> +<UL> +<LI><CODE>aix</CODE> - AIX software packages.</LI> +<LI><CODE>bsd</CODE> - FreeBSD, NetBSD, or OpenBSD software packages.</LI> +<LI><CODE>depot</CODE> or <CODE>swinstall</CODE> - HP-UX software + packages.</LI> +<LI><CODE>dpkg</CODE> - Debian software packages.</LI> +<LI><CODE>inst</CODE> or <CODE>tardist</CODE> - IRIX software packages.</LI> +<LI><CODE>native</CODE> - "Native" software packages (RPM, INST, DEPOT, + PKG, etc.) for the platform.</LI> +<LI><CODE>osx</CODE> - MacOS X software packages.</LI> +<LI><CODE>pkg</CODE> - Solaris software packages.</LI> +<LI><CODE>portable</CODE> - Portable software packages (default).</LI> +<LI><CODE>rpm</CODE> - Red Hat software packages.</LI> +<LI><CODE>setld</CODE> - Tru64 (setld) software packages.</LI> +<LI><CODE>slackware</CODE> - Slackware software packages.</LI> +</UL> +<P>Everything in the software list file stays the same - you just use + the <CODE>-f</CODE> option to select the format. For example, to build + an RPM distribution of EPM, type:</P> +<PRE> + epm -f rpm epm +</PRE> +<P>The result will be one or more RPM package files instead of the + portable package files.</P> +<H2><A NAME="4_3">Package Files</A></H2> +<P>EPM creates the package files in the output directory. As mentioned + in <A HREF="#INSTALL_PORTABLE">Chapter 1, "Installing Using the + Portable Distribution"</A>, the default output directory is based on + the operating system name, version, and architecture. Each package + format will leave different files in the output directory.</P> +<H3>AIX Package Files</H3> +<P>AIX packages are contained in a file called<VAR> name.bff</VAR>, + where "name" is the product/package name you supplied on the + command-line.</P> +<H3>BSD Package Files</H3> +<P>BSD packages are contained in a file called<VAR> name.tgz</VAR>, + where "name" is the product/package name you supplied on the + command-line.</P> +<H3>HP-UX Package Files</H3> +<P>HP-UX packages are contained in two files called<VAR> name.depot.gz</VAR> + and<VAR> name.depot.tgz</VAR>, where "name" is the product/package name + you supplied on the command-line. The<VAR> name.depot.gz</VAR> file can + be supplied directly to the <CODE>swinstall(1m)</CODE> command, while + the<VAR> name.depot.tgz</VAR> file contains a compressed <CODE>tar(1)</CODE> + archive that can be used to install the software from CD-ROM or network + filesystem.</P> +<H3>Debian Package Files</H3> +<P>Debian packages are contained in a file called<VAR> name.deb</VAR> or<VAR> + name.deb.tgz</VAR> when there are subpackages, where "name" is the + product/package name you supplied on the command-line. The<VAR> + name.deb.tgz</VAR> file contains a compressed <CODE>tar</CODE> archive + containing<VAR> name.deb</VAR> and<VAR> name-subpackage.deb</VAR> files + that can be installed from CD-ROM, disk, or network filesystem.</P> +<H3>IRIX Package Files</H3> +<P>IRIX packages are contained in a file called<VAR> name.tardist</VAR>, + where "name" is the product/package name you supplied on the + command-line.</P> +<H3>MacOS X Package Files</H3> +<P>MacOS X packages are contained in a file called<VAR> name.dmg</VAR>, + where "name" is the product/package name you supplied on the + command-line.</P> +<H3>RPM Package Files</H3> +<P>RPM packages are contained in a file called<VAR> name.rpm</VAR> or<VAR> + name.rpm.tgz</VAR> when there are subpackages, where "name" is the + product/package name you supplied on the command-line. The<VAR> + name.rpm.tgz</VAR> file contains a compressed <CODE>tar</CODE> archive + containing<VAR> name.rpm</VAR> and<VAR> name-subpackage.rpm</VAR> files + that can be installed from CD-ROM, disk, or network filesystem.</P> +<H3>Slackware Package Files</H3> +<P>Slackware packages are contained in a file called<VAR> name.tgz</VAR> +, where "name" is the product/package name you supplied on the + command-line.</P> +<H3>Solaris Package Files</H3> +<P>Solaris packages are contained in two files called<VAR> name.pkg.gz</VAR> + and<VAR> name.pkg.tgz</VAR>, where "name" is the product/package name + you supplied on the command-line. The<VAR> name.pkg.gz</VAR> file is a + compressed package file that can be used directly with the <CODE> +pkgadd(1m)</CODE> command, while the<VAR> name.pkg.tgz</VAR> file is a + compressed <CODE>tar</CODE> archive that can be used to install the + software from CD-ROM, disk, or network filesystem.</P> +<H3>Tru64 Package Files</H3> +<P>Tru64 packages are contained in a file called<VAR> name.tar.gz</VAR>, + where "name" is the product/package name you supplied on the + command-line.</P> +<HR NOSHADE> +<H1 ALIGN="RIGHT"><A NAME="ADVANCED">4 - Advanced Packaging with EPM</A></H1> +<P>This chapter describes the advanced packaging features of EPM.</P> +<H2><A NAME="5_1">Including Other List Files</A></H2> +<P>The <CODE>%include</CODE> directive includes another list file:</P> +<PRE> + %include filename +</PRE> +<P>Includes can usually be nested up to 250 levels depending on the host + operating system and libraries.</P> +<H2><A NAME="5_2">Dependencies</A></H2> +<P>EPM supports four types of dependencies in list files: <CODE> +%incompat</CODE>, <CODE>%provides</CODE>, <CODE>%replaces</CODE>, and <CODE> +%requires</CODE>. <A HREF="#TABLE_4_1">Table 4.1</A> shows the level of + support for each package format.</P> + +<!-- NEED 5in --> +<CENTER> +<TABLE BORDER CELLPADDING="2"><CAPTION> <A NAME="TABLE_4_1">Table 4.1: + Dependency Support</A></CAPTION> +<TR><TH>Format</TH><TH>%incompat</TH><TH>%provides</TH><TH>%replaces</TH><TH> +%requires</TH></TR> +<TR><TD ALIGN="CENTER">aix</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER"> +No</TD><TD ALIGN="CENTER">Yes</TD><TD ALIGN="CENTER">Yes</TD></TR> +<TR><TD ALIGN="CENTER">bsd</TD><TD ALIGN="CENTER">Yes</TD><TD ALIGN="CENTER"> +No</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER">Yes</TD></TR> +<TR><TD ALIGN="CENTER">deb</TD><TD ALIGN="CENTER">Yes</TD><TD ALIGN="CENTER"> +Yes<SUP>1</SUP></TD><TD ALIGN="CENTER">Yes</TD><TD ALIGN="CENTER">Yes</TD> +</TR> +<TR><TD ALIGN="CENTER">inst</TD><TD ALIGN="CENTER">Yes</TD><TD ALIGN="CENTER"> +No</TD><TD ALIGN="CENTER">Yes</TD><TD ALIGN="CENTER">Yes</TD></TR> +<TR><TD ALIGN="CENTER">osx</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER"> +No</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER">No</TD></TR> +<TR><TD ALIGN="CENTER">pkg</TD><TD ALIGN="CENTER">Yes</TD><TD ALIGN="CENTER"> +No</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER">Yes</TD></TR> +<TR><TD ALIGN="CENTER">portable</TD><TD ALIGN="CENTER">Yes</TD><TD ALIGN="CENTER"> +Yes</TD><TD ALIGN="CENTER">Yes</TD><TD ALIGN="CENTER">Yes</TD></TR> +<TR><TD ALIGN="CENTER">rpm</TD><TD ALIGN="CENTER">Yes</TD><TD ALIGN="CENTER"> +Yes</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER">Yes</TD></TR> +<TR><TD ALIGN="CENTER">setld</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER"> +No</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER">No</TD></TR> +<TR><TD ALIGN="CENTER">slackware</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER"> +No</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER">No</TD></TR> +<TR><TD ALIGN="CENTER">swinstall</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER"> +No</TD><TD ALIGN="CENTER">Yes</TD><TD ALIGN="CENTER">Yes</TD></TR> +</TABLE> +</CENTER> +<OL> +<LI>Debian's package format does not currently support version numbers + for <CODE>%provides</CODE> dependencies.</LI> +</OL> +<P> </P> +<P>Software conflicts and requirements are specified using the <CODE> +%incompat</CODE> and <CODE>%requires</CODE> directives.</P> +<P>If your software replaces another package, you can specify that using + the <CODE>%replaces</CODE> directive. <CODE>%replaces</CODE> is + silently mapped to <CODE>%incompat</CODE> when the package format does + not support package replacement.</P> +<P>If your package provides certain functionality associated with a + standard name, the <CODE>%provides</CODE> directive can be used.</P> + +<!-- NEED 1in --> +<P>Dependencies are specified using the package name and optionally the + lower and upper version numbers:</P> +<PRE> + %requires foobar + %requires foobar 1.0 + %incompat foobar 0.9 + %replaces foobar + %replaces foobar 1.2 3.4 + %provides foobar +</PRE> +<P>or the filename:</P> +<PRE> + %requires /usr/lib/libfoobar.so + %incompat /usr/lib/libfoobar.so.1.2 +</PRE> +<P>Package dependencies are currently enforced only for the same package + format, so a portable distribution that requires package "foobar" will + only look for an installed "foobar" package in portable format.</P> +<P>Filename dependencies are only supported by the Debian, portable, and + RPM distribution formats.</P> +<H2><A NAME="5_3">Scripts</A></H2> +<P>Bourne shell script commands can be executed before or after + installation, patching, or removal of the software. <A HREF="#TABLE_4_2"> +Table 4.2</A> shows the support for scripts in each package format.</P> +<P>The <CODE>%preinstall</CODE> and <CODE>%postinstall</CODE> directives + specify commands to be run before and after installation, respectively:</P> +<PRE> + %preinstall echo Command before installing + %postinstall echo Command after installing +</PRE> +<P>Similarly, the <CODE>%prepatch</CODE> and <CODE>%postpatch</CODE> + directives specify commands to be executed before and after patching + the software:</P> +<PRE> + %prepatch echo Command before patching + %postpatch echo Command after patching +</PRE> +<P>Finally, the <CODE>%preremove</CODE> and <CODE>%postremove</CODE> + directives specify commands that are run before and after removal of + the software:</P> +<PRE> + %preremove echo Command before removing + %postremove echo Command after removing +</PRE> + +<!-- NEED 3in --> +<CENTER> +<TABLE ALIGN="CENTER" BORDER="1"><CAPTION> <A NAME="TABLE_4_2">Table + 4.2: Scripts Support</A></CAPTION> +<TR><TH><SMALL>Format</SMALL></TH><TH><SMALL>%preinstall</SMALL></TH><TH> +<SMALL>%postinstall</SMALL></TH><TH><SMALL>%prepatch</SMALL></TH><TH><SMALL> +%postpatch</SMALL></TH><TH><SMALL>%preremove</SMALL></TH><TH><SMALL> +%postremove</SMALL></TH></TR> +<TR><TD ALIGN="CENTER">aix</TD><TD ALIGN="CENTER">Yes</TD><TD ALIGN="CENTER"> +Yes</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER"> +Yes</TD><TD ALIGN="CENTER">Yes</TD></TR> +<TR><TD ALIGN="CENTER">bsd</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER"> +Yes</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER"> +Yes</TD><TD ALIGN="CENTER">No</TD></TR> +<TR><TD ALIGN="CENTER">deb</TD><TD ALIGN="CENTER">Yes</TD><TD ALIGN="CENTER"> +Yes</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER"> +Yes</TD><TD ALIGN="CENTER">Yes</TD></TR> +<TR><TD ALIGN="CENTER">inst</TD><TD ALIGN="CENTER">Yes</TD><TD ALIGN="CENTER"> +Yes</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER"> +Yes</TD><TD ALIGN="CENTER">Yes</TD></TR> +<TR><TD ALIGN="CENTER">osx</TD><TD ALIGN="CENTER">Yes</TD><TD ALIGN="CENTER"> +Yes</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER"> +No</TD><TD ALIGN="CENTER">No</TD></TR> +<TR><TD ALIGN="CENTER">pkg</TD><TD ALIGN="CENTER">Yes</TD><TD ALIGN="CENTER"> +Yes</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER"> +Yes</TD><TD ALIGN="CENTER">Yes</TD></TR> +<TR><TD ALIGN="CENTER">portable</TD><TD ALIGN="CENTER">Yes</TD><TD ALIGN="CENTER"> +Yes</TD><TD ALIGN="CENTER">Yes</TD><TD ALIGN="CENTER">Yes</TD><TD ALIGN="CENTER"> +Yes</TD><TD ALIGN="CENTER">Yes</TD></TR> +<TR><TD ALIGN="CENTER">rpm</TD><TD ALIGN="CENTER">Yes</TD><TD ALIGN="CENTER"> +Yes</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER"> +Yes</TD><TD ALIGN="CENTER">Yes</TD></TR> +<TR><TD ALIGN="CENTER">setld</TD><TD ALIGN="CENTER">Yes</TD><TD ALIGN="CENTER"> +Yes</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER"> +Yes</TD><TD ALIGN="CENTER">Yes</TD></TR> +<TR><TD ALIGN="CENTER">slackware</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER"> +Yes</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER"> +No</TD><TD ALIGN="CENTER">No</TD></TR> +<TR><TD ALIGN="CENTER">swinstall</TD><TD ALIGN="CENTER">Yes</TD><TD ALIGN="CENTER"> +Yes</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER">No</TD><TD ALIGN="CENTER"> +Yes</TD><TD ALIGN="CENTER">Yes</TD></TR> +</TABLE> +</CENTER> +<P> </P> +<P>To include an external script file, use the <CODE><filename</CODE> + notation:</P> +<PRE> + %postinstall <filename +</PRE> +<P>To include multiple lines directly, use the <CODE><<string</CODE> + notation (a.k.a. a "here" document):</P> +<PRE> + %postinstall <<EOF + echo Command before installing + /usr/bin/foo + EOF +</PRE> +<P>Note that all commands specified in the list file will use the + variable expansion provided by EPM, so be sure to quote any dollar sign + (<CODE>$</CODE>) characters in your commands. For example, "$foo" is + replaced by the value of "foo", but "$$foo" becomes "$foo".</P> + +<!-- NEED 4in --> +<H2><A NAME="5_4">Conditional Directives</A></H2> +<P>The <CODE>%system</CODE> directive can match or not match specific + operating system names or versions. The operating system name is the + name reported by <CODE>uname</CODE> in lowercase, while the operating + system version is the major and minor version number reported by <CODE> +uname -r</CODE>:</P> +<DL> +<DD> +<DL> +<DT><CODE>%system irix</CODE> +<BR> </DT> +<DD>Only include the following files when building a distribution for + the IRIX operating system. +<BR> </DD> +<DT><CODE>%system linux-2.0</CODE> +<BR> </DT> +<DD>Only include the following files when building a distribution for + Linux 2.0.x. +<BR> </DD> +<DT><CODE>%system !irix !linux-2.0</CODE> +<BR> </DT> +<DD>Only include the following files when building a distribution for + operating systems other than IRIX and Linux 2.0.x. +<BR> </DD> +</DL> +</DD> +</DL> +<P>The special name <CODE>all</CODE> is used to match all operating + systems:</P> +<PRE> + %system all +</PRE> +<P>For format-specific files, the <CODE>%format</CODE> directive can be + used:</P> +<DL> +<DD> +<DL> +<DT><CODE>%format rpm</CODE> +<BR> </DT> +<DD>Only include the following files when building an RPM distribution. +<BR> </DD> +<DT><CODE>%format !rpm</CODE> +<BR> </DT> +<DD>Only include the following files when not building an RPM + distribution.x. +<BR> </DD> +<DT><CODE>%format all</CODE> +<BR> </DT> +<DD>Include the following files for all types of distributions. +<BR> </DD> +</DL> +</DD> +</DL> +<P>The <CODE>%arch</CODE> directive can match or not match specific + architectures. The architecture name is the name reported by <CODE> +uname -m</CODE>; "arm" is a synonym for "armv6", "armv7", and "armv8", + "intel" is a synonym for "i386", "i486", "i586", and "i686", and + "powerpc" is a synonym for "ppc":</P> +<DL> +<DD> +<DL> +<DT><CODE>%arch intel</CODE> +<BR> </DT> +<DD>Only include the following files when building a package for 32-bit + Intel processors. +<BR> </DD> +<DT><CODE>%arch armv6</CODE> +<BR> </DT> +<DD>Only include the following files when building a package for ARMv6 + processors. +<BR> </DD> +<DT><CODE>%system !powerpc</CODE> +<BR> </DT> +<DD>Only include the following files when building a package for + processors other than PowerPC. +<BR> </DD> +</DL> +</DD> +</DL> +<P>The special name <CODE>all</CODE> is used to match all architectures:</P> +<PRE> + %arch all +</PRE> +<P>Finally, EPM can conditionally include lines using the <CODE>%if</CODE> +, <CODE>%elseif</CODE>, <CODE>%ifdef</CODE>, <CODE>%elseifdef</CODE>, <CODE> +%else</CODE>, and <CODE>%endif</CODE> directives.</P> +<P><CODE>%if</CODE> directives include the text that follows if the + named variable(s) are defined to a non-empty string:</P> +<PRE> + %if FOO + f 755 root sys /usr/bin/foo foo + %elseif BAR + f 755 root sys /usr/bin/bar bar + %endif +</PRE> +<P><CODE>%ifdef</CODE> directives only include the text if the named + variable(s) are defined to any value:</P> +<PRE> + %ifdef OSTYPE + f 755 root sys /usr/bin/program program-$OSTYPE + %else + f 755 root sys /usr/bin/program program.sh + %endif +</PRE> +<H2><A NAME="5_5">Protecting Object Files from Stripping</A></H2> +<P>The <CODE>nostrip()</CODE> option can be included at the end of a + file line to prevent EPM from stripping the symbols and debugging + information from a file:</P> +<PRE> + f 755 root sys /usr/lib/libfoo.so libfoo.so nostrip() +</PRE> +<H2><A NAME="5_6">Software Patches</A></H2> +<P>EPM supports portable software patch distributions which contain only + the differences between the original and patch release. Patch files are + specified using uppercase letters for the affected files. In the + following example, the files<VAR> /usr/bin/bar</VAR> and<VAR> + /etc/foo.conf</VAR> are marked</P> + +<!-- NEED 2in --> +<P>as changed since the original release:</P> +<PRE> + f 755 root sys /usr/bin/foo foo + F 755 root sys /usr/bin/bar bar + f 755 root sys /usr/share/man/man1/foo.1 foo.man + f 755 root sys /usr/share/man/man1/bar.1 bar.man + C 644 root sys /etc/foo.conf foo.conf +</PRE> +<H2><A NAME="5_7">Variables</A></H2> +<P>EPM imports the current environment variables for use in your list + file. You can also define new variable in the list file or on the + command-line when running EPM.</P> +<P>Variables are defined by starting the line with the dollar sign (<CODE> +$</CODE>) followed by the name and value:</P> +<PRE> + $name=value + $prefix=/usr + $exec_prefix=${prefix} + $bindir=$exec_prefix/bin +</PRE> +<P>Variable substitution is performed when the variable is defined, so + be careful with the ordering of your variable definitions.</P> +<P>Also, any variables you specify in your list file will be overridden + by variables defined on the command-line or in your environment, just + like with <CODE>make</CODE>. This can be a useful feature or a curse, + depending on your choice of variable names.</P> +<P>As you can see, variables are referenced using the dollar sign (<CODE> +$</CODE>). As with most shells, variable names can be surrounded by + curly braces (<CODE>${variable}</CODE>) to explicitly delimit the name.</P> + +<!-- NEED 1in --> +<P>If you need to insert a <CODE>$</CODE> in a filename or a script, use + <CODE>$$</CODE>:</P> +<PRE> + %install echo Enter your name: + %install read $$name + %install echo Your name is $$name. +</PRE> +<H2><A NAME="5_8">Init Scripts</A></H2> +<P>Initialization scripts are generally portable between platforms, + however the location of initialization scripts varies greatly.</P> +<P>The <CODE>i</CODE> file type can be used to specify and init script + that is to be installed on the system. EPM will then determine the + appropriate init file directories to use and create any required + symbolic links to support the init script:</P> +<PRE> + i 755 root sys foo foo.sh +</PRE> +<P>The previous example creates an init script named<VAR> foo</VAR> on + the end-user system and will create symbolic links to run levels 0, 2, + 3, and 5 as needed, using a sequence number of 00 (or 000) for the + shutdown script and 99 (or 999) for the startup script.</P> +<P>To specify run levels and sequence numbers, use the <CODE>runlevel()</CODE> +, <CODE>start()</CODE>, and <CODE>stop()</CODE> options:</P> +<PRE> + i 755 root sys foo foo.sh "runlevel(02) start(50) stop(30)" +</PRE> +<H2><A NAME="5_9">Literal Package Data</A></H2> +<P>Sometimes you need to include format-specific package data such as + keywords, signing keys, and response data. The <CODE>%literal(section)</CODE> + directive adds format-specific data to the packages you create. Literal + data is currently only supported for RPM and PKG packages.</P> +<H3>PKG Literal Data</H3> +<P>PKG packages support request files that are used to do batch + installations when installation commands require user input. The <CODE> +%literal(request)</CODE> directive can be used to provide this user + input:</P> +<PRE> + %literal(request) <<EOF + John Doe + 1 Any Lane + Forest Lawn, OH 12345 + EOF +</PRE> +<H3>RPM Literal Data</H3> +<P>RPM packages support numerous attributes in the "spec" file that + control how the package is created and what metadata is included with + the package. The <CODE>%literal(spec)</CODE> directive can be used to + provide attributes for the spec file:</P> +<PRE> + %literal(spec) <<EOF + %changelog + * Tue Aug 26 2008 John Doe <johndoe@domain.com> + + - Added new feature "bar" + + * Fri Aug 1 2008 John Doe <johndoe@domain.com> + + - Added new feature "foo" + EOF +</PRE> +<HR NOSHADE> +<H1 ALIGN="RIGHT"><A NAME="EXAMPLES">5 - EPM Packaging Examples</A></H1> +<P>This chapter shows how the EPM and CUPS software is packaged using + EPM list files. The EPM list file example highlights the basic features + of EPM, while the CUPS list file example shows the more advanced + features of EPM.</P> +<H2><A NAME="6_1">Packaging the EPM Software</A></H2> +<P>The EPM software comes with its own autoconf-generated<VAR> epm.list</VAR> + file that is used to package and test EPM. The EPM package consists of + the main package plus a "documentation" subpackage for the + documentation files and a "man" subpackage for the man pages.</P> +<P>We start by defining variables for each of the autoconf directory + variables:</P> +<PRE><FONT SIZE="1"> + $prefix=/usr + $exec_prefix=/usr + $bindir=${exec_prefix}/bin + $datadir=/usr/share + $docdir=${datadir}/doc/epm + $libdir=/usr/lib + $mandir=/usr/share/man + $srcdir=. +</FONT></PRE> +<P>Then we provide the general product information that is required for + all packages; notice the use of <CODE>${srcdir}</CODE> to reference the + COPYING and README files:</P> +<PRE><FONT SIZE="1"> + %product ESP Package Manager + %copyright 1999-2006 by Easy Software Products, All Rights Reserved. + %vendor Easy Software Products + %license ${srcdir}/COPYING + %readme ${srcdir}/README + %description Universal software packaging tool for UNIX. + %version 4.0 400 +</FONT></PRE> +<P>After the product information, we include all of the non-GUI files + that are part of EPM:</P> +<PRE><FONT SIZE="1"> + # Executables + %system all + f 0555 root sys ${bindir}/epm epm + f 0555 root sys ${bindir}/epminstall epminstall + f 0555 root sys ${bindir}/mkepmlist mkepmlist + + # Documentation + %subpackage documentation + %description Documentation for EPM + f 0444 root sys ${docdir}/README $srcdir/README + f 0444 root sys ${docdir}/COPYING $srcdir/COPYING + f 0444 root sys ${docdir}/epm-book.html $srcdir/doc/epm-book.html + + # Man pages + %subpackage man + %description Man pages for EPM + f 0444 root sys ${mandir}/man1/epm.1 $srcdir/doc/epm.man + f 0444 root sys ${mandir}/man1/epminstall.1 $srcdir/doc/epminstall.man + f 0444 root sys ${mandir}/man1/mkepmlist.1 $srcdir/doc/mkepmlist.man + f 0444 root sys ${mandir}/man5/epm.list.5 $srcdir/doc/epm.list.man +</FONT></PRE> +<P>Finally, we conditionally include the GUI files depending on the + state of a variable called <CODE>GUIS</CODE>:</P> +<PRE><FONT SIZE="1"> + # GUI files... + $GUIS=setup uninst + + %if GUIS + %subpackage + f 0555 root sys ${libdir}/epm/setup setup + f 0555 root sys ${libdir}/epm/uninst uninst + + %system darwin + f 0444 root sys ${datadir}/epm/setup.icns macosx/setup.icns + f 0444 root sys ${datadir}/epm/setup.info macosx/setup.info + f 0444 root sys ${datadir}/epm/setup.plist macosx/setup.plist + + f 0444 root sys ${datadir}/epm/uninst.icns macosx/uninst.icns + f 0444 root sys ${datadir}/epm/uninst.info macosx/uninst.info + f 0444 root sys ${datadir}/epm/uninst.plist macosx/uninst.plist + %system all + + %subpackage man + f 0444 root sys ${mandir}/man1/setup.1 $srcdir/doc/setup.man + f 0444 root sys ${mandir}/man5/setup.types.5 $srcdir/doc/setup.types.man + + %endif +</FONT></PRE> +<H2><A NAME="6_2">Packaging the CUPS Software</A></H2> +<P>The Common UNIX Printing System provides an EPM list file to generate + software distributions for most UNIX operating systems. This list file + is more complex than the EPM example and contains several subpackages:</P> +<UL> +<LI>"devel"; Developer header, library, and documentation files</LI> +<LI>"es"; Spanish localization files</LI> +<LI>"ja"; Japanese localization files</LI> +<LI>"libs"; Shared libraries</LI> +<LI>"lpd"; LPD client support</LI> +</UL> +<H3>Variables Used for the Distribution</H3> +<P>In addition to the autoconf variables defined in the EPM list file, + the CUPS list file defines the following autoconf-derived variables for + the distribution:</P> +<UL> +<LI><CODE>AMANDIR</CODE>; The directory for administrative manual pages.</LI> +<LI><CODE>BINDIR</CODE>; The directory for user programs.</LI> +<LI><CODE>CACHEDIR</CODE>; The directory for cache files.</LI> +<LI><CODE>DATADIR</CODE>; The directory for data files.</LI> +<LI><CODE>DOCDIR</CODE>; The directory for documentation files.</LI> +<LI><CODE>INCLUDEDIR</CODE>; The directory for header files.</LI> +<LI><CODE>INITDIR</CODE>; The directory for startup scripts.</LI> +<LI><CODE>INITDDIR</CODE>; The directory to reference from run-level + scripts.</LI> +<LI><CODE>LIBDIR</CODE>; The directory for library files.</LI> +<LI><CODE>LIB32DIR</CODE>; The directory for 32-bit library files.</LI> +<LI><CODE>LIB64DIR</CODE>; The directory for 64-bit library files.</LI> +<LI><CODE>LOCALEDIR</CODE>; The directory for message (localization) + files.</LI> +<LI><CODE>LOGDIR</CODE>; The directory for log files.</LI> +<LI><CODE>MANDIR</CODE>; The directory for man pages.</LI> +<LI><CODE>PAMDIR</CODE>; The directory for PAM configuration files.</LI> +<LI><CODE>REQUESTS</CODE>; The directory for request files.</LI> +<LI><CODE>SBINDIR</CODE>; The directory for administration programs.</LI> +<LI><CODE>SERVERBIN</CODE>; The directory for server programs.</LI> +<LI><CODE>SERVERROOT</CODE>; The directory for server configuration + files.</LI> +<LI><CODE>STATEDIR</CODE>; The directory for server state files.</LI> +</UL> +<H3>Product Information</H3> +<P>The list file starts with the standard product information:</P> +<PRE><FONT SIZE="1"> + %product Common UNIX Printing System + %copyright 1993-2006 by Easy Software Products, All Rights Reserved. + %vendor Easy Software Products + %license LICENSE.txt + %readme packaging/cups.license + %version 1.2.0 + %description The Common UNIX Printing System provides a portable + %description printing layer for UNIX(r) operating systems. It + %description has been developed by Easy Software Products to + %description promote a standard printing solution for all UNIX + %description vendors and users. CUPS provides the System V and + %description Berkeley command-line interfaces. +</FONT></PRE> +<P>We then list different dependencies depending on the package format:</P> +<PRE><FONT SIZE="1"> + %format rpm + %provides cups 1:1.2.0 + %provides lpd, lpr, LPRng + %replaces lpd, lpr, LPRng + + %format deb + %provides cupsys + %provides cupsys-client + %provides cupsys-bsd + + %format pkg + %replaces SUNWlpmsg LP Alerts + %replaces SUNWlpr LP Print Service, (Root) + %replaces SUNWlps LP Print Service - Server, (Usr) + %replaces SUNWlpu LP Print Service - Client, (Usr) + %replaces SUNWpsu LP Print Server, (Usr) + %replaces SUNWpsr LP Print Server, (Root) + %replaces SUNWpcu LP Print Client, (Usr) + %replaces SUNWpcr LP Print Client, (Root) + %replaces SUNWppm + %replaces SUNWmp + %replaces SUNWscplp SunOS Print Compatibility + + %format inst + %replaces patch*.print_*.* 0 0 1289999999 1289999999 + %replaces maint*.print_*.* 0 0 1289999999 1289999999 + %replaces print 0 0 1289999999 1289999999 + %replaces fw_cups 0 0 1289999999 1289999999 + %incompat patch*.print_*.* 0 0 1289999999 1289999999 + %incompat maint*.print_*.* 0 0 1289999999 1289999999 + %incompat print 0 0 1289999999 1289999999 + %incompat fw_cups 0 0 1289999999 1289999999 + + %format all +</FONT></PRE> +<P>The subpackages come next, each with their own dependencies:</P> +<PRE><FONT SIZE="1"> + %subpackage libs + %description Common UNIX Printing System - shared libraries + %format rpm + %provides cups-libs 1:1.2.0 + %format deb + %provides libcups1 + %provides libcupsys2 + %provides libcupsys2-gnutls10 + %provides libcupsimage2 + %format all + + %subpackage devel + %description Common UNIX Printing System - development environment + %format rpm + %provides cups-devel 1:1.2.0 + %format deb + %provides libcupsys2-dev + %provides libcupsimage2-dev + %format all + + %subpackage lpd + %description Common UNIX Printing System - LPD support + %format rpm + %provides cups-lpd 1:1.2.0 + %format all + + %subpackage es + %description Common UNIX Printing System - Spanish support + + %subpackage ja + %description Common UNIX Printing System - Japanese support + + %subpackage +</FONT></PRE> + +<!-- NEED 3in --> +<H3>Server Programs</H3> +<P>The server programs are installed in the <CODE>SBINDIR</CODE> and <CODE> +SERVERBIN</CODE> directories. The image and PDF filters are + conditionally included based on the <CODE>IMGFILTERS</CODE> and <CODE> +PDFTOPS</CODE> variables, respectively:</P> +<PRE><FONT SIZE="1"> + f 0755 root sys $SBINDIR/cupsd scheduler/cupsd + + d 0755 root sys $SERVERBIN - + d 0755 root sys $SERVERBIN/backend - + f 0755 root sys $SERVERBIN/backend/ipp backend/ipp + l 0755 root sys $SERVERBIN/backend/http ipp + f 0755 root sys $SERVERBIN/backend/lpd backend/lpd + f 0755 root sys $SERVERBIN/backend/parallel backend/parallel + f 0755 root sys $SERVERBIN/backend/scsi backend/scsi + f 0755 root sys $SERVERBIN/backend/serial backend/serial + f 0755 root sys $SERVERBIN/backend/socket backend/socket + f 0755 root sys $SERVERBIN/backend/usb backend/usb + d 0755 root sys $SERVERBIN/cgi-bin - + f 0755 root sys $SERVERBIN/cgi-bin/admin.cgi cgi-bin/admin.cgi + f 0755 root sys $SERVERBIN/cgi-bin/classes.cgi cgi-bin/classes.cgi + f 0755 root sys $SERVERBIN/cgi-bin/help.cgi cgi-bin/help.cgi + f 0755 root sys $SERVERBIN/cgi-bin/jobs.cgi cgi-bin/jobs.cgi + f 0755 root sys $SERVERBIN/cgi-bin/printers.cgi cgi-bin/printers.cgi + d 0755 root sys $SERVERBIN/daemon - + f 0755 root sys $SERVERBIN/daemon/cups-deviced scheduler/cups-deviced + f 0755 root sys $SERVERBIN/daemon/cups-driverd scheduler/cups-driverd + f 0755 root sys $SERVERBIN/daemon/cups-polld scheduler/cups-polld + d 0755 root sys $SERVERBIN/driver - + d 0755 root sys $SERVERBIN/filter - + f 0755 root sys $SERVERBIN/filter/gziptoany filter/gziptoany + f 0755 root sys $SERVERBIN/filter/hpgltops filter/hpgltops + %if IMGFILTERS + f 0755 root sys $SERVERBIN/filter/imagetops filter/imagetops + f 0755 root sys $SERVERBIN/filter/imagetoraster filter/imagetoraster + %endif + %if PDFTOPS + f 0755 root sys $SERVERBIN/filter/pdftops pdftops/pdftops + %endif + f 0755 root sys $SERVERBIN/filter/pstops filter/pstops + f 0755 root sys $SERVERBIN/filter/rastertolabel filter/rastertolabel + l 0755 root sys $SERVERBIN/filter/rastertodymo rastertolabel + f 0755 root sys $SERVERBIN/filter/rastertoepson filter/rastertoepson + f 0755 root sys $SERVERBIN/filter/rastertohp filter/rastertohp + f 0755 root sys $SERVERBIN/filter/texttops filter/texttops + d 0755 root sys $SERVERBIN/notifier - + f 0755 root sys $SERVERBIN/notifier/mailto notifier/mailto +</FONT></PRE> +<P>The <CODE>cups-lpd</CODE> program goes in the "lpd" subpackage:</P> +<PRE><FONT SIZE="1"> + %subpackage lpd + d 0755 root sys $SERVERBIN/daemon - + f 0755 root sys $SERVERBIN/daemon/cups-lpd scheduler/cups-lpd + %subpackage +</FONT></PRE> +<H3>Administration Commands</H3> +<P>The administration commands are all pretty much the same. The only + difference is that IRIX needs a symlink for the <CODE>lpc</CODE> + program in the<VAR> /usr/etc</VAR> directory.</P> +<PRE><FONT SIZE="1"> + d 0755 root sys $BINDIR - + l 0755 root sys $BINDIR/enable $SBINDIR/accept + l 0755 root sys $LIBDIR/accept $SBINDIR/accept + d 0755 root sys $SBINDIR - + l 0755 root sys $SBINDIR/cupsdisable accept + l 0755 root sys $SBINDIR/cupsenable accept + l 0755 root sys $BINDIR/disable $SBINDIR/accept + d 0755 root sys $LIBDIR - + l 0755 root sys $LIBDIR/lpadmin $SBINDIR/lpadmin + l 0755 root sys $LIBDIR/reject accept + f 0755 root sys $SBINDIR/accept systemv/accept + f 0755 root sys $SBINDIR/cupsaddsmb systemv/cupsaddsmb + f 0755 root sys $SBINDIR/lpadmin systemv/lpadmin + f 0755 root sys $SBINDIR/lpc berkeley/lpc + f 0755 root sys $SBINDIR/lpinfo systemv/lpinfo + f 0755 root sys $SBINDIR/lpmove systemv/lpmove + l 0755 root sys $SBINDIR/reject accept + + %system irix + l 0755 root sys /usr/etc/lpc $SBINDIR/lpc + %system all +</FONT></PRE> +<H3>User Commands</H3> +<P>The user commands are all pretty much the same. As with the + administration commands, IRIX needs the Berkeley commands linked to a + different directory,<VAR> /usr/bsd</VAR>.</P> +<PRE><FONT SIZE="1"> + d 0755 root sys $BINDIR - + f 0755 root sys $BINDIR/cancel systemv/cancel + f 0755 root sys $BINDIR/cupstestdsc systemv/cupstestdsc + f 0755 root sys $BINDIR/cupstestppd systemv/cupstestppd + f 0755 root sys $BINDIR/lp systemv/lp + f 0755 root sys $BINDIR/lpoptions systemv/lpoptions + f 4755 $CUPS_USER sys $BINDIR/lppasswd systemv/lppasswd + f 0755 root sys $BINDIR/lpq berkeley/lpq + f 0755 root sys $BINDIR/lpr berkeley/lpr + f 0755 root sys $BINDIR/lprm berkeley/lprm + f 0755 root sys $BINDIR/lpstat systemv/lpstat + + %system irix + l 0755 root sys /usr/bsd/lpq $BINDIR/lpq + l 0755 root sys /usr/bsd/lpr $BINDIR/lpr + l 0755 root sys /usr/bsd/lprm $BINDIR/lprm + %system all +</FONT></PRE> +<H3>Shared Libraries</H3> +<P>Shared libraries present their own challenges. AIX, HP-UX, and MacOS + X uses a different extension for shared libraries than the other + operating systems, and we only include the shared libraries if they are + enabled in the build:</P> +<PRE><FONT SIZE="1"> + %if DSOLIBS + %subpackage libs + %system hpux + f 0755 root sys $LIBDIR/libcups.sl.2 cups/libcups.sl.2 + l 0755 root sys $LIBDIR/libcups.sl libcups.sl.2 + f 0755 root sys $LIBDIR/libcupsimage.sl.2 filter/libcupsimage.sl.2 + l 0755 root sys $LIBDIR/libcupsimage.sl libcupsimage.sl.2 + %system aix + f 0755 root sys $LIBDIR/libcups_s.a cups/libcups_s.a + f 0755 root sys $LIBDIR/libcupsimage_s.a filter/libcupsimage_s.a + %system darwin + f 0755 root sys $LIBDIR/libcups.2.dylib cups/libcups.2.dylib + l 0755 root sys $LIBDIR/libcups.dylib libcups.2.dylib + f 0755 root sys $LIBDIR/libcupsimage.2.dylib filter/libcupsimage.2.dylib + l 0755 root sys $LIBDIR/libcupsimage.dylib libcupsimage.2.dylib + %system !hpux !aix !darwin + f 0755 root sys $LIBDIR/libcups.so.2 cups/libcups.so.2 + l 0755 root sys $LIBDIR/libcups.so libcups.so.2 + f 0755 root sys $LIBDIR/libcupsimage.so.2 filter/libcupsimage.so.2 + l 0755 root sys $LIBDIR/libcupsimage.so libcupsimage.so.2 + %system all + %subpackage + %endif +</FONT></PRE> +<P>To keep things interesting, CUPS also supports separately compiled + 32-bit and 64-bit libraries on systems that support a mix of 32-bit and + 64-bit binaries. The <CODE>LIB32DIR</CODE> and <CODE>LIB64DIR</CODE> + variables are used to conditionally include the corresponding + libraries:</P> +<PRE><FONT SIZE="1"> + %if LIB32DIR + %subpackage libs + f 0755 root sys $LIB32DIR/libcups.so.2 cups/libcups.32.so.2 + l 0755 root sys $LIB32DIR/libcups.so libcups.so.2 + f 0755 root sys $LIB32DIR/libcupsimage.so.2 filter/libcupsimage.32.so.2 + l 0755 root sys $LIB32DIR/libcupsimage.so libcupsimage.so.2 + %system all + %subpackage + %endif + + %if LIB64DIR + %subpackage libs + f 0755 root sys $LIB64DIR/libcups.so.2 cups/libcups.64.so.2 + l 0755 root sys $LIB64DIR/libcups.so libcups.so.2 + f 0755 root sys $LIB64DIR/libcupsimage.so.2 filter/libcupsimage.64.so.2 + l 0755 root sys $LIB64DIR/libcupsimage.so libcupsimage.so.2 + %system all + %subpackage + %endif +</FONT></PRE> +<H3>Directories</H3> +<P>The CUPS distribution uses several directories to hold the log, + request, and temporary files. The <CODE>CUPS_GROUP</CODE> and <CODE> +CUPS_PRIMARY_SYSTEM_GROUP</CODE> variables define the group names to use + for these directories:</P> +<PRE><FONT SIZE="1"> + d 0755 root sys $LOGDIR - + d 0710 root $CUPS_GROUP $REQUESTS - + d 1770 root $CUPS_GROUP $REQUESTS/tmp - + d 0775 root $CUPS_GROUP $CACHEDIR - + d 0755 root $CUPS_GROUP $STATEDIR - + d 0511 root $CUPS_PRIMARY_SYSTEM_GROUP $STATEDIR/certs - +</FONT></PRE> +<H3>Data Files</H3> +<P>CUPS has lots of data files. We use wildcards whenever possible:</P> +<PRE><FONT SIZE="1"> + d 0755 root sys $DATADIR - + + d 0755 root sys $DATADIR/banners - + f 0644 root sys $DATADIR/banners/classified data/classified + f 0644 root sys $DATADIR/banners/confidential data/confidential + f 0644 root sys $DATADIR/banners/secret data/secret + f 0644 root sys $DATADIR/banners/standard data/standard + f 0644 root sys $DATADIR/banners/topsecret data/topsecret + f 0644 root sys $DATADIR/banners/unclassified data/unclassified + + d 0755 root sys $DATADIR/charsets - + f 0644 root sys $DATADIR/charsets data/*.txt + f 0644 root sys $DATADIR/charsets/windows-874 data/windows-874 + f 0644 root sys $DATADIR/charsets/windows-1250 data/windows-1250 + f 0644 root sys $DATADIR/charsets/windows-1251 data/windows-1251 + f 0644 root sys $DATADIR/charsets/windows-1252 data/windows-1252 + f 0644 root sys $DATADIR/charsets/windows-1253 data/windows-1253 + f 0644 root sys $DATADIR/charsets/windows-1254 data/windows-1254 + f 0644 root sys $DATADIR/charsets/windows-1255 data/windows-1255 + f 0644 root sys $DATADIR/charsets/windows-1256 data/windows-1256 + f 0644 root sys $DATADIR/charsets/windows-1257 data/windows-1257 + f 0644 root sys $DATADIR/charsets/windows-1258 data/windows-1258 + f 0644 root sys $DATADIR/charsets/iso-8859-1 data/iso-8859-1 + f 0644 root sys $DATADIR/charsets/iso-8859-2 data/iso-8859-2 + f 0644 root sys $DATADIR/charsets/iso-8859-3 data/iso-8859-3 + f 0644 root sys $DATADIR/charsets/iso-8859-4 data/iso-8859-4 + f 0644 root sys $DATADIR/charsets/iso-8859-5 data/iso-8859-5 + f 0644 root sys $DATADIR/charsets/iso-8859-6 data/iso-8859-6 + f 0644 root sys $DATADIR/charsets/iso-8859-7 data/iso-8859-7 + f 0644 root sys $DATADIR/charsets/iso-8859-8 data/iso-8859-8 + f 0644 root sys $DATADIR/charsets/iso-8859-9 data/iso-8859-9 + f 0644 root sys $DATADIR/charsets/iso-8859-10 data/iso-8859-10 + f 0644 root sys $DATADIR/charsets/iso-8859-13 data/iso-8859-13 + f 0644 root sys $DATADIR/charsets/iso-8859-14 data/iso-8859-14 + f 0644 root sys $DATADIR/charsets/iso-8859-15 data/iso-8859-15 + f 0644 root sys $DATADIR/charsets/utf-8 data/utf-8 + + d 0755 root sys $DATADIR/data - + f 0644 root sys $DATADIR/data/HPGLprolog data/HPGLprolog + f 0644 root sys $DATADIR/data/psglyphs data/psglyphs + f 0644 root sys $DATADIR/data/testprint.ps data/testprint.ps + + d 0755 root sys $DATADIR/fonts - + f 0644 root sys $DATADIR/fonts fonts/Courier* + f 0644 root sys $DATADIR/fonts/Symbol fonts/Symbol + + d 0755 root sys $DATADIR/model - + f 0644 root sys $DATADIR/model ppd/*.ppd + + d 0755 root sys $DATADIR/templates - + c 0644 root sys $DATADIR/templates templates/*.tmpl +</FONT></PRE> +<P>The template files for each of the language localizations are put in + separate subpackages:</P> +<PRE><FONT SIZE="1"> + # Japanese template files + %subpackage es + d 0755 root sys $DATADIR/templates/es + f 0644 root sys $DATADIR/templates/es templates/es/*.tmpl + %subpackage ja + d 0755 root sys $DATADIR/templates/ja + f 0644 root sys $DATADIR/templates/ja templates/ja/*.tmpl + %subpackage +</FONT></PRE> +<H3>Configuration Files</H3> +<P>The server configuration files and directories go in <CODE>SERVERROOT</CODE> +. The MIME configuration files are not treated as configuration files in + the distribution since new versions of CUPS may add filters and file + types that are required to make CUPS work:</P> +<PRE><FONT SIZE="1"> + d 0755 root sys $SERVERROOT - + d 0755 root $CUPS_GROUP $SERVERROOT/interfaces - + d 0755 root $CUPS_GROUP $SERVERROOT/ppd - + c $CUPS_PERM root $CUPS_GROUP $SERVERROOT conf/*.conf + f $CUPS_PERM root $CUPS_GROUP $SERVERROOT/cupsd.conf.default conf/cupsd.conf + f $CUPS_PERM root $CUPS_GROUP $SERVERROOT/mime.convs conf/mime.convs + f $CUPS_PERM root $CUPS_GROUP $SERVERROOT/mime.types conf/mime.types +</FONT></PRE> +<P>The PAM configuration file is only included if the configure script + found a PAM configuration directory:</P> +<PRE><FONT SIZE="1"> + %if PAMDIR + d 0755 root sys $PAMDIR - + c 0644 root sys $PAMDIR/cups conf/pam.std + %endif +</FONT></PRE> +<H3>Developer Files</H3> +<P>The developer files include the C header files, static libraries, and + help files. The static libraries are only included if they have been + built, which is specified using the <CODE>INSTALLSTATIC</CODE> + variable:</P> +<PRE><FONT SIZE="1"> + %subpackage devel + f 0755 root sys $BINDIR/cups-config cups-config + d 0755 root sys $INCLUDEDIR/cups - + f 0644 root sys $INCLUDEDIR/cups/cups.h cups/cups.h + f 0644 root sys $INCLUDEDIR/cups/http.h cups/http.h + f 0644 root sys $INCLUDEDIR/cups/image.h filter/image.h + f 0644 root sys $INCLUDEDIR/cups/ipp.h cups/ipp.h + f 0644 root sys $INCLUDEDIR/cups/language.h cups/language.h + f 0644 root sys $INCLUDEDIR/cups/md5.h cups/md5.h + f 0644 root sys $INCLUDEDIR/cups/ppd.h cups/ppd.h + f 0644 root sys $INCLUDEDIR/cups/raster.h filter/raster.h + + %if INSTALLSTATIC + f 0644 root sys $LIBDIR/libcups.a cups/libcups.a + f 0644 root sys $LIBDIR/libcupsimage.a filter/libcupsimage.a + %endif + + d 0755 root sys $DOCDIR/help - + f 0644 root sys $DOCDIR/help doc/help/api*.html + f 0644 root sys $DOCDIR/help doc/help/spec*.html + %subpackage +</FONT></PRE> +<H3>Documentation Files</H3> +<P>The documentation files go under <CODE>DOCDIR</CODE>. Wildcards take + care of most of the work:</P> +<PRE><FONT SIZE="1"> + d 0755 root sys $DOCDIR - + f 0644 root sys $DOCDIR doc/*.css + f 0644 root sys $DOCDIR doc/*.html + d 0755 root sys $DOCDIR/help - + f 0644 root sys $DOCDIR/help/cgi.html doc/help/cgi.html + f 0644 root sys $DOCDIR/help/glossary.html doc/help/glossary.html + f 0644 root sys $DOCDIR/help/license.html doc/help/license.html + f 0644 root sys $DOCDIR/help/network.html doc/help/network.html + f 0644 root sys $DOCDIR/help/options.html doc/help/options.html + f 0644 root sys $DOCDIR/help/overview.html doc/help/overview.html + f 0644 root sys $DOCDIR/help/security.html doc/help/security.html + f 0644 root sys $DOCDIR/help/standard.html doc/help/standard.html + f 0644 root sys $DOCDIR/help/translation.html doc/help/translation.html + f 0644 root sys $DOCDIR/help/whatsnew.html doc/help/whatsnew.html + f 0644 root sys $DOCDIR/help doc/help/man-*.html + f 0644 root sys $DOCDIR/help doc/help/ref-*.html + d 0755 root sys $DOCDIR/images - + f 0644 root sys $DOCDIR/images doc/images/*.gif + f 0644 root sys $DOCDIR/images doc/images/*.jpg + f 0644 root sys $DOCDIR/images doc/images/*.png + f 0644 root sys $DOCDIR/robots.txt doc/robots.txt +</FONT></PRE> +<P>The Japanese and Spanish version of the documentation files go in the + corresponding subpackages:</P> +<PRE><FONT SIZE="1"> + # Localized documentation files + %subpackage es + d 0755 root sys $DOCDIR/es + f 0644 root sys $DOCDIR/es doc/es/*.html + d 0755 root sys $DOCDIR/es/images - + f 0644 root sys $DOCDIR/es/images doc/es/images/*.gif + %subpackage ja + d 0755 root sys $DOCDIR/ja + f 0644 root sys $DOCDIR/ja doc/ja/*.html + d 0755 root sys $DOCDIR/ja/images - + f 0644 root sys $DOCDIR/ja/images doc/ja/images/*.gif + %subpackage +</FONT></PRE> +<H3>Man Pages</H3> +<P>Man pages are almost as much fun as initialization scripts. HP-UX, + IRIX, and Solaris follow the System V convention of using section 1m + for administration commands instead of section 8 as is used for all + other operating systems. IRIX also places administrative commands in a + separate subdirectory:</P> +<PRE><FONT SIZE="1"> + d 0755 root sys $AMANDIR - + d 0755 root sys $AMANDIR/man$MAN8DIR - + d 0755 root sys $MANDIR - + d 0755 root sys $MANDIR/man1 - + d 0755 root sys $MANDIR/man5 - + d 0755 root sys $MANDIR/man7 - + + f 0644 root sys $MANDIR/man1/cancel.$MAN1EXT man/cancel.$MAN1EXT + f 0644 root sys $MANDIR/man1/cupstestdsc.$MAN1EXT man/cupstestdsc.$MAN1EXT + f 0644 root sys $MANDIR/man1/cupstestppd.$MAN1EXT man/cupstestppd.$MAN1EXT + f 0644 root sys $MANDIR/man1/lpoptions.$MAN1EXT man/lpoptions.$MAN1EXT + f 0644 root sys $MANDIR/man1/lppasswd.$MAN1EXT man/lppasswd.$MAN1EXT + f 0644 root sys $MANDIR/man1/lpq.$MAN1EXT man/lpq.$MAN1EXT + f 0644 root sys $MANDIR/man1/lprm.$MAN1EXT man/lprm.$MAN1EXT + f 0644 root sys $MANDIR/man1/lpr.$MAN1EXT man/lpr.$MAN1EXT + f 0644 root sys $MANDIR/man1/lpstat.$MAN1EXT man/lpstat.$MAN1EXT + f 0644 root sys $MANDIR/man1/lp.$MAN1EXT man/lp.$MAN1EXT + + f 0644 root sys $MANDIR/man5/classes.conf.$MAN5EXT man/classes.conf.$MAN5EXT + f 0644 root sys $MANDIR/man5/cupsd.conf.$MAN5EXT man/cupsd.conf.$MAN5EXT + f 0644 root sys $MANDIR/man5/mime.convs.$MAN5EXT man/mime.convs.$MAN5EXT + f 0644 root sys $MANDIR/man5/mime.types.$MAN5EXT man/mime.types.$MAN5EXT + f 0644 root sys $MANDIR/man5/printers.conf.$MAN5EXT man/printers.conf.$MAN5EXT + + f 0644 root sys $MANDIR/man7/backend.$MAN7EXT man/backend.$MAN7EXT + f 0644 root sys $MANDIR/man7/filter.$MAN7EXT man/filter.$MAN7EXT + + f 0644 root sys $AMANDIR/man$MAN8DIR/accept.$MAN8EXT man/accept.$MAN8EXT + l 0644 root sys $AMANDIR/man$MAN8DIR/reject.$MAN8EXT accept.$MAN8EXT + f 0644 root sys $AMANDIR/man$MAN8DIR/cupsaddsmb.$MAN8EXT man/cupsaddsmb.$MAN8EXT + f 0644 root sys $AMANDIR/man$MAN8DIR/cups-polld.$MAN8EXT man/cups-polld.$MAN8EXT + f 0644 root sys $AMANDIR/man$MAN8DIR/cupsd.$MAN8EXT man/cupsd.$MAN8EXT + f 0644 root sys $AMANDIR/man$MAN8DIR/cupsenable.$MAN8EXT man/cupsenable.$MAN8EXT + l 0644 root sys $AMANDIR/man$MAN8DIR/cupsdisable.$MAN8EXT cupsenable.$MAN8EXT + f 0644 root sys $AMANDIR/man$MAN8DIR/lpadmin.$MAN8EXT man/lpadmin.$MAN8EXT + f 0644 root sys $AMANDIR/man$MAN8DIR/lpc.$MAN8EXT man/lpc.$MAN8EXT + f 0644 root sys $AMANDIR/man$MAN8DIR/lpinfo.$MAN8EXT man/lpinfo.$MAN8EXT + f 0644 root sys $AMANDIR/man$MAN8DIR/lpmove.$MAN8EXT man/lpmove.$MAN8EXT + + %subpackage devel + f 0644 root sys $MANDIR/man1/cups-config.$MAN1EXT man/cups-config.$MAN1EXT + + %subpackage lpd + d 0755 root sys $AMANDIR/man$MAN8DIR - + f 0644 root sys $AMANDIR/man$MAN8DIR/cups-lpd.$MAN8EXT man/cups-lpd.$MAN8EXT + %subpackage +</FONT></PRE> +<H3>Startup Script</H3> +<P>The CUPS startup script is last and specifies a script name of <CODE> +cups</CODE>. Startup and shutdown scripts will be created with the + (default) names <CODE>S99cups</CODE> and <CODE>K00cups</CODE>, + respectively.</P> +<PRE><FONT SIZE="1"> + %system all + i 0555 root sys cups init/cups.sh +</FONT></PRE> +<HR NOSHADE> +<H1 ALIGN="RIGHT"><A NAME="LICENSE">A - GNU General Public License</A></H1> +<P ALIGN="CENTER">GNU GENERAL PUBLIC LICENSE +<BR> Version 2, June 1991</P> +<P ALIGN="CENTER">Copyright (C) 1989, 1991 Free Software Foundation, + Inc. +<BR> 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA +<BR> Everyone is permitted to copy and distribute verbatim copies of + this license document, but changing it is not allowed.</P> +<P ALIGN="CENTER"><B>GNU GENERAL PUBLIC LICENSE +<BR> TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</B></P> +<P>0. This License applies to any program or other work which contains a + notice placed by the copyright holder saying it may be distributed + under the terms of this General Public License. The "Program", below, + refers to any such program or work, and a "work based on the Program" + means either the Program or any derivative work under copyright law: + that is to say, a work containing the Program or a portion of it, + either verbatim or with modifications and/or translated into another + language. (Hereinafter, translation is included without limitation in + the term "modification".) Each licensee is addressed as "you".</P> +<P>Activities other than copying, distribution and modification are not + covered by this License; they are outside its scope. The act of running + the Program is not restricted, and the output from the Program is + covered only if its contents constitute a work based on the Program + (independent of having been made by running the Program). Whether that + is true depends on what the Program does.</P> +<P>1. You may copy and distribute verbatim copies of the Program's + source code as you receive it, in any medium, provided that you + conspicuously and appropriately publish on each copy an appropriate + copyright notice and disclaimer of warranty; keep intact all the + notices that refer to this License and to the absence of any warranty; + and give any other recipients of the Program a copy of this License + along with the Program.</P> +<P>You may charge a fee for the physical act of transferring a copy, and + you may at your option offer warranty protection in exchange for a fee.</P> +<P>2. You may modify your copy or copies of the Program or any portion + of it, thus forming a work based on the Program, and copy and + distribute such modifications or work under the terms of Section 1 + above, provided that you also meet all of these conditions:</P> +<UL> +<P>a. You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change.</P> +<P>b. You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any part + thereof, to be licensed as a whole at no charge to all third parties + under the terms of this License.</P> +<P>c. If the modified program normally reads commands interactively when + run, you must cause it, when started running for such interactive use + in the most ordinary way, to print or display an announcement including + an appropriate copyright notice and a notice that there is no warranty + (or else, saying that you provide a warranty) and that users may + redistribute the program under these conditions, and telling the user + how to view a copy of this License. (Exception: if the Program itself + is interactive but does not normally print such an announcement, your + work based on the Program is not required to print an announcement.)</P> +</UL> +<P>These requirements apply to the modified work as a whole. If + identifiable sections of that work are not derived from the Program, + and can be reasonably considered independent and separate works in + themselves, then this License, and its terms, do not apply to those + sections when you distribute them as separate works. But when you + distribute the same sections as part of a whole which is a work based + on the Program, the distribution of the whole must be on the terms of + this License, whose permissions for other licensees extend to the + entire whole, and thus to each and every part regardless of who wrote + it.</P> +<P>Thus, it is not the intent of this section to claim rights or contest + your rights to work written entirely by you; rather, the intent is to + exercise the right to control the distribution of derivative or + collective works based on the Program.</P> +<P>In addition, mere aggregation of another work not based on the + Program with the Program (or with a work based on the Program) on a + volume of a storage or distribution medium does not bring the other + work under the scope of this License.</P> +<P>3. You may copy and distribute the Program (or a work based on it, + under Section 2) in object code or executable form under the terms of + Sections 1 and 2 above provided that you also do one of the following:</P> +<UL> +<P>a. Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections 1 + and 2 above on a medium customarily used for software interchange; or,</P> +<P>b. Accompany it with a written offer, valid for at least three years, + to give any third party, for a charge no more than your cost of + physically performing source distribution, a complete machine-readable + copy of the corresponding source code, to be distributed under the + terms of Sections 1 and 2 above on a medium customarily used for + software interchange; or,</P> +<P>c. Accompany it with the information you received as to the offer to + distribute corresponding source code. (This alternative is allowed only + for noncommercial distribution and only if you received the program in + object code or executable form with such an offer, in accord with + Subsection b above.)</P> +</UL> +<P>The source code for a work means the preferred form of the work for + making modifications to it. For an executable work, complete source + code means all the source code for all modules it contains, plus any + associated interface definition files, plus the scripts used to control + compilation and installation of the executable. However, as a special + exception, the source code distributed need not include anything that + is normally distributed (in either source or binary form) with the + major components (compiler, kernel, and so on) of the operating system + on which the executable runs, unless that component itself accompanies + the executable.</P> +<P>If distribution of executable or object code is made by offering + access to copy from a designated place, then offering equivalent access + to copy the source code from the same place counts as distribution of + the source code, even though third parties are not compelled to copy + the source along with the object code.</P> +<P>4. You may not copy, modify, sublicense, or distribute the Program + except as expressly provided under this License. Any attempt otherwise + to copy, modify, sublicense or distribute the Program is void, and will + automatically terminate your rights under this License. However, + parties who have received copies, or rights, from you under this + License will not have their licenses terminated so long as such parties + remain in full compliance.</P> +<P>5. You are not required to accept this License, since you have not + signed it. However, nothing else grants you permission to modify or + distribute the Program or its derivative works. These actions are + prohibited by law if you do not accept this License. Therefore, by + modifying or distributing the Program (or any work based on the + Program), you indicate your acceptance of this License to do so, and + all its terms and conditions for copying, distributing or modifying the + Program or works based on it.</P> +<P>6. Each time you redistribute the Program (or any work based on the + Program), the recipient automatically receives a license from the + original licensor to copy, distribute or modify the Program subject to + these terms and conditions. You may not impose any further restrictions + on the recipients' exercise of the rights granted herein. You are not + responsible for enforcing compliance by third parties to this License.</P> +<P>7. If, as a consequence of a court judgment or allegation of patent + infringement or for any other reason (not limited to patent issues), + conditions are imposed on you (whether by court order, agreement or + otherwise) that contradict the conditions of this License, they do not + excuse you from the conditions of this License. If you cannot + distribute so as to satisfy simultaneously your obligations under this + License and any other pertinent obligations, then as a consequence you + may not distribute the Program at all. For example, if a patent license + would not permit royalty-free redistribution of the Program by all + those who receive copies directly or indirectly through you, then the + only way you could satisfy both it and this License would be to refrain + entirely from distribution of the Program.</P> +<P>If any portion of this section is held invalid or unenforceable under + any particular circumstance, the balance of the section is intended to + apply and the section as a whole is intended to apply in other + circumstances.</P> +<P>It is not the purpose of this section to induce you to infringe any + patents or other property right claims or to contest validity of any + such claims; this section has the sole purpose of protecting the + integrity of the free software distribution system, which is + implemented by public license practices. Many people have made generous + contributions to the wide range of software distributed through that + system in reliance on consistent application of that system; it is up + to the author/donor to decide if he or she is willing to distribute + software through any other system and a licensee cannot impose that + choice.</P> +<P>This section is intended to make thoroughly clear what is believed to + be a consequence of the rest of this License.</P> +<P>8. If the distribution and/or use of the Program is restricted in + certain countries either by patents or by copyrighted interfaces, the + original copyright holder who places the Program under this License may + add an explicit geographical distribution limitation excluding those + countries, so that distribution is permitted only in or among countries + not thus excluded. In such case, this License incorporates the + limitation as if written in the body of this License.</P> +<P>9. The Free Software Foundation may publish revised and/or new + versions of the General Public License from time to time. Such new + versions will be similar in spirit to the present version, but may + differ in detail to address new problems or concerns.</P> +<P>Each version is given a distinguishing version number. If the Program + specifies a version number of this License which applies to it and "any + later version", you have the option of following the terms and + conditions either of that version or of any later version published by + the Free Software Foundation. If the Program does not specify a version + number of this License, you may choose any version ever published by + the Free Software Foundation.</P> +<P>10. If you wish to incorporate parts of the Program into other free + programs whose distribution conditions are different, write to the + author to ask for permission. For software which is copyrighted by the + Free Software Foundation, write to the Free Software Foundation; we + sometimes make exceptions for this. Our decision will be guided by the + two goals of preserving the free status of all derivatives of our free + software and of promoting the sharing and reuse of software generally.</P> +<P ALIGN="CENTER"><B>NO WARRANTY</B></P> +<P>11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO + WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. + EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR + OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, + EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE + ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH + YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL + NECESSARY SERVICING, REPAIR OR CORRECTION.</P> +<P>12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN + WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY + AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU + FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR + CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE + PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING + RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A + FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF + SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH + DAMAGES.</P> +<P ALIGN="CENTER"><B>END OF TERMS AND CONDITIONS</B></P> +<P ALIGN="CENTER"><B>HOW TO APPLY THESE TERMS TO YOUR NEW PROGRAMS</B></P> +<P>If you develop a new program, and you want it to be of the greatest + possible use to the public, the best way to achieve this is to make it + free software which everyone can redistribute and change under these + terms.</P> +<P>To do so, attach the following notices to the program. It is safest + to attach them to the start of each source file to most effectively + convey the exclusion of warranty; and each file should have at least + the "copyright" line and a pointer to where the full notice is found.</P> +<PRE> +<VAR>one line to give the program's name and an idea of what it does.</VAR> +Copyright (C) <VAR>yyyy</VAR> <VAR>name of author</VAR> + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +02111-1307, USA. +</PRE> +<P>Also add information on how to contact you by electronic and paper + mail.</P> +<P>If the program is interactive, make it output a short notice like + this when it starts in an interactive mode:</P> +<PRE> +Gnomovision version 69, Copyright (C) <VAR>year</VAR> <VAR>name of author</VAR> +Gnomovision comes with ABSOLUTELY NO WARRANTY; for details +type `show w'. This is free software, and you are welcome +to redistribute it under certain conditions; type `show c' +for details. +</PRE> +<P>The hypothetical commands <SAMP>`show w'</SAMP> and <SAMP>`show c'</SAMP> + should show the appropriate parts of the General Public License. Of + course, the commands you use may be called something other than <SAMP> +`show w'</SAMP> and <SAMP>`show c'</SAMP>; they could even be + mouse-clicks or menu items--whatever suits your program.</P> +<P>You should also get your employer (if you work as a programmer) or + your school, if any, to sign a "copyright disclaimer" for the program, + if necessary. Here is a sample; alter the names:</P> +<PRE> +Yoyodyne, Inc., hereby disclaims all copyright +interest in the program `Gnomovision' +(which makes passes at compilers) written +by James Hacker. + +<VAR>signature of Ty Coon</VAR>, 1 April 1989 +Ty Coon, President of Vice +</PRE> +<HR NOSHADE> +<H1 ALIGN="RIGHT"><A NAME="MANPAGES">B - Command Reference</A></H1> + +<!-- NEW PAGE --> + +<!-- SECTION: Man Pages --> +<H2><A NAME="8_1">epm(1)</A></H2> +<H3><A name="NAME">Name</A></H3> + epm - create software packages. +<H3><A name="SYNOPSIS">Synopsis</A></H3> +<B> epm</B> [ -a<I> architecture</I> ] [ -f<I> format</I> ] [ -g ] [ -k + ] [ -m<I> name</I> ] [ -n[mrs] ] [ -s<I> setup.xpm</I> ] [ --depend ] [ + --help ] [ --keep-files ] [ --output-dir<I> directory</I> ] [ + --setup-image<I> setup.xpm</I> ] [ --setup-program<I> /foo/bar/setup</I> + ] [ --setup-types<I> setup.types</I> ] [ -v ] [<I> name=value</I> ...<I> + name=value</I> ] product [<I> listfile</I> ] +<H3><A name="DESCRIPTION">Description</A></H3> +<B> epm</B> generates software packages complete with installation, + removal, and (if necessary) patch scripts. Unless otherwise specified, + the files required for<I> product</I> are read from a file named "<I> +product</I>.list". +<P>The<I> -a</I> option ("architecture") specifies the actual + architecture for the software. Without this option the generic + processor architecture is used ("intel", "sparc", "mips", etc.)</P> +<P>The<I> -f</I> option ("format") specifies the distribution format:</P> +<DL> +<!-- NEED 3 --> +<DT>aix</DT> +<DD>Generate an AIX distribution suitable for installation on an AIX + system.</DD> + +<!-- NEED 3 --> +<DT>bsd</DT> +<DD>Generate a BSD distribution suitable for installation on a FreeBSD, + NetBSD, or OpenBSD system.</DD> + +<!-- NEED 3 --> +<DT>deb</DT> +<DD>Generate a Debian distribution suitable for installation on a Debian + Linux system.</DD> + +<!-- NEED 3 --> +<DT>inst, tardist</DT> +<DD>Generate an IRIX distribution suitable for installation on an system + running IRIX.</DD> + +<!-- NEED 3 --> +<DT>lsb, lsb-signed</DT> +<DD>Generate RPM packages for LSB-conforming systems. The lsb-signed + format uses the GPG private key you have defined in the ~/.rpmmacros + file.</DD> + +<!-- NEED 3 --> +<DT>native</DT> +<DD>Generate an native distribution. This uses<I> rpm</I> for Linux,<I> + inst</I> for IRIX,<I> pkg</I> for Solaris,<I> swinstall</I> for HP-UX,<I> + bsd</I> for FreeBSD, NetBSD, and OpenBSD, and<I> osx</I> for MacOS X. + All other operating systems default to the<I> portable</I> format.</DD> + +<!-- NEED 3 --> +<DT>osx</DT> +<DD>Generate a MacOS X software package.</DD> + +<!-- NEED 3 --> +<DT>pkg</DT> +<DD>Generate an AT&T software package. These are used primarily under + Solaris.</DD> + +<!-- NEED 3 --> +<DT>portable</DT> +<DD>Generate a portable distribution based on shell scripts and tar + files. The resulting distribution is installed and removed the same way + on all operating systems. [default]</DD> + +<!-- NEED 3 --> +<DT>rpm, rpm-signed</DT> +<DD>Generate a Red Hat Package Manager ("RPM") distribution suitable for + installation on a Red Hat Linux system. The rpm-signed format uses the + GPG private key you have defined in the ~/.rpmmacros file.</DD> + +<!-- NEED 3 --> +<DT>setld</DT> +<DD>Generate a Tru64 (setld) software distribution.</DD> + +<!-- NEED 3 --> +<DT>slackware</DT> +<DD>Generate a Slackware Linux software distribution.</DD> + +<!-- NEED 3 --> +<DT>swinstall, depot</DT> +<DD>Generate a HP-UX software distribution.</DD> +</DL> +<P>Executable files in the distribution are normally stripped of + debugging information when packaged. To disable this functionality use + the<I> -g</I> option.</P> +<P>Intermediate (spec, etc.) files used to create the distribution are + normally removed after the distribution is created. The<I> -k</I> + option keeps these files in the distribution directory.</P> +<P>The<I> -s</I> and<I> --setup-image</I> options ("setup") include the + ESP Software Wizard with the specified GIF or XPM image file with the + distribution. This option is currently only supported by portable and + RPM distributions.</P> +<P>The<I> --setup-program</I> option specifies the setup executable to + use with the distribution. This option is currently only supported by + portable distributions.</P> +<P>The<I> --setup-types</I> option specifies the<I> setup.types</I> file + to include with the distribution. This option is currently only + supported by portable distributions.</P> +<P>The<I> --output-dir</I> option specifies the directory to place + output file into. The default directory is based on the operating + system, version, and architecture.</P> +<P>The<I> -v</I> option ("verbose") increases the amount of information + that is reported. Use multiple v's for more verbose output.</P> +<P>The<I> --depend</I> option lists the dependent (source) files for all + files in the package.</P> +<P>Distributions normally are named + "product-version-system-release-machine.ext" and + "product-version-system-release-machine-patch.ext" (for patch + distributions.) The "system-release-machine" information can be + customized or eliminated using the<I> -n</I> option with the + appropriate trailing letters. Using<I> -n</I> by itself will remove the + "system-release-machine" string from the filename entirely. The + "system-release-machine" information can also be customized by using + the<I> -m</I> option with an arbitrary string.</P> +<P>Debian, IRIX, portable, and Red Hat distributions use the extensions + ".deb", ".tardist", "tar.gz", and ".rpm" respectively.</P> +<H3><A name="LIST_FILES">List Files</A></H3> + The EPM list file format is now described in the<I> epm.list(5)</I> man + page. +<H3><A name="KNOWN_BUGS">Known Bugs</A></H3> + EPM does not currently support generation of IRIX software patches. +<H3><A name="SEE_ALSO">See Also</A></H3> + epminstall(1) - add a directory, file, or symlink to a list file +<BR> mkepmlist(1) - make an epm list file from a directory +<BR> epm.list(5) - epm list file format +<BR> setup(1) - graphical setup program for the esp package manager +<H3><A name="COPYRIGHT">Copyright</A></H3> + Copyright 1999-2008 by Easy Software Products, All Rights Reserved. +<P>This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) any + later version.</P> +<P>This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details.</P> + +<!-- NEW PAGE --> + +<!-- SECTION: Man Pages --> +<H2><A NAME="8_2">epminstall(1)</A></H2> +<H3><A name="NAME">Name</A></H3> + epminstall - add a directory, file, or symlink to a list file. +<H3><A name="SYNOPSIS">Synopsis</A></H3> +<B> epminstall</B><I> options</I> file1 file2 ... fileN directory +<BR><B> epminstall</B><I> options</I> file1 file2 +<BR><B> epminstall</B><I> options</I> -d directory1 directory2 ... + directoryN +<H3><A name="DESCRIPTION">Description</A></H3> +<B> epminstall</B> adds or replaces a directory, file, or symlink in a + list file. The default list file is "epm.list" and can be overridden + using the<I> EPMLIST</I> environment variable or the<I> --list-file</I> + option. +<P>Entries are either added to the end of the list file or replaced + in-line. Comments, directives, and variable declarations in the list + file are preserved.</P> +<H3><A name="OPTIONS">Options</A></H3> +<B> epminstall</B> recognizes the standard Berkeley<I> install</I> + command options: +<DL> +<!-- NEED 3 --> +<DT>-b</DT> +<DD>Make a backup of existing files (ignored, default for EPM.)</DD> + +<!-- NEED 3 --> +<DT>-c</DT> +<DD>BSD old compatibility mode (ignored.)</DD> + +<!-- NEED 3 --> +<DT>-g<I> group</I></DT> +<DD>Set the group owner of the file or directory to<I> group</I>. The + default group is "sys".</DD> + +<!-- NEED 3 --> +<DT>-m<I> mode</I></DT> +<DD>Set the permissions of the file or directory to<I> mode</I>. The + default permissions are 0755 for directories and executable files and + 0644 for non-executable files.</DD> + +<!-- NEED 3 --> +<DT>-o<I> owner</I></DT> +<DD>Set the owner of the file or directory to<I> owner</I>. The default + owner is "root".</DD> + +<!-- NEED 3 --> +<DT>-s</DT> +<DD>Strip the files (ignored, default for EPM.)</DD> + +<!-- NEED 3 --> +<DT>--list-file<I> filename.list</I></DT> +<DD>Specify the list file to update.</DD> +</DL> +<H3><A name="SEE_ALSO">See Also</A></H3> + epm(1) - create software packages +<BR> mkepmlist(1) - make an epm list file from a directory +<BR> epm.list(5) - epm list file format +<H3><A name="COPYRIGHT">Copyright</A></H3> + Copyright 1999-2007 by Easy Software Products, All Rights Reserved. +<P>This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) any + later version.</P> +<P>This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details.</P> + +<!-- NEW PAGE --> + +<!-- SECTION: Man Pages --> +<H2><A NAME="8_3">mkepmlist(1)</A></H2> +<H3><A name="NAME">Name</A></H3> + mkepmlist - make an epm list file from a directory. +<H3><A name="SYNOPSIS">Synopsis</A></H3> +<B> mkepmlist</B> [ -g<I> group</I> ] [ -u<I> user</I> ] [ --prefix<I> + directory</I> ]<I> directory</I> [ ...<I> directory</I> ] +<H3><A name="DESCRIPTION">Description</A></H3> +<B> mkepmlist</B> recursively generates file list entries for files, + links, and directories. The file list is send to the standard output. +<P>The<I> -g</I> option overrides the group ownership of the files in + the specified directories with the specified group name.</P> +<P>The<I> -u</I> option overrides the user ownership of the files in the + specified directories with the specified user name.</P> +<P>The<I> --prefix</I> option adds the specified directory to the + destination path. For example, if you installed files to "/opt/foo" and + wanted to build a distribution that installed the files in + "/usr/local", the following command would generate a file list that is + installed in "/usr/local":</P> +<PRE> + mkepmlist --prefix=/usr/local /opt/foo >foo.list +</PRE> +<H3><A name="SEE_ALSO">See Also</A></H3> + epm(1) - create software packages +<BR> epminstall(1) - add a directory, file, or symlink to a list file +<BR> epm.list(5) - epm list file format +<H3><A name="COPYRIGHT">Copyright</A></H3> + Copyright 1999-2007 by Easy Software Products, All Rights Reserved. +<P>This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) any + later version.</P> +<P>This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details.</P> + +<!-- NEW PAGE --> + +<!-- SECTION: Man Pages --> +<H2><A NAME="8_4">setup(1)</A></H2> +<H3><A name="NAME">Name</A></H3> + setup - graphical setup program for the esp package manager +<H3><A name="SYNOPSIS">Synopsis</A></H3> +<B> setup</B> [<I> directory</I> ] +<H3><A name="DESCRIPTION">Description</A></H3> +<B> setup</B> provides a graphical installation interface for + EPM-generated portable installation packages. It presents a + step-by-step dialog for collecting a list of packages to install and + accepting any license agreements for those packages. +<P><B>setup</B> searches for products in the current directory or the + directory specified on the command-line.</P> +<H3><A name="INSTALLATION_TYPES">Installation Types</A></H3> + The default type of installation is "custom". That is, users will be + able to select from the list of products and install them. +<P><B>setup</B> also supports other types of installations. The<I> + setup.types</I> file, if present, defines the other installation types.</P> +<H3><A name="SEE_ALSO">See Also</A></H3> + epm(1) - create software packages. +<BR> setup.types(5) - epm gui setup types file format. +<H3><A name="COPYRIGHT">Copyright</A></H3> + Copyright 1999-2007 by Easy Software Products, All Rights Reserved. +<P>This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2, or (at your option) any + later version.</P> +<P>This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details.</P> +<HR NOSHADE> +<H1 ALIGN="RIGHT"><A NAME="REFERENCE">C - List File Reference</A></H1> +<P>This appendix provides a complete reference for the EPM list file and + setup types formats.</P> +<H2><A NAME="9_1">The EPM List File Format</A></H2> +<P>Each<I> EPM</I> product has an associated list file that describes + the files to include with the product. Comment lines begin with the "#" + character and are ignored. All other non-blank lines must begin with a + letter, dollar sign ("$"), or the percent sign ("%").</P> + +<!-- NEED 3in --> +<H3>List File Directives</H3> +<P>The following list describes all of the list file directives + supported by<I> EPM</I>:</P> +<DL> +<DD> +<DL> +<DT>$name=value +<BR> </DT> +<DD>Sets the named variable to<I> value</I>.<B> Note:</B> Variables set + in the list file are overridden by variables specified on the + command-line or in the current environment. +<BR> </DD> + +<!-- NEED 2in --> +<DT>%copyright<I> copyright notice</I> +<BR> </DT> +<DD>Sets the copyright notice for the file. +<BR> </DD> +<DT>%description<I> description text</I> +<BR> </DT> +<DD>Adds a line of descriptive text to the distribution. Multiple lines + are supported. +<BR> </DD> +<DT>%format<I> format [... format]</I> +<BR> </DT> +<DD>Uses following files and directives only if the distribution format + is the same as<I> format</I>. +<BR> </DD> +<DT>%format !<I>format [... format]</I> +<BR> </DT> +<DD>Uses following files and directives only if the distribution format + is not the same as<I> format</I>. +<BR> </DD> +<DT>%include<I> filename</I> +<BR> </DT> +<DD>Includes files listed in<I> filename</I>. +<BR> </DD> +<DT>%incompat<I> product</I></DT> +<DT>%incompat<I> filename</I> +<BR> </DT> +<DD>Indicates that this product is incompatible with the named product + or file. +<BR> </DD> +<DT>%if<I> variable [... variable]</I> +<BR> %if !<I>variable [... variable]</I> +<BR> %ifdef<I> variable [... variable]</I> +<BR> %ifdef !<I>variable [... variable]</I> +<BR> %elseif<I> variable [... variable]</I> +<BR> %elseif !<I>variable [... variable]</I> +<BR> %elseifdef<I> variable [... variable]</I> +<BR> %elseifdef !<I>variable [... variable]</I> +<BR> %else +<BR> %endif +<BR> </DT> +<DD>Conditionally includes lines in the list file. The<I> %if</I> lines + include the lines that follow if the named variables are (not) defined + with a value. The<I> %ifdef</I> lines include the lines that follow if + the named variables are (not) defined with any value. These conditional + lines cannot be nested. +<BR> </DD> +<DT>%install<I> script or program</I> +<BR> </DT> +<DD>Specifies a script or program to be run after all files are + installed. (This has been obsoleted by the %postinstall directive) +<BR> </DD> +<DT>%license<I> license file</I> +<BR> </DT> +<DD>Specifies the file to display as the software license. +<BR> </DD> +<DT>%packager<I> name of packager</I> +<BR> </DT> +<DD>Specifies the name of the packager. +<BR> </DD> +<DT>%patch<I> script or program</I> +<BR> </DT> +<DD>Specifies a script or program to be run after all files are patched. + (This has been obsoleted by the %postpatch directive) +<BR> </DD> + +<!-- NEED 2in --> +<DT>%postinstall<I> script or program</I> +<BR> %postinstall <<I>scriptfile</I> +<BR> %postinstall <<<I>string</I> +<BR> </DT> +<DD>Specifies a script or program to be run after all files are + installed. +<BR> </DD> +<DT>%postpatch<I> script or program</I> +<BR> %postpatch <<I>scriptfile</I> +<BR> %postpatch <<<I>string</I> +<BR> </DT> +<DD>Specifies a script or program to be run after all files are patched. +<BR> </DD> +<DT>%postremove<I> script or program</I> +<BR> %postremove <<I>scriptfile</I> +<BR> %postremove <<<I>string</I> +<BR> </DT> +<DD>Specifies a script or program to be run after removing files. +<BR> </DD> +<DT>%preinstall<I> script or program</I> +<BR> %preinstall <<I>scriptfile</I> +<BR> %preinstall <<<I>string</I> +<BR> </DT> +<DD>Specifies a script or program to be run before all files are + installed. +<BR> </DD> +<DT>%prepatch<I> script or program</I> +<BR> %prepatch <<I>scriptfile</I> +<BR> %prepatch <<<I>string</I> +<BR> </DT> +<DD>Specifies a script or program to be run before all files are + patched. +<BR> </DD> +<DT>%preremove<I> script or program</I> +<BR> %preremove <<I>scriptfile</I> +<BR> %preremove <<<I>string</I> +<BR> </DT> +<DD>Specifies a script or program to be run before removing files. +<BR> </DD> +<DT>%product<I> product name</I> +<BR> </DT> +<DD>Specifies the product name. +<BR> </DD> + +<!-- NEED 2in --> +<DT>%provides<I> product name</I> +<BR> </DT> +<DD>Indicates that this product provides the named dependency. +<BR> </DD> +<DT>%readme<I> readme file</I> +<BR> </DT> +<DD>Specifies a README file to be included in the distribution. +<BR> </DD> +<DT>%remove<I> script or program</I> +<BR> </DT> +<DD>Specifies a script or program to be run before removing files. (This + has been obsoleted by the %preremove directive) +<BR> </DD> +<DT>%release<I> number</I> +<BR> </DT> +<DD>Specifies the release or build number of a product (defaults to 0). +<BR> </DD> +<DT>%replaces<I> product</I> +<BR> </DT> +<DD>Indicates that this product replaces the named product. +<BR> </DD> +<DT>%requires<I> product</I></DT> +<DT>%requires<I> filename</I> +<BR> </DT> +<DD>Indicates that this product requires the named product or file. +<BR> </DD> +<DT>%system<I> system[-release] [... system[-release]]</I> +<BR> </DT> +<DD>Specifies that the following files should only be used for the + specified operating systems and releases. +<BR> </DD> +<DT>%system !<I>system[-release] [... system[-release]]</I> +<BR> </DT> +<DD>Specifies that the following files should not be used for the + specified operating systems and releases. +<BR> </DD> +<DT>%system all +<BR> </DT> +<DD>Specifies that the following files are applicable to all operating + systems. +<BR> </DD> +<DT>%vendor<I> vendor or author name</I> +<BR> </DT> +<DD>Specifies the vendor or author of the product. +<BR> </DD> + +<!-- NEED 2in --> +<DT>%version<I> version number</I> +<BR> </DT> +<DD>Specifies the version number of the product. +<BR> </DD> +<DT>c<I> mode user group destination source</I></DT> +<DT>C<I> mode user group destination source</I> +<BR> </DT> +<DD>Specifies a configuration file for installation. The second form + specifies that the file has changed or is new and should be included as + part of a patch. Configuration files are installed as "destination.N" + if the destination already exists. +<BR> </DD> +<DT>d<I> mode user group destination -</I></DT> +<DT>D<I> mode user group destination -</I> +<BR> </DT> +<DD>Specifies a directory should be created when installing the + software. The second form specifies that the directory is new and + should be included as part of a patch. +<BR> </DD> + +<!-- NEED 2in --> +<DT>f<I> mode user group destination source [nostrip()]</I></DT> +<DT>F<I> mode user group destination source [nostrip()]</I> +<BR> </DT> +<DD>Specifies a file for installation. The second form specifies that + the file has changed or is new and should be included as part of a + patch. If the "nostrip()" option is included, the file will not be + stripped before the installation is created. +<BR> </DD> +<DT>f<I> mode user group destination source/pattern [nostrip()]</I></DT> +<DT>F<I> mode user group destination source/pattern [nostrip()]</I> +<BR> </DT> +<DD>Specifies one or more files for installation using shell wildcard + patterns. The second form specifies that the files have changed or are + new and should be included as part of a patch. If the "nostrip()" + option is included, the file will not be stripped before the + installation is created. +<BR> </DD> +<DT>i<I> mode user group service-name source ["options"]</I></DT> +<DT>I<I> mode user group service-name source ["options"]</I> +<BR> </DT> +<DD>Specifies an initialization script for installation. The second form + specifies that the file has changed or is new and should be included as + part of a patch. Initialization scripts are stored in<VAR> + /etc/software/init.d</VAR> and are linked to the appropriate + system-specific directories for run levels 0, 2, 3, and 5. + Initialization scripts<B> must</B> accept at least the<I> start</I> and<I> + stop</I> commands. The optional<I> options</I> following the source + filename can be any of the following: +<BR> +<DL> +<DT>order(<I>string</I>)</DT> +<DD>Specifies the relative startup order compared to the required and + used system functions. Supported values include First, Early, None, + Late, and Last (OSX only).</DD> +<DT>provides(<I>name(s)</I>)</DT> +<DD>Specifies names of system functions that are provided by this + startup item (OSX only).</DD> + +<!-- NEED 3 --> +<DT>requires(<I>name(s)</I>)</DT> +<DD>Specifies names of system functions that are required by this + startup item (OSX only).</DD> +<DT>runlevels(<I>levels</I>)</DT> +<DD>Specifies the run levels to use.</DD> +<DT>start(<I>number</I>)</DT> +<DD>Specifies the starting sequence number from 00 to 99.</DD> +<DT>stop(<I>number</I>)</DT> +<DD>Specifies the ending sequence number from 00 to 99.</DD> +<DT>uses(<I>name(s)</I>)</DT> +<DD>Specifies names of system functions that are used by this startup + item (OSX only).</DD> +</DL> +<BR> </DD> + +<!-- NEED 2in --> +<DT>l<I> mode user group destination source</I></DT> +<DT>L<I> mode user group destination source</I> +<BR> </DT> +<DD>Specifies a symbolic link in the installation. The second form + specifies that the link has changed or is new and should be included as + part of a patch. +<BR> </DD> +<DT>R<I> mode user group destination</I> +<BR> </DT> +<DD>Specifies that the file is to be removed upon patching. The<I> user</I> + and<I> group</I> fields are ignored. The<I> mode</I> field is only used + to determine if a check should be made for a previous version of the + file. +<BR> </DD> +</DL> +</DD> +</DL> + +<!-- NEED 3in --> +<H3>List Variables</H3> +<P><I>EPM</I> maintains a list of variables and their values which can + be used to substitute values in the list file. These variables are + imported from the current environment and taken from the command-line + and list file as provided. Substitutions occur when the variable name + is referenced with the dollar sign ($):</P> +<PRE> + %postinstall <<EOF + echo What is your name: + read $$name + echo Your name is $$name + EOF + + f 0555 root sys ${bindir}/foo foo + f 0555 root sys $datadir/foo/foo.dat foo.dat +</PRE> +<P>Variable names can be surrounded by curly brackets (${name}) or alone + ($name); without brackets the name is terminated by the first slash + (/), dash (-), or whitespace. The dollar sign can be inserted using $$.</P> + +<!-- NEED 5in --> +<H2><A NAME="SETUPTYPES">The setup.types File</A></H2> +<P>The EPM<B> setup</B> program normally presents the user with a list + of software products to install, which is called a "custom" software + installation.</P> +<P>If a file called<I> setup.types</I> is present in the package + directory, the user will instead be presented with a list of + installation types. Each type has an associated product list which + determines the products that are installed by default. If a type has no + products associated with it, then it is treated as a custom + installation and the user is presented with a list of packages to + choose from.</P> +<P>The<I> setup.types</I> file is an ASCII text file consisting of type + and product lines. Comments can be inserted by starting a line with the + pound sign (#). Each installation type is defined by a line starting + with the word <CODE>TYPE</CODE>. Products are defined by a line + starting with the word <CODE>INSTALL</CODE>:</P> +<PRE> + # Pre-select the user packages + TYPE Typical End-User Configuration + INSTALL foo + INSTALL foo-help + + # Pre-select the developer packages + TYPE Typical Developer Configuration + INSTALL foo + INSTALL foo-help + INSTALL foo-devel + INSTALL foo-examples + + # Allow the user to select packages + TYPE Custom Configuration +</PRE> +<P>In the example above, three installation types are defined. Since the + last type includes no products, the user will be presented with the + full list of products to choose from.</P> +<HR NOSHADE> +<H1 ALIGN="RIGHT"><A NAME="RELNOTES">D - Release Notes</A></H1> +<P>This appendix lists the change log for each release of the EPM + software.</P> +<H2><A NAME="10_1">Changes in EPM v4.2</A></H2> +<UL> +<LI>EPM now supports a %arch conditional directive (STR #27)</LI> +<LI>EPM now uses hard links whenever possible instead of copying files + for distribution (STR #21)</LI> +<LI>EPM no longer puts files in /export in the root file set for AIX + packages (STR #15)</LI> +<LI>EPM did not work with newer versions of RPM (STR #23, STR #25)</LI> +<LI>EPM did not clean up temporary files from Solaris packages (STR #20)</LI> +<LI>Building Solaris gzip'd packages failed if the pkg.gz file already + existed (STR #16)</LI> +<LI>Fixed handling of %preremove and %postremove for AIX packages (STR + #22)</LI> +<LI>Fixed directory permissions in HP-UX packages (STR #24)</LI> +<LI>Removed unnecessary quoting of "!" in filenames (STR #26)</LI> +<LI>Added support for signed RPM packages (STR #19)</LI> +<LI>Added support for inclusion of format-specific packaging files and + directives via a %literal directive (STR #5)</LI> +<LI>*BSD init scripts were not installed properly.</LI> +<LI>EPM now displays a warning message when a variable is undefined (STR + #10)</LI> +<LI>*BSD dependencies on versioned packages are now specified correctly + (STR #4)</LI> +<LI>EPM now uses /usr/sbin/pkg_create on FreeBSD (STR #2)</LI> +<LI>FreeBSD packages are now created with a .tbz extension (STR #1)</LI> +<LI>FreeBSD packages incorrectly assumed that chown was installed in + /bin (STR #3)</LI> +<LI>Added support for an "lsb" package format which uses RPM with the + LSB dependencies (STR #7)</LI> +<LI>The configure script now supports a --with-archflags and no longer + automatically builds universal binaries on Mac OS X.</LI> +<LI>The epm program now automatically detects when the setup GUI is not + available, displays a warning message, and then creates a non-GUI + package.</LI> +<LI>RPM packages did not map %replaces to Obsoletes:</LI> +</UL> +<H2><A NAME="10_2">Changes in EPM v4.1</A></H2> +<UL> +<LI>Mac OS X portable packages did not create a correct Uninstall + application.</LI> +<LI>The temporary package files for portable packages are now removed + after creation of the .tar.gz file unless the -k (keep files) option is + used.</LI> +<LI>The RPM summary string for subpackages did not contain the first + line of the package description as for other package formats.</LI> +<LI>The setup and uninst GUIs now support installing and removing RPM + packages.</LI> +<LI>The setup GUI now confirms acceptance of all licenses prior to + installing the first package.</LI> +<LI>Subpackages are no longer automatically dependent on the main + package.</LI> +<LI>Multi-line descriptions were not embedded properly into portable + package install/patch/remove scripts.</LI> +<LI>Updated the setup and uninstall GUIs for a nicer look-n-feel.</LI> +<LI>Mac OS X portable packages now show the proper name, version, and + copyright for the packaged software instead of the EPM version and + copyright...</LI> +<LI>Fixed a problem with creation of Mac OS X metapackages with the + latest Xcode.</LI> +<LI>EPM now removes the individual .rpm and .deb files when creating a + package with subpackages unless the -k option (keep files) is used.</LI> +<LI>EPM now only warns about package names containing characters other + than letters and numbers.</LI> +<LI>EPM now generates disk images as well as a .tar.gz file when + creating portable packages on Mac OS X.</LI> +</UL> +<H2><A NAME="10_3">Changes in EPM v4.0</A></H2> +<UL> +<LI>New subpackage support for creating multiple dependent packages or a + combined package with selectable subpackages, depending on the package + format.</LI> +<LI>Added support for compressing the package files in portable packages + (reduces disk space requirements on platforms that provide gzip...)</LI> +<LI>Added support for custom platform names via the new "-m name" + option.</LI> +<LI>Added support for non-numeric %release values.</LI> +<LI>Added new --depend option to list all of the source files that a + package depends on.</LI> +<LI>The setup GUI now sets the EPM_INSTALL_TYPE environment variable to + the value of the selected TYPE line in the setup.types file.</LI> +<LI>Fixed NetBSD and OpenBSD packaging support - no longer use + FreeBSD-specific extensions to pkg_create on those variants.</LI> +<LI>Fixed PowerPC platform support for RPM and Debian packages.</LI> +<LI>Many fixes to AIX package support.</LI> +<LI>Tru64 packages with init scripts now work when installing for the + first time.</LI> +<LI>RPM file dependencies should now work properly.</LI> +<LI>Portable product names containing spaces will now display properly.</LI> +</UL> + +<!-- NEW SHEET + HEADER CENTER "" + FOOTER LEFT "" + FOOTER RIGHT "" --> +<P> </P> + +<!-- NEW SHEET --> +<P> </P> +</BODY> +</HTML> diff --git a/doc/epm.list.man b/doc/epm.list.man new file mode 100644 index 0000000..827107f --- /dev/null +++ b/doc/epm.list.man @@ -0,0 +1,372 @@ +.\" +.\" "$Id: epm.list.man 842 2010-12-31 02:16:45Z mike $" +.\" +.\" Manual page for the ESP Package Manager (EPM) list file format. +.\" +.\" Copyright 1999-2010 by Easy Software Products, all rights reserved. +.\" +.\" This program is free software; you can redistribute it and/or modify +.\" it under the terms of the GNU General Public License as published by +.\" the Free Software Foundation; either version 2, or (at your option) +.\" any later version. +.\" +.\" This program is distributed in the hope that it will be useful, +.\" but WITHOUT ANY WARRANTY; without even the implied warranty of +.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.\" GNU General Public License for more details. +.\" +.TH epm.list 5 "ESP Package Manager" "30 December 2010" "Easy Software Products" +.SH NAME +epm.list \- epm list file format. +.SH DESCRIPTION +Each \fIEPM\fR product has an associated list file that +describes the files to include with the product. Comment lines +begin with the "#" character and are ignored. All other +non-blank lines must begin with a letter, dollar sign ("$"), or +the percent sign ("%") as follows: +.TP 5 +$name=value +.br +Sets the named variable to \fIvalue\fR. \fBNote:\fR Variables +set in the list file are overridden by variables specified on +the command-line or in the current environment. +.TP 5 +%arch all +.br +Uses following files and directives on all processor architectures. +.TP 5 +%arch \fIarchitecture [... architecture]\fR +.br +Uses following files and directives on the named processor architectures. +.TP 5 +%arch !\fIarchitecture [... architecture]\fR +.br +Uses following files and directives on all but the named processor +architectures. +.TP 5 +%copyright \fIcopyright notice\fR +.br +Sets the copyright notice for the file. +.TP 5 +%description \fIdescription text\fR +.br +Adds a line of descriptive text to the distribution. Multiple lines are +supported. +.TP 5 +%format \fIformat [... format]\fR +.br +Uses following files and directives only if the distribution format is +the same as \fIformat\fR. +.TP 5 +%format !\fIformat [... format]\fR +.br +Uses following files and directives only if the distribution format is +not the same as \fIformat\fR. +.TP 5 +%if \fIvariable\fR [... variable]\fR +.TP 5 +%if !\fIvariable\fR [... variable]\fR +.TP 5 +%ifdef \fIvariable\fR [... variable]\fR +.TP 5 +%ifdef !\fIvariable\fR [... variable]\fR +.TP 5 +%elseif \fIvariable\fR [... variable]\fR +.TP 5 +%elseif !\fIvariable\fR [... variable]\fR +.TP 5 +%elseifdef \fIvariable\fR [... variable]\fR +.TP 5 +%elseifdef !\fIvariable\fR [... variable]\fR +.TP 5 +%else +.TP 5 +%endif +.br +Conditionally includes lines in the list file. The \fI%if\fR +lines include the lines that follow if the named variables are +(not) defined with a value. The \fI%ifdef\fR lines include the +lines that follow if the named variables are (not) defined with +any value. These conditional lines cannot be nested. +.TP 5 +%include \fIfilename\fR +.br +Includes files listed in \fIfilename\fR. +.TP 5 +%incompat \fIproduct\fR +.TP 5 +%incompat \fIfilename\fR +.br +Indicates that this product is incompatible with the named product or +file. +.TP 5 +%install \fIscript or program\fR +.br +Specifies a script or program to be run after all files are installed. +(This has been obsoleted by the %postinstall directive) +.TP 5 +%license \fIlicense file\fR +.br +Specifies the file to display as the software license. +.TP 5 +%literal(section) \fIline\fR +.TP 5 +%literal(section) <\fIfile\fR +.TP 5 +%literal(section) <<\fIstring\fR +.br +Specifies format-specific literal data for packaging. Currently only supported +for RPM and PKG packages. +.TP 5 +%packager \fIname of packager\fR +.br +Specifies the name of the packager. +.TP 5 +%patch \fIscript or program\fR +.br +Specifies a script or program to be run after all files are patched. +(This has been obsoleted by the %postpatch directive) +.TP 5 +%postinstall \fIscript or program\fR +.TP 5 +%postinstall <\fIscriptfile\fR +.TP 5 +%postinstall <<\fIstring\fR +.br +Specifies a script or program to be run after all files are installed. +.TP 5 +%postpatch \fIscript or program\fR +.TP 5 +%postpatch <\fIscriptfile\fR +.TP 5 +%postpatch <<\fIstring\fR +.br +Specifies a script or program to be run after all files are patched. +.TP 5 +%postremove \fIscript or program\fR +.TP 5 +%postremove <\fIscriptfile\fR +.TP 5 +%postremove <<\fIstring\fR +.br +Specifies a script or program to be run after removing files. +.TP 5 +%preinstall \fIscript or program\fR +.TP 5 +%preinstall <\fIscriptfile\fR +.TP 5 +%preinstall <<\fIstring\fR +.br +Specifies a script or program to be run before all files are installed. +.TP 5 +%prepatch \fIscript or program\fR +.TP 5 +%prepatch <\fIscriptfile\fR +.TP 5 +%prepatch <<\fIstring\fR +.br +Specifies a script or program to be run before all files are patched. +.TP 5 +%preremove \fIscript or program\fR +.TP 5 +%preremove <\fIscriptfile\fR +.TP 5 +%preremove <<\fIstring\fR +.br +Specifies a script or program to be run before removing files. +.TP 5 +%product \fIproduct name\fR +.br +Specifies the product name. +.TP 5 +%readme \fIreadme file\fR +.br +Specifies a README file to be included in the distribution. +.TP 5 +%remove \fIscript or program\fR +.br +Specifies a script or program to be run before removing files. +(This has been obsoleted by the %preremove directive) +.TP 5 +%release \fInumber\fR +.br +Specifies the release or build number of a product (defaults to 0). +.TP 5 +%replaces \fIproduct\fR +.br +Indicates that this product replaces the named product. +.TP 5 +%requires \fIproduct\fR +.TP 5 +%requires \fIfilename\fR +.br +Indicates that this product requires the named product or file. +.TP 5 +%subpackage +.TP 5 +%subpackage \fIname\fR +.br +Selects the named subpackage; if no name is given, selects the +main (parent) package. +.TP 5 +%vendor \fIvendor or author name\fR +.br +Specifies the vendor or author of the product. +.TP 5 +%version \fIversion number\fR +.br +Specifies the version number of the product. +.TP 5 +%system \fIsystem[-release] [... system[-release]]\fR +.br +Specifies that the following files should only be used for the specified +operating systems and releases. +.TP 5 +%system !\fIsystem[-release] [... system[-release]]\fR +.br +Specifies that the following files should not be used for the specified +operating systems and releases. +.TP 5 +%system all +.br +Specifies that the following files are applicable to all operating systems. +.TP 5 +c \fImode user group destination source\fR +.TP 5 +C \fImode user group destination source\fR +.br +Specifies a configuration file for installation. The second form +specifies that the file has changed or is new and should be included as +part of a patch. Configuration files are installed as "destination.N" +if the destination already exists. +.TP 5 +d \fImode user group destination -\fR +.TP 5 +D \fImode user group destination -\fR +.br +Specifies a directory should be created when installing the software. The +second form specifies that the directory is new and should be included as part +of a patch. +.TP 5 +f \fImode user group destination source [nostrip()]\fR +.TP 5 +F \fImode user group destination source [nostrip()]\fR +.br +Specifies a file for installation. The second form specifies +that the file has changed or is new and should be included as +part of a patch. If the "nostrip()" option is included, the file +will not be stripped before the installation is created. +.TP 5 +f \fImode user group destination source/pattern [nostrip()]\fR +.TP 5 +F \fImode user group destination source/pattern [nostrip()]\fR +.br +Specifies one or more files for installation using shell +wildcard patterns. The second form specifies that the files have +changed or are new and should be included as part of a patch. If +the "nostrip()" option is included, the file will not be +stripped before the installation is created. +.TP 5 +i \fImode user group service-name source ["options"]\fR +.TP 5 +I \fImode user group service-name source ["options"]\fR +.br +Specifies an initialization script for installation. The second form +specifies that the file has changed or is new and should be included as +part of a patch. Initialization scripts are stored in /etc/software/init.d and +are linked to the appropriate system-specific directories for run levels 0, +2, 3, and 5. Initialization scripts \fBmust\fR accept at least the \fIstart\fR +and \fIstop\fR commands. The optional \fIoptions\fR following the source +filename can be any of the following: + +.TP 10 + order(\fIstring\fR) +.br +Specifies the relative startup order compared to the required +and used system functions. Supported values include First, +Early, None, Late, and Last (OSX only). +.TP 10 + provides(\fIname(s)\fR) +.br +Specifies names of system functions that are provided by this startup +item (OSX only). +.TP 10 + requires(\fIname(s)\fR) +.br +Specifies names of system functions that are required by this startup +item (OSX only). +.TP 10 + runlevel(\fIlevels\fR) +.br +Specifies the run levels to use. +.TP 10 + start(\fInumber\fR) +.br +Specifies the starting sequence number from 00 to 99. +.TP 10 + stop(\fInumber\fR) +.br +Specifies the ending sequence number from 00 to 99. +.TP 10 + uses(\fIname(s)\fR) +.br +Specifies names of system functions that are used by this startup +item (OSX only). + +.TP 5 +l \fImode user group destination source\fR +.TP 5 +L \fImode user group destination source\fR +.br +Specifies a symbolic link in the installation. The second form specifies that +the link has changed or is new and should be included as part of a patch. +.TP 5 +R \fImode user group destination\fR +.br +Specifies that the file is to be removed upon patching. The \fIuser\fR and +\fIgroup\fR fields are ignored. The \fImode\fR field is only used to determine +if a check should be made for a previous version of the file. +.SH LIST VARIABLES +\fIEPM\fR maintains a list of variables and their values which can be used +to substitute values in the list file. These variables are imported from the +current environment and taken from the command-line and list file as provided. +Substitutions occur when the variable name is referenced with the dollar sign +($): +.nf +.br + + %postinstall <<EOF + echo What is your name: + read $$name + Your name is $$name + EOF + + f 0555 root sys ${bindir}/foo foo + f 0555 root sys $datadir/foo/foo.dat foo.dat +.fi +.LP +Variable names can be surrounded by curley brackets (${name}) or +alone ($name); without brackets the name is terminated by the +first slash (/), dash (-), or whitespace. The dollar sign can be +inserted using $$. +.SH SEE ALSO +epm(1) - create software packages +.br +epminstall(1) - add a directory, file, or symlink to a list file +.br +mkepmlist(1) - make an epm list file from a directory +.SH COPYRIGHT +Copyright 1999-2010 by Easy Software Products, All Rights Reserved. +.LP +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. +.LP +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +.\" +.\" End of "$Id: epm.list.man 842 2010-12-31 02:16:45Z mike $". +.\" diff --git a/doc/epm.man b/doc/epm.man new file mode 100644 index 0000000..e096d7d --- /dev/null +++ b/doc/epm.man @@ -0,0 +1,192 @@ +.\" +.\" "$Id: epm.man 816 2008-08-27 03:44:15Z mike $" +.\" +.\" Manual page for the ESP Package Manager (EPM). +.\" +.\" Copyright 1999-2008 by Easy Software Products, all rights reserved. +.\" +.\" This program is free software; you can redistribute it and/or modify +.\" it under the terms of the GNU General Public License as published by +.\" the Free Software Foundation; either version 2, or (at your option) +.\" any later version. +.\" +.\" This program is distributed in the hope that it will be useful, +.\" but WITHOUT ANY WARRANTY; without even the implied warranty of +.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.\" GNU General Public License for more details. +.\" +.TH epm 1 "ESP Package Manager" "26 August 2008" "Easy Software Products" +.SH NAME +epm \- create software packages. +.SH SYNOPSIS +.B epm +[ -a +.I architecture +] [ -f +.I format +] [ -g ] [ -k ] [ -m +.I name +] [ -n[mrs] ] [ -s +.I setup.xpm +] [ --depend ] [ --help ] [ --keep-files ] [ --output-dir +.I directory +] [ --setup-image +.I setup.xpm +] [ --setup-program +.I /foo/bar/setup +] [ --setup-types +.I setup.types +] [ -v ] [ +.I name=value +\... +.I name=value +] product [ +.I listfile +] +.SH DESCRIPTION +\fBepm\fR generates software packages complete with installation, +removal, and (if necessary) patch scripts. Unless otherwise +specified, the files required for \fIproduct\fR are read from a +file named "\fIproduct\fR.list". +.LP +The \fI-a\fR option ("architecture") specifies the actual +architecture for the software. Without this option the generic +processor architecture is used ("intel", "sparc", "mips", etc.) +.LP +The \fI-f\fR option ("format") specifies the distribution format: +.TP 5 +aix +.br +Generate an AIX distribution suitable for installation on an AIX system. +.TP 5 +bsd +.br +Generate a BSD distribution suitable for installation on a FreeBSD, NetBSD, +or OpenBSD system. +.TP 5 +deb +.br +Generate a Debian distribution suitable for installation on a Debian Linux +system. +.TP 5 +inst, tardist +.br +Generate an IRIX distribution suitable for installation on an system running +IRIX. +.TP 5 +lsb, lsb-signed +.br +Generate RPM packages for LSB-conforming systems. The lsb-signed format uses +the GPG private key you have defined in the ~/.rpmmacros file. +.TP 5 +native +.br +Generate an native distribution. This uses \fIrpm\fR for Linux, +\fIinst\fR for IRIX, \fIpkg\fR for Solaris, \fIswinstall\fR for +HP-UX, \fIbsd\fR for FreeBSD, NetBSD, and OpenBSD, and \fIosx\fR +for MacOS X. All other operating systems default to the +\fIportable\fR format. +.TP 5 +osx +.br +Generate a MacOS X software package. +.TP 5 +pkg +.br +Generate an AT&T software package. These are used primarily under Solaris. +.TP 5 +portable +.br +Generate a portable distribution based on shell scripts and tar files. The +resulting distribution is installed and removed the same way on all +operating systems. [default] +.TP 5 +rpm, rpm-signed +.br +Generate a Red Hat Package Manager ("RPM") distribution suitable +for installation on a Red Hat Linux system. The rpm-signed format uses +the GPG private key you have defined in the ~/.rpmmacros file. +.TP 5 +setld +.br +Generate a Tru64 (setld) software distribution. +.TP 5 +slackware +.br +Generate a Slackware Linux software distribution. +.TP 5 +swinstall, depot +.br +Generate a HP-UX software distribution. +.LP +Executable files in the distribution are normally stripped of debugging +information when packaged. To disable this functionality use the +\fI\-g\fR option. +.LP +Intermediate (spec, etc.) files used to create the distribution are normally +removed after the distribution is created. The \fI\-k\fR option keeps these +files in the distribution directory. +.LP +The \fI-s\fR and \fI--setup-image\fR options ("setup") include +the ESP Software Wizard with the specified GIF or XPM image file with +the distribution. This option is currently only supported by +portable and RPM distributions. +.LP +The \fI--setup-program\fR option specifies the setup executable +to use with the distribution. This option is currently only +supported by portable distributions. +.LP +The \fI--setup-types\fR option specifies the \fIsetup.types\fR +file to include with the distribution. This option is currently +only supported by portable distributions. +.LP +The \fI--output-dir\fR option specifies the directory to +place output file into. The default directory is based on the +operating system, version, and architecture. +.LP +The \fI-v\fR option ("verbose") increases the amount of information that is +reported. Use multiple v's for more verbose output. +.LP +The \fI--depend\fR option lists the dependent (source) files for +all files in the package. +.LP +Distributions normally are named +"product-version-system-release-machine.ext" and +"product-version-system-release-machine-patch.ext" (for patch +distributions.) The "system-release-machine" information can be +customized or eliminated using the \fI-n\fR option with the +appropriate trailing letters. Using \fI-n\fR by itself will +remove the "system-release-machine" string from the filename +entirely. The "system-release-machine" information can also be +customized by using the \fI-m\fR option with an arbitrary string. +.LP +Debian, IRIX, portable, and Red Hat distributions use the extensions ".deb", +".tardist", "tar.gz", and ".rpm" respectively. +.SH LIST FILES +The EPM list file format is now described in the \fIepm.list(5)\fR +man page. +.SH KNOWN BUGS +EPM does not currently support generation of IRIX software patches. +.SH SEE ALSO +epminstall(1) - add a directory, file, or symlink to a list file +.br +mkepmlist(1) - make an epm list file from a directory +.br +epm.list(5) - epm list file format +.br +setup(1) - graphical setup program for the esp package manager +.SH COPYRIGHT +Copyright 1999-2008 by Easy Software Products, All Rights Reserved. +.LP +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. +.LP +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +.\" +.\" End of "$Id: epm.man 816 2008-08-27 03:44:15Z mike $". +.\" diff --git a/doc/epminstall.man b/doc/epminstall.man new file mode 100644 index 0000000..b6b672d --- /dev/null +++ b/doc/epminstall.man @@ -0,0 +1,97 @@ +.\" +.\" "$Id: epminstall.man 753 2007-04-10 18:34:01Z mike $" +.\" +.\" Manual page for the ESP Package Manager (EPM) install program. +.\" +.\" Copyright 1999-2007 by Easy Software Products, all rights reserved. +.\" +.\" This program is free software; you can redistribute it and/or modify +.\" it under the terms of the GNU General Public License as published by +.\" the Free Software Foundation; either version 2, or (at your option) +.\" any later version. +.\" +.\" This program is distributed in the hope that it will be useful, +.\" but WITHOUT ANY WARRANTY; without even the implied warranty of +.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.\" GNU General Public License for more details. +.\" +.TH epminstall 1 "ESP Package Manager" "3 April 2006" "Easy Software Products" +.SH NAME +epminstall \- add a directory, file, or symlink to a list file. +.SH SYNOPSIS +.B epminstall +.I options +file1 file2 ... fileN directory +.br +.B epminstall +.I options +file1 file2 +.br +.B epminstall +.I options +-d directory1 directory2 ... directoryN +.SH DESCRIPTION +\fBepminstall\fR adds or replaces a directory, file, or symlink +in a list file. The default list file is "epm.list" and can be +overridden using the \fIEPMLIST\fR environment variable or the +\fI--list-file\fR option. +.LP +Entries are either added to the end of the list file or replaced +in-line. Comments, directives, and variable declarations in the +list file are preserved. +.SH OPTIONS +\fBepminstall\fR recognizes the standard Berkeley \fIinstall\fR command +options: +.TP 5 +\-b +.br +Make a backup of existing files (ignored, default for EPM.) +.TP 5 +\-c +.br +BSD old compatibility mode (ignored.) +.TP 5 +\-g \fIgroup\fR +.br +Set the group owner of the file or directory to \fIgroup\fR. The default +group is "sys". +.TP 5 +\-m \fImode\fR +.br +Set the permissions of the file or directory to \fImode\fR. The default +permissions are 0755 for directories and executable files and +0644 for non-executable files. +.TP 5 +\-o \fIowner\fR +.br +Set the owner of the file or directory to \fIowner\fR. The default +owner is "root". +.TP 5 +\-s +.br +Strip the files (ignored, default for EPM.) +.TP 5 +\--list-file \fIfilename.list\fR +.br +Specify the list file to update. +.SH SEE ALSO +epm(1) - create software packages +.br +mkepmlist(1) - make an epm list file from a directory +.br +epm.list(5) - epm list file format +.SH COPYRIGHT +Copyright 1999-2007 by Easy Software Products, All Rights Reserved. +.LP +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. +.LP +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +.\" +.\" End of "$Id: epminstall.man 753 2007-04-10 18:34:01Z mike $". +.\" diff --git a/doc/epmlogo.gif b/doc/epmlogo.gif Binary files differnew file mode 100644 index 0000000..2f61877 --- /dev/null +++ b/doc/epmlogo.gif diff --git a/doc/epmlogo.tif b/doc/epmlogo.tif Binary files differnew file mode 100644 index 0000000..4280772 --- /dev/null +++ b/doc/epmlogo.tif diff --git a/doc/gradient.gif b/doc/gradient.gif Binary files differnew file mode 100644 index 0000000..02abf16 --- /dev/null +++ b/doc/gradient.gif diff --git a/doc/mantohtml.c b/doc/mantohtml.c new file mode 100644 index 0000000..eae1994 --- /dev/null +++ b/doc/mantohtml.c @@ -0,0 +1,697 @@ +/* + * "$Id: mantohtml.c 667 2006-04-05 03:16:04Z mike $" + * + * Man page to HTML conversion program. + * + * Copyright 2004-2006 by Easy Software Products. + * + * These coded instructions, statements, and computer programs are the + * property of Easy Software Products and are protected by Federal + * copyright law. Distribution and use rights are outlined in the file + * "LICENSE.txt" which should have been included with this file. If this + * file is missing or damaged please contact Easy Software Products + * at: + * + * Attn: CUPS Licensing Information + * Easy Software Products + * 44141 Airport View Drive, Suite 204 + * Hollywood, Maryland 20636 USA + * + * Voice: (301) 373-9600 + * EMail: cups-info@cups.org + * WWW: http://www.cups.org + * + * Contents: + * + * main() - Convert a man page to HTML. + * putc_entity() - Put a single character, using entities as needed. + * strmove() - Move characters within a string. + */ + +/* + * Include necessary headers. + */ + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <string.h> + + +/* + * Local functions... + */ + +static void putc_entity(int ch, FILE *fp); +static void strmove(char *d, const char *s); + + +/* + * 'main()' - Convert a man page to HTML. + */ + +int /* O - Exit status */ +main(int argc, /* I - Number of command-line args */ + char *argv[]) /* I - Command-line arguments */ +{ + FILE *infile, /* Input file */ + *outfile; /* Output file */ + char line[1024], /* Line from file */ + *lineptr, /* Pointer into line */ + *endptr, /* Pointer to end of current */ + endchar, /* End character */ + *paren, /* Pointer to parenthesis */ + name[1024]; /* Man page name */ + int section, /* Man page section */ + pre, /* Preformatted */ + font, /* Current font */ + blist, /* In a bullet list? */ + list, /* In a list? */ + linenum; /* Current line number */ + const char *post; /* Text to add after the current line */ + static const char /* Start/end tags for fonts */ + * const start_fonts[] = { "", "<b>", "<i>" }, + * const end_fonts[] = { "", "</b>", "</i>" }; + + /* + * Check arguments... + */ + + if (argc > 3) + { + fputs("Usage: mantohtml [filename.man [filename.html]]\n", stderr); + return (1); + } + + /* + * Open files as needed... + */ + + if (argc > 1) + { + if ((infile = fopen(argv[1], "r")) == NULL) + { + perror(argv[1]); + return (1); + } + } + else + infile = stdin; + + if (argc > 2) + { + if ((outfile = fopen(argv[2], "w")) == NULL) + { + perror(argv[2]); + fclose(infile); + return (1); + } + } + else + outfile = stdout; + + /* + * Read from input and write the output... + */ + + fputs("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" " + "\"http://www.w3.org/TR/REC-html40/loose.dtd\">\n" + "<html>\n" + "<!-- SECTION: Man Pages -->\n" + "<head>\n" + "\t<style type='text/css'><!--\n" + "\th1, h2, h3, p { font-family: sans-serif; text-align: justify; }\n" + "\ttt, pre a:link, pre a:visited, tt a:link, tt a:visited { font-weight: bold; color: #7f0000; }\n" + "\tpre { font-weight: bold; color: #7f0000; margin-left: 2em; }\n" + "\th1.title, h2.title, h3.title { border-bottom: solid 2px #000000; }\n" + "\t--></style>\n", outfile); + + blist = 0; + font = 0; + list = 0; + linenum = 0; + pre = 0; + post = NULL; + section = -1; + + while (fgets(line, sizeof(line), infile)) + { + linenum ++; + + if (line[0] == '.') + { + /* + * Strip leading whitespace... + */ + + while (line[1] == ' ' || line[1] == '\t') + strmove(line + 1, line + 2); + + /* + * Process man page commands... + */ + + if (!strncmp(line, ".TH ", 4) && section < 0) + { + /* + * Grab man page title... + */ + + sscanf(line + 4, "%s%d", name, §ion); + + fprintf(outfile, + "\t<title>%s(%d)</title>\n" + "</head>\n" + "<body>\n" + "<h2>%s(%d)</h2>\n" + "%s", + name, section, name, section, start_fonts[font]); + } + else if (section < 0) + continue; + else if (!strncmp(line, ".SH ", 4) || !strncmp(line, ".Sh ", 4)) + { + /* + * Grab heading... + */ + + int first = 1; + + fputs(end_fonts[font], outfile); + + if (blist) + { + fputs("</li>\n</ul>\n", outfile); + blist = 0; + } + + if (list) + { + if (list == 1) + fputs("</dt>\n", outfile); + else if (list) + fputs("</dd>\n", outfile); + + fputs("</dl>\n", outfile); + list = 0; + } + + line[strlen(line) - 1] = '\0'; /* Strip LF */ + + if (line[2] == 'H') + fputs("<h3><a name='", outfile); + else + fputs("<h4><a name='", outfile); + + for (lineptr = line + 4; *lineptr; lineptr ++) + if (*lineptr == '\"') + continue; + else if (*lineptr == ' ') + putc_entity('_', outfile); + else + putc_entity(*lineptr, outfile); + + fputs("'>", outfile); + + for (lineptr = line + 4; *lineptr; lineptr ++) + if (*lineptr == '\"') + continue; + else if (*lineptr == ' ') + { + putc_entity(' ', outfile); + + first = 1; + } + else + { + if (first) + putc_entity(*lineptr, outfile); + else + putc_entity(tolower(*lineptr), outfile); + + first = 0; + } + + if (line[2] == 'H') + fprintf(outfile, "</a></h3>\n%s", start_fonts[font]); + else + fprintf(outfile, "</a></h4>\n%s", start_fonts[font]); + } + else if (!strncmp(line, ".LP", 3) || !strncmp(line, ".PP", 3)) + { + /* + * New paragraph... + */ + + fputs(end_fonts[font], outfile); + + if (blist) + { + fputs("</li>\n</ul>\n", outfile); + blist = 0; + } + + if (list) + { + if (list == 1) + fputs("</dt>\n", outfile); + else if (list) + fputs("</dd>\n", outfile); + + fputs("</dl>\n", outfile); + list = 0; + } + + fputs("<p>", outfile); + font = 0; + } + else if (!strncmp(line, ".TP ", 4)) + { + /* + * Grab list... + */ + + fputs(end_fonts[font], outfile); + + if (blist) + { + fputs("</li>\n</ul>\n", outfile); + blist = 0; + } + + if (!list) + fputs("<dl>\n", outfile); + else if (list == 1) + fputs("</dt>\n", outfile); + else if (list) + fputs("</dd>\n", outfile); + + fputs("<!-- NEED 3 --><dt>", outfile); + list = 1; + font = 0; + } + else if (!strncmp(line, ".br", 3)) + { + /* + * Grab line break... + */ + + if (list == 1) + { + fputs("</dt>\n<dd>", outfile); + list = 2; + } + else if (list) + fputs("</dd>\n<dd>", outfile); + else if (!pre) + fputs("<br>\n", outfile); + } + else if (!strncmp(line, ".de ", 4)) + { + /* + * Define macro - ignore... + */ + + while (fgets(line, sizeof(line), infile)) + { + linenum ++; + + if (!strncmp(line, "..", 2)) + break; + } + } + else if (!strncmp(line, ".RS", 3)) + { + /* + * Indent... + */ + + fputs("<div style='margin-left: 3em;'>\n", outfile); + } + else if (!strncmp(line, ".RE", 3)) + { + /* + * Unindent... + */ + + fputs("</div>\n", outfile); + } + else if (!strncmp(line, ".ds ", 4) || !strncmp(line, ".rm ", 4) || + !strncmp(line, ".tr ", 4) || !strncmp(line, ".hy ", 4) || + !strncmp(line, ".IX ", 4) || !strncmp(line, ".PD", 3) || + !strncmp(line, ".Sp", 3)) + { + /* + * Ignore unused commands... + */ + } + else if (!strncmp(line, ".Vb", 3) || !strncmp(line, ".nf", 3)) + { + /* + * Start preformatted... + */ + + pre = 1; + fputs("<pre>\n", outfile); + } + else if (!strncmp(line, ".Ve", 3) || !strncmp(line, ".fi", 3)) + { + /* + * End preformatted... + */ + + if (pre) + { + pre = 0; + fputs("</pre>\n", outfile); + } + } + else if (!strncmp(line, ".IP \\(bu", 8)) + { + /* + * Bullet list... + */ + + if (blist) + fputs("</li>\n", outfile); + else + { + fputs("<ul>\n", outfile); + blist = 1; + } + + fputs("<li>", outfile); + } + else if (!strncmp(line, ".IP ", 4)) + { + /* + * Indented paragraph... + */ + + if (blist) + { + fputs("</li>\n</ul>\n", outfile); + blist = 0; + } + + fputs("<p style='margin-left: 3em;'>", outfile); + + for (lineptr = line + 4; isspace(*lineptr); lineptr ++); + + if (*lineptr == '\"') + { + strmove(line, lineptr + 1); + + if ((lineptr = strchr(line, '\"')) != NULL) + *lineptr = '\0'; + } + else + { + strmove(line, lineptr); + + if ((lineptr = strchr(line, ' ')) != NULL) + *lineptr = '\0'; + } + + /* + * Process the text as if it was in-line... + */ + + post = "\n<br />\n<br />"; + goto process_text; + } + else if (!strncmp(line, ".\\}", 3)) + { + /* + * Ignore close block... + */ + } + else if (!strncmp(line, ".ie", 3) || !strncmp(line, ".if", 3) || + !strncmp(line, ".el", 3)) + { + /* + * If/else - ignore... + */ + + if (strchr(line, '{') != NULL) + { + /* + * Skip whole block... + */ + + while (fgets(line, sizeof(line), infile)) + { + linenum ++; + + if (strchr(line, '}') != NULL) + break; + } + } + } +#if 0 + else if (!strncmp(line, ". ", 4)) + { + /* + * Grab ... + */ + } +#endif /* 0 */ + else if (!strncmp(line, ".B ", 3)) + { + /* + * Grab bold text... + */ + + fprintf(outfile, "%s<b>%s</b>%s", end_fonts[font], line + 3, + start_fonts[font]); + } + else if (!strncmp(line, ".I ", 3)) + { + /* + * Grab italic text... + */ + + fprintf(outfile, "%s<i>%s</i>%s", end_fonts[font], line + 3, + start_fonts[font]); + } + else if (strncmp(line, ".\\\"", 3)) + { + /* + * Unknown... + */ + + if ((lineptr = strchr(line, ' ')) != NULL) + *lineptr = '\0'; + else if ((lineptr = strchr(line, '\n')) != NULL) + *lineptr = '\0'; + + fprintf(stderr, "mantohtml: Unknown man page command \'%s\' on line %d!\n", + line, linenum); + } + + /* + * Skip continuation lines... + */ + + lineptr = line + strlen(line) - 2; + if (lineptr >= line && *lineptr == '\\') + { + while (fgets(line, sizeof(line), infile)) + { + linenum ++; + lineptr = line + strlen(line) - 2; + + if (lineptr < line || *lineptr != '\\') + break; + } + } + } + else + { + /* + * Process man page text... + */ + +process_text: + + for (lineptr = line; *lineptr; lineptr ++) + { + if (!strncmp(lineptr, "http://", 7)) + { + /* + * Embed URL... + */ + + for (endptr = lineptr + 7; + *endptr && !isspace(*endptr & 255); + endptr ++); + + endchar = *endptr; + *endptr = '\0'; + + fprintf(outfile, "<a href='%s'>%s</a>", lineptr, lineptr); + *endptr = endchar; + lineptr = endptr - 1; + } + else if (!strncmp(lineptr, "\\fI", 3) && + (endptr = strstr(lineptr, "\\fR")) != NULL && + (paren = strchr(lineptr, '(')) != NULL && + paren < endptr) + { + /* + * Man page... + */ + + lineptr += 3; + endchar = *endptr; + *endptr = '\0'; + + fputs("<i>", outfile); + while (*lineptr) + putc_entity(*lineptr++, outfile); + fputs("</i>", outfile); + + *endptr = endchar; + lineptr = endptr + 2; + } + else if (*lineptr == '\\') + { + lineptr ++; + if (!*lineptr) + break; + else if (isdigit(lineptr[0]) && isdigit(lineptr[1]) && + isdigit(lineptr[2])) + { + fprintf(outfile, "&#%d;", ((lineptr[0] - '0') * 8 + + lineptr[1] - '0') * 8 + + lineptr[2] - '0'); + lineptr += 2; + } + else if (*lineptr == '&') + continue; + else if (*lineptr == 's') + { + while (lineptr[1] == '-' || isdigit(lineptr[1])) + lineptr ++; + } + else if (*lineptr == '*') + { + lineptr += 2; + } + else if (*lineptr != 'f') + putc_entity(*lineptr, outfile); + else + { + lineptr ++; + if (!*lineptr) + break; + else + { + fputs(end_fonts[font], outfile); + + switch (*lineptr) + { + default : /* Regular */ + font = 0; + break; + case 'B' : /* Bold */ + case 'b' : + font = 1; + break; + case 'I' : /* Italic */ + case 'i' : + font = 2; + break; + } + + fputs(start_fonts[font], outfile); + } + } + } + else + putc_entity(*lineptr, outfile); + } + + if (post) + { + fputs(post, outfile); + post = NULL; + } + } + } + + fprintf(outfile, "%s\n", end_fonts[font]); + + if (blist) + { + fputs("</li>\n</ul>\n", outfile); + blist = 0; + } + + if (list) + { + if (list == 1) + fputs("</dt>\n", outfile); + else if (list) + fputs("</dd>\n", outfile); + + fputs("</dl>\n", outfile); + list = 0; + } + + fputs("</body>\n" + "</html>\n", outfile); + + /* + * Close files... + */ + + if (infile != stdin) + fclose(infile); + + if (outfile != stdout) + fclose(outfile); + + /* + * Return with no errors... + */ + + return (0); +} + + +/* + * 'putc_entity()' - Put a single character, using entities as needed. + */ + +static void +putc_entity(int ch, /* I - Character */ + FILE *fp) /* I - File */ +{ + if (ch == '&') + fputs("&", fp); + else if (ch == '<') + fputs("<", fp); + else + putc(ch, fp); +} + + +/* + * 'strmove()' - Move characters within a string. + */ + +static void +strmove(char *d, /* I - Destination */ + const char *s) /* I - Source */ +{ + while (*s) + *d++ = *s++; + + *d = '\0'; +} + + +/* + * End of "$Id: mantohtml.c 667 2006-04-05 03:16:04Z mike $". + */ diff --git a/doc/mkepmlist.man b/doc/mkepmlist.man new file mode 100644 index 0000000..5c8ba54 --- /dev/null +++ b/doc/mkepmlist.man @@ -0,0 +1,74 @@ +.\" +.\" "$Id: mkepmlist.man 753 2007-04-10 18:34:01Z mike $" +.\" +.\" Manual page for the ESP Package Manager (EPM). +.\" +.\" Copyright 1999-2007 by Easy Software Products, all rights reserved. +.\" +.\" This program is free software; you can redistribute it and/or modify +.\" it under the terms of the GNU General Public License as published by +.\" the Free Software Foundation; either version 2, or (at your option) +.\" any later version. +.\" +.\" This program is distributed in the hope that it will be useful, +.\" but WITHOUT ANY WARRANTY; without even the implied warranty of +.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.\" GNU General Public License for more details. +.\" +.TH mkepmlist 1 "ESP Package Manager" "3 April 2006" "Easy Software Products" +.SH NAME +mkepmlist \- make an epm list file from a directory. +.SH SYNOPSIS +.B mkepmlist +[ \-g +.I group +] [ \-u +.I user +] [ \--prefix +.I directory +] +.I directory +[ ... +.I directory +] +.SH DESCRIPTION +\fBmkepmlist\fR recursively generates file list entries for +files, links, and directories. The file list is send to the +standard output. +.LP +The \fI-g\fR option overrides the group ownership of the files in +the specified directories with the specified group name. +.LP +The \fI-u\fR option overrides the user ownership of the files in +the specified directories with the specified user name. +.LP +The \fI--prefix\fR option adds the specified directory to the +destination path. For example, if you installed files to +"/opt/foo" and wanted to build a distribution that installed the +files in "/usr/local", the following command would generate a file +list that is installed in "/usr/local": +.nf +.br + mkepmlist --prefix=/usr/local /opt/foo >foo.list +.fi +.SH SEE ALSO +epm(1) - create software packages +.br +epminstall(1) - add a directory, file, or symlink to a list file +.br +epm.list(5) - epm list file format +.SH COPYRIGHT +Copyright 1999-2007 by Easy Software Products, All Rights Reserved. +.LP +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. +.LP +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +.\" +.\" End of "$Id: mkepmlist.man 753 2007-04-10 18:34:01Z mike $". +.\" diff --git a/doc/preface.html b/doc/preface.html new file mode 100644 index 0000000..60c8e8b --- /dev/null +++ b/doc/preface.html @@ -0,0 +1,214 @@ +<HTML> +<HEAD> + <TITLE>Software Distribution Using the ESP Package Manager</TITLE> + <META NAME="Author" content="Michael Sweet"> + <META NAME="Copyright" CONTENT="Copyright 1999-2010 by Easy Software Products"> + <META NAME="DocNumber" CONTENT="ESP-004-20101231"> +</HEAD> +<BODY> + +<H1 ALIGN="RIGHT">Preface</H1> + +<P>This book provides a tutorial and reference for the ESP Package Manager ("EPM") software, version 4.2, and is organized into the following chapters and appendices:</P> + +<UL> + + <LI><A HREF="#INTRO">1 - Introduction to EPM</A></LI> + + <LI><A HREF="#BUILDING">2 - Building EPM</A></LI> + + <LI><A HREF="#PACKAGING">3 - Packaging Your Software with EPM</A></LI> + + <LI><A HREF="#ADVANCED">4 - Advanced Packaging with EPM</A></LI> + + <LI><A HREF="#EXAMPLES">5 - EPM Packaging Examples</A></LI> + + <LI><A HREF="#LICENSE">A - Software License Agreement</A></LI> + + <LI><A HREF="#MANPAGES">B - Command Reference</A></LI> + + <LI><A HREF="#REFERENCE">C - List File Reference</A></LI> + + <LI><A HREF="#RELNOTES">D - Release Notes</A></LI> + +</UL> + +<!-- NEED 6in --> +<H2>Notation Conventions</H2> + +<DL> + + <DT>The names of commands; the first mention of a command or function in a + chapter is followed by a manual page section number: + <BR> </DT> + + <DD><CODE>epm</CODE><BR> + <CODE>epm(1)</CODE> + <BR> </DD> + + <DT>File and directory names: + <BR> </DT> + + <DD><VAR>/var</VAR><BR> + <VAR>/usr/bin/epm</VAR> + <BR> </DD> + + <DT>Screen output: + <BR> </DT> + + <DD><TT>Request ID is Printer-123</TT> + <BR> </DD> + + <DT>Literal user input; special keys like <KBD>ENTER</KBD> are in ALL CAPS: + <BR> </DT> + + <DD><KBD>lp -d printer filename ENTER</KBD> + <BR> </DD> + + <DT>Long commands are broken up on multiple lines using the backslash (\) + character; enter the commands without the backslash: + <BR> </DT> + + <DD><KBD>foo start of long command \<BR> + end of long command ENTER</KBD> + <BR> </DD> + + <DT>Numbers in the text are written using the period (.) to indicate the + decimal point: + <BR> </DT> + + <DD>12.3 + <BR> </DD> + +</DL> + +<!-- NEED 3in --> +<H2>Abbreviations</H2> + +<P>The following abbreviations are used throughout this book:</P> + +<DL> + + <DD>kb</DD> + + <DD>Kilobytes, or 1024 bytes + <BR> </DD> + + <DD>Mb</DD> + + <DD>Megabytes, or 1048576 bytes + <BR> </DD> + + <DD>Gb</DD> + + <DD>Gigabytes, or 1073741824 bytes + <BR> </DD> + +</DL> + +<!-- NEED 4in --> +<H2>Other References</H2> + +<DL> + + <DT><A + HREF="http://www.epmhome.org/">http://www.epmhome.org/</A></DT> + + <DD>The official home page of the ESP Package Manager software. + <BR> </DD> + + <DT><A + HREF="http://www.debian.org/devel/">http://www.debian.org/devel/</A></DT> + + <DD>Debian Developers' Corner + <BR> </DD> + + <DT><A HREF="http://techpubs.sgi.com/">http://techpubs.sgi.com/</A></DT> + + <DD>IRIX Documentation On-Line + <BR> </DD> + + <DT><A HREF="http://www.rpm.org/">http://www.rpm.org/</A></DT> + + <DD>The Red Hat Package Manager home page. + <BR> </DD> + + <DT><A HREF="http://docs.sun.com/">http://docs.sun.com/</A></DT> + + <DD>Solaris Documentation On-Line + <BR> </DD> + +</DL> + +<H2>Help Us Improve This Book!</H2> + +<P>We've done our best to ensure that this book is both accurate +and clear. If you find errors or have a suggestion for improving +the book, please send us an email to "<A +HREF="mailto:epm-book@easysw.com">epm-book@easysw.com</A>".</P> + +<H2>Acknowledgments</H2> + +<P>We'd like to thank the following people for their +contributions to EPM:</P> + +<UL> + + <LI>Gareth Armstrong: HP-UX and %release enhancements</LI> + + <LI>Nicolas Bazin: Openserver and Unixware support</LI> + + <LI>Richard Begg: HP-UX fixes</LI> + + <LI>Dirk Datzert: Bug fixes</LI> + + <LI>Alan Eldridge: Makefile and RPM fixes</LI> + + <LI>Vicentini Emanuele: IRIX enhancements</LI> + + <LI>Jeff Harrell: IRIX enhancements</LI> + + <LI>Lars Kellogg-Stedman: Debian fixes</LI> + + <LI>Jochen Kmietsch: mkepmlist fixes</LI> + + <LI>Aneesh Kumar K.V.: Tru64 setld package support</LI> + + <LI>David Lee: Build system improvements</LI> + + <LI>Scott Leerssen: mkepmlist fixes, BSD package support</LI> + + <LI>Jeff Licquia: Debian support/enhancements</LI> + + <LI>David Maltz: AIX fixes</LI> + + <LI>Joel Nordell: SCO fixes</LI> + + <LI>Rok Papez: Bug fixes and absolute output directory support</LI> + + <LI>Holger Paschke: Documentation fixes</LI> + + <LI>Phil Reynolds: OpenBSD fixes</LI> + + <LI>Ganesan Rajagopal: Solaris fixes</LI> + + <LI>Uwe Räsche: AIX support</LI> + + <LI>Ralf Rohm: Solaris fixes</LI> + + <LI>Jochen Schaeuble: epminstall fixes</LI> + + <LI>Jason Shiffer: HP-UX fixes</LI> + + <LI>Andrea Suatoni: IRIX fixes</LI> + + <LI>Andy Walter: QNX support</LI> + + <LI>Geoffrey Wossum: --output-directory option</LI> + + <LI>Jean Yves: BSD package and mkepmlist fixes</LI> + +</UL> + +</BODY> +</HTML> diff --git a/doc/setup.man b/doc/setup.man new file mode 100644 index 0000000..7ce7714 --- /dev/null +++ b/doc/setup.man @@ -0,0 +1,59 @@ +.\" +.\" "$Id: setup.man 753 2007-04-10 18:34:01Z mike $" +.\" +.\" Manual page for the ESP Package Manager (EPM) setup GUI. +.\" +.\" Copyright 1999-2007 by Easy Software Products, all rights reserved. +.\" +.\" This program is free software; you can redistribute it and/or modify +.\" it under the terms of the GNU General Public License as published by +.\" the Free Software Foundation; either version 2, or (at your option) +.\" any later version. +.\" +.\" This program is distributed in the hope that it will be useful, +.\" but WITHOUT ANY WARRANTY; without even the implied warranty of +.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.\" GNU General Public License for more details. +.\" +.TH setup 1 "ESP Package Manager" "3 April 2006" "Easy Software Products" +.SH NAME +setup \- graphical setup program for the esp package manager +.SH SYNOPSIS +.B setup +[ +.I directory +] +.SH DESCRIPTION +\fBsetup\fR provides a graphical installation interface for +EPM-generated portable installation packages. It presents a +step-by-step dialog for collecting a list of packages to install +and accepting any license agreements for those packages. +.LP +\fBsetup\fR searches for products in the current directory or the +directory specified on the command-line. +.SH INSTALLATION TYPES +The default type of installation is "custom". That is, users will be +able to select from the list of products and install them. +.LP +\fBsetup\fR also supports other types of installations. The +\fIsetup.types\fR file, if present, defines the other +installation types. +.SH SEE ALSO +epm(1) - create software packages. +.br +setup.types(5) - epm gui setup types file format. +.SH COPYRIGHT +Copyright 1999-2007 by Easy Software Products, All Rights Reserved. +.LP +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. +.LP +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +.\" +.\" End of "$Id: setup.man 753 2007-04-10 18:34:01Z mike $". +.\" diff --git a/doc/setup.png b/doc/setup.png Binary files differnew file mode 100644 index 0000000..c4c3cbf --- /dev/null +++ b/doc/setup.png diff --git a/doc/setup.types.man b/doc/setup.types.man new file mode 100644 index 0000000..eef8db1 --- /dev/null +++ b/doc/setup.types.man @@ -0,0 +1,75 @@ +.\" +.\" "$Id: setup.types.man 753 2007-04-10 18:34:01Z mike $" +.\" +.\" Manual page for the ESP Package Manager (EPM) setup types file format. +.\" +.\" Copyright 1999-2007 by Easy Software Products, all rights reserved. +.\" +.\" This program is free software; you can redistribute it and/or modify +.\" it under the terms of the GNU General Public License as published by +.\" the Free Software Foundation; either version 2, or (at your option) +.\" any later version. +.\" +.\" This program is distributed in the hope that it will be useful, +.\" but WITHOUT ANY WARRANTY; without even the implied warranty of +.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.\" GNU General Public License for more details. +.\" +.TH setup.types 5 "ESP Package Manager" "3 April 2006" "Easy Software Products" +.SH NAME +setup.types \- epm gui setup types file format. +.SH DESCRIPTION +The EPM \fBsetup\fR program normally presents the user with a +list of software products to install, which is called a "custom" +software installation. +.LP +If a file called \fIsetup.types\fR is present in the package +directory, the user will instead be presented with a list of +installation types. Each type has an associated product list +which determines the products that are installed by default. If a +type has no products associated with it, then it is treated as a +custom installation and the user is presented with a list of +packages to choose from. +.SH FILE FORMAT +The \fIsetup.types\fR file is an ASCII text file consisting of +type and product lines. Comments can be inserted by starting a +line with the pound sign (#). Each installation type is defined +by a line starting with the word TYPE. Products are defined by a +line starting with the word INSTALL: +.in 5 +.nf + +TYPE Typical End-User Configuration +INSTALL foo +INSTALL foo-help +TYPE Typical Developer Configuration +INSTALL foo +INSTALL foo-help +INSTALL foo-devel +INSTALL foo-examples +TYPE Custom Configuration +.fi +.in +.LP +In the example above, three installation types are defined. Since the last +type includes no products, the user will be presented with the full list +of products to choose from. +.SH SEE ALSO +epm(1) - create software packages +.br +setup(1) - graphical setup program for the esp package manager +.SH COPYRIGHT +Copyright 1999-2007 by Easy Software Products, All Rights Reserved. +.LP +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. +.LP +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +.\" +.\" End of "$Id: setup.types.man 753 2007-04-10 18:34:01Z mike $". +.\" diff --git a/doc/title.html b/doc/title.html new file mode 100644 index 0000000..38c03e3 --- /dev/null +++ b/doc/title.html @@ -0,0 +1,76 @@ +<HTML> +<BODY> + +<P> </P> + +<P> </P> + +<P> </P> + +<P> </P> + +<P> </P> + +<P> </P> + +<P> </P> + +<P> </P> + +<P> </P> + +<P> </P> + +<H1 ALIGN="CENTER">Software Distribution Using the ESP Package +Manager</H1> + +<P ALIGN="CENTER">MICHAEL R. SWEET</P> + +<P> </P> + +<P> </P> + +<P> </P> + +<P> </P> + +<P> </P> + +<P> </P> + +<P> </P> + +<P> <IMG SRC="gradient.gif"><BR> +<VAR>ESP Press</VAR><BR> +<SMALL>Easy Software Products, 516 Rio Grand Ct, Morgan Hill, CA 95037 USA</SMALL></P> + +<!-- NEW PAGE --> +<H2>Software Distribution Using the ESP Package Manager</H2> + +<H3>Copyright © 2006-2010 by Easy Software Products</H3> + +<P><SMALL>This book may be redistributed and/or modified under +the terms of version 2 of the GNU General Public License as +published by the Free Software Foundation.</SMALL></P> + +<P><SMALL>This book is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details.</SMALL></P> + +<P><SMALL>You should have received a copy of the GNU General +Public License along with this program; if not, write to the Free +Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, +MA 02111-1307, USA.</SMALL></P> + +<P><SMALL>This book was created solely using free software +tools.</SMALL></P> + +<P><SMALL>International Standard Book Number: +978-1-4116-8913-8</SMALL></P> + +<P><SMALL>First Printing: April 2006<BR> +Second Printing: December 2010</SMALL></P> + +</BODY> +</HTML> |