The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

nrepo - Repository Management

DESCRIPTION

Nrepo is designed to be an extensible repository management system Currently it provides a basic framework and support for Yum based repositories. Stay tuned for more!

SYNOPSIS

nrepo --action X [options]

See perldoc App::Nrepo for all valid actions and their in depth descriptions

Actions:
  list      List all configured repositories
  mirror    Mirror a repository
    requires:
      --repo (all|$repository_name)
    optional:
      --checksums
  tag       Tag a repository
    requires:
      --repo $repository_name
      --tag  $destination_tag
    optional:
      --src-tag $src_tag (defaults to 'head')
      --symlink (default false)
  clean     Cleans a repository of unreferenced files
    requires:
      --repo (all|$repository_name)
  init      Initialise a custom repository
    requires:
      --repo $repository_name
  add-file  Add files to a custom repository
    requires:
      --repo $repository_name
      --arch $arch
      --file $path_to_file (--file can be supplied multiple times)
  del-file  Remove files from a custom repository
    requires:
      --repo $repository_name
      --arch $arch
      --file $path_to_file (--file can be supplied multiple times)

Script Options:
  --config-file    Path to config-file, defaults to ./conf/nrepo.conf
  --log-level      Change the stdout log level (overrides config)
  --help           This helpful message

Examples:

nrepo --action mirror --repo centos-6-epel
nrepo --action tag --repo centos-6-epel --tag release_20150827
nrepo --action tag --repo centos-6-epel --src-tag release_20150827 --symlink --tag production

This will:
 1. update centos-6-epel to the current upstream version
 2. create a hardlink copy of head to release_20150827
 3. create a symlink of release_20150827 to production

nrepo.conf Configuration:

# Global options:

# data_dir - path to location where repositories files are stored data_dir = /path/to/repo_data

# include - you can use this to include other conf files or directories include repos.d

# tag_style - (Defaults to bottomdir) This determines if repositories are tagged at a parent or child level # eg. # topdir would have tags like: $data_dir/$tag/$repo_name # bottomdir would have tags like: $data_dir/$repo_name/$tag

#hard_tag_regex - When someone creates a hard tag of a repository the destination tag must match this regex (No default) # This can be per repo and/or global. it will use the per repo value first # ie I want them as: release_YYYYMMDD #hard_tag_regex = ^release_\d{8}$

# log_file - Path to log output to (No default) # log_file_level - At what level you want the log file logged at (defaults to info) # screen_level - At what level you want the screen to output at (defaults to notice) this can be overwritten on the cli using --log-level