I finally implemented very important feature of scout: It is now able to search for binaries in all enabled zypp repositories. SAT-solver files are used for this, so user does not have to install any external index files. I really would like to thank Klaus Kaempf for his exhaustive help with python bindings for satsolver. Another great news are that Werner Fink applied command-not-found patch for bash package, so 11.1 will probably contain this feature working out of the box! Current early implementation has one problem though: it is pretty slow comparing to older use-own-sqlite-database approach (2 seconds compared to 0.2 seconds). But it indexes more repositories at once (I have 14 enabled) and I believe the code could more optimized and thus whole search faster in the (near) future.
Feel free to test the packages from BuildService (follow the instructions on wiki) and tell me what you think of it !
Hooray! The first public version of Scout was just released. It is a simple tool which allows user to look for (not yet installed) packages using simple queries (e.g. which autoconf macros does the package contain, which Java classes are present inside or what binaries does the package provide). Scout is available in openSUSE BuildService in home:prusnak:scout project. If you would like to install and test it, follow these three steps:
- add the following repositories:
zypper ar http://download.opensuse.org/repositories/home:/prusnak:/scout/openSUSE_11.0 scout
zypper ar http://download.opensuse.org/repositories/home:/prusnak:/scout/data scout-data
(change openSUSE_11.0 to your distribution if necessary)
- install scout:
zypper in scout
- add any of the index data you find attractive (only example – see scout wiki page for the whole list)
zypper in scout-bin-suse110
zypper in scout-java-suse110
Data package names are in format scout-module-repo. Indexes for autoconf macros are in autoconf packages, bin are indexed binaries and java are indexed java classes. Repository names are either distributions (sle10, suse101, suse102, suse103, suse110) or BuildService projects (jpackage17 for Java:jpackage1.7). Simple, isn’t it?
(Warning: Java indexes are pretty large – 5MB RPMs and around 30MB when installed.)
When you are ready, run scout without parameters to see the help. I think that the usage is pretty straightforward (nevertheless, I will try to create demonstration video soon). You can also try running scoutcsv or scoutxml – they are only symlinks, but they produce CSV or XML output, instead of table output.
I hope you will like it!
The next thing to do is to add support for ZYPP repositories (sat-solver files) in module for binaries, so user could query packages (even in the BuildService repositories) without installing any external index data. When this is done, it would be a piece of cake to replace the earlier implementation of command-not-found with the new one using scout as its backend. Unfortunately, this is not going to happen before the ZYPP bindings for Python (python-zypp) are fixed. (API has changed and it seems that only Ruby bindings are maintained.) I tried to fiddle with it (bugzilla), but I’m not a SWIG expert.
We decided to restructure and cleanup the games projects in the openSUSE Build Service. Before the change we had 8 projects for each game genre (action, adventure, arcade, board, puzzle, roleplay, strategy/realtime, strategy/turn-based) and one separate project for game libraries (so you can play games even on older distributions with obsoleted libraries).
This situation was causing more harm than good, so now we will only have one “games” repository with all game genres together. If you have already added old game repositories, please remove them and add the brand new one located at http://download.opensuse.org/repositories/games/ and then the directory of your distribution. The old URLs for the individual games repositories will no longer work.
If your favorite game is not yet packaged you can add it to the Games Wishlist at openSUSE wiki. Or even better, you can try to package it by yourself and when you are finished contact me and we will add the game to the repository. You can also ask on the opensuse-packaging@opensuse.org (subscribe) mailing list you have any troubles with the packaging.
Game On!
During Hackweek I implemented project command-not-found for openSUSE.
Background: Debian and Ubuntu use patched bash, that allows to write handler, which is executed before “command not found” is written. That provides us a way we can help user in solving the problem. You can look at the picture to get the idea:

In first example, user types “epihpany” instead of “epiphany” and handler suggests correct spelling. After this user tries running epiphany, but it is not installed, so handler shows list of packages that provide this program. In the third example, user runs program that is not found, but package providing it is installed (meaning that program is not in user’s path – probably intended to be run only by root).
Package command-not-found and patched bash are available in BuildService or you can download packages directly from repository. Please test the packages and let me know if you have any ideas or in case you have found a bug.
Ah, I almost forgot
You have to add these 3 lines to /etc/bash.bashrc.local or ~/.bashrc:
if [ -f /etc/bash_command_not_found ]; then
. /etc/bash_command_not_found
fi
Handler for zsh can be installed in similar fashion. Read README in command-not-found package.