Nov 16, 2010

dbus-dump

dbus-dump is a tool to capture D-Bus messages in a libpcap capture file.

It takes an idea from dbus-scrape, which processes a strace output of dbus-monitor, and takes it further by stracing dbus-daemon, thus not relying on any eavesdropping (mis)configuration.

The intended purpose is to establish the libpcap capture format as a base for debugging tools like

Thanks to Will Thompson for mentioning the pcap idea.

Usage

$ sudo strace -p `pgrep -f 'dbus-daemon --system'` \
    -s 3000 -ttt -xx -o foo.strace
$ ./dbus-dump foo.strace foo.pcap
$ ./dbus-pcap-parse foo.pcap
Tue Nov 16 12:56:47 +0100 2010 #<DBus::Message:0xb741f340
 @body_length=0,
 @destination="fi.epitest.hostap.WPASupplicant",
 @error_name=nil,
 @flags=0,
 @interface="fi.epitest.hostap.WPASupplicant.Interface",
 @member="scan",
 @message_type=1,
 @params=[],
 @path="/fi/epitest/hostap/WPASupplicant/Interfaces/180",
 @protocol=1,
 @reply_serial=nil,
 @sender=":1.7132",
 @serial=88639,
 @signature="">
Tue Nov 16 12:56:47 +0100 2010 #<DBus::Message:0xb741b060
 @body_length=4,
 @destination=":1.7132",
[...]>

Dependencies

It is written in Ruby. The pcap format is handled by a small bundled module. dbus-dump has no other dependencies. dbus-pcap-parse uses ruby-dbus.

Bugs

This is an early proof-of-concept release, serving to introduce the libpcap format.

The main problem of dbus-dump is duplicating the messages, seeing them both when the daemon receives them and when it sends them (multiple times, for the signals).

The other tools haven't caught up yet:

$ /usr/sbin/tcpdump -r foo.pcap
reading from file foo.pcap, link-type 231
tcpdump: unknown data link type 231

Aug 29, 2010

n2n package improved

Root.cz recently ran an article (in Czech) about the n2n virtual private network sofware, an open alternative to Hamachi. I intend to use it to cross the NAT in my mom's DSL modem so that I can connect to her computer with ssh and VNC.
Thanks to happyman_eric and Grief, openSUSE Build Service already contained a package. I have made an improved version, adding an init script and a sysconfig file. Get the sources in my home project, or the binaries.

Aug 10, 2010

Who does not want such a gift

This post is showing naked women packaged as a present (for openSUSE's 5th birthday) and asks Ah... who does not want such a gift, eh.

I believe that the female users and contributors of openSUSE don't. It reduces them to pretty things, judged on their looks instead of their contribution.

Raul, please stop such sexist postings. Your blog is your own, but keep it out from Planet openSUSE.

Just in case common sense is not enough, let me quote for reference the relevant section of the openSUSE Guiding Principles:

We value... respect for other persons and their contributions, for other opinions and beliefs. We listen to arguments and address problems in a constructive and open way. We believe that a diverse community based on mutual respect is the base for a creative and productive environment enabling the project to be truly successful. We don't tolerate social discrimination and aim at creating an environment where people feel accepted and safe from offense.
and the activities in order to excel in our goals: Emphasize the value of communication and recognize cultural diversity within our community.

Aug 5, 2010

Upgraded to openSUSE 11.3

I have upgraded my office workstation to openSUSE 11.3 today. Here I document the migration so that you don't have to repeat my mistakes.

I went via the command line and ventured to keep all additional repos enabled. So switching the repos was done simply by sed -i "s/11\.2/11.3/g" /etc/zypp/repos.d/*

The KDE session crashed after kdelibs4-core had been updated. No big deal, so I ran zypper dup again.
The /home directory is mounted via NFS, so filesystem.rpm failed when it wanted to reset the permissions of /home. Updating it explicitly after unmounting /home was easy, only unmounting it was harder because the crashed session left processes still accessing the home. fuser -v /home found them.

The NFS mount is also authenticated by Kerberos and there is a bug so I got
mount.nfs: access denied by server while mounting nfs.example.com:/home
I had to rebuild and update a package and tweak a config file. See bnc#614293 for the details (thanks to mcaj for the reference).

Jul 22, 2010

ruby-dbus 0.3.1

I have made a bug-fix release of ruby-dbus, a Ruby language binding for the D-Bus IPC system.
  • Many on_signal could cause DBus.Error.LimitsExceeded (bnc#617350).
    Don't add a match rule that already exists, enable removing match rules. Now only one handler for a rule is called (but it is possible for one signal to match more rules). This reverts the half-fix done to fix Issue#3.
  • Re-added InterfaceElement#add_param for compatibility.
  • Handle more ways which tell us that a bus connection has died.
RPMs can be found via Webpin.

Jul 2, 2010

Helping Newcomers

Since the discussion (do check out the linked paper, BTW) and the opensuse-women announcement, I've been thinking about how to make the openSUSE community more friendly to women.

I think one good way is to make sure that new people feel welcome when they join a conversation, be it on the forums, on IRC or on the mailing lists. Now this would be easier if we all had infinite time to read and answer all questions, but as we don't, I decided to focus somehow.

The forums provide a handy shortcut for the focus, labeling a user who made few posts as a "Puzzled Penguin". So I've made a simple service, a feed of http://forums.opensuse.org showing only the posts by newcomer users: http://vidner.net/martin/software/rss-creator-blacklist

(Actually right now it does not show Puzzled Penguins only but instead excludes the 100 most-posting users until I learn how to optimize the PHP code.)

Jun 30, 2010

kiwi2puppet

I have started working on kiwi2puppet, a tool to convert KIWI image descriptions to Puppet manifests.

The goal is to recycle the data that went into the building of an image and use it for managing a deployed appliance.

So far it is a prototype that can write these resources
  • package
  • yumrepo
  • user
  • group
It is written in Ruby, like Puppet.

Source at GitHub: http://github.com/mvidner/kiwi2puppet
RPMs: http://software.opensuse.org/search?q=kiwi2puppet&baseproject=ALL (currently it is a single Ruby script, so at the moment RPMs are not worth any trouble)
Novell Reference: FATE#309497

Get in touch if you're interested.

In case you didn't know:
"The openSUSE KIWI Image System provides a complete operating system image solution for Linux supported hardware platforms as well as for virtualisation systems like Xen Qemu or VMware."
"Puppet is an open source data center automation and configuration management framework. Puppet provides system administrators with a simplified platform that allows for consistent, transparent, and flexible systems management."

Mar 28, 2010

ruby-dbus 0.3.0 Works on Ubuntu

ruby-dbus has for a long time not worked on the default Ubuntu desktop. I thought I had fixed it in 0.2.12 but that was only for the server side. In fact, clients had another bug and I have released version 0.3.0 today to fix it.

NEWS:
Bug fixes:
  • Fixed "undefined method `get_node' for nil:NilClass" on Ubuntu Karmic (Ticket#34).
  • Get the session bus address even if unset in ENV (Issue#4).
  • Improved exceptions a bit: UndefinedInterface, InvalidMethodName, NoMethodError, no RuntimeException
These are by Klaus Kaempf:
  • Make the signal dispatcher call all handlers (Issue#3).
  • Run on Ruby < 1.8.7 (Issue#2).
  • Avoid needless DBus::IncompleteBufferException (Ticket#33).
  • Don't ignore DBus Errors in request_service, raise them (Ticket#32).
Features:
  • Automatic signature inference for variants.
  • Introduced FormalParameter where a plain pair had been used.
RPMs can be found via Webpin.

Feb 18, 2010

Reinventing

[S]ometimes, when you are designing systems it is hard to realize that the circular friction reduction device with a central axis that you have just built is, in fact, a wheel.

-- Russ Olsen, Design Patterns in Ruby, p.4

Jan 24, 2010

Service Activation Fixed in ruby-dbus 0.2.12

Today I fixed a long-standing bug in ruby-dbus where a service activated by the bus would fail with "undefined method `get_node' for nil:NilClass" (tickets #25 and #29).
RPMs can be found via Webpin.

Nov 9, 2009

Live upgrade from openSUSE 11.0 to 11.2

Article update: it turns out many people come here hoping to find a solution and are disappointed to find only problems that I encountered.. Sorry, that's too bad. Until someone figures out a way to do it online, your best option is to boot off the Network installation CD (100MB).

On Saturday I upgraded my wife's laptop from openSUSE 11.0 to 11.2 RC. I did it using zypper dup, and there were some problems so here I describe them for the benefit of others who might try the same.
  1. Edited /etc/zypp/repos.d/* to replace all 11.0 occurences with 11.2. It worked also for Packman and Videolan.
  2. zypper in zypper offered a suspiciously large update. It turned out it wanted to switch from x86_64 to i586, boo! The fix was zypper in zypper.x86_64\>1
  3. That did not go well. It installed the new rpm.rpm and then repo2solv failed, terminating the transaction. After that, I had the old libzypp and the new zypper, not working. So I manually downloaded the libraries and installed them using rpm, ignoring the broken dependencies for the yast2-* packages.
  4. Changed commit.downloadMode to DownloadInHeaps in /etc/zypp/zypp.conf, which exists primarily to avoid the previous problem. But Murphy does know when to strike.
  5. zypper dup
Note that from 11.1 to 11.2, I used the live upgrade method without such problems. But for 11.0, you may be better off booting from an installation disc.

Nov 2, 2009

The suse-ncc User

Got a question about the purpose of suse-ncc:x:106:110:Novell Customer Center User:/var/lib/YaST2/suse-ncc-fakehome:/bin/bash, and Google did not know, so I asked the usual suspects.

Answer: It comes from yast2-registration.rpm and is used to switch away from root when we spawn the web browser and let you register your SUSE Linux Enterprise product.

Thanks, mc.

Oct 15, 2009

resolv.conf empty, resolv.conf.netconfig ate the data

Problem: After a reboot, /etc/resolv.conf says just # Generated by NetworkManager and the real data went to /etc/resolv.conf.netconfig. I have both eth0 and wlan0 activated by NM. My setup does not involve dial-up like Seife's.

Work-around:
rcnetwork stop
rm /etc/resolv.conf.netconfig
: > /etc/resolv.conf
rcnetwork start
I wonder if this is a bug. Anyway, hopefully this will help someone. openSUSE 11.2 RC1.

Oct 9, 2009

WebYaST Beta 1

We have released Beta 1 of WebYaST. Just to prevent misunderstandings, it is intended for appliances (and Beta 1 is an appliance, a VMX for VirtualBox or VMWare), not for replacing YaST on the desktop.

Download links are in the 0.0.13 status mail, see also the module status and the replies.

Oct 2, 2009

I Will Write the Tests Later

I've read A New Look at Test-Driven Development, a 7 page article by Dave Astels. He explains that what matters is to think of specifications (@list.size.should_equal 1) instead of tests (assert_equal @list.size, 1). He wrote RSpec for this and calls it Behavior Driven Development (BDD).
I need to try this out in WebYaST (this, or Shoulda).

Sep 24, 2009

openSUSE Conference 2009 Notes: Thursday

Here are my notes from the first day of last week's openSUSE Cponference 2009. I am not happy with the form of the notes, but better now and imperfect than polished but 6 months later. Please notify me if you find errors.

Thanks to all who stood up to talk about their work! Not only code matters.

Thu 10:30 - Weekly News (Sascha 'saigkill' Manns)

slides: odp pdf

The slides have all the info.

how to contribute:
  • add a section, fill it with news
  • blog about stuff, to get picked up
  • translate or coordinate a translation
(there's a list of languages most wanting help)

A major part of slides shows how to help with translation.
There are tools to help with that:
- a script in home:dl9pf:newsletter
- Gobby, a collaborative editor

irc channel

About Sascha: he is geeky-quiet, reads the slides.
But he goes forward and is not put back by imperfections in his English.
(And you may remember his tireless packaging enterprises from
opensuse-packaging@).

Thu 10:30 - Apport (did not attend)

Uploads crash reports to a database. Already in 11.1 but not by default.

Thu 11:30 - Ambassador Program (Zonker)

web (no slides)

To be an ambassador:
  • sign up
  • have a plan
  • membership is not required
Suggestions:
  • organize a party, booth, launch party (11.2 on Nov 12)
  • participate in a Linux User Group
Where to spend $ on small events?
  • ambassadors will decide, wanting cost effective impact
What if you want a Novell speaker at your event?
  • it comes from their travel budget, not from the Ambassador budget
How to find a local ambassador?
Q: can ambassadors take feedback about barriers to oS adoption?
A: there is no process for that, give feedback directly to developers [ :-( ]

Thu 13:30 - libyui (Bubli)

Q (R Max): can its main loop integrate with a select on FDs?
A: no [ but not hard? ]

Thu 14:30 - openSUSE Infrastructure (Klaas Freitag)

[see slides]
Lists a cloud of existing services
Lists ideas for future services
Wants "more structure and integration" - for 3 target groups:
- newbies
- users
- geeks (developers)
Proposal for web navigation [photo of slide]. See it!
Demoes Tom's Dashboard: plugins for Studio, Bugzilla, RSS (-> OBS via Hermes)

Thu 15:30 - Software Portal (Benjamin benJIman Weber, Pascal yaloki Bleser)

blog

Aug 31, 2009

Printing Out Ruby Code

Task: producing a paper copy of a Ruby program to scribble on.

Try 1: a2ps. openSUSE has 4.13 which does not support Ruby (although 4.14 was released on 28-Dec-2007).

Try 2: enscript. No support for Ruby even in upstream (but there exists a patch for that on the Net).

Try 3: emacs. I was not able to produce a highlighted printout from Emacs :-(

Try 4: vim. :hardcopy does it, but it printed the keywords in light yellow on white.

Try 5: kwrite. Success. Yay!

Aug 26, 2009

ruby-dbus 0.2.9

I have released a tarball of 0.2.9 and updated the home page.

From NEWS: Ruby D-Bus "I'm not dead" 0.2.9 - 2009-08-26

Thank you to Paul and Arnaud for starting the project. I, Martin Vidner, am continuing with it on GitHub.
  • Fixed passing an array through a variant (no ticket).
  • Fixed marshalling "av" (Ticket #30).
  • Fixed variant alignment (Ticket #27).
  • Added DBus::Main.quit.
  • Mention the DBus interface in a NameError for an unknown method.
  • Fixed ruby-1.9 "warning: default `to_a' will be obsolete".
  • Added Rakefile and gemspec.

Aug 24, 2009

Git Aliases for Subversion Users

git config --global alias.ci commit
git config --global alias.co checkout
git config --global alias.st status
git config --global alias.di diff
git config --global alias.dic diff\ --cached

Aug 11, 2009

cnetworkmanager 0.21

As I advertised in a previous post, cnetworkmanager got a complete rewrite, and here is a summary of the changes:

v0.21, User visible changes
  • Added screenshots.html.
  • Output in a tabular form (like Tambet's nmcli); --terse/-t to disable.
  • Added --wireless-enabled/--we.
  • Added --con-info.
  • For unimplemented device types, return "unknown", crash not (Kevin Fenzi).
  • Ignore AlreadyAsleepOrAwake error (-o).
  • Flags with zero value now output its name (NONE) instead of nothing.
v0.20
  • Major rewrite:
  • Created a library wrapping the NM DBus API.
  • Created a generic library wrapping python-dbus.
    (both libraries are still quite messy)
  • Dropped support for NM 0.6.
    (the last trace is in the 'breakup' branch)
  • Connection setting:
    --activate-connection for system settings or another applet
    --connect for exporting a transient connection
  • knetworkmanager (KDE3) config reading dropped
  • Added a (basic) testsuite.
  • Switched to distutils.
BTW, I also pushed the git repo to Github so that you can enjoy the fork graphs. (repo.or.cz stays)