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
- The Debian Administrator’s Handbook – Creating a Package Repository for APT
- Sourceforge Project Web Services Documentation
Etiquetas: apt-ftparchive, debian, package, repo
Deja un comentario