Debian repository howto
Structure of repository is simmilar to official repositories - packages are stored in pool, package lists in dists. So here is apt-ftparchive configuration for my setup:
Dir { ArchiveDir "/home/debbuild/packages"; CacheDir "/home/debbuild/ftparchive/"; }; Default { Packages::Compress ". gzip bzip2"; Sources::Compress ". gzip bzip2"; Contents::Compress ". gzip bzip2"; }; TreeDefault { BinCacheDB "packages-$(SECTION)-$(ARCH).db"; Directory "pool/$(SECTION)"; Packages "$(DIST)/$(SECTION)/binary-$(ARCH)/Packages"; SrcDirectory "pool/$(SECTION)"; Sources "$(DIST)/$(SECTION)/source/Sources"; Contents "$(DIST)/Contents-$(ARCH)"; }; Tree "dists/unstable" { Sections "mc gammu slovnik"; Architectures "i386 source"; }
Using this configuration file, we can generate package lists and content lists (for searching using apt-file):
apt-ftparchive generate configuration_file
I want my archive to be signed, so it is necessary to create Release file (it's also useful when somebody wants to use pinning). With help of apt-ftparchive, it's also an easy task. First we need to specify information about repository into configuration file:
APT::FTPArchive::Release::Codename "sid"; APT::FTPArchive::Release::Origin "Michal Čihař"; APT::FTPArchive::Release::Components "mc slovnik gammu"; APT::FTPArchive::Release::Label "Unofficial packages"; APT::FTPArchive::Release::Architectures "i386 all"; APT::FTPArchive::Release::Suite "unstable";
Now we can generate Release, content of this file is printed by issuing:
apt-ftparchive -c configuration_for_release release /home/debbuild/packages/dists/unstable & \ /home/debbuild/packages/dists/unstable/Release
Final step is to sign this file using GnuPG, so that users of APT 0.6 and newer can verify origin of packages:
gpg --output Release.gpg -ba Release