creating a simple private repository with reprepro
Hi,
I must first apologize for the somewhat lengthy post, but you'll see most of it is just directory structures which you can probably skip.
Here goes:
I have a private debian package which I want publish in binary format.
I want to supply 2 binary versions:
1. precise/amd64
2. trusty/amd64
My packages are created with debuild and pbuilder and seem to be setup correctly (I tested).
The problem happens when I'm trying to create my repository - more precisely, when I'm trying to add the second package to the repository.
This is my raw directory structure (the output of debuild and pbuilder):
ubuntu@ubuntu-build:~/dev/git/foo/_tmp$ ll -R
.:
total 16
drwxrwxr-x 4 ubuntu ubuntu 4096 Mar 1 08:18 ./
drwxrwxr-x 9 ubuntu ubuntu 4096 Feb 26 11:41 ../
drwxrwxr-x 4 ubuntu ubuntu 4096 Feb 26 10:02 precise/
drwxr-xr-x 4 root root 4096 Feb 26 10:12 trusty/
./precise:
total 16
drwxrwxr-x 4 ubuntu ubuntu 4096 Feb 26 10:02 ./
drwxrwxr-x 4 ubuntu ubuntu 4096 Mar 1 08:18 ../
drwxrwxr-x 2 ubuntu ubuntu 4096 Feb 26 09:04 amd64/
./precise/amd64:
total 412
drwxrwxr-x 2 ubuntu ubuntu 4096 Feb 26 09:04 ./
drwxrwxr-x 4 ubuntu ubuntu 4096 Feb 26 10:02 ../
-rw-r--r-- 1 ubuntu ubuntu 19173 Feb 26 09:04 foo_1.0.1_amd64.build
-rw-r--r-- 1 ubuntu ubuntu 1415 Feb 26 09:04 foo_1.0.1_amd64.changes
-rw-r--r-- 1 ubuntu ubuntu 20174 Feb 26 09:04 foo_1.0.1_amd64.deb
-rw-r--r-- 1 ubuntu ubuntu 677 Feb 26 09:03 foo_1.0.1.debian.tar.gz
-rw-r--r-- 1 ubuntu ubuntu 794 Feb 26 09:03 foo_1.0.1.dsc
-rw-rw-r-- 1 ubuntu ubuntu 359985 Feb 26 09:03 foo_1.0.1.orig.tar.gz
./trusty:
total 16
drwxr-xr-x 4 root root 4096 Feb 26 10:12 ./
drwxrwxr-x 4 ubuntu ubuntu 4096 Mar 1 08:18 ../
drwxr-xr-x 2 root root 4096 Feb 26 10:08 amd64/
./trusty/amd64:
total 392
drwxr-xr-x 2 root root 4096 Feb 26 10:08 ./
drwxr-xr-x 4 root root 4096 Feb 26 10:12 ../
-rw-rw-r-- 1 ubuntu ubuntu 1415 Feb 26 10:08 foo_1.0.1_amd64.changes
-rw-r--r-- 1 ubuntu ubuntu 20160 Feb 26 10:08 foo_1.0.1_amd64.deb
-rw-r--r-- 1 ubuntu ubuntu 677 Feb 26 10:08 foo_1.0.1.debian.tar.gz
-rw-r--r-- 1 ubuntu ubuntu 794 Feb 26 10:08 foo_1.0.1.dsc
-rw-rw-r-- 1 ubuntu ubuntu 359985 Feb 26 09:03 foo_1.0.1.orig.tar.gz
Now, when I run:
reprepro includedeb precise ~/dev/git/foo/_tmp/precise/amd64/foo_1.0.1_amd64.deb
I get this nice repository structure:
drwxrwxr-x 6 ubuntu ubuntu 4096 Feb 26 12:13 ./
drwxrwxr-x 9 ubuntu ubuntu 4096 Feb 26 11:41 ../
drwxrwxr-x 2 ubuntu ubuntu 4096 Feb 26 12:11 conf/
drwxrwxr-x 2 ubuntu ubuntu 4096 Mar 1 08:08 db/
drwxrwxr-x 3 ubuntu ubuntu 4096 Feb 26 12:13 dists/
drwxrwxr-x 3 ubuntu ubuntu 4096 Feb 26 12:13 pool/
./conf:
total 16
drwxrwxr-x 2 ubuntu ubuntu 4096 Feb 26 12:11 ./
drwxrwxr-x 6 ubuntu ubuntu 4096 Feb 26 12:13 ../
-rw-rw-r-- 1 ubuntu ubuntu 286 Feb 26 12:11 distributions
-rw-rw-r-- 1 ubuntu ubuntu 41 Feb 26 11:41 options
./db:
total 120
drwxrwxr-x 2 ubuntu ubuntu 4096 Mar 1 08:08 ./
drwxrwxr-x 6 ubuntu ubuntu 4096 Feb 26 12:13 ../
-rw-rw-r-- 1 ubuntu ubuntu 16384 Feb 26 12:13 checksums.db
-rw-rw-r-- 1 ubuntu ubuntu 16384 Feb 26 12:13 contents.cache.db
-rw-rw-r-- 1 ubuntu ubuntu 40960 Feb 26 12:13 packages.db
-rw-rw-r-- 1 ubuntu ubuntu 16384 Feb 26 12:13 references.db
-rw-rw-r-- 1 ubuntu ubuntu 20480 Feb 26 12:13 release.caches.db
-rw-rw-r-- 1 ubuntu ubuntu 32 Mar 1 08:08 version
./dists:
total 12
drwxrwxr-x 3 ubuntu ubuntu 4096 Feb 26 12:13 ./
drwxrwxr-x 6 ubuntu ubuntu 4096 Feb 26 12:13 ../
drwxrwxr-x 3 ubuntu ubuntu 4096 Feb 26 12:13 precise/
./dists/precise:
total 16
drwxrwxr-x 3 ubuntu ubuntu 4096 Feb 26 12:13 ./
drwxrwxr-x 3 ubuntu ubuntu 4096 Feb 26 12:13 ../
drwxrwxr-x 4 ubuntu ubuntu 4096 Feb 26 12:13 main/
-rw-rw-r-- 1 ubuntu ubuntu 1605 Feb 26 12:13 Release
./dists/precise/main:
total 16
drwxrwxr-x 4 ubuntu ubuntu 4096 Feb 26 12:13 ./
drwxrwxr-x 3 ubuntu ubuntu 4096 Feb 26 12:13 ../
drwxrwxr-x 2 ubuntu ubuntu 4096 Feb 26 12:13 binary-amd64/
./dists/precise/main/binary-amd64:
total 16
drwxrwxr-x 2 ubuntu ubuntu 4096 Feb 26 12:13 ./
drwxrwxr-x 4 ubuntu ubuntu 4096 Feb 26 12:13 ../
-rw-rw-r-- 1 ubuntu ubuntu 0 Feb 26 12:13 Packages
-rw-rw-r-- 1 ubuntu ubuntu 20 Feb 26 12:13 Packages.gz
-rw-rw-r-- 1 ubuntu ubuntu 120 Feb 26 12:13 Release
./pool:
total 12
drwxrwxr-x 3 ubuntu ubuntu 4096 Feb 26 12:13 ./
drwxrwxr-x 6 ubuntu ubuntu 4096 Feb 26 12:13 ../
drwxrwxr-x 3 ubuntu ubuntu 4096 Feb 26 12:13 main/
./pool/main:
total 12
drwxrwxr-x 3 ubuntu ubuntu 4096 Feb 26 12:13 ./
drwxrwxr-x 3 ubuntu ubuntu 4096 Feb 26 12:13 ../
drwxrwxr-x 3 ubuntu ubuntu 4096 Feb 26 12:13 p/
./pool/main/p:
total 12
drwxrwxr-x 3 ubuntu ubuntu 4096 Feb 26 12:13 ./
drwxrwxr-x 3 ubuntu ubuntu 4096 Feb 26 12:13 ../
drwxrwxr-x 2 ubuntu ubuntu 4096 Feb 26 12:13 foo/
./pool/main/p/foo:
total 44
drwxrwxr-x 2 ubuntu ubuntu 4096 Feb 26 12:13 ./
drwxrwxr-x 3 ubuntu ubuntu 4096 Feb 26 12:13 ../
-rw-rw-r-- 1 ubuntu ubuntu 34618 Feb 26 12:13 foo_1.0.1_amd64.deb
But when I run:
reprepro includedeb trusty ~/dev/git/foo/_tmp/trusty/amd64/foo_1.0.1_amd64.deb
I get this error:
~/dev/git/foo/_tmp/trusty/amd64/foo_1.0.1_amd64.deb: component guessed as 'main'
ERROR: '~/dev/git/foo/_tmp/trusty/amd64/foo_1.0.1_amd64.deb' cannot be included as 'pool/main/p/foo/foo_1.0.1_amd64.deb'.
Already existing files can only be included again, if they are the same, but:
md5 expected: f2d147640c6784c869fb10e1cdb5b579, got: fa4f535e0bf8a68464b6f276bf3c7c5e
sha1 expected: cec0a5544de71820e05d469f8de21eaed7e1c2ca, got: 335b27c4873f3766973a27ed103cd0a99dfb98ff
sha256 expected: 51f2e9a722c5fc265592d51c1c7c4f6ad9acf1454cbfa90c12873c53c0e8bba4, got: 42842f86dd2e256c781af00c26c5cd73de6636be9200a8359d3fd33f2e47ef6d
size expected: 34618, got: 20194
There have been errors!
I read somewhere that reprepro does not support having 2 files with the same name in a repo. is it true? even when the files are in different directories (for different distors)? No way to create pool subdirectories under pool?
I briefly inspected mini-dinstaller and mini-dak, but they seem a little overqualified for my simple scenario.
I like reprepro for its simplicity and the fact that it does the signing for me, but I really don't want to change package names for it to work.
So, my questiona are eventually:
1. is there a way for me to use reprepro without changing my .deb file names?
2. if not, what's the simplest alternative?
Thanks,
Asaf
Reply to: