Introduction to src2pkg
src2pkg is a system for creating installable Linux software packages
that can be installed or removed using Slackware-style pkgtools or
other similar tools. src2pkg includes several executable scripts
or programs written in BASH and a copy of the small installwatch
library.
Purpose
src2pkg is a system for creating installable Linux software packages
that can be installed or removed using Slackware-style pkgtools or
other similar tools. It can create packages from several kinds of
sources:
- Compiled Sources
- RPM or Debian conversion
- Generic Binary content
- no-arch or custom content
Compiled Sources - The original purpose of src2pkg (originally called
PkgBuild) is for creating packages from compiled source code,
performing all the steps needed to download, uncompress, configure and
compile the sources and then create a package from that content.
Supported source-code archive formats include .tbz, tar.bz2, .tgz,
.tar.gz, .rpm and .deb.
RPM or Debian conversion - src2pkg can convert binary .rpm or .deb
packages into Slackware-type packages. It does a better job than
rpm2tgz because it inserts a slack-desc file in the package and, as
with all src2pkg packages, the content is thoroughly checked and
corrected for proper directory structure and file/directory
permissions. It works the same for Debian binary archives.
Generic Binary content - src2pkg can be used to create packages from
generic binary content which is usually installed by running an
install.sh script, .run file or other installation routine. This
includes archives like the Opera browser or pre-compiled drivers for
ATI, etc. It also works with binary content that has no installation
routine at all. If it sees that the content of the archive has an
installable directory structure it will package that. This feature lets
you package pre-structured content as used with many SlackBuilds as
'skeleton' archives with a '_' prefix. It will even recognize
Slackware-type packages and re-package them -this is useful if you
download an 'untrusted' package from some third-party and want to make
sure it's correct, or if you just want to change the name of the
package or add/remove content.
Custom Content/noarch - src2pkg scripts can be endlessly customized to
create or modify package content as you wish. Even those who know
nothing about BASH scripting can modify them to customize the package
content. The scripts are really more like spec files, using a simple
and easy-to-use syntax which also gives your .src2pkg scripts more
portability for other users or architectures.
What's included
src2pkg includes several executable scripts
or programs written in BASH, a copy of the small installwatch.so
library, configuration files and documentation.
Most of the code used by the programs or .src2pkg scripts is
contained in the FUNCTIONS file in /usr/libexec/src2pkg/FUNCTIONS.
The file /usr/libexec/src2pkg/DEFINES contains some important default
definitions used by the code in the FUNCTIONS file. The code is kept
apart for convenience.
src2pkg includes its' own copy of the installwatch library which is
used to track and log the creation of files on your system during
package making. It gets installed under /usr/libexec/src2pkg so it will
not interfere with any existing installation of the installwatch
libraries and insure we are using the correct version.
It also includes a copy of the BASH-based program called 'disrpm',
which is used for decompressing .rpm and .deb archives. It does not
need the rpm program to be installed and will unpack many archives
which rpm2cpio or rpm2tgz will not. It's installed to /usr/bin so it
can be easily used separately if you just want to decompress and rpm or
deb archive.
The command-line programs src2pkg and trackinstall are installed to
/usr/sbin, since they are meant to be used by the user 'root'.
3 Configuration files are installed to /etc/src2pkg. They are optional,
but useful for customizing many things -mostly the general way and
location that src2pkg uses to handle source and package content, and
things like default prompting preferences, package 'signing', etc.
All the above except the installwatch.so library contain more
information in the form of comments, but documentation and examples are
also installed under /usr/doc/src2pkg-$VERSION. man-pages are also
installed with the package under /usr/man/man1.
Requirements
src2pkg is written using the BASH shell-scripting language and may not
work correctly if used with shells other than bash. It calls many of
the small programs found any POSIX-compliant system such sed, awk,
grep, tar, gzip, bzip2 and others. And you should have a working
development environment also if you are working with source code.
Invocation
Running the src2pkg program is done by typing 'src2pkg [options]
<archive-name-or-url>'.
Running a <program-name>.src2pkg script can be done several ways.
- Make the script executable using 'chmod 755 *.src2pkg' and call
it directly with: './*.src2pkg'
- Run a non-executable script with bash: 'bash ./*.src2pkg'
- Run the script using the src2pkg program: 'src2pkg *.src2pkg' or
'src2pkg -X'
Making the scripts executable and calling them directly is the most
straight-forward way, but has two disadvantages -clicking on the file
from a filer may cause them to run accidentally and makes it harder to
open the file for editing or viewing.
By default src2pkg creates new scripts as non executable, so the second
method is preferable to the first.
Using src2pkg itself to execute the script has the advantage that it
allows you to control some of the basic User Options from the
command-line, while still running the fixed-code and options found in
your *.src2pkg script. Using the -X option causes src2pkg to run the
first *.src2pkg or *.src2pkg.auto script found in the current directory.