The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

parrepo - Server side script for managing PAR repositories

SYNOPSIS

  parrepo --help | --version
  parrepo COMMAND [command options]
  parrepo create [-r REPODIR] [--force]
  parrepo inject [-r REPODIR] filename.par

DESCRIPTION

This is a frontend script to the PAR::Repository module. It lets you create and manage PAR repositories.

COMMANDS

All commands take the --verbose option to set the verbosity of error messages. Specifying that option multiple times (up to 4x) increases the verbosity even more.

Instead of using the --verbose option n times, you can also use the --verbosity n flag to set it to level n. Using --verbosity overrides any occurrances of --verbose.

create

Creates a new repository. Defaults to using a subdirectory called repo.

Parameters:

  -r or --repository
    Specifies the repository path.
  -f or --force
    Overwrite the directory if it exists.
  --fake-symlinks
    Do not use symlinks. Default on platforms that don't support
    symlinks. Necessary if you plan to move the repository to a
    computer that doesn't support symlinks.
inject

Injects a PAR distribution into the repository. You need to specify a distribution file to inject using the --file (or -f) option.

We need to find out which name and version the distribution has as well as which architecture and perl version it was compiled for. You can set all these using options (see below). If you do not, parrepo tries to infer this information from the file name. This works if the file name is of the following form:

  WWW-Mechanize-1.32-x86_64-linux-gnu-thread-multi-5.8.6.par

The command line options take precedence over file name parsing.

If you specify the architecture name as any_arch, the distribution will be put into the architecture agnostic portion of the repository. any_version works similar for the perl version.

Alternatively, you can use the --any-arch and --any-version switches for a similar effect. If you use the switches, only a symlink to the original distribution will be put into the any_* section of the repository.

Parameters:

  -f or --file
    The distribution file to inject. (mandatory)
    parrepo will do a glob if the file name contains meta characters.
    this works: --file => '*.par'
  -r or --repository
    Specifies the repository path.
  -n or --distname
  -v or --distversion
  -a or --arch
  -p or --perlversion
    Set the necessary distribution information.
  --any-arch or --anyarch or --any_arch
    If set, a symlink to the distribution will be put into the
    architecture agnostic portion of the repository.
  --any-version or --anyversion or --any_version
    Same for the perl version.
  -o or --overwrite
    Set this if you want to overwrite a distribution of the
    same name in the repository.
  --no-scripts or --noscripts or --no_scripts
    Do not import any executables into the scripts database.
remove

Removes a distribution or a symlink from the repository. As with the inject command, you can specify a distribution (file) name using the -f option or specify the separate pieces of information necessary to construct the distribution file name.

Parameters:

  -f or --file
    The distribution file to remove.
  -r or --repository
    Specifies the repository path.
  -n or --distname
  -v or --distversion
  -a or --arch
  -p or --perlversion
    Set the necessary distribution information.
query module

Queries the repository for modules. First argument should be a module name or regular expression. Examples:

  parrepo query module Foo::Bar -r myrepo
  parrepo query module /Bar/
  parrepo query module /Bar/ --arch linux

Parameters:

  -a or --arch
    Limits the query to architectures matching this regex.

Converts an existing repository that uses symlinks to one that does not. Will potentially increase the size of the repository. Useful before copying the repository to a host which does not support symlinks or transfering it with tools which don't. Not necessary if the repository was created on a platform that doesn't use symlinks. Once converted, the repository will never use symlinks again.

Parameters:

  -r or --repository
    Specifies the repository path.
query script

Queries the repository for scripts. First argument should be a script name or regular expression. Examples:

  parrepo query script some_script -r myrepo
  parrepo query script /foo/
  parrepo query script /foo/ --arch linux

Parameters:

  -a or --arch
    Limits the query to architectures matching this regex.
query dist

Queries the repository for distributions. First argument should be a distribution name or regular expression. Examples:

  parrepo query dist Foo-Bar-0.01-any_arch-5.8.8.par -r myrepo
  parrepo query dist /Foo-Bar/
  parrepo query dist /5.8.8.par$/ --arch linux

Parameters:

  -a or --arch
    Limits the query to architectures matching this regex.