All entries for Saturday 10 March 2007
March 10, 2007
Package search developments
Over the last few months I’ve been providing a page for searching openSUSE packages . This has proven quite useful. However, there are two major problems:
- It would be nice if Novell/SUSE would be able to provide the hardware/hosting for package search facilities. This has been a problem because Novell/SUSE cannot host a search which indexes repositories containing packages with legal issues, such as the Packman and Guru repositories.
- It would be nice if the package search facilities could be used to enrich client applications as well as having a web page where users can search for packages. Especially when there are performance and practical issues with encouraging users to add hundreds of repositories to their package manager. (Close to 300 repositories for openSUSE 10.2 now).
To solve these problems I came up with a design whereby search facilities for repositories can be provided by multiple groups, and the search facilities can be easily used within client software.
So now I have 3 components I am working on (functional already):
- An indexer which dumps data from rpm-md repositories into a database for easy querying.
- RESTful web service exposing package search resource.
- Example client implementations. (Web frontend, YaST module, Command line, IRC)
There are some design notes including the web service request format and xml schemas at: http://en.opensuse.org/PKGSearch-design
The source for these components is online if anyone is interested, I’ve not set up an svn repo yet.
Obligatory screenshots of web service clients:
YaST frontend Qt
YaST frontend ncurses
It would be interesting to hear any ideas for functionalities the web service could expose, and innovative use cases for the facility on the client side. At present only the following are implemented:
- Search by name and/or contents.
- Retrieval of package file list (package checksum is external-id).
- Retrieval of package summary and description.
Some I’ve thought of adding:
- Search within descriptions
- Querying of package statistics (number of packages for specified architecture, etc)
- Utilising search statistics for ranking results & allow search by popularity, perhaps connect to build service ratings.