[repoman] transport mechanism

Jason Chu jason at archlinux.org
Mon Jul 9 10:30:32 EDT 2007


On Mon, Jul 09, 2007 at 10:13:15AM -0400, Paul Mattal wrote:
> Jason Chu wrote:
> >>> On the whole, I think the custom client/server is still winning for me, 
> >>> at the moment, though I wish support for SSL servers in Python was 
> >>> better. But I really feel like there should be something standard we 
> >>> could use for this authentication and transport.
> >>>
> >>> Any ideas?
> > 
> > The new one I learned was using ssh from a chroot.  That's how repo.or.cz
> > works and that's how phrakture planned on doing projects.archlinux.org.
> > That way "developers" can have accounts but they don't need shells on the
> > hosting system.  You can even limit the commands they can execute using
> > something like rsh.
> 
> This violates one of the goals of repoman, though: be able to deploy 
> more than once on a single server. This is critical, because there 
> will not be (at least at first) granular permissions within an 
> install. If you're a trusted party, you get to work on all the repos.
> 
> Otherwise, this is a very good solution that phrakture mentioned and 
> I considered.

But ssh can be run on multiple ports... even with a custom client/server
you'd probably still run it on multiple ports for multiple instances.

Another common option is gpg signed emails.  To upload a package, just
attach it, to execute a command (move package, delete package, create repo,
etc) it's just a text command.  This solution also doesn't require a custom
client/server, only custom scripts.

I still prefer the multiple ssh servers solution though.

> [stuff snipped]
> 
> >>> One thought that just occurred to me.. we could take a page out of the 
> >>> monotone trick book and separate trust from transport. We could add a 
> >>> file to the PKGBUILD directory which gets stored in the SCM and contains 
> >>> the sha1sum of the BINARY package that corresponds to this PKGBUILD 
> >>> built for a particular architecture. Then we don't need to care where or 
> >>> who a binary package comes from.. anyone can upload the binary package 
> >>> to the server (without authentication) as long as the package has the 
> >>> proper sha1sum. This also has the benefit of keeping developers from 
> >>> accidentally uploading the wrong binary package.
> > 
> > As we talked about in the dev meeting, the problem with this is that
> > two compiles of the same package will have different sha1sums.  This is
> > because of timestamps within the tar, the order of files within the tar,
> > the contents of the binaries (I'm pretty sure linked libraries aren't
> > ordered, for example.
> > 
> > Saying that one PKGBUILD creates a package with a sha1sum of X means we
> > can't autobuild at all.
> 
> I think we can still autobuild if we trust the autobuilder. My point 
> is that a single package foo-2.1-7-i686 should correspond to EXACTLY 
> one binary package that ever gets distributed to the world, and it 
> should have been produced by running makepkg (in some environment) 
> on the contents of the PKGBUILD directory and SCM version pointed to.
> 
> So if the autobuilder builds, calculates the signature, and puts it 
> in the db, I'm fine with that-- we can create some hooks so that an 
> autobuilder can do that easily.
> 
> The point is that at *some point*, someone or something should 
> decide that package pkgver-pkgrel-arch corresponds to ONE binary 
> thing that will be distributed (and that meets whatever level of 
> quality checking and testing is appropriate), and the signature will 
> always allow us to check that. Once it's been put in a repo, we will 
> never change the signature again. Of course, you can always do a 
> pkgrel bump and upload a new version; this just enforces that a 
> particular pkgrel really is exactly one release of a binary package.
> 
> Then when someone sends in a bug report against a 
> pkgver-pkgrel-arch, you can be sure (and ask him to verify) that his 
> package is the same as yours. It lets you make draw strong 
> conclusions about what's going on that you can rely upon when 
> debugging. Although I believe that pacbuild will get us much closer 
> to packages being uniformly built, I still prefer to trust the bits 
> themselves to guarantee we're both running the same software when 
> we're chasing bugs.

Ok, just as long as the hash isn't required at checkin time or can be
changed any number of times before the package reaches the repos.

Jason
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://archlinux.org/pipermail/repoman/attachments/20070709/1d6cd0e4/attachment-0001.bin 


More information about the repoman mailing list