[pacman-dev] PATHNAME in sync/*/desc

Mark Constable markc at renta.net
Wed Mar 12 00:52:43 EDT 2008


On Wednesday 12 March 2008 08:36:16 Dan McGee wrote:
> > Would it be feasible to add a %PATHNAME% variable  to the sync desc file ?
> > For instance in this case, fetching "any" arch packages would not need to
> > symlinked into the same directory to be found...
> >
> >   %FILENAME%
> >   hotstuff-0.9.2-1-any.pkg.tar.bz2
> >
> >   %PATHNAME%
> >   ../any/

> Not a huge fan of this behavior, as I really like the current scenario
> where the DB always lives with the packages.

One added complexity, that is currently available, is having
symlinks to packages outside of the current directory so, in a
way, the DB does not always live with the packages. The symlinks
remain in the same directory but not the actual packages. To me,
this *may* be clarified better by having the path component
explicitly noted in the DB itself rather than implied by an
external filesystem symlink. Maybe.

> It greatly simplifies the
> need for repo-add to do anything funny with the paths, as we just know
> to always add the basename of the file. That would need to be
> addressed if we added this functionality- how would you add relative
> paths using repo-add?

Well I just tried this below but the resulting package could not
be found and the local sync DB showed no sign of including the path...

 cd my/i686
 repo-add my.db.tar.gz *.pkg.* ../any/*.pkg.*

so I thought/hoped it might do as Aaron suggested and end up with
a full relative path but it didn't when I checked the local sync
DB entry for the packages in ../any/.

 %FILENAME%
 ../any/hotstuff-0.9.2-1-any.pkg.tar.bz2

> Would it generate the relative path on its own
> (possibly traversing out of webserver accessible directories which
> will break your repository),

I would think this relative path is matched to the remote DB and
would not get added if it could't be found at the time repo-add
is invoked. It would be assumed the same layout, as stated in the
DB, would exist in reality regardless of how the whole repo is
copied or mirrored.

> or would you have to specify an
> additional path? What if I build my DB in one place, but serve it in
> another (something I actually do)?

I rsync my local repo to a remote live server and in this case
there would be no problem that I can forsee.

> We haven't even begun to talk about
> deltas and where they should live.

They're just more file components that could follow the same
relative patch agenda.

> This came up when Xavier and I were
> researching the delta creation being done in repo-add.
> 
> Of course, I see the advantages this could offer with the -any
> packages, I just wanted to get my two cents in from the other side.

Sure, as is any change worth the tradeoff between added benefit
or possible breakage.

***

On the PATHNAME = URL idea, I could imagine this could also be
useful, if at all possible, because I could offload some packages
to a variety of other backend servers according to demand. I could
have the DBs hosted on a server with limited bandwidth but high
availability and offload some or all of the packages to another
server with a higher and/or cheaper bandwidth quota. I could
perhaps use Amazon S3 cloud for important popular packages and a
Dreamhost cheapie account for less popular packages, all from
the same repo sync DB.

I'm not suggesting this idea has any high yield benefits but if
it were available then I could imagine taking advantage of it.

However, I suspect bittorenting packages would probably have the
best impact on distribution load. Better still, if it were possible
to "capture" what would be otherwise transferred via an rsync update
to a local binary blob diff (for the whole archive, or per repo
section) and use bittorent technology to transfer that blob and
patch the other end in one go.

--markc




More information about the pacman-dev mailing list