Historical bug tracker for the Pacman package manager.
The pacman bug tracker has moved to gitlab:
https://gitlab.archlinux.org/pacman/pacman/-/issues
This tracker remains open for interaction with historical bugs during the transition period. Any new bugs reports will be closed without further action.
The pacman bug tracker has moved to gitlab:
https://gitlab.archlinux.org/pacman/pacman/-/issues
This tracker remains open for interaction with historical bugs during the transition period. Any new bugs reports will be closed without further action.
FS#13780 - Multiple branches management for packages
Attached to Project:
Pacman
Opened by syll (syll) - Friday, 13 March 2009, 14:06 GMT
Last edited by Allan McRae (Allan) - Friday, 09 October 2009, 14:12 GMT
Opened by syll (syll) - Friday, 13 March 2009, 14:06 GMT
Last edited by Allan McRae (Allan) - Friday, 09 October 2009, 14:12 GMT
|
DetailsLinux distributions could be divided in two categories : - Rolling release system : unstable, always recent packages (up-to-date) - "Stable" release system : stable, old packages (slow evolution) I think we need something more powerful, more flexible, and ArchLinux is in my opinion a distribution that could do this. Rolling release system is really interesting, but parts of a system shouldn't be always replaced by the latest (unstable) version. A few exemples, based on what I use : - Firefox (or other common software) : you may want to wait for plugins being updated for the new version, or just want to choose when leaving 2.0.x for 3.0.x - Eclipse (or other tool) : new versions are generally full of bugs, interface or features could have changed, the version changes shouldn't be "forced" - Java/Python (or other environments) : there are incompatible changes between versions, when you have an environment installed you don't want its version to change (or just if *you* decide to change it (and test it with all your programs using this environment)) - Xorg (or other system tool) : old driver compatibility problems, change in configuration files format, ... (example : Xorg's last major version) - ... ! Another thing about ArchLinux as a base for different usages : for a client, we might need latest versions (or not...), but for a server, we need stable software too. Note : I know we are not forced to update packages, but as there is only one branch for a package, we can't stick to a version a of package, which is not maintained anymore by ArchLinux (or any repository). For instance example if I use mypackage-1.0.3 and it is replaced by mypackage-1.1.0, I can't get mypackage-1.0.x packages anymore. And if I want to "remain" on 1.0.x branch, I can't do automatic updates since I need verifying the version number of every package I want to be stable. The best way I can think to achieve this is based on rolling release system, with more than one branch per package. Basic features needed for this : - Maintain several parallel branches for a package - Releases including major changes are on separate branches (exemple : firefox-3.0.x, firefox-3.1.x, eclipse-3.2.x, eclipse-3.3.x, python-2.6.x, python-3.0.x, ...) - Releases including bugs/security/... fixes are on the same branch (firefox-3.0.7 replace firefox-3.0.6) - Possibility to update a package with the newer release or with the newer release on the current branch (<=> "stable" update) (default should be to update with the newer version, which is consistent with Arch current behaviour) - Possibility to mark a package as stuck to the current branch ; in this case, default update of a package should do an update on the branch - When doing a full update (-Su), pacman should use the marker to decide between updating to latest release or juste to latest release on the branch ; this allow making stable updates, (almost) without danger : packages you want to keep stable remain on their branch, others are updated with later package release [in fact this is the same as the two previous points, but for total update] - Possibility to change the branch on which a package is stuck - Mark branches that are not maintained anymore (maybe with an indication of who decided to cut this branch : Arch or the developpers of this program) ; Pacman could print a warning about that while trying to update the package Another related problem : while using an environment with several incompatible versions (Java, Python, ...), the possibility to install several parallel branches would be very useful (several versions installed in directories whose names are those of branches). I hope this quite long message won't be too hard to read. I think Arch is a great distribution just needing the ability to decide something should be stable instead of recent to be fully customizable. Syll |
This task depends upon
Closed by Allan McRae (Allan)
Friday, 09 October 2009, 14:12 GMT
Reason for closing: Not a bug
Additional comments about closing: This scheme can already be implemented using pacman
Friday, 09 October 2009, 14:12 GMT
Reason for closing: Not a bug
Additional comments about closing: This scheme can already be implemented using pacman
This feature request is invalid and off-topic in Arch bug tracker, but I would still like to answer on a few points, to try to understand your model better.
> Linux distributions could be divided in two categories :
> - Rolling release system : unstable, always recent packages (up-to-date)
> - "Stable" release system : stable, old packages (slow evolution)
Do you know one distribution with a stable release system that does not have some kind of development branch?
These development branches are usually quite similar to a rolling release system.
From my point of view, the only particularity of arch is to only have this development branch and no stable one.
> Another related problem : while using an environment with several incompatible versions (Java, Python, ...),
> the possibility to install several parallel branches
> would be very useful (several versions installed in directories whose names are those of branches).
so we have :
python : stable / unstable
And then :
python-app : stable for python-stable / stable for python-unstable / unstable for python-stable / unstable for python-unstable?
And if you have n dependencies, you have 2^(n+1) versions of the same package?
Otherwise, if you want to link stable versions together, and unstable versions together, you are back to the common model of having two distinct stable and unstable branches.
I've put it in "Pacman" category, with "Task Type = Feature Request". Other feature requets were already there...
> First, it is completely sylly to think that an established distribution would radically change its model to follow yours, but I would still like to answer on a few points, to try to understand your model better.
This is not not a radical change in the model, default behaviour should be the same as now.
This was about managing branches for *packages*. For example you have an application "appli", with versions 1.0.0, 1.0.1, 1.0.2, 2.0.0, 2.0.1. And application's developpers said the third version number is for minor changes (bug fixes, ...). You have 2 branches for this applications :
- appli-1.0 : 1.0.0, 1.0.1, 1.0.2
- appli-2.0 : 2.0.0, 2.0.1
This is not branches for the distribution but for packages.
Here we would have one package ("appli") with two branches ("1.0.x" and "2.0.x").
> so we have :
> python : stable / unstable
>
> And then :
> python-app : stable for python-stable / stable for python-unstable / unstable for python-stable / unstable for python-unstable?
>
> And if you have n dependencies, you have 2^(n+1) versions of the same package?
If you named "python-app" a random python application which is part of the distribution : no. You would have a version for the last python version.
This was for python applications a user develop or deploy. In a production environment, this user may need Python 3.0 for a new application he is deploying and Python 2.6 for the old ones already running.
e.g. in Arch, we have the python package (currently version 2.6.x), a python24 package (version 2.4.x) and a python3 package (version 3.0.x).
and combining that with IgnorePkg in pacman.conf, I think this is already achievable.
Have I missed something completely?
Yes, this is one point. For most software, there is one really active branch, so the work needed should be bigger than now but not so much (hopefully), since most of new versions released for a software are in the principal branch (and this work is already done now) and few releases are in other branches (this would be additional work).
The second point is : now we can have several totally separated packages, as Allan said. I think it would be interesting to have one package with several branches (or several packages with an explicit link).
I try to explain it again shortly and clearly (this is a try :) ) :
- Say we have a software "soft". Versions released of this software : 1.0, 1.1, 1.2, 2.0, 2.1 .
- Now in Arch we have a package "soft", representing the last version of this software (ok, for some packages as Python we have several packages and several branches, but not linked to each other).
- What I was thinking is having one package with two branches (1.x and 2.x).
- The idea is to say to Pacman one of these :
- I want to have the last version of last branch for package "soft" (current Pacman behaviour)
- I want to have the last version of this branch for package "soft" (and specify a branch : here 1.x or 2.x)
- ... and change from one to another : from "last branch" to "a given branch", from "a given branch" to "another given branch" or to "last branch".
If a branch is not maintained anymore (by software developpers or Arch maintainers), Pacman would be able to say "Warning : the branch you use now is not maintained anymore [due to software developpers / Arch maintainers]". And if I say to pacman : "I want to have the last version of this given branch", it would never update to another branch, just display this warning if the branch has been cut.
When I say this would be one package with several branches, it is from a "user" point of view, not technically. If you think this is easier to do with several packages this is not a problem, but in this case they would be "linked" to each other to provide features above. So Pacman would know theses packages are different branches for the same software.
Is it clearer now ?
Sorry if it is still quite long.
[hmmmm, sould I have replaced all instances of "software" by "piece of software" in my text ?]
syll
Reason : This is against the most important principles of Arch : simplicity, elegance, minimalism
But who are this principles for ?
For Pacman's developers or for Pacman/Arch's users ? Simplicity and minimalism in the development of Pacman are not the same than simplicity and minimalism in using it (even quite opposite). Trying to be aware of each package modification (what has been changed and what problems would come with update) is not simple (nor so elegant). Minimalism is for simplifying the understanding and management of a tool or distribution, where is simplicity/minimalism when you can't have anything just work for a quite long time without being threatened by any new update ? Where is simplicity when you can't just say : this is important and should not be updated to a new version (just correct bugs) / this has to be new and up-to-date ?
From a pacman point of view, there is nothing stopping someone setting up a distro that does everything you want. It just won't be Arch.
So, this is "Not a bug" for pacman and "Won't Implement" for Arch...