.TH "PACDEF" "8" "2024\-04\-13" "pacdef v1\&.6\&.0" "Pacdef Manual" .SH NAME pacdef \(em multi-backend declarative package manager .SH SYNOPSIS \fIpacdef\fR ... . .SH DESCRIPTION Pacdef allows the user to have consistent packages among multiple Linux machines and different backends by managing packages in group files. The idea is that (1) any package in the group files ("managed packages") will be installed explicitly, and (2) explicitly installed packages not found in any of the group files ("unmanaged packages") will be removed. The group files are maintained outside of pacdef by any VCS, like git. Pacdef manages multiple package groups (group files) that, e.g., may be tied to a specific use-case. Each group has one or more sections which correspond to a specific backend, like your system's package manager (pacman, apt, ...), or your programming languages package manger (cargo, pip, ...). Each section contains one or more packages that can be installed respective package manager. .SH CONFIGURATION Configure pacdef in its config file. See .BR pacdef.yaml(5). .SS GROUP FILE SYNTAX Group files loosely follow the syntax for ini-files. 1. Sections begin by their name in brackets. .br 2. One package per line. .br 3. Anything after a # is ignored. .br 4. Empty lines are ignored. .br 5. If a package exists in multiple repositories, the repo can be specified as prefix followed by a forward slash. The package manager must understand this notation. .SH SUBCOMMANDS The main subcommands are 'group', 'package' and 'version'. ... .RS 4 All actions related to managing groups. .sp [...] .RS 4 edit the content of an existing group .RE . .sp [] [...] .RS 4 Export non-symlink groups by moving and re-importing them. By default, the output path is the current workdir. The file path relative to the group base dir will be replicated under the output directory. If a specified group is not a symlink, pacdef will return an error. .sp -f|--force .RS 4 Overwrite the output file if it exists. .RE .sp -o|--output .RS 4 The output dir to use instead of the current workdir. The dir must exist. .RE .RE . .sp [...] .RS 4 import a new group file or group dir structure .RE .sp .RS 4 show the sorted names of all imported groups .RE .sp [args] [...] .RS 4 create a new group file .sp -e|--edit .RS 4 After creating the files, open them in your configured editor as configured in $EDITOR or $VISUAL. .RE .RE .sp [...] .RS 4 remove group file. \fBWARNING\fR: If the group file is not a symlink, you wil loose the file! . .RE .sp [...] .RS 4 show content of a group file .RE .RE ... .RS 4 All actions related to packages. .sp [args] .RS 4 remove unmanaged packages .sp --noconfirm .RS 4 do not ask for confirmation .RE .RE . .sp .RS 4 for each unmanaged package interactively decide what to do .RE .sp .RS 4 show packages that match the regular expression. .RE .sp [args] .RS 4 install managed packages --noconfirm .RS 4 see 'clean' .RE .RE .sp .RS 4 show unmanaged packages .RE .RE .sp version .RS 4 Show version information (including git revision if it was build from git) and supported backends. .RE .SH EXIT STATUS Pacdef exits with status 0 on success, 1 if an error occurs (e.g. package search did not yield any package), and 2 if invalid command line options were specified. .SH BUGS File bugs and feature requests under https://github.com/steven-omaha/pacdef/issues. .SH AUTHORS Mostly 'steven-omaha'. Contributors under https://github.com/steven-omaha/pacdef/graphs/contributors. .SH SEE ALSO .BR pacdef.yaml(5)