yum todo list/bluesky items
October 22, 2004
I had a few folks ask me for this so here it is – this is a list of
todo items and zany ideas that I’d love to see people play with in yum
2.1.x. I’ll say that again – I don’t want to see any of this for yum
2.0.X, only for 2.1.X 🙂
These are in no particular order.
– yum deplist packagename:
looks in the metadata for the packagename(s) and returns a list of its requirements. It should list the specific dependency then gives a short list of packages that provide that requirement from the metadata
– yum list obsoletes:
– list obsoletes of packages in the format – it needs to fit on one line (80chars) per obsolete.
package-ver-rel from repo obsoletes otherpackage-ver-rel
– leaf-node list/removal – I’d like an option to list/remove leafnodes. These are packages (especially libs) upon which nothing depends. There is some code in rpmUtils/transaction.py to return lists of them – the bit that needs to be done is figuring out what is a lib and what is an end-application.
– transactioninfo.py work – this is something I want to work on 🙂
– Xtrigger – once transactioninfo.py is done then menno’s code can be included, too. We’ll need some sample/default modules here, too.
– new logging output and possible history saving. Logs are fine, they let you list some changes, but I think it might be useful to save a much more detailed log of what occurred, including error/output messages from each package in the transaction. This could be cool to implement a ‘yum history’ command – that printed out what happened, etc in a transaction. So you can look back at what you’ve done.
– the above requires that we get some code in place to dup the output file descriptors from the rpm callback and capture their output. This _should_ be doable.
– importkey – I’d like yum to be able to import keys, if anyone wants to go the extra mile and write up code for stripping off extra signatures of the gpg keys so it won’t mess up the rpmdb on import, I’d be your best friend 🙂
– rpm debug option – equivalent to passing -vv to rpm
– yum-shell – talked about quite a bit – an interactive shell for querying/packing/etc a yum transaction
– transaction chunking. As Daniel described elsewhere some way of reliably breaking up a large transaction into discrete and self-complete transactions. This would make play back and error recovery easier.
– make the diskspacecheck and other rpm transaction problem filters easier to specify
– xml-rpc interaction for sending yum commands to other systems – I think this would be cool and potentially useful – but I do also see the dangers therein – if someone wanted to work on an xml-rpc server implementation that exposed the major yum commands as methods I think that’d be a cool project and a good place to work on code outside of yum. At the very least – putting together some query/read-only code for collecting data from yum-running machines would be terribly interesting (to me)
– especially for those people managing a bunch of yum-enabled machines but with limited central-server resources.
– similar to the bottom of above – if someone wanted to write an rssparser for yum generate-rss updates that consolidated the lists and made a nicer display of a set of machines and what updates they needed, I think that person would make a lot of friends. 🙂
– download package callback – right now yum downloads packages but it doesn’t give you an idea of how many it has left to download – this should be added – this is about a 10 minute job 🙂
– some thought needs to be put into yum downgrade – the depresolution is all based around the idea of updating out of dependency problems. Some of that will need to be rethought in order to implement downgrade. I’ll be honest this one is not a high priority for me, however I would like to be able to implement two things:
– yum reinstall somepackage-ver-rel
– yum downgrade /some/package/that/is/older/than/what/I/have/installed
I’m really not interested in a global downgrade path – there lies an enormous amount of pain, I think.
– includeonlypkg – this won’t be hard to implement either – stub code is in place in yum/__init__.py – just needs to delete packages from the packagesack based on what it finds in the config.
– groupinstall should be able to take options about what types of packages to install – optional, default, mandatory – right now it just does default and mandatory but I can see someone wanting to do more/otherwise.
– logging to syslog – need a syslog object and to point filelog there – done
– repackage all erasures should work – I don’t think this one is hard either – it just needs some attention for a few minutes. 🙂
– all the execptions I’m using need error numbers to make it easier for a gui to use and for other reasons – especially translations.
– outputs strings in cli.py, callback.py and output.py at level 2 or below need to have the _() function from i18n wrapped around them for translation
– yum queue! – I want this one to be implemented badly and when I’m through a few more things I’m sure I’ll look at it – if anyone gets to it first, go for it – most of it should be simple, parse xml file, look at metadata, run the update/install/erase functions as necessary.
– integrate the yum downloader patches.
– work on a yum-source program for dealing with/installing/etc src-rpms including their BuildRequirements.
– the yum webpage and documentation on the webpage needs an overhaul. I like the look of the page – snaplook is great, but I think the content needs some love.
Whew. I think that’s all I have for right now. A lot of these are programs outside of yum, but they’ll be using the yum modules and/or would be very exciting to see somewhere on the yum webpages.
Now the fun part, If there is anything above that you’ve worked on that you want to patch INTO yum it MUST:
- work in python 2.2 – I’m using this stuff on python 2.2 systems
- work with rpm 4.2.X
- not pull too many crazy requirements.
If you see something you like start working on it, If you’d like to talk about the idea some more to flesh it out – then post it to the yum-devel mailing list or bounce me a message.