Commands
This is a shortform list of every command and optional flag for pacstall
. Below this list you will find further explanations for each of the commands and optional flags, as well as for environment variables.
# Overview
pacstall [-h] {-I,-S,-R,-D,-A,-Rr,-U,-L,-Up,-Qa,-Sd,-Si,-Ci,-T,-V} [-P] [-K] [-B] [-Nc] [-Q] [-Ns]
# Commands
-I, --install [package]
~> Install a package.
-S, --search [package]
~> Search for a package.
-R, --remove [package]
~> Remove a package.
-D, --download [package]
~> Download a pacscript.
-A, --add-repo [repo]
~> Add a repository.
-Rr, --remove-repo [repo]
~> Remove a repository.
-U, --update [user] [branch]
~> Update Pacstall.
-L, --list
~> List all installed packages.
-Up, --upgrade
~> Upgrade all installed packages.
-Qa, --quality-assurance [package]#[number]
~> Test a package PR from downstream. Optional: @[provider]:[owner]/[repo]
-Sd, --search-description [package]
~> Search for a package or description keyword.
-Si, --search-info [package]
~> Query information about a remote package.
-Ci, --cache-info [package]
~> Query information about an installed package.
-T, --tree [package]
~> Display a tree graph of an installed package.
-V, --version
~> Display the version number.
-h, --help
~> Display this help message.
# Options
-P, --disable-prompts
~> Disable prompts.
-K, --keep
~> Keep the build files.
-B, --build-only
~> Build the deb but do not install.
-Nc, --nocheck
~> Skip the check() function if present.
-Q, --quiet
~> Download package entries quietly.
-Ns, --nosandbox
~> Build the package without bwrap.
Commands
-h
, --help
Show the help message and exit.
-I
, --install
Installs a given package from a repository, or a pacscript. The -I
flag has the ability to install packages from the following repository providers: github:
, gitlab:
, sourcehut:
, codeberg:
. Other git providers may use a direct link. These must be added beforehand to the repository list with -A/--add-repo
. If multiple repositories are enabled, pacstall
will default to pacstall/pacstall-programs
, but you can still choose to install from another repository. You can also specify a local pacscript by including the .pacscript
suffix. The following are valid examples of the -I
flag:
$ pacstall -I neofetch # Install neofetch
$ pacstall -I "alacritty@github:user/reponame" # Install alacritty from https://github.com/user/reponame
$ pacstall -I "alacritty@https://raw.githubusercontent.com/user/reponame/master" # Install alacritty from the raw link
$ pacstall -I "alacritty@myrepo" # Install alacritty from the @myrepo alias
$ pacstall -I neofetch.pacscript # Install neofetch from local pacscript
$ pacstall -I ${parent}:pkgbase # Install all pkgnames in the pkgbase named parent
$ pacstall -I ${parent}:${child} # Install only the pkgname child from the pkgbase parent
$ pacstall -I package.pacscript:${child} # Install only the pkgname child from a local split package
-R
, --remove
Removes a given package from the system. For example:
$ pacstall -R neofetch
-S
, --search
Searches for a given package from all available repositories. A clickable hyperlink to the repositories containing the packages is displayed in VTE terminals. Other repositories can be added using the -A
flag. To search in a specific repository, use the @
separator.
$ pacstall -S -git # search for all git packages
$ pacstall -S "-bin@github:user/reponame" # search for all binary packages from https://github.com/user/reponame
-Sd
, --search-description
Like search, but both displays descriptions on output, and searches through descriptions upon the query. To do a case-sensitive search, use quotes within quotes ("''"
or '""'
).
$ pacstall -Sd browser # search for all packages which have browser in their name or description
$ pacstall -Sd "'Browser'" # search for all packages which have Browser in their description
-Si
, --search-info
Display metadata (SRCINFO) of a remote package. Only accepts real package names.
$ pacstall -Si neofetch # Search neofetch info
$ pacstall -Si "alacritty@github:user/reponame" # Search alacritty info from https://github.com/user/reponame
$ pacstall -Si "alacritty@https://raw.githubusercontent.com/user/reponame/master" # Search alacritty info from the raw link
$ pacstall -Si ${parent}:pkgbase # Search all pkgnames in the pkgbase named parent
$ pacstall -Si ${parent}:${child} # Search only the pkgname child from the pkgbase parent
-A
, --add-repo
Add a given repository to pacstall
. If a plain GitHub or GitLab link is given without a branch, pacstall
will default to master
, but you can specify a branch. Local repositories are also supported, which can be useful for testing pacscripts without pushing remotely, having a portable repository on a USB stick, custom/private applications, etc. Additionally, an alias can optionally be linked to an added repository, so that it is easier to search and install from. See here for information on how this is stored.
The following commands are valid ways to add a repository:
$ pacstall -A https://github.com/user/repo
$ pacstall -A https://github.com/user/repo/tree/branch
$ pacstall -A github:user/repo
$ pacstall -A github:user/repo#branch
$ pacstall -A github:user/repo @alias
$ pacstall -A https://gitlab.com/user/repo
$ pacstall -A https://gitlab.com/user/repo/-/tree/branch
$ pacstall -A https://raw.githubusercontent.com/user/repo/master
$ pacstall -A https://gitlab.com/user/repo/-/raw/master @myrepo
$ pacstall -A gitlab:user/repo
$ pacstall -A gitlab:user/repo#branch
$ pacstall -A sourcehut:user/repo
$ pacstall -A sourcehut:user/repo#branch
$ pacstall -A codeberg:user/repo
$ pacstall -A codeberg:user/repo#branch
$ pacstall -A file:///home/user/local-repository
$ pacstall -A /home/user/local-repository
$ pacstall -A local:/home/user/local-repository
$ pacstall -A https://myonlinerepository.com/directory_containing_packagelist @myrepo
-Rr
, --remove-repo
Remove a given repository from pacstall
. See -A
, --add-repo
for syntax usage, swapping -A
with -Rr
. Passing just an alias can also prompt it to be removed:
$ pacstall -Rr @myrepo
-U
, --update
Updates pacstall
and needed scripts. Arguments to this flag are as follows: The first flag is the username, while the second flag is the branch. The second argument is optional as long as the first argument is given; however, both the first and second arguments are optional together. If no argument for the branch is given, it will default to master
. See here for information on how this is stored.
When updating to a specific repository, the arguments used will be saved so that the next time the -U
flag is used, if no arguments are given, pacstall
will update through the same user and branch. If there is a typo in the username or branch, pacstall
will not update, and your current state will not be touched. You may also replace the username and branch arguments with a .
to update from a local Pacstall repository.
The following are valid examples:
$ pacstall -U pacstall develop # This will update pacstall from https://github.com/pacstall/pacstall/tree/develop
$ pacstall -U pacstall:develop # This will update pacstall from https://github.com/pacstall/pacstall/tree/develop
$ pacstall -U # This will update pacstall from https://github.com/pacstall/pacstall/tree/develop, because the previous arguments were saved
$ pacstall -U user # This will update pacstall from https://github.com/user/pacstall/tree/master
$ pacstall -U . # This will update pacstall from a local Pacstall repository
-Up
, --upgrade
Upgrade packages that have a newer version.
-L
, --list
List installed packages.
-T
, --tree
Display a tree graph of a package.
-V
, --version
Lists pacstall
version and name.
-D
, --download
Download pacscript to the current directory. You can specify an arbitrary repository like so:
$ pacstall -D neofetch@github:user/reponame # This downloads the neofetch pacscript from https://github.com/user/reponame
-Ci
, --cache-info
Display metadata of an installed package. Supply a key from the output to get its value, or no key to get all values. If a key has spaces in it, replace them with an underscore. For example:
$ pacstall -Ci neofetch install_type
$ pacstall -Ci alacritty
-Qa
, --quality-assurance
Test a package from a PR downstream before it is merged. Used like:
$ pacstall -Qa firefox-bin#5853
$ pacstall -Qa firefox-bin#5853@github:pacstall/pacstall-programs
$ pacstall -Qa firefox-bin@github:pacstall/pacstall-programs#5853
Where the package
is given first, followed by the pull request NUM
, separated by a #
. Optionally, a metalink
separated by a @
may be provided before or after the #NUM
. The metalink
is broken down into three parts: provider
, owner
, and repo
. The owner
should be the owner of the repository the PR is being merged into, not the user who created the PR. No other flags should be provided to this command.
Options
-P
, --disable-prompts
Add this flag alongside other commands to disable prompts and accept all defaults. For example:
$ pacstall -PR neofetch
-K
, --keep
Add this flag alongside -I
and -Up
to keep the build of a package if the build process fails or succeeds.
-B
, --build-only
Add this flag alongside -I
and -Up
to just build the deb, and not install.
-Q
, --quiet
Add this flag alongside -I
and -Up
to silence downloading.
-Nc
, --nocheck
Add this flag alongside -I
and -Up
to skip the check() function when building.
-Ns
, --nosandbox
Add this flag alongside -I
and -Up
to build without bwrap
. This flag should be used with caution, and can lead to potential unwanted harm on a system. It is intended for use in environments such as chroot
, which have other levels of isolation.
Environment
DISABLE_PROMPTS
Equivalent of the -P
flag.
PACSTALL_SUPPRESS_SOLUTIONS
Set this to remove suggestions given by Pacstall to fix problems.
PACSTALL_BUILD_CORES
Set this to an integer to override the nproc
command and ${NCPU}
variable in any Pacscript.
PACSTALL_EDITOR
Sets the editor used by Pacstall.
PACSTALL_DOWNLOADER
Sets the downloading tool used. Can be set to axel
, wget
, quiet-wget
, or curl
.
PACSTALL_PAYLOAD
Sets the path to a pre-downloaded package archive. Provide multiple paths in a single string by separating with ;:
.
NO_COLOR
Turns off all colors.