One thing that annoys me with Debian and Linux distributions in -general, is that there is a great package management system with the -ability to automatically install software packages by downloading them -from the distribution mirrors, but no way to get it to automatically -install the packages I need to use the hardware I plug into my -machine. Even if the package to use it is easily available from the -Linux distribution. When I plug in a LEGO Mindstorms NXT, it could -suggest to automatically install the python-nxt, nbc and t2n packages -I need to talk to it. When I plug in a Yubikey, it could propose the -yubikey-personalization package. The information required to do this -is available, but no-one have pulled all the pieces together.
- -Some years ago, I proposed to -use -the discover subsystem to implement this. The idea is fairly -simple: - -
-
-
-
- Add a desktop entry in /usr/share/autostart/ pointing to a program - starting when a user log in. - -
- Set this program up to listen for kernel events emitted when new - hardware is inserted into the computer. - -
- When new hardware is inserted, look up the hardware ID in a - database mapping to packages, and take note of any non-installed - packages. - -
- Show a message to the user proposing to install the discovered - package, and make it easy to install it. - -
I am not sure what the best way to implement this is, but my -initial idea was to use dbus events to discover new hardware, the -discover database to find packages and -PackageKit to install -packages.
- -Yesterday, I found time to try to implement this idea, and the -draft package is now checked into -the -Debian Edu subversion repository. In the process, I updated the -discover-data -package to map the USB ids of LEGO Mindstorms and Yubikey devices to -the relevant packages in Debian, and uploaded a new version -2.2013.01.09 to unstable. I also discovered that the current -discover -package in Debian no longer discovered any USB devices, because -/proc/bus/usb/devices is no longer present. I ported it to use -libusb as a fall back option to get it working. The fixed package -version 2.1.2-6 is now in experimental (didn't upload it to unstable -because of the freeze).
- -With this prototype in place, I can insert my Yubikey, and get this -desktop notification to show up (only once, the first time it is -inserted):
- -For this prototype to be really useful, some way to automatically -install the proposed packages by pressing the "Please install -program(s)" button should to be implemented.
- -If this idea seem useful to you, and you want to help make it -happen, please help me update the discover-data database with mappings -from hardware to Debian packages. Check if 'discover-pkginstall -l' -list the package you would like to have installed when a given -hardware device is inserted into your computer, and report bugs using -reportbug if it isn't. Or, if you know of a better way to provide -such mapping, please let me know.
- -This prototype need more work, and there are several questions that -should be considered before it is ready for production use. Is dbus -the correct way to detect new hardware? At the moment I look for HAL -dbus events on the system bus, because that is the events I could see -on my Debian Squeeze KDE desktop. Are there better events to use? -How should the user be notified? Is the desktop notification -mechanism the best option, or should the background daemon raise a -popup instead? How should packages be installed? When should they -not be installed?
- -If you want to help getting such feature implemented in Debian, -please send me an email. :)
-