AHRIMAN(1)

NAME
ahriman

SYNOPSIS
ahriman [-h] [-a ARCHITECTURE] [-c CONFIGURATION] [--force] [-l LOCK] [--log-handler {console,syslog,journald}] [--report | --no-report] [-q] [--unsafe] [-V] {aur-search,search,help,help-commands-unsafe,help-updates,help-version,version,package-add,add,package-update,package-remove,remove,package-status,status,package-status-remove,package-status-update,status-update,patch-add,patch-list,patch-remove,patch-set-add,repo-backup,repo-check,check,repo-create-keyring,repo-create-mirrorlist,repo-daemon,daemon,repo-rebuild,rebuild,repo-remove-unknown,remove-unknown,repo-report,report,repo-restore,repo-sign,sign,repo-status-update,repo-sync,sync,repo-tree,repo-triggers,repo-update,update,service-clean,clean,repo-clean,service-config,config,repo-config,service-config-validate,config-validate,repo-config-validate,service-key-import,key-import,service-setup,init,repo-init,repo-setup,setup,service-shell,shell,user-add,user-list,user-remove,web} ...

DESCRIPTION
ArcH linux ReposItory MANager

OPTIONS

-a ARCHITECTURE, --architecture ARCHITECTURE
    target architectures. For several subcommands it can be used multiple times

-c CONFIGURATION, --configuration CONFIGURATION
    configuration path

--force
    force run, remove file lock

-l LOCK, --lock LOCK
    lock file

--log-handler {console,syslog,journald}
    explicit log handler specification. If none set, the handler will be guessed from environment

--report, --no-report
    force enable or disable reporting to web service

-q, --quiet
    force disable any logging

--unsafe
    allow to run ahriman as non-ahriman user. Some actions might be unavailable

-V, --version
    show program's version number and exit

COMMAND

ahriman aur-search
    search for package

ahriman help
    show help message

ahriman help-commands-unsafe
    list unsafe commands

ahriman help-updates
    check for service updates

ahriman help-version
    application version

ahriman package-add
    add package

ahriman package-remove
    remove package

ahriman package-status
    get package status

ahriman package-status-remove
    remove package status

ahriman package-status-update
    update package status

ahriman patch-add
    add patch for PKGBUILD function

ahriman patch-list
    list patch sets

ahriman patch-remove
    remove patch set

ahriman patch-set-add
    add patch set

ahriman repo-backup
    backup repository data

ahriman repo-check
    check for updates

ahriman repo-create-keyring
    create keyring package

ahriman repo-create-mirrorlist
    create mirrorlist package

ahriman repo-daemon
    run application as daemon

ahriman repo-rebuild
    rebuild repository

ahriman repo-remove-unknown
    remove unknown packages

ahriman repo-report
    generate report

ahriman repo-restore
    restore repository data

ahriman repo-sign
    sign packages

ahriman repo-status-update
    update repository status

ahriman repo-sync
    sync repository

ahriman repo-tree
    dump repository tree

ahriman repo-triggers
    run triggers

ahriman repo-update
    update packages

ahriman service-clean
    clean local caches

ahriman service-config
    dump configuration

ahriman service-config-validate
    validate system configuration

ahriman service-key-import
    import PGP key

ahriman service-setup
    initial service configuration

ahriman service-shell
    invoke python shell

ahriman user-add
    create or update user

ahriman user-list
    user known users and their access

ahriman user-remove
    remove user

ahriman web
    web server

COMMAND 'ahriman aur-search'
usage: ahriman aur-search [-h] [-e] [--info | --no-info]
                        [--sort-by {description,first_submitted,id,last_modified,maintainer,name,num_votes,out_of_date,package_base,package_base_id,popularity,repository,submitter,url,url_path,version}]
                        search [search ...] search for package in AUR using API

search
    search terms, can be specified multiple times, the result will match all terms

OPTIONS 'ahriman aur-search'

-e, --exit-code
    return non-zero exit status if result is empty

--info, --no-info
    show additional package information

--sort-by {description,first_submitted,id,last_modified,maintainer,name,num_votes,out_of_date,package_base,package_base_id,popularity,repository,submitter,url,url_path,version}
    sort field by this field. In case if two packages have the same value of the specified field, they will be always sorted by name

COMMAND 'ahriman help'
usage: ahriman help [-h] [command] show help message for application or command and exit

command
    show help message for specific command

COMMAND 'ahriman help-commands-unsafe'
usage: ahriman help-commands-unsafe [-h] [command ...] list unsafe commands as defined in default args

command
    instead of showing commands, just test command line for unsafe subcommand and return 0 in case if command is safe and 1 otherwise

COMMAND 'ahriman help-updates'
usage: ahriman help-updates [-h] [-e] request AUR for current version and compare with current service version

OPTIONS 'ahriman help-updates'

-e, --exit-code
    return non-zero exit code if updates available

COMMAND 'ahriman help-version'
usage: ahriman help-version [-h] print application and its dependencies versions

COMMAND 'ahriman package-add'
usage: ahriman package-add [-h] [--dependencies | --no-dependencies] [-e] [-n] [-y]
                        [-s {auto,archive,aur,directory,local,remote,repository}] [-u USERNAME]
                        package [package ...] add existing or new package to the build queue

package
    package source (base name, path to local files, remote URL)

OPTIONS 'ahriman package-add'

--dependencies, --no-dependencies
    process missing package dependencies

-e, --exit-code
    return non-zero exit status if result is empty

-n, --now
    run update function after

-y, --refresh
    download fresh package databases from the mirror before actions, -yy to force refresh even if up to date

-s {auto,archive,aur,directory,local,remote,repository}, --source {auto,archive,aur,directory,local,remote,repository}
    explicitly specify the package source for this command

-u USERNAME, --username USERNAME
    build as user

COMMAND 'ahriman package-remove'
usage: ahriman package-remove [-h] package [package ...] remove package from the repository

package
    package name or base

COMMAND 'ahriman package-status'
usage: ahriman package-status [-h] [--ahriman] [-e] [--info | --no-info] [-s {unknown,pending,building,failed,success}]
                        [package ...] request status of the package

package
    filter status by package base

OPTIONS 'ahriman package-status'

--ahriman
    get service status itself

-e, --exit-code
    return non-zero exit status if result is empty

--info, --no-info
    show additional package information

-s {unknown,pending,building,failed,success}, --status {unknown,pending,building,failed,success}
    filter packages by status

COMMAND 'ahriman package-status-remove'
usage: ahriman package-status-remove [-h] package [package ...] remove the package from the status page

package
    remove specified packages from status page

COMMAND 'ahriman package-status-update'
usage: ahriman package-status-update [-h] [-s {unknown,pending,building,failed,success}] [package ...] update package status on the status page

package
    set status for specified packages. If no packages supplied, service status will be updated

OPTIONS 'ahriman package-status-update'

-s {unknown,pending,building,failed,success}, --status {unknown,pending,building,failed,success}
    new package build status

COMMAND 'ahriman patch-add'
usage: ahriman patch-add [-h] package variable [patch] create or update patched PKGBUILD function or variable

package
    package base

variable
    PKGBUILD variable or function name. If variable is a function, it must end with ()

patch
    path to file which contains function or variable value. If not set, the value will be read from stdin

COMMAND 'ahriman patch-list'
usage: ahriman patch-list [-h] [-e] [-v VARIABLE] [package] list available patches for the package

package
    package base

OPTIONS 'ahriman patch-list'

-e, --exit-code
    return non-zero exit status if result is empty

-v VARIABLE, --variable VARIABLE
    if set, show only patches for specified PKGBUILD variables

COMMAND 'ahriman patch-remove'
usage: ahriman patch-remove [-h] [-v VARIABLE] package remove patches for the package

package
    package base

OPTIONS 'ahriman patch-remove'

-v VARIABLE, --variable VARIABLE
    should be used for single-function patches in case if you wold like to remove only specified PKGBUILD variables. In case if not set, it will remove all patches related to the package

COMMAND 'ahriman patch-set-add'
usage: ahriman patch-set-add [-h] [-t TRACK] package create or update source patches

package
    path to directory with changed files for patch addition/update

OPTIONS 'ahriman patch-set-add'

-t TRACK, --track TRACK
    files which has to be tracked

COMMAND 'ahriman repo-backup'
usage: ahriman repo-backup [-h] path backup repository settings and database

path
    path of the output archive

COMMAND 'ahriman repo-check'
usage: ahriman repo-check [-h] [-e] [--vcs | --no-vcs] [-y] [package ...] check for packages updates. Same as repo-update --dry-run --no-manual

package
    filter check by package base

OPTIONS 'ahriman repo-check'

-e, --exit-code
    return non-zero exit status if result is empty

--vcs, --no-vcs
    fetch actual version of VCS packages

-y, --refresh
    download fresh package databases from the mirror before actions, -yy to force refresh even if up to date

COMMAND 'ahriman repo-create-keyring'
usage: ahriman repo-create-keyring [-h] create package which contains list of trusted keys as set by configuration. Note, that this action will only create package, the package itself has to be built manually

COMMAND 'ahriman repo-create-mirrorlist'
usage: ahriman repo-create-mirrorlist [-h] create package which contains list of available mirrors as set by configuration. Note, that this action will only create package, the package itself has to be built manually

COMMAND 'ahriman repo-daemon'
usage: ahriman repo-daemon [-h] [-i INTERVAL] [--aur | --no-aur] [--dependencies | --no-dependencies]
                        [--local | --no-local] [--manual | --no-manual] [--vcs | --no-vcs] [-y] start process which periodically will run update process

OPTIONS 'ahriman repo-daemon'

-i INTERVAL, --interval INTERVAL
    interval between runs in seconds

--aur, --no-aur
    enable or disable checking for AUR updates

--dependencies, --no-dependencies
    process missing package dependencies

--local, --no-local
    enable or disable checking of local packages for updates

--manual, --no-manual
    include or exclude manual updates

--vcs, --no-vcs
    fetch actual version of VCS packages

-y, --refresh
    download fresh package databases from the mirror before actions, -yy to force refresh even if up to date

COMMAND 'ahriman repo-rebuild'
usage: ahriman repo-rebuild [-h] [--depends-on DEPENDS_ON] [--dry-run] [--from-database] [-e]
                        [-s {unknown,pending,building,failed,success}] [-u USERNAME] force rebuild whole repository

OPTIONS 'ahriman repo-rebuild'

--depends-on DEPENDS_ON
    only rebuild packages that depend on specified packages

--dry-run
    just perform check for packages without rebuild process itself

--from-database
    read packages from database instead of filesystem. This feature in particular is required in case if you would like to restore repository from another repository instance. Note, however, that in order to restore packages you need to have original ahriman instance run with web service and have run repo-update at least once.

-e, --exit-code
    return non-zero exit status if result is empty

-s {unknown,pending,building,failed,success}, --status {unknown,pending,building,failed,success}
    filter packages by status. Requires --from-database to be set

-u USERNAME, --username USERNAME
    build as user

COMMAND 'ahriman repo-remove-unknown'
usage: ahriman repo-remove-unknown [-h] [--dry-run] remove packages which are missing in AUR and do not have local PKGBUILDs

OPTIONS 'ahriman repo-remove-unknown'

--dry-run
    just perform check for packages without removal

COMMAND 'ahriman repo-report'
usage: ahriman repo-report [-h] generate repository report according to current settings

COMMAND 'ahriman repo-restore'
usage: ahriman repo-restore [-h] [-o OUTPUT] path restore settings and database

path
    path of the input archive

OPTIONS 'ahriman repo-restore'

-o OUTPUT, --output OUTPUT
    root path of the extracted files

COMMAND 'ahriman repo-sign'
usage: ahriman repo-sign [-h] [package ...] (re-)sign packages and repository database according to current settings

package
    sign only specified packages

COMMAND 'ahriman repo-status-update'
usage: ahriman repo-status-update [-h] [-s {unknown,pending,building,failed,success}] update repository status on the status page

OPTIONS 'ahriman repo-status-update'

-s {unknown,pending,building,failed,success}, --status {unknown,pending,building,failed,success}
    new status

COMMAND 'ahriman repo-sync'
usage: ahriman repo-sync [-h] sync repository files to remote server according to current settings

COMMAND 'ahriman repo-tree'
usage: ahriman repo-tree [-h] dump repository tree based on packages dependencies

COMMAND 'ahriman repo-triggers'
usage: ahriman repo-triggers [-h] [trigger ...] run triggers on empty build result as configured by settings

trigger
    instead of running all triggers as set by configuration, just process specified ones in order of mention

COMMAND 'ahriman repo-update'
usage: ahriman repo-update [-h] [--aur | --no-aur] [--dependencies | --no-dependencies] [--dry-run] [-e]
                        [--local | --no-local] [--manual | --no-manual] [-u USERNAME] [--vcs | --no-vcs] [-y]
                        [package ...] check for packages updates and run build process if requested

package
    filter check by package base

OPTIONS 'ahriman repo-update'

--aur, --no-aur
    enable or disable checking for AUR updates

--dependencies, --no-dependencies
    process missing package dependencies

--dry-run
    just perform check for updates, same as check command

-e, --exit-code
    return non-zero exit status if result is empty

--local, --no-local
    enable or disable checking of local packages for updates

--manual, --no-manual
    include or exclude manual updates

-u USERNAME, --username USERNAME
    build as user

--vcs, --no-vcs
    fetch actual version of VCS packages

-y, --refresh
    download fresh package databases from the mirror before actions, -yy to force refresh even if up to date

COMMAND 'ahriman service-clean'
usage: ahriman service-clean [-h] [--cache | --no-cache] [--chroot | --no-chroot] [--manual | --no-manual]
                        [--packages | --no-packages] [--pacman | --no-pacman] remove local caches

OPTIONS 'ahriman service-clean'

--cache, --no-cache
    clear directory with package caches

--chroot, --no-chroot
    clear build chroot

--manual, --no-manual
    clear manually added packages queue

--packages, --no-packages
    clear directory with built packages

--pacman, --no-pacman
    clear directory with pacman local database cache

COMMAND 'ahriman service-config'
usage: ahriman service-config [-h] [--secure | --no-secure] dump configuration for the specified architecture

OPTIONS 'ahriman service-config'

--secure, --no-secure
    hide passwords and secrets from output

COMMAND 'ahriman service-config-validate'
usage: ahriman service-config-validate [-h] [-e] validate configuration and print found errors

OPTIONS 'ahriman service-config-validate'

-e, --exit-code
    return non-zero exit status if configuration is invalid

COMMAND 'ahriman service-key-import'
usage: ahriman service-key-import [-h] [--key-server KEY_SERVER] key import PGP key from public sources to the repository user

key PGP key to import from public server

OPTIONS 'ahriman service-key-import'

--key-server KEY_SERVER
    key server for key import

COMMAND 'ahriman service-setup'
usage: ahriman service-setup [-h] [--build-as-user BUILD_AS_USER] [--build-command BUILD_COMMAND]
                        [--from-configuration FROM_CONFIGURATION] [--makeflags-jobs | --no-makeflags-jobs]
                        [--mirror MIRROR] [--multilib | --no-multilib] --packager PACKAGER --repository REPOSITORY
                        [--sign-key SIGN_KEY] [--sign-target {disabled,packages,repository}] [--web-port WEB_PORT]
                        [--web-unix-socket WEB_UNIX_SOCKET] create initial service configuration, requires root

OPTIONS 'ahriman service-setup'

--build-as-user BUILD_AS_USER
    force makepkg user to the specific one

--build-command BUILD_COMMAND
    build command prefix

--from-configuration FROM_CONFIGURATION
    path to default devtools pacman configuration

--makeflags-jobs, --no-makeflags-jobs
    append MAKEFLAGS variable with parallelism set to number of cores

--mirror MIRROR
    use the specified explicitly mirror instead of including mirrorlist

--multilib, --no-multilib
    add or do not multilib repository

--packager PACKAGER
    packager name and email

--repository REPOSITORY
    repository name

--sign-key SIGN_KEY
    sign key id

--sign-target {disabled,packages,repository}
    sign options

--web-port WEB_PORT
    port of the web service

--web-unix-socket WEB_UNIX_SOCKET
    path to unix socket used for interprocess communications

COMMAND 'ahriman service-shell'
usage: ahriman service-shell [-h] [code] drop into python shell while having created application

code
    instead of dropping into shell, just execute the specified code

COMMAND 'ahriman user-add'
usage: ahriman user-add [-h] [--key KEY] [--packager PACKAGER] [-p PASSWORD] [-r {unauthorized,read,reporter,full}] [-s]
                        username update user for web services with the given password and role. In case if password was not entered it will be asked interactively

username
    username for web service

OPTIONS 'ahriman user-add'

--key KEY
    optional PGP key used by this user. The private key must be imported

--packager PACKAGER
    optional packager id used for build process in form of `Name Surname <mail@example.com>`

-p PASSWORD, --password PASSWORD
    user password. Blank password will be treated as empty password, which is in particular must be used for OAuth2 authorization type.

-r {unauthorized,read,reporter,full}, --role {unauthorized,read,reporter,full}
    user access level

-s, --secure
    set file permissions to user-only

COMMAND 'ahriman user-list'
usage: ahriman user-list [-h] [-e] [-r {unauthorized,read,reporter,full}] [username] list users from the user mapping and their roles

username
    filter users by username

OPTIONS 'ahriman user-list'

-e, --exit-code
    return non-zero exit status if result is empty

-r {unauthorized,read,reporter,full}, --role {unauthorized,read,reporter,full}
    filter users by role

COMMAND 'ahriman user-remove'
usage: ahriman user-remove [-h] username remove user from the user mapping and update the configuration

username
    username for web service

COMMAND 'ahriman web'
usage: ahriman web [-h] start web server

COMMENTS
Argument list can also be read from file by using @ prefix.

AUTHOR
ahriman team

DISTRIBUTION
The latest version of ahriman may be downloaded from https://github.com/arcan1s/ahriman