I'm not sure if it's the best way, but Rhythmbox with libimobiledevice (both installed by default in lucid) works for me. There are a couple of glitches to be aware of, however:
There's no full-library sync. You have to manually drag individual songs to the iPhone.
About 10 seconds or so after Rhythmbox transfers the songs, the iPhone screen switches to "Sync in Progress." You have to wait until after that screen goes away before you eject the iPhone, or the music won't actually get synced. This usually takes 5-10 minutes for me (more if I transfer a lot of songs)
The first time you go to the "Music" app on the iPhone, you have to wait for it to rebuild the library.