Sanos has a packagement management tool that can download, build, and install application and library
packages from a central repository. You can use the pkg
utility to install and maintain the
installed packages:
usage: pkg [OPTIONS] PACKAGE... -f Install from package file -R URL Package repository URL (default: http://www.jbox.dk/pkg) -B Build but do not install packages -F Fetch but do not build packages -u Upgrade packages if newer versions are available -U Force update of packages -d Delete package -l List installed packages -q Query packages in repository -v Output verbose installation information
A database of installed packages is stored in /usr/share/pkg/db
.
This file lists all the installed packages and their manifests. A package
manifest is a text file in INI file format that contains the package name,
description, author, version, project homepage, etc. The manifest also
contains a list of files installed by the package in the [files]
section and the other packages it depends on in the [dependencies]
section. The commands for building and installing the package are in the
[build]
and [install]
sections. The [readme]
and [license]
sections are currently only for informational
purposes. The manifest files for the installed packages are stored in the
/usr/share/pkg
directory. This is an example of the manifest file
for the awk package:
[package] name=awk description=Pattern scanning and text processing language author=Brian Kernighan original=awk.zip homepage=http://www.cs.princeton.edu/~bwk/btl.mirror/ [source] usr/src/pkg/awk/ [files] /usr/src/pkg/awk/ /usr/bin/awk.exe [dependencies] sdk yacc [build] make -C /usr/src/pkg/awk [install] make -C /usr/src/pkg/awk install [readme] This is the version of awk described in "The AWK Programming Language", by Al Aho, Brian Kernighan, and Peter Weinberger (Addison-Wesley, 1988, ISBN 0-201-07981-X). [license] Copyright (C) Lucent Technologies 1997 All Rights Reserved ...
A package is just an uncompressed tar file (although it has a .pkg extension) containing all the source files in the package. The file names in the package must be relative to the root directory and the first file in the package must be the manifest. This is the list of files in the awk package (http://www.jbox.dk/pkg/awk.pkg):
-rw-r--r-- sanos/sanos 1561 2013-01-19 15:29 usr/share/pkg/awk.inf -rw-r--r-- sanos/sanos 5187 2013-01-10 15:23 usr/src/pkg/awk/maketab.c -rw-r--r-- sanos/sanos 6919 2013-01-10 15:23 usr/src/pkg/awk/proto.h -rw-r--r-- sanos/sanos 44781 2013-01-10 15:23 usr/src/pkg/awk/run.c -rw-r--r-- sanos/sanos 6431 2013-01-10 15:23 usr/src/pkg/awk/awk.h -rw-r--r-- sanos/sanos 13104 2013-01-10 15:23 usr/src/pkg/awk/lex.c -rw-r--r-- sanos/sanos 12642 2013-01-10 15:23 usr/src/pkg/awk/tran.c -rw-r--r-- sanos/sanos 13914 2013-01-10 15:23 usr/src/pkg/awk/awkgram.y -rw-r--r-- sanos/sanos 531 2013-01-10 15:23 usr/src/pkg/awk/Makefile -rw-r--r-- sanos/sanos 5185 2013-01-10 15:23 usr/src/pkg/awk/parse.c -rw-r--r-- sanos/sanos 5798 2013-01-10 15:23 usr/src/pkg/awk/main.c -rw-r--r-- sanos/sanos 17340 2013-01-10 15:23 usr/src/pkg/awk/lib.c -rw-r--r-- sanos/sanos 22867 2013-01-10 15:23 usr/src/pkg/awk/b.c
You can use the pkg -l
or pkg -lv
command to list
the currently installed packages, and you can use the pkg -q
command to seach for packages on the repository server. If you want to install
the awk package you type pkg awk
on the command line. This will
check if the package is already installed, and if not, download the package
from the repository. The package files are downloaded using HTTP from a normal
web server. The default repository is http://www.jbox.dk/pkg
but
you can specify another repository with the -R option. After the package file
has been downloaded and the files have been extracted, the pkg tool inspects the
manifest for the package. First it checks if all packages it depends on have
already been installed. If some of these are missing they are downloaded and
installed before proceeding. This is done recursively until all dependencies
have been resolved. Then the pkg tool runs the install (or build) commands from
the manifest to install the package. If the package is sucessfully installed the
package database in /usr/share/pkg/db
is updated with the newly
installed packages, and the applications and libraries in the package are
now ready to be used.
Most packages are distributed in source form and need to be compiled and linked before installing, so these packages usually depend on the sdk package (Sanos Development Kit) which contains the compiler, assembler, runtime library, and standard build utilities like make, ar, and impdef. To avoid a chicken-and-egg problem the sdk packages contain prebuilt applications and libraries in addition to the source code for these.
Name | Description |
---|---|
sanos | Sanos operating system |
sys | Sanos kernel |
as | Assembler for x86 |
cc | C compiler |
clib | C runtime library |
make | Make utility to maintain groups of programs |
impdef | Generate import definitions for DLLs |
ar | Library archive utility |
mkboot | Kernel install utility |
genvmdk | Generate VMDK disk image |
sdk | Sanos Development Kit |
ctohtml | Convert C source files to HTML |
cmds | Shell command utilities |
sh | Shell |
edit | Text editor |
fdisk | Disk partitioning utility |
ftpd | FTP server |
httpd | HTTP server library |
login | User login |
msh | Mini shell |
pkg | Package management tool |
setup | Setup program |
telnetd | Telnet server |
win32 | Win32 thunking layer |
Name | Description |
---|---|
awk | Pattern scanning and text processing language |
binutils | Tools for creating and managing binary program and object files |
bwbasic | Bywater BASIC Interpreter |
ctags | Generate tag files for source code |
curses | X/Open curses terminal control library |
disasm | Disassembler for x86 |
lua | Lua embeddable scripting language |
makedepend | Create dependencies in makefiles |
pdp11 | PDP-11 simulator |
tar | Tape archive utility and library |
unixv7 | Unix V7 kit |
unzip | UnZip decompression and extraction utility |
yacc | Parser generator |
zip | Zip compression and file packaging utility |
zlib | Data compression library |