repositor.io - Linux Repository Management

repositor.io is a tool to create and manage linux repositories. You can mirror online repositories so that you don't need to download the package every time you set up a new server. You can also secure your servers behind a firewall and disable outgoing http traffic.

With repositor.io it is easy to create custom repositories for your own packages. With the integration of a configuration management tool you can create consistant installations of your server.

GETTING HELP

COMMAND LINE

--mirror mirror a configured repository (needs --repo, use "all" for all repos)
--tag=tagname tag a repository (needs --repo)
--clonetag=tagname clones a tag in a repository (needs --repo and new --tag)
--repo=reponame the name of the repository to use
--update-metadata update the metadata of a repository
--update-files download files even if they are already downloaded
--init initialize an empty repository
--add-file=file add a file to a repository (needs --repo)
--remove-file=file remove a file from a repository (needs --repo)
--list list known repositories
--server start a server for file delivery. (not available for all repository types)
--update-errata updates the errata database for a repo (needs --repo)",
--errata query errata for a package (needs --repo, --package, --version, --arch)",
--package=pkg for which package the errata should be queries",
--version=ver for which version of a package the errata should be queries",
--arch=arch for which architecture of a package the errata should be queries",
--help display this help message

CONFIGURATION

To configure repositor.io create a configuration file /etc/rex/repositorio.conf. RepositoryRoot = /srv/html/repo/

# log4perl configuration file
<Log4perl>
  config = /etc/rex/io/log4perl.conf
</Log4perl>

# create a mirror of the nightly rex repository
# the files will be stored in
# /srv/html/repo/head/rex-centos-6-x86-64/CentOS/6/rex/x86_64/
<Repository rex-centos-6-x86-64>
  url   = http://nightly.rex.linux-files.org/CentOS/6/rex/x86_64/
  local = rex-centos-6-x86-64/CentOS/6/rex/x86_64/
  type  = Yum
</Repository>

# create a mirror of centos 6
# and download the pxe boot files, too.
<Repository centos-6-x86-64>
  url    = http://ftp.hosteurope.de/mirror/centos.org/6/os/x86_64/
  local  = centos-6-x86-64/CentOS/6/os/x86_64/
  type   = Yum
  images = true
</Repository>

# create a custom repository
<Repository centos-6-x86-64-mixed>
  local = centos-6-x86-64-mixed/mixed/6/x86_64/
  type  = Yum
</Repository>

If you want to sign your custom repositories you have to configure the gpg key to use. repositorio automatically exports the public key into the root of the repository, so it can be imported from the clients. If you don't specify the gpg password repositorio will ask you for the password.

An example for YUM repositories:

<Repository centos-6-x86-64-mixed>
  local = centos-6-x86-64-mixed/mixed/6/x86_64/
  type  = Yum
  <gpg>
    key      = DA95F273
    password = test
  </gpg>
</Repository>

An example for APT repositories:

<Repository debian-7-x86-64-mixed>
  local     = debian-7-x86-64-mixed/debian
  type      = Apt
  arch      = amd64
  dist      = wheezy
  component = mixed
  <gpg>
    key      = DA95F273
    password = test
  </gpg>
</Repository>

An example log4perl.conf file:

log4perl.rootLogger                    = DEBUG, FileAppndr1

log4perl.appender.FileAppndr1          = Log::Log4perl::Appender::File
log4perl.appender.FileAppndr1.filename = /var/log/repositorio.log
log4perl.appender.FileAppndr1.layout   = Log::Log4perl::Layout::SimpleLayout