2007/3/29, Nagy Gabor <ngaba@petra.hos.u-szeged.hu>:
Hi!
AFAIK, if a 'foo' package exists in more than one repo (both in extra and testing for example), then the repo which the package will be installed from is undefined (probably the first repo in pacman.conf).
Yep, the first repo takes precedence.
That would be nice, if we somehow could choose our source repo for 'foo'. I don't know how can this be implemented easily, but some suggestions: 'pacman -S repo/foo' or an option to change repo-priority (which is probably defined by their order in pacman.conf) or pacman could ask the user which package is going to be installed (however, this can be annoying).
That's not a good idea IMO.
You may say that I shouldn't use 2 "intersecting" repos, but similar problem occurs in case of (multiple) provided packages, where "ask" seems to be the only usable solution.
That problem is different, because automatic way of selecting the first package found that provides required thing is not the best solution. And asking there is much more useful, IMO.
Anyway, using multiple repos can be useful (but not so efficient now): For example I'm using current, extra and community repos; yes, sometimes there are some buggy packages in current, it these cases that would be comfortable, if I can easily override my default current repo to 0.7.1 for example and downgrading my package or trying a newer one from testing.
AFAIR, you can use pacman -S <repo>/<package> to install package from specific repo. And you can add Current/Extra package to IgnorePkg to prevent them from upgrading from Testing (and from Current/Extra too, but usually there are no further updates to Current/Extra version while there's version in Testing).
One more addition to the last example: Some mirrors keep older versions of packages, for example see ftp://ftp.estpak.ee/pub/archlinux/current/os/i686/, and it would be handy if there would be an other db to these repos (which would contain all older versions of packages), and here comes to picture the multiple packages problem again. For example in these cases the latest version should be the default target and user could override this.
Using such mirrors as repos will lead to installing the latest version of package available there. Using older versions require -A/-U anyway (it will be easier task when -A/-U (-I finally?) --syncdeps will be implemented). -- Roman Kyrylych (Роман Кирилич)