FS#6389 - Pacman handling of mirrors/repos
Attached to Project:
Pacman
Opened by Scott H (stonecrest) - Saturday, 10 February 2007, 03:31 GMT
Last edited by Dan McGee (toofishes) - Tuesday, 06 November 2007, 05:52 GMT
Opened by Scott H (stonecrest) - Saturday, 10 February 2007, 03:31 GMT
Last edited by Dan McGee (toofishes) - Tuesday, 06 November 2007, 05:52 GMT
|
Details
20:23 stonecrest| pacman should change the way it handles
mirrors so that you type one mirror to be used for various
repos. that would also prevent users from using different
mirrors and getting inconsistent packages.
20:24 stonecrest| s/various/multiple 20:24 phrakture| http://img.4chan.org/b/src/1171077297949.jpg 20:24 stonecrest| plus it would mean i don't have to open four configs every time i re-arrange mirrors. 20:24 phrakture| stonecrest: good idea actually - can you bug report that? 20:25 stonecrest| sure I'm sure there are a lot of ways this could be structured in the pacman.conf. |
This task depends upon
Closed by Dan McGee (toofishes)
Tuesday, 06 November 2007, 05:52 GMT
Reason for closing: Implemented
Additional comments about closing: $repo expansion implemented in GIT releases, now a single mirrorlist. Additional servers can be specified with other Include lines or Server lines.
Tuesday, 06 November 2007, 05:52 GMT
Reason for closing: Implemented
Additional comments about closing: $repo expansion implemented in GIT releases, now a single mirrorlist. Additional servers can be specified with other Include lines or Server lines.
1) Some mirrors don't mirror community and/or unstable, only current and extra.
2) Testing is never mirrored.
Perhaps something like a "default mirror" could be specified, and then overrides if necessary?
This should be changed IMO.
> 2) Testing is never mirrored.
Wrong. :P
It's mirrored on some mirrors.
And now when there's trottling on archlinux.org, I don't think we could have "default mirror".
Lets just encourage/ask mirror maintainers to sync all repos.
Then, I think it's better to leave thigs as they are now. Either rankmirrors can be used for sorting mirrorlists or write/copy/paste Server=... lines for every repo in pacman.conf (I do this sometime instead of editing mirrorlists).
However I thought more about "default mirror", and think it could be written like
DefaultServer = http://something.com/mirror/%repo%/os/i686
Repos = current extra community
And pacman could replace %repo% with reponame to get real URLs for each repository.
If there are
[current]
Server = ...
# Include = /etc/pacman.d/current
then it overrides DefaultServer & Repos of course.
I don't know yet if I'll prefer this additional functionality though. :-/
I also don't understand the point of DefaultServer. Which of these two points above does it solve?
The logic used by DefaultServer should apply to all servers. That is:
Repos = (testing current extra community)
Server = http://something.com/mirror/%repo%/os/i686
Server = http://blah.com/mirror/%repo%/os/i686
Server = http://foo.com/mirror/%repo%/os/i686
Server = http://mirror.com/mirror/%repo%/os/i686
And users should probably still be able to use the current approach for mirrors that don't have all of the repos specified in Repos=():
Server = http://something.com/mirror/{current extra community}/os/i686
Syntax isn't so important, of course, but resolving both issues above is.
http://something.com/mirror current extra community
the idea of a 'mirror pool' and a 'subscribed repos' list is interesting, because it solves some repetitiveness in the above (e.g you just want to add or remove testing punctually):
Repos = (testing current extra community)
Server = http://something.com/mirror
Server = http://somethingelse.com/mirror
then, what if some mirror pool does not have testing nor community? grouping! like:
[arch]
Repos = (testing current extra community)
Server = http://something.com/mirror
Server = http://somethingelse.com/mirror
[privatenet]
Repos = (current extra)
Server = http://somethingaroundthere/mirror
Server = http://somethingelsearound/mirror
[local]
Repos = (whatever)
Server = http://somethinglocal/mirror
and so on.
"/os/i686" part being somehow 'automatic', e.g from current architecture. maybe mandatory to have such a dir structure in any repo, so that people don't f**k up and go use a 686 repo for 64bit. and not much of a constraint, since it's constant for one given machine, plus it allows using the same mirror file regardless of the arch (and thus easily distribute this file across 30 i686 + 50 x64 machines)
It's not what everyone was talking about here, but it's easy and cleaner.
Here's a usage example:
#/etc/pacman.d/mirrors
Server = http://foo.com/$repo/os/i686
Server = ftp://bar.net/$repo/os/i686
#/etc/pacman.conf
[current]
Include = /etc/pacman.d/mirrors
[extra]
Include = /etc/pacman.d/mirrors
If a given mirror doesn't have a certain repo, we can deal with that issue later, but it'd just mean additional files, or separate listings beyond the 'mirrors' file.
[current]
Include = /etc/pacman.d/current
Include = /etc/pacman.d/mirrors
I think some more (prolonged) package cleanup would help here too.
I think one ftp will be cleared we need to release an announcement to mirror maintainers asking them to use the script from Local Mirror wiki (which will be updated to reflect FTP changes).
I find it odd to have the same mirror list duplicated 6 times.
Besides, it's already in one place in pacman source tree : etc/pacman.d/mirrorlist.in
Is it really necessary to generate 6 nearly identical files from it ?