[pacman-dev] Multiple/Shared Architectures
Hey, I've planned out a set of changes I want to try with Pacman and Makepkg. Most deal with creating a source repository setup that would store source files as their sha512sums, but that isn't related to this. Another thing that I want to do is have a "shared" repository for non-architecture specific packages. I would rather not use different repositories for the "shared" architecture, ie: core-shared, extra-shared. Here is my current mirror layout: icadyptes/i486/{core,extra} The shared architecture could be at: icadyptes/shared/{core,extra} I'm sure that this conflitcts with a few things inside libalpm, but here is my proposed implmentation: pacman.conf: SupportedArchs = i486 shared (Could have i686 too, or anything making this useful for other tasks) mirrorlist: Server = ftp://icadyptes.go-beyond.org/icadyptes/$arch/$repo A shared repository would save disk space on mirrors, as well as bandwidth (to a lesser extent). The makepkg implementation for this could simply be setting $arch to shared. Distributions using Pacman would need to change other things for this to work properly, but in my opinion, it is a clean change that could be very useful. Packages could be queried for just like they are if it is not immediately found in the first repository, checking until it finds an architecture with the package's name. This could serve other purposes, too. With additional hacking (and possibly pacman.conf options), doc files could be split into seperate packages (and hence a different repo), and be given the "doc" architecture. Users would add "doc" to SupportedArchs (I'm sure this could have a better name), and when they download a new package the doc files would come in a seperate package with it. SupportedArchs would also be ordered by preference, so perhaps it could be pentium4, i686, i486, shared, so that packages (on an incomplete build) more optimised for a certain architectures would be prefered over their lesser-optimum counter parts (sure that this induces a few potential problems though). Now that I think about it, there could even be a $distribution setting for people wanting to pull packages from multiple distributions :-P. You guys have already put a ton of work into Pacman, and made it one awesome package manager. Not sure if this idea interests you or not, but it is something I'd really love to have in my Arch fork. I'm willing to code this in myself, but I'd need to learn more C first, and am sure that any of you could do it in much less time. Let me know what you think of it, and if you have any suggestions or ideas. Thanks, Teran (sega01) PS: I think that the stock makepkg should default to arch=(any) if $arch is not set. I do this in Icadyptes, and it is a very safe (to my knowledge) and easy hack. Has there been any discussion or patches regarding PGP signed database files?
2008/9/27 Teran McKinney <sega01@gmail.com>:
Hey,
I've planned out a set of changes I want to try with Pacman and Makepkg. Most deal with creating a source repository setup that would store source files as their sha512sums, but that isn't related to this. Another thing that I want to do is have a "shared" repository for non-architecture specific packages. I would rather not use different repositories for the "shared" architecture, ie: core-shared, extra-shared.
There is support for arch=(any) already, and it does not require any new repositories (when using the scheme with symlinks/hardlinks). You can search pacman-dev and archlinux-public archives for more. AFAIR devtools/aurtools & dbscripts still need to be modified to start using this feature. -- Roman Kyrylych (Роман Кирилич)
On Sat, Sep 27, 2008 at 3:03 PM, Teran McKinney <sega01@gmail.com> wrote:
PS: I think that the stock makepkg should default to arch=(any) if $arch is not set. I do this in Icadyptes, and it is a very safe (to my knowledge) and easy hack. Has there been any discussion or patches regarding PGP signed database files?
On Mon, Sep 29, 2008 at 00:14, Dan McGee <dpmcgee@gmail.com> wrote:
On Sat, Sep 27, 2008 at 3:03 PM, Teran McKinney <sega01@gmail.com> wrote:
PS: I think that the stock makepkg should default to arch=(any) if $arch is not set. I do this in Icadyptes, and it is a very safe (to my knowledge) and easy hack. Has there been any discussion or patches regarding PGP signed database files?
Glad that others are interested in this too. I would definitely vote for a signature by database method, by package is very complex and large. gpg --verify repo.db is very insecure, it allows any valid key in the user's database to be used when signing the package. If they have automatic key fetching enabled, it gets even worse. I would have seperate keys for each repo and sign accordingly. A shell script implementation of this is quite simple, but a proper C implementation might not be too bad either (especially if you don't hook into any libraries and just go by command exit status).
There is support for arch=(any) already, and it does not require any new repositories (when using the scheme with symlinks/hardlinks). You can search pacman-dev and archlinux-public archives for more. AFAIR devtools/aurtools & dbscripts still need to be modified to start using this feature.
I am aware of arch=(any), but IMO, it is redundant and somewhat wasteful to be forced to set it, since arch=(any) as a genuine usage is so common. A symlink system is very messy and impractical, but it would probably work. I did not realize that the libalpm-side restrictions of architecture settings were removed, so this should make things easier. Thanks, Teran (sega01)
participants (3)
-
Dan McGee
-
Roman Kyrylych
-
Teran McKinney