先程なんとなくwicd-cursesと叩いてみたら以下のようなメッセージを吐いてwicd-cursesが立ち上がらなくなっていたことに気がついた。
Traceback (most recent call last): File "/usr/share/wicd/curses/wicd-curses.py", line 1063, in main() File "/usr/share/wicd/curses/wicd-curses.py", line 995, in main ui.run_wrapper(run) File "/usr/lib/python2.7/site-packages/urwid/raw_display.py", line 242, in run_wrapper return fn() File "/usr/share/wicd/curses/wicd-curses.py", line 88, in wrapper return func(*args, **kargs) File "/usr/share/wicd/curses/wicd-curses.py", line 1003, in run app = appGUI() File "/usr/share/wicd/curses/wicd-curses.py", line 548, in __init__ self.wiredCB = urwid.Filler(WiredComboBox(wiredL)) File "/usr/share/wicd/curses/wicd-curses.py", line 378, in __init__ self.__super.__init__(use_enter=False) File "/usr/share/wicd/curses/curses_misc.py", line 352, in __init__ self.focus = focus AttributeError: can't set attribute
昨年末にCUIでいろいろしてたときはwicd-cursesにお世話になったことは確実なので今立ち上がらないというのはおかしい。早速「AttributeError: can't set attribute wicd archlinux」みたいな感じで検索かけてみると以下のページがヒットした。
FS#33378 : [wicd] wicd-curses broken(https://bugs.archlinux.org/task/33378)
launchpadのwicd本家にもバグとして報告されており、最新版ではパッチが当てられて問題解決している様子。だがarchlinuxでパッチ適用済みの最新版wicdがすぐに降ってくるとは限らない。幸いバグ修正用のPKGBUILD用パッチが上のページに貼られていたのでそれを適用し、ABSでwicdをコンパイルして使うことにした。wicdのソース用のパッチも案内されてはいた(launchpadへのリンク)が、折角ABS用のがあるならそちらを使うほうが楽なので。
ちなみに/var/log/pacman.logから年明け後にwicdあるいはpythonに関係するパッケージをインストール乃至アップグレードしたかどうか確認したが、KDEのpython2用バインディング以外にはpython2-urwid(ver. 1.1.1-1)しか見つからず、これが原因のようだ。バグ報告とも一致する。
さて、まずはABSのソースツリーを最新版に更新する。
# abs
次にwicdのPKGBUILDを適当なディレクトリに持ってくる。wicdはextraリポジトリに属すので以下のようにしてやる。
"ramdisk"というのは私の環境に於ける作業用ディレクトリである。
$ cp -a /var/abs/extra/wicd ~/ramdisk
そして上のページからPontus Andersson氏の投稿にあるwicd-pkgbuild.patchをダウンロードし、それをwicdディレクトリに保存する。作業後はこんな感じになる。
$ cd ~/ramdisk/wicd && ls wicd-pkgbuild.patch deepcopy+python27-fixes.patch PKGBUILD wicd-daemon wicd-scripts-execution.patch wicd.install ChangeLog dbus_string_fix.patch net-tools.patch wicd-locale.patch wicd.desktop wicd_in_usr.patch
次に以下のようにしてパッチを適用する。patchはパッチを当てるファイルとのディレクトリの位置関係が大事らしいのだがwicd-pkgbuild.patchの2行目を参照するとPKGBUILDと同一のディレクトリに置くように指定されているのでこのまま実行する。
$ patch < wicd-pkgbuild.patch
これでパッチの適用が完了した。最後に
$ makepkg -s -i