Quick and dirty Debian package repository published in Sourceforge

Introduction

We are going to build a local repo and then push it to Sourceforge http server so that it’s public.

Requirements

apt-get install apt-utils

Create the new repo

Assumptions

  • Binary and source package already available
  • We decide to have jessie and jessie-dev
  • All our packages are main section packages
  • Our architecture is i386

That means, e.g. that we already have:

chntpw_1.0.orig.tar.gz
chntpw_1.0-2.dsc
chntpw_1.0-2.diff.gz
chntpw_1.0-2_i386.deb
chntpw_1.0-2_i386.changes

Directory structure

mkdir -p /home/adrian/gnu/rescatux/repo
mkdir -p /home/adrian/gnu/rescatux/repo/jessie
mkdir -p /home/adrian/gnu/rescatux/repo/jessie-dev
mkdir -p /home/adrian/gnu/rescatux/repo/dists/jessie-dev/main/binary-i386/
mkdir -p /home/adrian/gnu/rescatux/repo/dists/jessie/main/binary-i386/

Directory structure for packages

The packages I want to upload for now are: chntpw and rescapp .
So that everything is tidy.

mkdir -p /home/adrian/gnu/rescatux/repo/jessie/chntpw
mkdir -p /home/adrian/gnu/rescatux/repo/jessie-dev/chntpw
mkdir -p /home/adrian/gnu/rescatux/repo/jessie/rescapp
mkdir -p /home/adrian/gnu/rescatux/repo/jessie-dev/rescapp

Populate repo (chntpw)

I copy:

chntpw_1.0.orig.tar.gz
chntpw_1.0-2.dsc
chntpw_1.0-2.diff.gz
chntpw_1.0-2_i386.deb
chntpw_1.0-2_i386.changes

into this folder:

/home/adrian/gnu/rescatux/repo/jessie-dev/chntpw

Populate repo (rescapp)

I copy:

rescapp_0.51b1-1.debian.tar.xz
rescapp_0.51b1-1.dsc
rescapp_0.51b1-1_i386.changes
rescapp_0.51b1-1_i386.deb
rescapp_0.51b1.orig.tar.gz

into this folder:

/home/adrian/gnu/rescatux/repo/jessie-dev/rescapp

Generate needed files (including source files)

cd /home/adrian/gnu/rescatux/repo

apt-ftparchive packages jessie-dev | gzip -c > dists/jessie-dev/main/binary-i386/Packages.gz
apt-ftparchive packages jessie | gzip -c > dists/jessie/main/binary-i386/Packages.gz
apt-ftparchive sources jessie-dev | gzip -c > dists/jessie-dev/main/binary-i386/Sources.gz
apt-ftparchive sources jessie | gzip -c > dists/jessie/main/binary-i386/Sources.gz

I ignore these messages:

chntpw has no source override entry
chntpw has no binary override entry either

Pushing repo into Sourceforge

First of all you need to create an sftp connection by the means of ssh.
Let’s assume that sfuser is your Sourceforge user and that your project unix name is: sfproject .

ssh -t sfuser,sfproject@shell.sourceforge.net create

Now connect thanks to Filezilla with this quick settings:

    • Server:sftp://frs.sourceforge.net
    • User:sfuser,sfproject
    • Password:TooSecret
    • Port:22

Now browse into:

/home/project-web/sfproject/htdocs

and push there your local repo folder so that you have:

/home/project-web/sfproject/htdocs/repo

and you are done.

Additionally if you want anyone to be able to download your packages without using apt but simply using their browser you should upload:

/home/project-web/sfproject/htdocs/repo/.htaccess

with this single line as its content:

Options +Indexes

Final user use of your repo

They should create the file:

/etc/apt/sources.list.d/myrepo.list

with this content:

deb http://sfproject.sourceforge.io/repo/ jessie-dev main

Finally, make the system aware of this new repo thanks to:

apt-get update

Now my final user can install these packages like this:

apt-get install chntpw

or

apt-get install rescapp

TODO

Sign the packages and maybe provide a keyring package.

Useful links

Etiquetas: , , ,

Deja un comentario