[arch-dev-public] noarch packages vs FTP & DB

Aaron Griffin aaronmgriffin at gmail.com
Sun Dec 2 16:52:10 EST 2007


On Dec 2, 2007 5:35 AM, Thomas Bächler <thomas at archlinux.org> wrote:
> Roman Kyrylych schrieb:
> > Solution #2:
> >
> > 1) Pacman 3.1 already has only one /etc/pacman.d/mirrorlist file for
> > all repos with contents like:
> >   Server = ftp://ftp.archlinux.org/$repo/os/i686
> > and in pacman.conf there is:
> >   [core]
> >   Include=/etc/pacman.d/mirrorlist
> > Pacman replaces '$repo' with 'core' automatically during a sync operation.
> >
> > 2) Add a similar support for $arch:
> >   Server = ftp://ftp.archlinux.org/$repo/os/$arch
> > On i686 machine pacman should replace '$arch' with 'i686' and then with 'any'.
> > This way we will have 3 different .db.tar.gz for ftp dir, including
> > $repo/os/any/$repo.db.tar.gz
> > And we there will be no symlinks in $repo/os/{i686,x86_64} dir.
> >
> > 3) For cross-distro usage it's better not to hardcode $arch=($CARCH
> > 'any') but make it cofigurable (at least at build time).
> >
> > 4) Modify pacman's output so it produces a single progress meter for a
> > repo, not 2 for each 'i686' and 'any' db file.
> >
> > 5) extract 'i686' and 'any' dbs to a single /var/lib/pacman/sync/$repo
> > but then it should guess from which ftp dir to download package
> > (taking -prefix into account again? or store arch info in db?)
>
> I have another (similar) approach:
>
> Change
> Server = ftp://ftp.archlinux.org/$repo/os/i686
> to
> Server = ftp://ftp.archlinux.org/$repo/os/
>
> Place a $repo.db.tar.gz file in the os/ directory and for each package
> add additional information:
> - Available architectures for the package in the desc file
> - FILENAME, NAME, VERSION, CSIZE, MD5SUM field for each architecture in
> the desc file
> - Maybe add DEPENDS-$ARCH field in the depends file
>
> pacman knows by configuration (with a sane default), that it can use the
> i686 and any architectures. If it find the package for i686, it tries to
> download ftp://ftp.archlinux.org/$repo/os/i686/${filename-i686}. If not,
> it tries to find ftp://ftp.archlinux.org/$repo/os/any/${filename-any}.
> If neither architecture is found in the db, it knows the package doesn't
> exist for this architecture.

Here's a question though - considering the fact that we have these
arch extensions, why do we even need separate dirs if we take this
approach?

Other than that, I like this idea.


More information about the arch-dev-public mailing list