slackware-current/slackbook/html/package-management-making-packages.html
Patrick J Volkerding 75a4a592e5 Slackware 13.37
Mon Apr 25 13:37:00 UTC 2011
Slackware 13.37 x86_64 stable is released!

Thanks to everyone who pitched in on this release: the Slackware team,
the folks producing upstream code, and linuxquestions.org for providing
a great forum for collaboration and testing.

The ISOs are off to be replicated, a 6 CD-ROM 32-bit set and a
dual-sided
32-bit/64-bit x86/x86_64 DVD.  Please consider supporting the Slackware
project by picking up a copy from store.slackware.com.  We're taking
pre-orders now, and offer a discount if you sign up for a subscription.

As always, thanks to the Slackware community for testing, suggestions,
and feedback.  :-)

Have fun!
2018-05-31 22:45:18 +02:00

120 lines
5.3 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="generator" content="HTML Tidy, see www.w3.org" />
<title>Making Packages</title>
<meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.7" />
<link rel="HOME" title="Slackware Linux Essentials" href="index.html" />
<link rel="UP" title="Slackware Package Management" href="package-management.html" />
<link rel="PREVIOUS" title="Package Utilities"
href="package-management-package-utilities.html" />
<link rel="NEXT" title="Making Tags and Tagfiles (for setup)"
href="package-management-making-tags-and-tagfiles.html" />
<link rel="STYLESHEET" type="text/css" href="docbook.css" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body class="SECT1" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#840084"
alink="#0000FF">
<div class="NAVHEADER">
<table summary="Header navigation table" width="100%" border="0" cellpadding="0"
cellspacing="0">
<tr>
<th colspan="3" align="center">Slackware Linux Essentials</th>
</tr>
<tr>
<td width="10%" align="left" valign="bottom"><a
href="package-management-package-utilities.html" accesskey="P">Prev</a></td>
<td width="80%" align="center" valign="bottom">Chapter 18 Slackware Package
Management</td>
<td width="10%" align="right" valign="bottom"><a
href="package-management-making-tags-and-tagfiles.html" accesskey="N">Next</a></td>
</tr>
</table>
<hr align="LEFT" width="100%" />
</div>
<div class="SECT1">
<h1 class="SECT1"><a id="PACKAGE-MANAGEMENT-MAKING-PACKAGES"
name="PACKAGE-MANAGEMENT-MAKING-PACKAGES">18.3 Making Packages</a></h1>
<p>Making Slackware packages can be either easy or difficult. There is no specific method
for building a package. The only requirement is that the package be a tar gzipped file
and if there is a postinstallation script, it must be <tt
class="FILENAME">/install/doinst.sh</tt>.</p>
<p>If you are interested in making packages for your system or for a network that you
manage, you should have a look at the various build scripts in the Slackware source tree.
There are several methods we use for making packages.</p>
<div class="SECT2">
<h2 class="SECT2"><a id="PACKAGE-MANAGEMENT-EXPLODEPKG"
name="PACKAGE-MANAGEMENT-EXPLODEPKG">18.3.1 <tt class="COMMAND">explodepkg</tt></a></h2>
<p><tt class="COMMAND">explodepkg</tt>(8) will do the same thing that <tt
class="COMMAND">installpkg</tt> does to extract the package, but it doesn't actually
install it and it doesn't record it in the packages database. It simply extracts it to
the current directory.</p>
<p>If you look at the Slackware source tree, you will see how we use this command for
&#8220;framework&#8221; packages. These packages contain a skeleton of what the final
package will look like. They hold all the necessary filenames (zero-length), permissions,
and ownerships. The build script will cat the package contents from the source directory
to the package build directory.</p>
</div>
<div class="SECT2">
<h2 class="SECT2"><a id="PACKAGE-MANAGEMENT-MAKEPKG"
name="PACKAGE-MANAGEMENT-MAKEPKG">18.3.2 <tt class="COMMAND">makepkg</tt></a></h2>
<p><tt class="COMMAND">makepkg</tt>(8) will package up the current directory into a valid
Slackware package. It will search the tree for any symbolic links and add a creation
block to the postinstallation script for creating them during the package install. It
also warns of any zero-length files in the package tree.</p>
<p>This command is typically run after you have created your package tree.</p>
</div>
<div class="SECT2">
<h2 class="SECT2"><a id="PACKAGE-MANAGEMENT-SLACKBUILD-SCRIPTS"
name="PACKAGE-MANAGEMENT-SLACKBUILD-SCRIPTS">18.3.3 SlackBuild Scripts</a></h2>
<p>Slackware packages are built in many different ways by necessity. Not all software
packages are written by their programmers to compile the same way. Many have compile time
options that are not all included in the packages Slackware uses. Perhaps you need some
of this functionality; you'll need to compile your own package then. Fortunately for many
Slackware packages, you can find SlackBuild scripts in the package's source code.</p>
<p>So what is a SlackBuild script? SlackBuild scripts are executable shell scripts that
you run as <tt class="USERNAME">root</tt> to configure, compile, and create Slackware
packages. You can freely modify these scripts in the source directory and run them to
create your own versions of the default Slackware packages.</p>
</div>
</div>
<div class="NAVFOOTER">
<hr align="LEFT" width="100%" />
<table summary="Footer navigation table" width="100%" border="0" cellpadding="0"
cellspacing="0">
<tr>
<td width="33%" align="left" valign="top"><a
href="package-management-package-utilities.html" accesskey="P">Prev</a></td>
<td width="34%" align="center" valign="top"><a href="index.html"
accesskey="H">Home</a></td>
<td width="33%" align="right" valign="top"><a
href="package-management-making-tags-and-tagfiles.html" accesskey="N">Next</a></td>
</tr>
<tr>
<td width="33%" align="left" valign="top">Package Utilities</td>
<td width="34%" align="center" valign="top"><a href="package-management.html"
accesskey="U">Up</a></td>
<td width="33%" align="right" valign="top">Making Tags and Tagfiles (for setup)</td>
</tr>
</table>
</div>
</body>
</html>