Thread Hijack - Our package management GUI tools need improvement

Tim Lauridsen tla at rasmil.dk
Fri Mar 9 09:38:28 UTC 2007


Mike Kearey wrote:
> In general our single, most commonly criticized feature is package
> management.
>
> I do think we need bigger efforts in this area:
>
> - Make the GUI tools _just work_
> 	For example, have one graphical tool. It should manage both on and
> offline package management. Make it such that it can manage package
> installs from CD as well as from mirrors. In the situation where the
> system has been updated, and the user is attempting to install a package
> from CD - If the package has deps that have been updated Tell the User.
> Explain that the specific package has been obsoleted. Offer the user the
> choice to go to updates mirrors on Internet to get the package or to cancel.
>   
The been changes in yum lately, there removes the need for downloading 
header, this is necessary to have media support
in yum and the tools using the yum API (pup, pirut, yumex etc.).
So media support is work in progress.

> - Integrate the GUI tools with the yum-updatesd - If there is a conflict
> when yum-updatesd is running, Tell The User. Explain why this is
> happening. Perhaps integrate the GUI tool in such a way that it starts,
> informs the user that yum-updatesd is running, and shows the status of
> yum-updatesd - plus the opportunity to control it.
>
>   
It's imported to know how the different tools works before taking this 
discussion.
yum-api : The yum backed python classes there does all the real action.
yum-cli: The yum command line tool.
yum-updatesd: The system  deamon there checks for updates, controlled by 
DBus commands.
puplet:  The update applet, there shows notification when updates are 
availible, it controls the yum-updatesd by DBus commands.
pup: A Gui for installing yum updates.
pirut: A Gui for installing and removing packages.
system-config-packages: A gui for installing af single local package.
yumex: Another gui for updating,installing and removing packages.
yum-utils: A collection of command line tools to do  different actions 
using the yum-api.

The yum-cli, yum-updatesd, pup, pirut, yumex, 
system-config-packages,yum-util is using the yum-api to do the real 
action and only one tool can
work at the time, so they use a locking system build into yum, all the 
tools will bail out if the yum-api is locked, the don't know what 
application
is locking the yum-api.

Only the the 'puplet' is aware of 'yum-updates', so if it runs in the 
background, you will get an error if you run one of the other tools.
Maybe if the applet was showing some kind of animated icon when it was 
working, the user would know why they cant run one of the other tools.
> - Make yum at least equal in speed to the alternative tools like apt-get
>
>   
The problem with comparing yum and apt-get, is that people forget that 
it is not fair to compare
the speed of 'apt-get update' and 'yum update', because the are not 
doing the same job.
apt-get update only work on a local cache, while yum checks if the local 
cache is warm, and reload it, if it has not been updates
recently.
some you have to compare a 'apt-get dist-upgrade; apt-get update' with 
'yum update'

> I constantly see people criticizing yum for it's apparent slowness. This
> has been going on for years now. We need to do real side by side
> comparisons to identify where the problems are. I am guilty of ignoring
> the slowness as it 'just works' for me and I am a happy sys admin for
> it. For many newer users, speed is essential. For many new users,
> installing packages, and exploring the system is the central activity.
>   
Then talking about speed you have to look at the step in a 'yum update' 
transaction.

1. initialization (reading config files, repo files etc.)
2. for each repo do:
    get a list of urls (load mirrorlist or use baseurls in repofile).
    get the the repomd.xml from the remote site.
    get the basic metadata primary.xml.gz (or primary.sqlite.bz)
    parse the metadata and insert it into the local sqlite db.
3. load the data in the local rpm db.
4. Match the local rpm db with the remote packages available in the 
repos to detected if something needs to be updated.
5. Depsolve the updates found in 4, to see if all dependencies is 
solved. (Extra metadata and rpm headers are downloaded (yum < 3.1.x))
6. Download needed packages.
7. Update/Install the packages in the transaction.

Looking at the speed of different steps.
1. fast.
2. The time depends of the number of repos and the size of the metadata 
and network bandwidth  and speed of the mirror used.
    The speeds is fast if the metadata has been loaded recently, because 
then yum will use the cached files.
3. fast.
4. The  time depends on the number of installed & availible packages.
5. The  time depends on the number of installed and the number of 
packages in the transaction, big transaction can take long time.
    The current yum 3.1.x release is slower than yum 3.0.x, because it 
has been totally redesigned, and it most importent that it is working
    right, before starting to optimize the speed.
6. Depends on the size of the packages to be downloaded, network 
bandwidth and the how fast the mirrors are.
7. Depends on the number of packages, the size and scripts include in 
the rpms. (RPM)

The only step 2 (the metadata parse) ,4 ,5  can be optimized in yum all 
the others are controlled by outside parameters.
In the daily use of yum on a stable version of Fedora, I don't think 
there are any speed issues.
Off cause if you are running a 500 Mhz, PII, with a 56 Kbits modem 
connecting, a OpenOffice  update > 100Mb sucks big time,
But that is not something you can bame on yum.

> So package management GUIs should not be under-estimated in their
> importance.
>
>   

package management GUIs are importent, this is why i have created yumex  :-) .

Tim




More information about the fedora-devel-list mailing list