A lightweight, bare-bones apt repository server.
This project came from a need I had to be able to serve up already created deb packages without a lot of fuss. Most of the existing solutions I found were either geared at mirroring existing "official" repos or for providing your packages to the public. My need was just something that I could use internally to install already built deb packages via apt-get. I didn't care about change files, signed packages, etc. Since this was to be used in a CI pipeline it had to support remote uploads and be able to update the package list after each upload.
- Supports multiple versions of packages
- Supports multi-arch repos (i386, amd64, custom, etc)
- Supports uploading via HTTP/HTTPS POST requests
- Supports removing packages via HTTP/HTTPS DELETE requests
- Does NOT require a changes file
- Supports uploads from various locations without corrupting the repo
- Create actual packages
- Mirror existing repos
Install using go get
. Fill out the conf.json file with the values you want, it should be pretty self-explanatory, then fire it up!
Once it is running POST a file to the /upload
endpoint:
curl -XPOST 'http://localhost:9090/upload?arch=amd64' -F "file=@myapp.deb"
Or delete an existing file:
curl -XDELETE 'http://localhost:9090/delete' -d '{"filename":"myapp.deb","arch":"amd64"}'
To use your new repo you will have to add a line like this to your sources.list file:
deb http://my-hostname:listenPort/ stable main
my-hostname
should be the actual hostname/IP where you are running deb-simple and listenPort
will be whatever you set in the config. By default deb-simple puts everything into the stable
distro and main
section. If you have enabled SSL you will want to swap http
for https
.
#License:
MIT so go crazy. Would appreciate PRs for anything cool you add though :)