64 lines
3.6 KiB
Text
64 lines
3.6 KiB
Text
|
TITLE : Package management in jhalfs
|
||
|
ADDED : $Date:$
|
||
|
BY : Pierre Labastie
|
||
|
|
||
|
1. INTRODUCTION:
|
||
|
|
||
|
There are several hints discussing package management for LFS, but
|
||
|
nothing under jhalfs. There used to be a patch for PACO that I cannot
|
||
|
find now. This is a modification, which allows to use a package manager
|
||
|
inside jhalfs. I hope it is flexible enough to support several package
|
||
|
managers. My implementation uses dpkg, from Debian, in a very crude way.
|
||
|
Debian has a sophisticated package management system, which I have not
|
||
|
tried to use here. For example, it should be usable with Pacman from
|
||
|
Arch Linux (http://www.archlinux.org), as far as I remember from my old
|
||
|
days with DIYL. I am sorry to say I have (almost) no experience with
|
||
|
rpm, so I cannot tell whether it would fit.
|
||
|
|
||
|
2. OVERVIEW OF THE SYSTEM:
|
||
|
|
||
|
For now, package management is only available for LFS. I plan to
|
||
|
upgrade BLFS tools, but nothing usable right now. The other flavours of
|
||
|
LFS do not seem very active, so there is no point in updating jhalfs
|
||
|
for them.
|
||
|
The first thing to do is to modify the install instructions of the
|
||
|
chapter 6, 7 and 8 of the book so that the installed files end up in a
|
||
|
directory other than `/'. We choose to call this directory by the name
|
||
|
of the executed script, and to put the path to this directory in the
|
||
|
PKG_DEST variable which is made available to the scriplets.
|
||
|
Almost all the packages have a way to redirect the destination of
|
||
|
the files they install at the `make install' stage with the variable
|
||
|
DESTDIR. Furthermore, the authors of the book have been kind enough to
|
||
|
flag the installation instructions with `remap=install'. This allows an
|
||
|
xsl stylesheet to find those instructions. Then, places where `make '
|
||
|
occurs (make followed by a space) are replaced by `make DESTDIR=$PKG_DEST '.
|
||
|
Places where the book instructions move files into their destination
|
||
|
are harder to deal with: it is possible to change all occurences of ` /' or
|
||
|
`>/' (beginning of absolute paths) to `$PKG_DEST', but you end up moving
|
||
|
files to non existent directories. There is no simple way to automatically
|
||
|
create those directories, because you have sometimes to use the full path
|
||
|
(instructions of the form `cp file dir') and sometimes only the dirname
|
||
|
(instructions of the form `cp file1 file2'). So I am conservative and
|
||
|
create a reasonable subset of the FHS hierarchy into the destination
|
||
|
directory. Empty directories should then be removed before packing the
|
||
|
binary package.
|
||
|
Supposing now that the scriptlets have been adequately modified, the
|
||
|
package manager installation instructions have to be added at the end of
|
||
|
chapter 5 and chapter 6. Furthermore, the administrative files and
|
||
|
directories have to be created during the `Creating Directories' and
|
||
|
`Creating Essential Files' stage. For all this, the user has to supply a
|
||
|
file in docbook format, with the necessary instructions and enough
|
||
|
information to download the tarball. A template is provided in the pkgmngt
|
||
|
subdirectory.
|
||
|
The last thing to do is to tell how to use the package manager. When
|
||
|
the binary package is ready, the scriptlets call a shell function named
|
||
|
`packInstall', which should pack the binary package and install it on the
|
||
|
system. Note that nothing has been done to manage configuration files,
|
||
|
which are ususally treated specially by package managers. Depending on
|
||
|
the book layout, it is sometimes possible to create those files afterwards,
|
||
|
and sometimes not, which means that you have to check them after each
|
||
|
upgrade. The user has to provide his own function. A template is provided
|
||
|
in the pkgmngt subdirectory.
|
||
|
|
||
|
|