Native APT-RPM repository setup

Contents

  1. Contents
  2. Simple repository setup
  3. Including a source repository
  4. Using a flat structure
  5. Using multiple components
  6. Specifying components
  7. Meta-components

Simple repository setup

Here is a simple example showing how easy it is to create a basic repository for APT-RPM:

[niemeyer@ibook /pub]% find /pub /pub /pub/conectiva /pub/conectiva/RPMS.general /pub/conectiva/RPMS.general/dummy-1.0-1cl.noarch.rpm [niemeyer@ibook /pub]% genbasedir /pub/conectiva Creating base directory... done Components: general Processing pkglists... general [done] Processing srclists... [done] Creating component releases... general [done] Creating global release file... [done] Appending MD5Sum... general [done] All your base are belong to us!!! [niemeyer@ibook /pub]% find /pub /pub /pub/conectiva /pub/conectiva/base /pub/conectiva/base/pkglist.general /pub/conectiva/base/pkglist.general.bz2 /pub/conectiva/base/release.general /pub/conectiva/base/release /pub/conectiva/RPMS.general /pub/conectiva/RPMS.general/dummy-1.0-1cl.noarch.rpm

Done! This repository is ready to be accessed by APT-RPM.

To make APT-RPM notice the new created repository, just append the following line in /etc/apt/sources.list:

rpm file:/pub conectiva general

Including a source repository

There's no special setup to include a sources repository either. Here is another example including it:

[niemeyer@ibook /pub]% find /pub /pub /pub/conectiva /pub/conectiva/RPMS.general /pub/conectiva/RPMS.general/dummy-1.0-1cl.noarch.rpm /pub/SRPMS.general /pub/SRPMS.general/dummy-1.0-1cl.src.rpm [niemeyer@ibook /pub]% genbasedir /pub/conectiva Creating base directory... done Components: general Processing pkglists... general [done] Processing srclists... general [done] Creating component releases... general [done] Creating global release file... [done] Appending MD5Sum... general [done] All your base are belong to us!!! [niemeyer@ibook /pub]% find /pub /pub /pub/conectiva /pub/conectiva/base /pub/conectiva/base/pkglist.general /pub/conectiva/base/pkglist.general.bz2 /pub/conectiva/base/srclist.general /pub/conectiva/base/srclist.general.bz2 /pub/conectiva/base/release.general /pub/conectiva/base/release /pub/conectiva/RPMS.general /pub/conectiva/RPMS.general/dummy-1.0-1cl.noarch.rpm /pub/SRPMS.general /pub/SRPMS.general/dummy-1.0-1cl.src.rpm

To make APT-RPM notice the new created repository, including the sources, just append the following lines in /etc/apt/sources.list:

rpm file:/pub conectiva general rpm-src file:/pub conectiva general

Using a flat structure

Notice that in the example above, the SRPMS.general directory is outside of the conectiva/ directory. This used to be the most common form to setup an RPM package structure, but sometimes this structure may be incovenient. To use SRPMS in the same directory level, just use the --flat option. Here's another example:

[niemeyer@ibook /pub]% find /pub /pub /pub/conectiva /pub/conectiva/RPMS.general /pub/conectiva/RPMS.general/dummy-1.0-1cl.noarch.rpm /pub/conectiva/SRPMS.general /pub/conectiva/SRPMS.general/dummy-1.0-1cl.src.rpm [niemeyer@ibook /pub]% genbasedir --flat /pub/conectiva Creating base directory... done Components: general Processing pkglists... general [done] Processing srclists... general [done] Creating component releases... general [done] Creating global release file... [done] Appending MD5Sum... general [done] All your base are belong to us!!! [niemeyer@ibook /pub]% find /pub /pub /pub/conectiva /pub/conectiva/base /pub/conectiva/base/pkglist.general /pub/conectiva/base/pkglist.general.bz2 /pub/conectiva/base/srclist.general /pub/conectiva/base/srclist.general.bz2 /pub/conectiva/base/release.general /pub/conectiva/base/release /pub/conectiva/RPMS.general /pub/conectiva/RPMS.general/dummy-1.0-1cl.noarch.rpm /pub/conectiva/SRPMS.general /pub/conectiva/SRPMS.general/dummy-1.0-1cl.src.rpm

From a user point of view, there's no difference if your repository is flat or not. That is, to make APT-RPM notice the new created repository, you'd append the same lines in /etc/apt/sources.list:

rpm file:/pub conectiva general rpm-src file:/pub conectiva general

Using multiple components

For now, all examples were using a single general component. We can have as many components as necessary in a single repository. For example:

[niemeyer@ibook /pub]% find /pub /pub /pub/conectiva /pub/conectiva/RPMS.general /pub/conectiva/RPMS.general/dummy-1.0-1cl.noarch.rpm /pub/conectiva/RPMS.misc /pub/conectiva/RPMS.misc/foobar-1.0-1cl.noarch.rpm [niemeyer@ibook /pub]% genbasedir /pub/conectiva Creating base directory... done Components: general misc Processing pkglists... general misc [done] Processing srclists... [done] Creating component releases... general misc [done] Creating global release file... [done] Appending MD5Sum... general misc [done] All your base are belong to us!!! [niemeyer@ibook /pub]% find /pub /pub /pub/conectiva /pub/conectiva/base /pub/conectiva/base/pkglist.general /pub/conectiva/base/pkglist.general.bz2 /pub/conectiva/base/pkglist.misc /pub/conectiva/base/pkglist.misc.bz2 /pub/conectiva/base/release.general /pub/conectiva/base/release.misc /pub/conectiva/base/release /pub/conectiva/RPMS.general /pub/conectiva/RPMS.general/dummy-1.0-1cl.noarch.rpm /pub/conectiva/RPMS.misc /pub/conectiva/RPMS.misc/foobar-1.0-1cl.noarch.rpm

To make APT-RPM notice the new created repository, just append the following line in /etc/apt/sources.list:

rpm file:/pub conectiva general misc

Specifying components

In all examples above genbasedir was finding the components by itself. If necessary, you may select which components to build. For example:

[niemeyer@ibook /pub]% find /pub /pub /pub/conectiva /pub/conectiva/RPMS.general /pub/conectiva/RPMS.general/dummy-1.0-1cl.noarch.rpm /pub/conectiva/RPMS.misc /pub/conectiva/RPMS.misc/foobar-1.0-1cl.noarch.rpm [niemeyer@ibook /pub]% genbasedir /pub/conectiva general Components: general Processing pkglists... general [done] Processing srclists... [done] Creating component releases... [done] Updating global release file... [done] Appending MD5Sum... general [done] All your base are belong to us!!!

Notice that when you do that, the release file inside the base directory will contain information only about that single component. If you're updating just some components of a big repository, you'll probably want to use --partial as well, like this:

[niemeyer@ibook /pub]% genbasedir --partial /pub/conectiva general Components: general Processing pkglists... general [done] Processing srclists... [done] Creating component releases... [done] Partially updating global release file... [done] Appending MD5Sum... general [done] All your base are belong to us!!!

Meta-components

Since version 0.5.5cnc4, APT-RPM supports the concept of meta-components A meta-component may use information contained in one or more components, while using a different name. In the example below, we create a meta-component named all:

[niemeyer@ibook /pub]% find /pub /pub /pub/conectiva /pub/conectiva/RPMS.general /pub/conectiva/RPMS.general/dummy-1.0-1cl.noarch.rpm /pub/conectiva/RPMS.misc /pub/conectiva/RPMS.misc/foobar-1.0-1cl.noarch.rpm [niemeyer@ibook /pub]% genbasedir --meta=all /pub/conectiva Components: general misc Processing pkglists... general misc [done] Processing srclists... [done] Creating component releases... all [done] Updating global release file... [done] Appending MD5Sum... all [done] All your base are belong to us!!! [niemeyer@ibook /pub]% find /pub /pub /pub/conectiva /pub/conectiva/base /pub/conectiva/base/pkglist.all /pub/conectiva/base/pkglist.all.bz2 /pub/conectiva/base/release.all /pub/conectiva/base/release /pub/conectiva/RPMS.general /pub/conectiva/RPMS.general/dummy-1.0-1cl.noarch.rpm /pub/conectiva/RPMS.misc /pub/conectiva/RPMS.misc/foobar-1.0-1cl.noarch.rpm

From a user point of view, there's no difference between a meta-component and a normal component. To make APT-RPM notice the new created repository, just append the following line in /etc/apt/sources.list:

rpm file:/pub conectiva all

Last updated 01.01.2023