ArcH Linux ReposItory MANager
Go to file
2021-09-05 05:27:58 +03:00
.github add manpage generator 2021-08-17 04:05:18 +03:00
package migration of jinja tempaltes to bootstrap (#30) 2021-09-05 05:27:58 +03:00
src/ahriman migration of jinja tempaltes to bootstrap (#30) 2021-09-05 05:27:58 +03:00
tests migration of jinja tempaltes to bootstrap (#30) 2021-09-05 05:27:58 +03:00
.bandit-test.yml use nosec instead of disabling mktemp rule 2021-08-11 02:51:29 +03:00
.bandit.yml add bandit integration and fix its warnings 2021-08-11 02:45:13 +03:00
.gitignore add manpage generator 2021-08-17 04:05:18 +03:00
.pylintrc logging rethink 2021-08-17 00:23:34 +03:00
AUTHORS more templates 2021-03-29 00:13:20 +03:00
CONFIGURING.md Auth support (#25) 2021-09-02 23:36:00 +03:00
COPYING uploader demo 2021-03-05 04:10:29 +03:00
Makefile include setup.cfg to tarball 2021-08-19 00:45:26 +03:00
README.md Auth support (#25) 2021-09-02 23:36:00 +03:00
setup.cfg Auth support (#25) 2021-09-02 23:36:00 +03:00
setup.py migration of jinja tempaltes to bootstrap (#30) 2021-09-05 05:27:58 +03:00

ArcHlinux ReposItory MANager

build status CodeFactor

Wrapper for managing custom repository inspired by repo-scripts.

Features

  • Install-configure-forget manager for own repository.
  • Multi-architecture support.
  • VCS packages support.
  • Sign support with gpg (repository, package, per package settings).
  • Synchronization to remote services (rsync, s3) and report generation (html).
  • Dependency manager.
  • Repository status interface with optional authorization.

Installation and run

  • Install package as usual.

  • Change settings if required, see CONFIGURING for more details.

  • Create /var/lib/ahriman/.makepkg.conf with makepkg.conf overrides if required (at least you might want to set PACKAGER):

    echo 'PACKAGER="John Doe <john@doe.com>"' | sudo -u ahriman tee -a /var/lib/ahriman/.makepkg.conf
    
  • Configure build tools (it is required for correct dependency management system):

    • create build command, e.g. ln -s /usr/bin/archbuild /usr/local/bin/ahriman-x86_64-build (you can choose any name for command, basically it should be {name}-{arch}-build);
    • create configuration file, e.g. cp /usr/share/devtools/pacman-{extra,ahriman}.conf (same as previous pacman-{name}.conf);
    • change configuration file, add your own repository, add multilib repository etc;
    • set build_command option to point to your command;
    • configure /etc/sudoers.d/ahriman to allow running command without a password.
    ln -s /usr/bin/archbuild /usr/local/bin/ahriman-x86_64-build
    cp /usr/share/devtools/pacman-{extra,ahriman}.conf
    
    echo '[multilib]' | tee -a /usr/share/devtools/pacman-ahriman.conf
    echo 'Include = /etc/pacman.d/mirrorlist' | tee -a /usr/share/devtools/pacman-ahriman.conf
    
    echo '[aur-clone]' | tee -a /usr/share/devtools/pacman-ahriman.conf
    echo 'SigLevel = Optional TrustAll' | tee -a /usr/share/devtools/pacman-ahriman.conf
    echo 'Server = file:///var/lib/ahriman/repository/$arch' | tee -a /usr/share/devtools/pacman-ahriman.conf
    
    echo '[build]' | tee -a /etc/ahriman.ini.d/build.ini
    echo 'build_command = ahriman-x86_64-build' | tee -a /etc/ahriman.ini.d/build.ini
    
    echo 'Cmnd_Alias CARCHBUILD_CMD = /usr/local/bin/ahriman-x86_64-build *' | tee -a /etc/sudoers.d/ahriman
    echo 'ahriman ALL=(ALL) NOPASSWD: CARCHBUILD_CMD' | tee -a /etc/sudoers.d/ahriman
    chmod 400 /etc/sudoers.d/ahriman
    
  • Start and enable ahriman@.timer via systemctl:

    systemctl enable --now ahriman@x86_64.timer
    
  • Start and enable status page:

    systemctl enable --now ahriman-web@x86_64
    
  • Add packages by using ahriman add {package} command:

    sudo -u ahriman ahriman -a x86_64 add yay --now
    

Note that initial service configuration can be done by running ahriman setup with specific arguments.