Context
With local package repository, I refer to a set of software and configurations on a server which allows to store a software and any client to install this software by normal apt-get
command (supposing the repository added to sources.list)
For the creation of a local package repository, I followed this tutorial, which consist in:
- generate the .deb
- Store the .deb over apache2 server
- Generate a Package.gz file
1- To generate the .deb, the software files are required, a DEBIAN folder with metadata is generated and the following command make the job:
dpkg-deb --build <software folder with DEBIAN>
2- I skip this part as very unrelated
3- With the current directory being the apache folder with the .deb
, call:
dpkg-scanpackages debian /dev/null | gzip -9c > debian/Packages.gz
The problem
Calling apt-get update
over the client machine, it complains with:
W: The repository 'http://example.com packages/ Release' does not have a Release file.
This file is effectively missing on my local store, and look like a register of checksums. But after searching on Internet, and given my low understanding of the topic, I was not able to find how to generate it.
Note: my sources.list has the following line:
deb http://example.com packages/
The question
How to generate the Release
file for a local package repository?
Best Answer
There are a number of ways of going about this; I use
apt-ftparchive
.Create an
aptftp.conf
file in the root of your repository:with the appropriate values (change “Origin”, “Label”, “Description” at least, and adjust “Architectures” to match the binaries you host).
Create a matching
aptgenerate.conf
file alongside:(removing
i386
if you don’t need that).In your repository, clear the database:
Generate the package catalogs:
Generate the
Release
file:Sign it:
(with the appropriate id instead of
yourkeyid
).Whenever you make a change to the repository, you need to run steps 3 to 6 again.