Sample Header Ad - 728x90

What's the right syntax to mix multiple sections in aptgenerate.conf file?

0 votes
1 answer
42 views
I set up a local repo for Debian packages, following that recipe . It works fine, except that I don't know how to mix multiple sections (e.g., main, contrib, etc.) in one single aptgenerate.conf file. What I did, and what works, was to create a different aptgenerate.conf file for each section, for example aptgenerate-main.conf for section main :
Dir::ArchiveDir ".";
Dir::CacheDir "/tmp";
TreeDefault::Directory "pool/main"; 
Default::Packages::Extensions ".deb";
Default::Packages::Compress ". gzip bzip2";
Default::Contents::Compress "gzip bzip2";

BinDirectory "dists/bookworm/main/binary-amd64" {
  Packages "dists/bookworm/main/binary-amd64/Packages";
  Contents "dists/bookworm/main/Contents-amd64";
};

Tree "dists/bookworm" {
  Sections "main";
  Architectures "amd64";
};
And aptgenerate-contrib.conf for section contrib :
Dir::ArchiveDir ".";
Dir::CacheDir "/tmp";
TreeDefault::Directory "pool/contrib"; 
Default::Packages::Extensions ".deb";
Default::Packages::Compress ". gzip bzip2";
Default::Contents::Compress "gzip bzip2";

BinDirectory "dists/bookworm/contrib/binary-amd64" {
  Packages "dists/bookworm/contrib/binary-amd64/Packages";
  Contents "dists/bookworm/contrib/Contents-amd64";
};

Tree "dists/bookworm" {
  Sections "contrib";
  Architectures "amd64";
};
It works fine :
$ apt-ftparchive generate -c=aptftp.conf aptgenerate-main.conf 
 dists/bookworm/main/binary-amd64: New 34 B 0 files 0 B 0s
 pool/main: 32 files 16,6 MB 0s
Packages done, Starting contents.
 dists/bookworm/main/Contents-amd64: 64 files 33,2 MB 1s
Done. 16,6 MB in 32 archives. Took 1s

$ apt-ftparchive generate -c=aptftp.conf aptgenerate-contrib.conf
 dists/bookworm/contrib/binary-amd64: New 34 B 0 files 0 B 0s
 pool/contrib: 6 files 393 kB 0s
Packages done, Starting contents.
 dists/bookworm/contrib/Contents-amd64: 12 files 787 kB 0s
Done. 393 kB in 6 archives. Took 0s
In my example, I had 32 packages in section main, and 6 packages in section contrib, and it generated Packages and Content files accordingly. Now, I wonder if there's a syntaxe to mix both section in a single aptgenerate.conf file, and do everything in a single run. I tried :
Dir::ArchiveDir ".";
Dir::CacheDir "/tmp";
TreeDefault::Directory "pool/";
Default::Packages::Extensions ".deb";
Default::Packages::Compress ". gzip bzip2";
Default::Contents::Compress "gzip bzip2";

BinDirectory "dists/bookworm/main/binary-amd64" {
  Packages "dists/bookworm/main/binary-amd64/Packages";
  Contents "dists/bookworm/main/Contents-amd64";
};

BinDirectory "dists/bookworm/contrib/binary-amd64" {
  Packages "dists/bookworm/contrib/binary-amd64/Packages";
  Contents "dists/bookworm/contrib/Contents-amd64";
};

Tree "dists/bookworm" {
  Sections "main contrib";
  Architectures "amd64";
};
But it generated twice the same Packages and Content files, with each time the whole 38 packages (32+6).
$ apt-ftparchive generate -c=aptftp.conf aptgenerate.conf
 dists/bookworm/main/binary-amd64: New 34 B 0 files 0 B 0s
 dists/bookworm/contrib/binary-amd64: New 34 B 0 files 0 B 0s
 pool/: 38 files 17,0 MB 0s
 pool/: 38 files 17,0 MB 0s
Packages done, Starting contents.
 dists/bookworm/main/Contents-amd64: New 86,6 kB 76 files 34,0 MB 1s
 dists/bookworm/contrib/Contents-amd64: New 86,6 kB 76 files 34,0 MB 1s
Done. 34,0 MB in 76 archives. Took 2s
Packages and Content are identical for each section :
$ diff dists/bookworm/main/binary-amd64/Packages dists/bookworm/contrib/binary-amd64/Packages
$

$ diff dists/bookworm/main/Contents-amd64.gz dists/bookworm/contrib/Contents-amd64.gz
$
This is probably due to the TreeDefault::Directory "pool/"; config. What would be the syntax to use pool/main for main, and pool/contrib for contrib ?
Asked by ChennyStar (1969 rep)
Jun 6, 2025, 08:32 PM
Last activity: Jun 7, 2025, 05:25 PM