]> pd.if.org Git - zpackage/commitdiff
expand docs
authorNathan Wagner <nw@hydaspes.if.org>
Thu, 14 Feb 2019 20:43:39 +0000 (20:43 +0000)
committerNathan Wagner <nw@hydaspes.if.org>
Fri, 15 Feb 2019 18:24:27 +0000 (18:24 +0000)
17 files changed:
doc/zpm-elftype.8 [new file with mode: 0644]
doc/zpm-extract.8 [new file with mode: 0644]
doc/zpm-fetchurl.8
doc/zpm-log.8 [new file with mode: 0644]
doc/zpm-packagehash.8 [new file with mode: 0644]
doc/zpm-parse.8 [new file with mode: 0644]
doc/zpm-repo.8
doc/zpm-rmpackage.8 [new file with mode: 0644]
doc/zpm-script.8 [new file with mode: 0644]
doc/zpm-sign.8 [new file with mode: 0644]
doc/zpm-soname.8 [new file with mode: 0644]
doc/zpm-stat.8 [new file with mode: 0644]
doc/zpm-test.8 [new file with mode: 0644]
doc/zpm-update.8
doc/zpm-verify.8 [new file with mode: 0644]
doc/zpm.8
zpm-stat.c

diff --git a/doc/zpm-elftype.8 b/doc/zpm-elftype.8
new file mode 100644 (file)
index 0000000..81e36b1
--- /dev/null
@@ -0,0 +1,70 @@
+.TH zpm-elftype 8 2019-02-14 "ZPM 0.3"
+.SH NAME
+zpm-elftype \- print type of elf files
+.SH SYNOPSIS
+.B zpm elftype
+[
+.BI -f " listfile"
+]
+[
+.B -redclatnvp0
+]
+.RI [ path ...]
+.SH DESCRIPTION
+\fBzpm-elftype\fR
+prints and filters lists of paths according to their elftype.  By default
+the program checks its non-option arguments.
+.SH OPTIONS
+.TP
+\-l
+Don't follow symlinks when checking paths.
+.TP
+\-r
+Accept relocatable files.
+.TP
+\-e
+Accept executable files.
+.TP
+\-d
+Accept dynamic files.
+.TP
+\-c
+Accept CORE files.
+.TP
+\-t
+Print file type.
+.TP
+\-n
+Print file name.
+.TP
+\-v
+Run in verbose mode.
+.TP
+\-p
+print errors
+.TP
+-a
+Accept all elf files.  Equivalent to -redc
+.TP
+\-f \fIpath\fR
+Take the list of paths to check from the path.  If the path is '-' then
+use stdin.
+.TP
+\-0
+When printing type or path information, terminate items with a zero byte.
+Otherwise, by default, a newline is used.
+.SH EXAMPLES
+.TP
+zpm elftype
+lists all files in the local database
+.SH EXIT STATUS
+0 on success non zero on failure
+.SH FILES
+/var/lib/zpm/local.db
+.SH ENVIRONMENT
+ZPMDB
+.SH AUTHOR
+Nathan Wagner
+.SH SEE ALSO
+.BR zpm (8)
+.BR elf (5)
diff --git a/doc/zpm-extract.8 b/doc/zpm-extract.8
new file mode 100644 (file)
index 0000000..05d26bb
--- /dev/null
@@ -0,0 +1,33 @@
+.TH zpm-extract 8 2019-02-14 "ZPM 0.3"
+.SH NAME
+zpm-extract \- extract files from a zpm database
+.SH SYNOPSIS
+.B zpm extract
+[
+.BI -f " pkgfile"
+]
+.I hash path
+.SH DESCRIPTION
+\fBzpm-extract\fR
+extracts file content specified by hash, or a unique prefix of a hash,
+to the path specified.  The permissions are set to 0600, and the
+owner and group will be the current user and group.
+.SH OPTIONS
+.TP
+\-f
+specify the package file to find packages in
+.SH EXAMPLES
+.TP
+zpm extract abcdef012 /tmp/out
+Extract from $ZPMDB the contents of a file whose sha256 hash begins with
+abcdef012 to /tmp/out. 
+.SH EXIT STATUS
+0 on success non zero on failure
+.SH FILES
+/var/lib/zpm/local.db
+.SH ENVIRONMENT
+ZPMDB
+.SH AUTHOR
+Nathan Wagner
+.SH SEE ALSO
+.BR zpm (8)
index c6f748c1f546ee44c5d6ca4be02a47b01288a8da..4a269b394f7aeaf042695d8c14629c4cc95e0092 100644 (file)
@@ -1,4 +1,4 @@
-.TH zpm-fetchurl 8 2018-12-09 "ZPM 0.4"
+.TH zpm-fetchurl 8 2019-02-15 "ZPM 0.4"
 .SH NAME
 zpm-fetchurl \- download files
 .SH SYNOPSIS
 .SH NAME
 zpm-fetchurl \- download files
 .SH SYNOPSIS
@@ -64,6 +64,7 @@ zpm fetchurl -o zpm-0.1.2.zpm https://zoranix.net/repo/packages/zpm-0.1.2.zpm
 .SH FILES
 /var/lib/zpm/known_hosts
 ~/.zpm/known_hosts
 .SH FILES
 /var/lib/zpm/known_hosts
 ~/.zpm/known_hosts
+/etc/zpm/roots.pem
 .SH ENVIRONMENT
 ZPM_KNOWNHOSTS
 ZPM_ROOTFILE
 .SH ENVIRONMENT
 ZPM_KNOWNHOSTS
 ZPM_ROOTFILE
diff --git a/doc/zpm-log.8 b/doc/zpm-log.8
new file mode 100644 (file)
index 0000000..20b48ff
--- /dev/null
@@ -0,0 +1,72 @@
+.TH zpm-log 8 2019-02-15 "ZPM 0.3"
+.SH NAME
+zpm-log \- manage the zpm log
+.SH SYNOPSIS
+.B zpm log
+[
+.BI -f " pkgfile"
+]
+[
+.BI -t " target"
+]
+[
+.BI -a " action"
+]
+[
+.BI -T " timestamp"
+]
+[
+.B -ijvr
+]
+.RI [ message ...]
+.SH DESCRIPTION
+\fBzpm-log\fR
+prints or inserts into the zpm log, which is stored in the local database,
+or the database given by the \-f option.
+.SH OPTIONS
+.TP
+.B \-f path
+specify the database file where the log is stored.  Defaults to
+$ZPMDB or /var/lib/zpm/local.db
+.TP
+.B \-t target
+Specify the target of the log.  This is generally a package id.
+When listing, this filters the log to only targets that match.
+.TP
+.B \-a action
+Specify the action taken.  This is intended to be stylized for eazy
+machine readability.
+.TP
+.B \-T timestamp
+Specify the timestamp of the log message.  By default the current timestamp
+is used for an insert.  If this option is given when listing log messages,
+it is used as the earliest time logs are listed from.
+.TP
+.B \-i
+Insert the log message given as arguments.  Non option arguments
+are concatenated with a space separator and inserted into the log.
+list package names only
+.TP
+.B \-j
+Output the log in json format.
+.TP
+.B \-v
+Verbose mode.  On insert, print the log message inserted to stdout.
+.TP
+.B \-r
+When listing messages, output them in reverse timestamp order, newest
+first.
+.SH EXAMPLES
+.TP
+.B zpm log
+Lists all log messages in the default database.
+.SH EXIT STATUS
+0 on success non zero on failure
+.SH FILES
+/var/lib/zpm/local.db
+.SH ENVIRONMENT
+ZPMDB
+.SH AUTHOR
+Nathan Wagner
+.SH SEE ALSO
+.BR zpm (8)
diff --git a/doc/zpm-packagehash.8 b/doc/zpm-packagehash.8
new file mode 100644 (file)
index 0000000..4760198
--- /dev/null
@@ -0,0 +1,55 @@
+.TH zpm-packagehash 8 2019-02-14 "ZPM 0.3"
+.SH NAME
+zpm-packagehash \- run packagehash
+.SH SYNOPSIS
+                       case 'f': dbfile = optarg; break;
+                       case 's': set = 1; break;
+                       case 'S': clear = 1; break;
+                       case 'c': check = 1; break;
+                       case 'q': quiet = 1; break;
+                       case 'e': showcurrent = 1; break;
+.B zpm packagehash
+[
+.BI -f " pkgfile"
+]
+[
+.B -sScqe
+]
+.RI [ package ] 
+.SH DESCRIPTION
+\fBzpm-packagehash\fR
+calculates, prints, or sets the hash of a package.  The package must
+be specified as a complete package triple.
+.SH OPTIONS
+.TP
+\-f
+specify the package file to find packages in
+.TP
+\-s
+set the hash after calculating it
+.TP
+\-S
+clear the package hash
+.TP
+\-c
+check the package hash against one given as an additional argument
+.TP
+\-q
+Don't output anything to stdout.
+.TP
+\-e
+Show the current package hash, rather than the calculated one.
+.SH EXAMPLES
+.TP
+zpm packagehash -s -f foo-1.0-1.zpm foo-1.0-1
+Calculate and set the package hash for the foo-1.0-1 package.
+.SH EXIT STATUS
+0 on success non zero on failure
+.SH FILES
+/var/lib/zpm/local.db
+.SH ENVIRONMENT
+ZPMDB
+.SH AUTHOR
+Nathan Wagner
+.SH SEE ALSO
+.BR zpm (8)
diff --git a/doc/zpm-parse.8 b/doc/zpm-parse.8
new file mode 100644 (file)
index 0000000..be40671
--- /dev/null
@@ -0,0 +1,45 @@
+.TH zpm-parse 8 2019-02-14 "ZPM 0.3"
+.SH NAME
+zpm-parse \- parse a package string
+.SH SYNOPSIS
+.B zpm parse
+[
+.B -nvrE
+]
+.I pkgstring
+.SH DESCRIPTION
+\fBzpm-parse\fR
+parses a package string into its components and prints them separated
+by a space to stdout.  By default, it prints the name, version, and
+release.  The default output is equivalent to the -nvr options.
+If a given component is not present, the corresponding field is not
+printed.
+.SH OPTIONS
+.TP
+\-n
+print the name
+.TP
+\-v
+print the version
+.TP
+\-r
+print the release
+.TP
+\-E
+Print the output in a form that can be evaled by a shell.  The
+variable names are "name", "version", and "release".
+.SH EXAMPLES
+.TP
+zpm parse foo-1.0-1
+Prints "foo 1.0 1" to stdout.
+.SH EXIT STATUS
+0 on success non zero if the given string can't be parsed even as
+an incomplete package string.
+.SH FILES
+None.
+.SH ENVIRONMENT
+None.
+.SH AUTHOR
+Nathan Wagner
+.SH SEE ALSO
+.BR zpm (8)
index 4cdb964771f2e8f221338dcca8c5211d027a8193..2d5ac0f8395ac17d71188e5391413831733a9df9 100644 (file)
@@ -1,26 +1,71 @@
-.TH zpm-contents 8 2018-11-30 "ZPM 0.2"
+.TH zpm-repo 8 2018-11-30 "ZPM 0.2"
 .SH NAME
 .SH NAME
-zpm-contents \- list files in a zpm package
+zpm-repo \- manage remote package repositories
 .SH SYNOPSIS
 .SH SYNOPSIS
-.B zpm contents
+.B zpm repo
 [
 [
-.BI -f " pkgfile"
+.BI -R " path"
 ]
 [
 ]
 [
-.I package ...
+.BI -d " path"
 ]
 [
 ]
 [
-.B --
-.I fileglob ...
+.I subcommand ...
 ]
 .SH DESCRIPTION
 ]
 .SH DESCRIPTION
-zpm-contents lists files belonging to any of the given packages,
-or all packages.  Additionally, the list of packages can be
-terminated with '--' and any additional arguments are glob patterns.
+zpm-repo manages remote repositories
+.PP
+zpm-repo operates in several modes: list, add, del(ete), url,
+.SS list
+lists each defined remote repository, along with its priority, url,
+and a unix timestamp of the last time it was refreshed.
+.SS add
+zpm-repo add \fIname url\fR
+.PP
+add a new repository.  The name is arbitrary.
+.SS del
+zpm-repo del \fIname\fR
+.PP
+Delete the named repository.  Also delete any cached packages downloaded
+from this repository.
+.SS url
+zpm-repo url \fIname [ newurl ]\fR
+.PP
+Print or set the url of a given repository.
+.SS pri
+zpm-repo pri \fIname [ newurl ]\fR
+.PP
+Print or set the priority of a given repository.
+.SS fetch
+zpm-repo fetch \fIname downloadargs\fR
+.PP
+download a given package, download is an alias for fetch.
+.SS update
+zpm-repo update \fIname\fR
+.PP
+Update repository metadata.  Pull is an alias for update.
+.SS packages
+zpm-repo packages \fIname\fR
+.PP
+List packages contained in a repo.
+.SS contents
+zpm-repo contents \fIname package\fR
+.PP
+List files contained in a given package of a repo.
+.SS purge
+zpm-repo purge \fIname purgeinfo\fR
+.PP
+Deletes packages from the repository package cache.  Deletes
+all packages if purgeinfo is not given.
 .SH OPTIONS
 .SH OPTIONS
-\-f specify the package file to find packages in
+.TP
+\-R
+specify a root directory for packages
+.TP
+\-d
+specify a zpm database where repository information is stored.
 .SH EXAMPLES
 .SH EXAMPLES
-zpm contents 
+zpm repo 
 .SH EXIT STATUS
 0 on success non zero on failure
 .SH FILES
 .SH EXIT STATUS
 0 on success non zero on failure
 .SH FILES
@@ -30,4 +75,5 @@ ZPMDB
 .SH AUTHOR
 Nathan Wagner
 .SH SEE ALSO
 .SH AUTHOR
 Nathan Wagner
 .SH SEE ALSO
-zpm(8)
+.BR zpm (8)
+.BR zpm-fetchurl (8)
diff --git a/doc/zpm-rmpackage.8 b/doc/zpm-rmpackage.8
new file mode 100644 (file)
index 0000000..cffd87c
--- /dev/null
@@ -0,0 +1,63 @@
+.TH zpm-rmpackage 8 2019-02-15 "ZPM 0.3"
+.SH NAME
+zpm-rmpackage \- remove packages from a database
+.SH SYNOPSIS
+               f) pkgfile="$OPTARG" ;;
+               v) verbose=1 ;;
+               m) message="$OPTARG" ;;
+.B zpm rmpackage
+[
+.BI -f " pkgfile"
+]
+[
+.BI -m " message"
+]
+[
+.B -v
+]
+.RI [ package ...]
+.SH DESCRIPTION
+\fBzpm-rmpackage\fR
+removes packages from a zpm database and logs a message.  This is
+potentially dangerous.  No checking as to the status of the
+package is made, so it is possible to remove a package from the
+database even if it is installed.  This program is intended to
+be run from garbage collection utilities or by package maintainers
+rather than as a normal part of system administration.
+.PP
+Packages to be removed are given as package id arguments, which
+may be abbreviated, and will be looked up via
+.BR zpm-findpkg (8).
+If a package is not found, it is not an error.  A message will
+be printed to stderr in this case if the -v option is given.
+.PP
+A log message will be entered into the zpm log for each package removed with an
+action of 'rmpackage'.
+An optional message to put in the log can be given with the -m option.  
+.SH OPTIONS
+.TP
+.BI \-f path
+specify the package file to find packages in
+.TP
+.BI \-m message
+specify a message for each log message.
+.TP
+.B \-v
+Verbose mode.
+.SH EXAMPLES
+.TP
+.B zpm rmpackage foo
+Removes a foo package as found with zpm-findpkg from the default database.
+.SH EXIT STATUS
+0 on success non zero on failure
+.SH FILES
+/var/lib/zpm/local.db
+.SH ENVIRONMENT
+ZPMDB
+ZPM_PACKAGEFILE
+.SH AUTHOR
+Nathan Wagner
+.SH SEE ALSO
+.BR zpm (8)
+.BR zpm-findpackage (8)
+.BR zpm-log (8)
diff --git a/doc/zpm-script.8 b/doc/zpm-script.8
new file mode 100644 (file)
index 0000000..bf5bbb7
--- /dev/null
@@ -0,0 +1,89 @@
+.TH zpm-script 8 2019-02-15 "ZPM 0.3"
+.SH NAME
+zpm-script \- run, set, or list package scripts
+.SH SYNOPSIS
+.B zpm script
+[
+.B -Fhq
+]
+[
+.BI -f " pkgfile"
+]
+[
+.BI -p " phase"
+]
+[
+.BI -R " rootdir"
+]
+[
+.BI -o " path"
+]
+[
+.BI -S " script"
+]
+.I package
+.SH DESCRIPTION
+\fBzpm-script\fR
+runs, sets, or lists package scripts for a package.  The package is a package
+id, which may be abbreviated.  Despite the name, scripts can be any
+arbitrary program, though they are usually posix shell scripts.
+.PP
+zpm-script runs in one of three modes, run, list, and set.
+.SS Run Mode
+In run mode, a script for a given phase is run if it exists.  It is not
+an error if there is no script for the given package and phase unless
+the \-F option is given.  Standard output from the script will be redirected
+to /var/tmp/zpm-script.out, or as specified by the -o option.
+.PP
+The script itself will be extracted to /var/tmp/zpm-script, set as executable,
+and then run.  The script is run with one or two arguments.  The
+first argument is the package id being installed, removed, or configured.
+For a package version update (or downgrade) the second argument is
+the previous version of the package.
+.TP
+An example script
+.EX
+#!/bin/sh
+
+echo example and test zpm stage script
+echo args: "$*"
+.EE
+.SS Set Mode
+Set mode will set the script for a given package and phase to the
+path given as an additional argument.  If the -h is given, the script
+is interpreted as a hash to be set directly, and nothing is taken
+from the filesystem.
+.SH OPTIONS
+.TP
+.BI \-p phase
+Specify the script phase.  This defaults to all phases for list mode,
+and configure for running or setting scripts.
+.TP
+.B \-f
+specify the package file to find packages in
+.TP
+.B \-h
+When setting a script, the script is taken as a hex encoded hash, rather
+than a path to a script.
+.TP
+.B \-q
+Run quietly.
+.SH EXAMPLES
+.TP
+zpm script -f foo-1.0-1.zpm foo
+Run the configure script for the foo package found in the foo-1.0-1.zpm
+file.
+.TP
+zpm script foo
+Run the configure script for the (most recent) foo package found
+in the local database.
+.SH EXIT STATUS
+0 on success non zero on failure
+.SH FILES
+/var/lib/zpm/local.db
+.SH ENVIRONMENT
+ZPMDB
+.SH AUTHOR
+Nathan Wagner
+.SH SEE ALSO
+.BR zpm (8)
diff --git a/doc/zpm-sign.8 b/doc/zpm-sign.8
new file mode 100644 (file)
index 0000000..7ee2936
--- /dev/null
@@ -0,0 +1,103 @@
+.TH zpm-sign 8 2019-02-15 "ZPM 0.3"
+.SH NAME
+zpm-sign \- manage package signatures
+.SH SYNOPSIS
+.B zpm sign
+[
+.B -hrdsgev
+]
+[
+.BI -f " sigfile"
+]
+[
+.BI -o " outfile"
+]
+[
+.BI -S " sigstring"
+]
+[
+.BI -k " keystring"
+]
+[
+.BI -K " keyfile"
+]
+[
+.BI -p " passphrase"
+]
+[
+.BI -m " messagestring"
+]
+.RI [ file ]
+.SH DESCRIPTION
+\fBzpm-sign\fR
+manages signatures on zpm packages.  It can generate signing keys,
+sign files, and verify signatures.  The ed25519 algorithms are
+used exclusively, and all the signature code is taken from the
+ref10 implementation.  Signatures themselves are hex encoded
+representions of the signature metadata and the actual signature value.
+.PP
+Private keys are potentially encrypted with chacha20 before storing
+them on disk.
+.SH OPTIONS
+.B -r
+.TP
+.B \-g
+Generate a private key
+.TP
+.B \-e
+Extract a public key from a private key.
+.TP
+.B \-s
+Sign a file or message.  In addition to the message to be signed,
+signature metadata is signed.
+.TP
+.B \-v
+Verify a signature on a file or message.
+.TP
+.B \-h
+hexencode values
+.TP
+.B \-d
+Increase the debug level.  May be given more than once.
+.TP
+.B \-r
+Output the raw signature, rather than a full zpm certificate.
+This also just signs the data given, without any signature
+metadata.
+.TP
+.BI \-p passphrase
+Specify a passphrase to decrypt a private key.
+.TP
+.BI \-m message
+Specify a message to be signed or verified.  If not set with the -m option, the
+message is taken from file named with the first non-option argument.
+.TP
+.BI \-k path
+Take the private key for message signing from the path given.  This
+defaults to ~/.zpm/key.  If ~/.zpm/key is not found and the euid
+is root, /var/lib/zpm/key is tried.
+.TP
+.BI \-K key
+Take the private key from the command line argument.  This is not
+particularly secure and is primarily intended for testing.
+.TP
+.BI \-S sigstring
+Use sigstring as the signature to verify.
+.TP
+.BI \-m message
+Specify a message to be signed or verified.  If not set with the -m option, the
+message is taken from file named with the first non-option argument.
+.SH EXAMPLES
+.TP
+.B zpm sign
+lists all files in the local database
+.SH EXIT STATUS
+0 on success non zero on failure
+.SH FILES
+/var/lib/zpm/local.db
+.SH ENVIRONMENT
+ZPMDB
+.SH AUTHOR
+Nathan Wagner
+.SH SEE ALSO
+.BR zpm (8)
diff --git a/doc/zpm-soname.8 b/doc/zpm-soname.8
new file mode 100644 (file)
index 0000000..2ed9ba9
--- /dev/null
@@ -0,0 +1,60 @@
+.TH zpm-soname 8 2019-02-14 "ZPM 0.4"
+.SH NAME
+zpm-soname \- list the soname of an elf library
+.SH SYNOPSIS
+.B zpm soname \fR[\fB-l\fR] \fIpath\fR
+.SH DESCRIPTION
+\fBzpm-soname\fR prints to stdout the soname, if any, of a given path.
+.SH OPTIONS
+.TP
+\-l
+Don't follow symlinks.  If the path is a symlink, this will cause the program
+to exit with status 1.
+.SH EXAMPLES
+.PP
+.nf
+zpm-soname /lib/libc.so
+.fi
+.SH EXIT STATUS
+.TP
+0
+if the file had an soname
+.TP
+1
+file is not a regular file, or unable to stat, no file given, or other file
+error
+.TP
+2
+unable map file to read elf info
+.TP
+3
+file is not an elf file
+.TP
+4
+file is not an dynamic library file
+.TP
+5
+unable to determine 64 or 32 bit elf file
+.TP
+6
+unable to determine endianness
+.TP
+8
+File has no string table
+.TP
+9
+File has no dynamic section
+.TP
+10
+File has no dynamic table
+.TP
+11
+No soname found in dynamic table
+.SH FILES
+None
+.SH ENVIRONMENT
+None
+.SH AUTHOR
+Nathan Wagner
+.SH SEE ALSO
+zpm(8)
diff --git a/doc/zpm-stat.8 b/doc/zpm-stat.8
new file mode 100644 (file)
index 0000000..8b26d87
--- /dev/null
@@ -0,0 +1,55 @@
+.TH zpm-stat 8 2019-02-14 "ZPM 0.3"
+.SH NAME
+zpm-stat \- run stat
+.SH SYNOPSIS
+.B zpm stat
+[
+.BI -f " format"
+]
+[
+.BI -t " timeformat"
+]
+[
+.B -l
+]
+.RI [ path ...]
+.SH DESCRIPTION
+\fBzpm-stat\fR
+prints information from stat(2) to stdout.  This program is needed because the
+output from stat(1) is not specified by posix and thus can't be portably parsed
+by shell scripts.  Thus zpm-stat provides a consistent interface for zpm
+scripts to use.
+.SH OPTIONS
+.TP
+\-f \fIformat\fR
+Specify an output format.  Format strings are printf style strings,
+where conversions are specified beginning with a % character, and %%
+is used to output a literal %.  %z will output a zero byte.  \\n and \\t
+escape sequences are also recognized.  Any other character preceeded
+by a \\ will be output as is.
+.IP
+Available format conversions are:
+y = mtime, s = file size, a = mode in octal, t = a file type string,
+u = numeric user id, U = username, g = numeric group id, G = groupname,
+and n = file name.
+.TP
+\-t \fIformat\fR
+When outputting mtime, pass the given format to strftime.  The default
+time format is "%s".
+.TP
+\-l
+Use lstat instead of stat.  That is, don't follow symlinks.
+.SH EXAMPLES
+.TP
+zpm stat /etc/passwd
+print the mtime of /etc/passwd in decimal to stdout.
+.SH EXIT STATUS
+0 on success non zero on failure
+.SH FILES
+None.
+.SH ENVIRONMENT
+None.
+.SH AUTHOR
+Nathan Wagner
+.SH SEE ALSO
+.BR zpm (8)
diff --git a/doc/zpm-test.8 b/doc/zpm-test.8
new file mode 100644 (file)
index 0000000..5ca373f
--- /dev/null
@@ -0,0 +1,34 @@
+.TH zpm-test 8 2019-02-14 "ZPM 0.3"
+.SH NAME
+zpm-test \- check whether files are zpm databases
+.SH SYNOPSIS
+.B zpm test
+[
+.B -v
+]
+.RI [ path ...]
+.SH DESCRIPTION
+\fBzpm-test\fR
+checks its arguments and returns success if all arguments are zpm databases.
+No check on the schema is performed, a file is considered valid if it is an
+sqlite3 database file with an application id of 0x5A504442 (decimal
+1515209794).
+.SH OPTIONS
+.TP
+\-v
+prints an error message to stderr if a package is not a zpm
+database file.
+.SH EXAMPLES
+.TP
+zpm test foo-1.0-1.zpm
+checks foo-1.0-1.zpm for validity.
+.SH EXIT STATUS
+0 on success non zero on failure
+.SH FILES
+None.
+.SH ENVIRONMENT
+None.
+.SH AUTHOR
+Nathan Wagner
+.SH SEE ALSO
+.BR zpm (8)
index 301ef6035f90e639600c835e022478e889071880..4f10ca6037f6bed57e28ec62dad11a925d006b1c 100644 (file)
@@ -9,14 +9,6 @@ zpm-update \- update set of installed packages
 [
 .B -LAOUnzvpSC
 ]
 [
 .B -LAOUnzvpSC
 ]
-               d) localdb="$OPTARG" ;;
-               P) packagepath="$OPTARG" ;;
-               D) packagepath="$OPTARG:$packagepath" ;;
-               R) rootdir="$OPTARG" ;;
-
-               b) backup=1 ;;
-               B) backup=0 ;;
-               l) justlist=1 ;;
 .RI [ \fB[+|-]\fIpackage ...]
 .SH DESCRIPTION
 \fBzpm-update\fR changes the set of installed packages.
 .RI [ \fB[+|-]\fIpackage ...]
 .SH DESCRIPTION
 \fBzpm-update\fR changes the set of installed packages.
@@ -46,6 +38,10 @@ In other words, all of the packages given are updated, removed, installed at
 the same time, rather than taking each package one at a time and installing,
 updating, or removing it.  If the admin wants to do the packages one at a time,
 zpm-update can be run multiple times.
 the same time, rather than taking each package one at a time and installing,
 updating, or removing it.  If the admin wants to do the packages one at a time,
 zpm-update can be run multiple times.
+.PP
+Either the package update process, or package scripts may
+put notes in the database with information for the sysadmin.
+zpm-note should be run after updates to check for these.
 .SS Package Search
 Packages will be searched for in *.repo files, the local database, and
 in individual zpm package files.  These are looked for by default
 .SS Package Search
 Packages will be searched for in *.repo files, the local database, and
 in individual zpm package files.  These are looked for by default
diff --git a/doc/zpm-verify.8 b/doc/zpm-verify.8
new file mode 100644 (file)
index 0000000..80a3dc4
--- /dev/null
@@ -0,0 +1,32 @@
+.TH zpm-verify 8 2019-02-15 "ZPM 0.3"
+.SH NAME
+zpm-verify \- verify installed packages
+.SH SYNOPSIS
+.B zpm verify
+[
+.BI -f " pkgfile"
+]
+.RI [ package ...]
+.SH DESCRIPTION
+\fBzpm-verify\fR
+Will check installed files against the metadata recorded in the
+local database.  For each package given, file size, permissions,
+ownership, and content will be checked.
+.SH OPTIONS
+.TP
+.BI \-f path
+specify the package file to find package metadata in
+.SH EXAMPLES
+.TP
+.B zpm verify less-543-1
+Check the less-543-1 package.
+.SH EXIT STATUS
+0 on success non zero on failure
+.SH FILES
+/var/lib/zpm/local.db
+.SH ENVIRONMENT
+ZPMDB
+.SH AUTHOR
+Nathan Wagner
+.SH SEE ALSO
+.BR zpm (8)
index cb36c21f0e76580097fc312c9099e1bd8c4dc687..c62ed61bf42ac8642c4b338a0f334170e86e2490 100644 (file)
--- a/doc/zpm.8
+++ b/doc/zpm.8
@@ -1,4 +1,4 @@
-.TH zpm 8 2018-12-07 "ZPM 0.3"
+.TH zpm 8 2019-02-15 "ZPM 0.3"
 .SH NAME
 zpm \- the ultimate package manager
 .SH SYNOPSIS
 .SH NAME
 zpm \- the ultimate package manager
 .SH SYNOPSIS
@@ -48,11 +48,20 @@ Public keys are put into a trust db at /var/lib/zpm/trustdb
 (or $ZPMTRUSTDB, or ~/.zpm/trustdb, or via command line).
 .PP
 zpm-checksignature -t trustdbfile 
 (or $ZPMTRUSTDB, or ~/.zpm/trustdb, or via command line).
 .PP
 zpm-checksignature -t trustdbfile 
+.SS Library Handling
+ZPM understands ELF files, and will automatically calculate elf library
+dependencies.
 .SH OPTIONS
 \-P \fIpath\fR sets a path to the sub-command executables
 .SH EXAMPLES
 .B zpm init \fIpkgfile\fR
 .B zpm list \fIpkgfile\fR
 .SH OPTIONS
 \-P \fIpath\fR sets a path to the sub-command executables
 .SH EXAMPLES
 .B zpm init \fIpkgfile\fR
 .B zpm list \fIpkgfile\fR
+.SH GLOSSARY
+.TP
+default database
+Many commands take a database to work on.  If not specified via a command
+line option, a path to the database is taken from the ZPMDB environment
+variable of, if that is not set, /var/lib/zpm/local.db is used.
 .SH EXIT STATUS
 0 on success non zero on failure
 .SH FILES
 .SH EXIT STATUS
 0 on success non zero on failure
 .SH FILES
@@ -90,8 +99,7 @@ ZPM itself is in the public domain.  Compiled programs themselves
 likely contain code from the C library and are subject to any licensing
 requirements that implies.  Where possible, programs have been statically
 linked with musl rather than glibc, since glibc doesn't actually support
 likely contain code from the C library and are subject to any licensing
 requirements that implies.  Where possible, programs have been statically
 linked with musl rather than glibc, since glibc doesn't actually support
-static linking.  See https://git.musl-libc.org/cgit/musl/tree/COPYRIGHT for
-the musl copyright.
+static linking.  For the musl copyright see https://git.musl-libc.org/cgit/musl/tree/COPYRIGHT.
 .SH SEE ALSO
 .BR zpm-contents (8)
 .BR zpm-list (8)
 .SH SEE ALSO
 .BR zpm-contents (8)
 .BR zpm-list (8)
@@ -100,3 +108,18 @@ the musl copyright.
 .BR zpm-quote (8)
 .BR zpm-hash (8)
 .BR zpm-fetchurl (8)
 .BR zpm-quote (8)
 .BR zpm-hash (8)
 .BR zpm-fetchurl (8)
+.BR zpm-soname (8)
+.BR zpm-soneed (8)
+.BR zpm-elftype (8)
+.BR zpm-merge (8)
+.BR zpm-shell (8)
+.BR zpm-extract (8)
+.BR zpm-init (8)
+.BR zpm-sign (8)
+.BR zpm-verify (8)
+.BR zpm-parse (8)
+.BR zpm-test (8)
+.BR zpm-stat (8)
+.BR zpm-log (8)
+.BR zpm-rmpackage (8)
+.BR zpm-packagehash (8)
index b8cb9d767cb906746aae7f4bc78626360f2dee18..d9f5aa115a8985ab24beaffc8cc58f50f63254e8 100644 (file)
@@ -60,7 +60,8 @@ char *format_string_parse(char *s, struct format_string *f) {
        return s;
 }
 
        return s;
 }
 
-void stat_one(char *fmt, char *timefmt, char *filename, struct stat *buf) {
+void stat_one(char *fmt, char *timefmt, int zeroterm, char *filename, struct
+               stat *buf) {
        struct tm *tm;
        char timestr[1024];
        struct format_string f;
        struct tm *tm;
        char timestr[1024];
        struct format_string f;
@@ -71,6 +72,21 @@ void stat_one(char *fmt, char *timefmt, char *filename, struct stat *buf) {
                fmt = format_string_parse(fmt, &f);
                if (!f.found) break; /* done */
                if (!f.flags) {
                fmt = format_string_parse(fmt, &f);
                if (!f.found) break; /* done */
                if (!f.flags) {
+                       if (f.found == '\\') {
+                               switch (*fmt) {
+                                       case 0:
+                                               continue; break;
+                                       case 'n':
+                                               putchar('\n'); break;
+                                       case 't':
+                                               putchar('\t'); break;
+                                       default:
+                                               putchar(*fmt);
+                                               break;
+                               }
+                               fmt++;
+                               continue;
+                       }
                        /* literal/noformat */
                        putchar(f.found); /* or whatever */
                        continue;
                        /* literal/noformat */
                        putchar(f.found); /* or whatever */
                        continue;
@@ -126,6 +142,8 @@ void stat_one(char *fmt, char *timefmt, char *filename, struct stat *buf) {
                        case 'n':
                                printf("%s", filename);
                                break;
                        case 'n':
                                printf("%s", filename);
                                break;
+                       case 'z':
+                               putchar(0); break;
                        case '%':
                                putchar('%');
                                break;
                        case '%':
                                putchar('%');
                                break;
@@ -134,7 +152,15 @@ void stat_one(char *fmt, char *timefmt, char *filename, struct stat *buf) {
                                break;
                }
        }
                                break;
                }
        }
-       putchar('\n');
+       if (zeroterm & 2) {
+               return;
+       }
+
+       if (zeroterm & 1 ) {
+               putchar(0);
+       } else {
+               putchar('\n');
+       }
 }
 
 int main(int ac, char *av[]) {
 }
 
 int main(int ac, char *av[]) {
@@ -143,8 +169,9 @@ int main(int ac, char *av[]) {
        int errflg = 0;
        int c;
        int uselstat = 0;
        int errflg = 0;
        int c;
        int uselstat = 0;
+       int zeroterm = 0;
 
 
-       while ((c = getopt(ac, av, "lf:t:")) != -1) {
+       while ((c = getopt(ac, av, "lf:t:0")) != -1) {
                switch(c) {
                        case 'f':
                                fmt = optarg;
                switch(c) {
                        case 'f':
                                fmt = optarg;
@@ -157,6 +184,11 @@ int main(int ac, char *av[]) {
                                "Option -%c requires an operand\n", optopt);
                                errflg++;
                                break;
                                "Option -%c requires an operand\n", optopt);
                                errflg++;
                                break;
+                       case 'z':
+                               zeroterm |= 2;
+                       case '0':
+                               zeroterm |= 1;
+                               break;
                        case 'l':
                                uselstat = 1;
                                break;
                        case 'l':
                                uselstat = 1;
                                break;
@@ -177,7 +209,7 @@ int main(int ac, char *av[]) {
                } else {
                        stat(av[optind], &buf);
                }
                } else {
                        stat(av[optind], &buf);
                }
-               stat_one(fmt, timefmt, av[optind], &buf);
+               stat_one(fmt, timefmt, zeroterm, av[optind], &buf);
        }
        return 0;
 }
        }
        return 0;
 }