dothikoのカクカクワールド2D REBOOT

プログラミングとかLinux関連(特にOSSのグラフィックツール関連)とかレトロゲームとか色々。

Ubuntu 14.04 LTSを入れたらやったこと(個人的)

この記事はfc2から引っ越した記事です

mayuのコンパイル&インストールはもはや儀礼的に定形処理となったため、ともかく…

■ 鬱陶しいオーバーレイスクロールバーを始末する

gsettings set com.canonical.desktop.interface scrollbar-mode normal



以前はoverlay-scrollbarをアンインストールしていたんですが、14.04だとなんだかGUIアプリをターミナルで立ち上げると警告が出るのが面倒くさいので…このUIを考えたのは誰だ!(海原雄山風に

■ xfce4の通知エリアが極小になってて殆ど何もでない

おかしいなぁ〜、これ昔はtomboyとかここに出てた気がするのですが…
xfce4-indicater-pluginを入れる他ないようなのですが、これがまた完成度が低い。一度設定したらログアウトしない限り、チェックボタンが押せなくなり二度と設定できませぬ。

使えないことはないですが。アップデートはよ(といっても一旦設定したらもう設定しないだろうしなぁ)

Chromium browserの為にpepperflashplugin-nonfreeを入れる

ちなみにchromium b.s.uだと縦シューティングゲームが入ります。結構昔からあるのですがOpenGLを使っていて中々派手です。


これ、昔はLinuxOpenGLがまともに動くのがNVIDIAぐらいしかなくて、他の環境ではソフトウェアレンダリングで、重すぎて動かなかったんすよね…いや、もしかして3dfx Voodooで動いたのかな?

話が逸れました。
ついにgoogle謹製のflash pluginが、linuxでも誰にでも使えるようになったっぽいです。
sudo apt-get install pepperflashplugin-nonfree
で入れます。ノンフリーですのでRMS同志のフリーソフトウェア信仰の方は残念ながら諦めてください…ってかubuntu使わないような気が、そういう人はw

Linuxでver13系統のflashを使おうと思うとこれ以外に方法はありません。まぁ、12で困ったことは特に無いのですけども…
ちなみに速度は圧倒的に爆速でおもわず顔がにやけるほどに感動しました!

■ apache2、moinmoinの再設定

これが手間取りましたねえ…moinmoinでlinux等の設定のコツやらメモを取っているので、これらが動かないと大変なのですが、動かない(汗
13.10ぐらいからですか、apache2が2.4だかになっていたそうで、かなり設定の仕方が違うのですね。
昔は/etc/apache2/conf.dにconfファイルを突っ込んでおけばよかったのですが、今は/etc/apache2/conf-available/に置き、a2enconfで許可する方式に変わっていますね。

それだけならばまだしも、どういうわけかapache2ctl restartとかservice apache2 restartとかが全く効かないのですよ。/etc/init.d/apache2 restartもダメでして。

AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/ports.conf:8
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
httpd not running, trying to start
(98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
(98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs
Action 'restart' failed.
The Apache error log may have more information.


なんだかどれもrestartできない病な感じで。
思い切ってsudo killall apache2したらrestartできるようになり、動くようになりました。

…と思ったら全然ダメ!
apache2は動いたけれど、今度はmoinmoinが言うことを聞いてくれません。
なんか

Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/MoinMoin/web/frontend.py", line 39, in run
self.run_server(application, options)
File "/usr/lib/python2.7/dist-packages/MoinMoin/web/flup_frontend.py", line 159, in run_server
return WSGIServer(application).run()
File "/usr/lib/python2.7/dist-packages/MoinMoin/web/_fallback_cgi.py", line 69, in run
result = self.application(environ, start_response)
File "/usr/lib/python2.7/dist-packages/werkzeug/wsgi.py", line 558, in __call__
cleaned_path = cleaned_path.encode(sys.getfilesystemencoding())
UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-7: ordinal not in range(128)



なんてのが出て、日本語名のリンクが全部Internal Server Errorになるんですが…
いまんところ、メチャクチャ強引な方法(wsgi.pyの書き換え)をとって凌いでいますがw
flup(wsgi用ライブラリ)とかいうのじゃないとダメなんですかね…?

というわけでpython-flupを入れてみましたがダメ

Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/flup/server/fcgi_base.py", line 558, in run
protocolStatus, appStatus = self.server.handler(self)
File "/usr/lib/python2.7/dist-packages/flup/server/fcgi_base.py", line 1118, in handler
result = self.application(environ, start_response)
File "/usr/lib/python2.7/dist-packages/werkzeug/wsgi.py", line 562, in __call__
cleaned_path = cleaned_path.encode(sys.getfilesystemencoding())
UnicodeEncodeError: 'ascii' codec can't encode characters in position 5-6: ordinal not in range(128)



apacheの設定からどう変えても、apacheから呼ばれるpythonではos.environ['LANG']は変わってるけどsys.getfilesystemencoding()は変わらずなのですね。もちろん、ターミナルからのipythonなどでは何もしなくても'utf-8'を返します。
どうもapacheのどっかでlocaleの初期化をミスっているのではないかという症状を感じるのですが…
ちなみに、cgi内のpythonでは

print locale.nl_langinfo(locale.CODESET) # ← 'ANSI_X3.4-1968' ???
try:
locale.setlocale(locale.LC_CTYPE,'') # ←いきなり例外(まずこれがへん?)
except Exception,e:
print(str(e))
locale.setlocale(locale.LC_ALL.'ja_JP.utf8')
print locale.nl_langinfo(locale.CODESET) # ← 'UTF-8' OK
print sys.getfilesystemencoding() # ← 'ANSI_X3.4-1968' ???



という結果がいまのところでございまして…設定で治るなら楽でいいのですけどね…

ともかく、めんどうなので超手抜きの無茶で解決します。
ちょっと試した、wsgi.pyの直書き換えよりはマシかな〜と…

とりあえずmoinはUTF-8しか使わぬと決めているので、moin.cgiのimport sysの後に

sys.getfilesystemencoding = lambda: 'UTF-8'


とするととりあえず問題なく(問題ないのかっ?)動くっぽいです。まぁ責任は取れませんけどね…
一応、試してみましたが今のところちゃんと書けてます。

なんだか色々嫌になってしまったので、自前のmarkdown+擬似データベースによる簡易wiki作ってそれに移行しようかな〜とか妄想…忙しすぎる!影分身したい!!

■ AzDrawing 1.3をコンパイルする
先日来テストしているazelpg様のAzDrawing
モノクロ漫画描きに特化している将来有望な感じの、軽快でいいグラフィックソフトです。
なにより入り・抜きのあるパスをマウスでパパっと描けるのが良いですね!
カラー版のAzPainterもあるのでこちらも試す予定〜

しかしうーむ、コンパイルには成功するのですが…
何故か、rootでないと実行できないのですね。segmentation faultになってしまいます。

デバッガでちょっと追ってみましたが、CMainWin.cppの98/99行目

if(AXLoadResAppIcon(&mem;, "azdrawing.png"))
setAppIcon(mem, TRUE);


このAXTopWindow::setAppIcon中のXChangePropertyの呼び出しで

void AXTopWindow::setAppIcon(const LPDWORD pBuf,BOOL bClear)
{
if(pBuf)
{
::XChangeProperty(DISP, m_id, axatom(AXAppAtom::_NET_WM_ICON),
XA_CARDINAL, 32, (bClear)? PropModeReplace: PropModeAppend,
(LPBYTE)pBuf, pBuf[0] * pBuf[1] + 2);
}
}


ここでSegFaultのようです。コメントアウトしたら一般ユーザーでも動きました…
しばらくデバッガでうろついてみましたが、何が原因なのかはわからず(´・ω・`)

うーん、コア部分だけ取ってgtkで移植してみようか…(妄想)

■ KDbgが動かない(のであきらめる) と思ったら動いた
これはもう設定とか言うレベルではなく動かないのですが…

MNG error 11: Function is invalid at this point; chunk MHDR; subcode 0:0


これを延々と履き続けます(ソースは追っていません)
非常に使い勝手のいいグラフィカルデバッガだったのですが、もう使ってる人はいないのでしょうかね…
もしかして、Netbeansとかでやるのがふつう?

なんかアイコンのせいらしいですね。MNGってもしかしてPNGの仲間のMNG?とは思ったのですが、本当にそうらしいです。

と、調べたらkdbgのアイコンにmngは一個しかないじゃないですか。
結論としては、/usr/share/kde4/apps/kdbg/icons/hicolor/22x22/actions/pulse.mngをpulse.mng.origにリネーム(rename)していつでも戻せるけど無効な感じにしたら起動できるようになりました。ほっ。

■ fcitx-mozcのアイコンがでかすぎる

おいらのタスクバー(パネル)の高さの設定が小さすぎるとは思えないのですが、小さいのでしょう。
次第にmozcのアイコンが大きすぎる事が鬱陶しくなってまいりました。
なんかリサイズ処理が発生してバタバタ動くのですね。

そこでリサイズです。

mozcのアイコン自体は
/usr/share/icons/mozc/ime_product_icon_opensource-32.png
のようです。
これを、ImageMagickで縮小し… これを直接使ってもいいですけど/usr/local/share/icons/を作ってそこにほおりこんでおきました。

全部sudoいりますのでちょっと危険ですが、所詮血塗られた道だ

convert /usr/share/icons/mozc/ime_product_icon_opensource-32.png -resize 20x20 /usr/local/share/icons/mozc_product_small.png

rm /usr/share/fcitx/mozc/icon/mozc.png
ln -s /usr/local/share/icons/mozc_product_small.png /usr/share/fcitx/mozc/icon/mozc.png



これでアイコン小さくなりました。

■ APTonCDが動かないので無理やり動かす

昔はよくお世話になったAPTonCDですが、最近はめったに使わなくなりました…
しかし、一応ダウンロードしたパッケージを簡単便利に固めて保存しておきたいのは人情というもの。

ところがどっこいubuntu 14.04ではこれがまた動かない。
Restoreボタンを押してLoadボタンを押しても、待てど暮らせどまったく出てこないのですね。
これは実は、光学ドライブの列挙にhalを呼び出しているからでして。
12.04でもhalは除外されてはいましたが、インストールはできました。
が、今やhalは廃止、パッケージリストにも載っていません。

そこでマヌケにもdbusのUDisk2の勉強を始めてみたのですが、なんだか無理に難しい感じですね…
よくかんがえたらおいらはもうPCには光学ドライブを搭載していないので、UDisk2で光学ドライブを列挙できたところで、全く意味がないのでした(^^;

サクッと参ります。/usr/share/pyshared/APTonCD/core/dbus_helper.pyをdbus_helper.py.origなどとしてコピー保存し…
以下の新たなるdbus_helper.pyを作成します。

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

class DeviceList:

def __init__(self):
pass
def get_devices(self):
return []



(苦笑)
まぁ目的は達したかと…まだリストア試してないですけどねwとりあえずダイアログは出るようになりましたw

その他思い出すたびに追記していきますです

mayuのコンパイル&インストールはもはや儀礼的に定形処理となったため、ともかく…

■ 鬱陶しいオーバーレイスクロールバーを始末する

gsettings set com.canonical.desktop.interface scrollbar-mode normal



以前はoverlay-scrollbarをアンインストールしていたんですが、14.04だとなんだかGUIアプリをターミナルで立ち上げると警告が出るのが面倒くさいので…このUIを考えたのは誰だ!(海原雄山風に

■ xfce4の通知エリアが極小になってて殆ど何もでない

おかしいなぁ〜、これ昔はtomboyとかここに出てた気がするのですが…
xfce4-indicater-pluginを入れる他ないようなのですが、これがまた完成度が低い。一度設定したらログアウトしない限り、チェックボタンが押せなくなり二度と設定できませぬ。

使えないことはないですが。アップデートはよ(といっても一旦設定したらもう設定しないだろうしなぁ)

Chromium browserの為にpepperflashplugin-nonfreeを入れる

ちなみにchromium b.s.uだと縦シューティングゲームが入ります。結構昔からあるのですがOpenGLを使っていて中々派手です。


これ、昔はLinuxOpenGLがまともに動くのがNVIDIAぐらいしかなくて、他の環境ではソフトウェアレンダリングで、重すぎて動かなかったんすよね…いや、もしかして3dfx Voodooで動いたのかな?

話が逸れました。
ついにgoogle謹製のflash pluginが、linuxでも誰にでも使えるようになったっぽいです。
sudo apt-get install pepperflashplugin-nonfree
で入れます。ノンフリーですのでRMS同志のフリーソフトウェア信仰の方は残念ながら諦めてください…ってかubuntu使わないような気が、そういう人はw

Linuxでver13系統のflashを使おうと思うとこれ以外に方法はありません。まぁ、12で困ったことは特に無いのですけども…
ちなみに速度は圧倒的に爆速でおもわず顔がにやけるほどに感動しました!

■ apache2、moinmoinの再設定

これが手間取りましたねえ…moinmoinでlinux等の設定のコツやらメモを取っているので、これらが動かないと大変なのですが、動かない(汗
13.10ぐらいからですか、apache2が2.4だかになっていたそうで、かなり設定の仕方が違うのですね。
昔は/etc/apache2/conf.dにconfファイルを突っ込んでおけばよかったのですが、今は/etc/apache2/conf-available/に置き、a2enconfで許可する方式に変わっていますね。

それだけならばまだしも、どういうわけかapache2ctl restartとかservice apache2 restartとかが全く効かないのですよ。/etc/init.d/apache2 restartもダメでして。

AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/ports.conf:8
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
httpd not running, trying to start
(98)Address already in use: AH00072: make_sock: could not bind to address [::]:80
(98)Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
AH00015: Unable to open logs
Action 'restart' failed.
The Apache error log may have more information.


なんだかどれもrestartできない病な感じで。
思い切ってsudo killall apache2したらrestartできるようになり、動くようになりました。

…と思ったら全然ダメ!
apache2は動いたけれど、今度はmoinmoinが言うことを聞いてくれません。
なんか

Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/MoinMoin/web/frontend.py", line 39, in run
self.run_server(application, options)
File "/usr/lib/python2.7/dist-packages/MoinMoin/web/flup_frontend.py", line 159, in run_server
return WSGIServer(application).run()
File "/usr/lib/python2.7/dist-packages/MoinMoin/web/_fallback_cgi.py", line 69, in run
result = self.application(environ, start_response)
File "/usr/lib/python2.7/dist-packages/werkzeug/wsgi.py", line 558, in call
cleaned_path = cleaned_path.encode(sys.getfilesystemencoding())
UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-7: ordinal not in range(128)



なんてのが出て、日本語名のリンクが全部Internal Server Errorになるんですが…
いまんところ、メチャクチャ強引な方法(wsgi.pyの書き換え)をとって凌いでいますがw
flup(wsgi用ライブラリ)とかいうのじゃないとダメなんですかね…?

というわけでpython-flupを入れてみましたがダメ

Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/flup/server/fcgi_base.py", line 558, in run
protocolStatus, appStatus = self.server.handler(self)
File "/usr/lib/python2.7/dist-packages/flup/server/fcgi_base.py", line 1118, in handler
result = self.application(environ, start_response)
File "/usr/lib/python2.7/dist-packages/werkzeug/wsgi.py", line 562, in call
cleaned_path = cleaned_path.encode(sys.getfilesystemencoding())
UnicodeEncodeError: 'ascii' codec can't encode characters in position 5-6: ordinal not in range(128)



apacheの設定からどう変えても、apacheから呼ばれるpythonではos.environ['LANG']は変わってるけどsys.getfilesystemencoding()は変わらずなのですね。もちろん、ターミナルからのipythonなどでは何もしなくても'utf-8'を返します。
どうもapacheのどっかでlocaleの初期化をミスっているのではないかという症状を感じるのですが…
ちなみに、cgi内のpythonでは

print locale.nl_langinfo(locale.CODESET) # ← 'ANSI_X3.4-1968' ???
try:
locale.setlocale(locale.LC_CTYPE,'') # ←いきなり例外(まずこれがへん?)
except Exception,e:
print(str(e))
locale.setlocale(locale.LC_ALL.'ja_JP.utf8')
print locale.nl_langinfo(locale.CODESET) # ← 'UTF-8' OK
print sys.getfilesystemencoding() # ← 'ANSI_X3.4-1968' ???



という結果がいまのところでございまして…設定で治るなら楽でいいのですけどね…

ともかく、めんどうなので超手抜きの無茶で解決します。
ちょっと試した、wsgi.pyの直書き換えよりはマシかな〜と…

とりあえずmoinはUTF-8しか使わぬと決めているので、moin.cgiのimport sysの後に

sys.getfilesystemencoding = lambda: 'UTF-8'


とするととりあえず問題なく(問題ないのかっ?)動くっぽいです。まぁ責任は取れませんけどね…
一応、試してみましたが今のところちゃんと書けてます。

なんだか色々嫌になってしまったので、自前のmarkdown+擬似データベースによる簡易wiki作ってそれに移行しようかな〜とか妄想…忙しすぎる!影分身したい!!

■ AzDrawing 1.3をコンパイルする
先日来テストしているazelpg様のAzDrawing
モノクロ漫画描きに特化している将来有望な感じの、軽快でいいグラフィックソフトです。
なにより入り・抜きのあるパスをマウスでパパっと描けるのが良いですね!
カラー版のAzPainterもあるのでこちらも試す予定〜

しかしうーむ、コンパイルには成功するのですが…
何故か、rootでないと実行できないのですね。segmentation faultになってしまいます。

デバッガでちょっと追ってみましたが、CMainWin.cppの98/99行目

if(AXLoadResAppIcon(&mem;, "azdrawing.png"))
setAppIcon(mem, TRUE);


このAXTopWindow::setAppIcon中のXChangePropertyの呼び出しで

void AXTopWindow::setAppIcon(const LPDWORD pBuf,BOOL bClear)
{
if(pBuf)
{
::XChangeProperty(DISP, m_id, axatom(AXAppAtom::_NET_WM_ICON),
XA_CARDINAL, 32, (bClear)? PropModeReplace: PropModeAppend,
(LPBYTE)pBuf, pBuf[0] * pBuf[1] + 2);
}
}


ここでSegFaultのようです。コメントアウトしたら一般ユーザーでも動きました…
しばらくデバッガでうろついてみましたが、何が原因なのかはわからず(´・ω・`)

うーん、コア部分だけ取ってgtkで移植してみようか…(妄想)

■ KDbgが動かない(のであきらめる) と思ったら動いた
これはもう設定とか言うレベルではなく動かないのですが…

MNG error 11: Function is invalid at this point; chunk MHDR; subcode 0:0


これを延々と履き続けます(ソースは追っていません)
非常に使い勝手のいいグラフィカルデバッガだったのですが、もう使ってる人はいないのでしょうかね…
もしかして、Netbeansとかでやるのがふつう?

なんかアイコンのせいらしいですね。MNGってもしかしてPNGの仲間のMNG?とは思ったのですが、本当にそうらしいです。

と、調べたらkdbgのアイコンにmngは一個しかないじゃないですか。
結論としては、/usr/share/kde4/apps/kdbg/icons/hicolor/22x22/actions/pulse.mngをpulse.mng.origにリネーム(rename)していつでも戻せるけど無効な感じにしたら起動できるようになりました。ほっ。

■ fcitx-mozcのアイコンがでかすぎる

おいらのタスクバー(パネル)の高さの設定が小さすぎるとは思えないのですが、小さいのでしょう。
次第にmozcのアイコンが大きすぎる事が鬱陶しくなってまいりました。
なんかリサイズ処理が発生してバタバタ動くのですね。

そこでリサイズです。

mozcのアイコン自体は
/usr/share/icons/mozc/ime_product_icon_opensource-32.png
のようです。
これを、ImageMagickで縮小し… これを直接使ってもいいですけど/usr/local/share/icons/を作ってそこにほおりこんでおきました。

全部sudoいりますのでちょっと危険ですが、所詮血塗られた道だ

convert /usr/share/icons/mozc/ime_product_icon_opensource-32.png -resize 20x20 /usr/local/share/icons/mozc_product_small.png

rm /usr/share/fcitx/mozc/icon/mozc.png ln -s /usr/local/share/icons/mozc_product_small.png /usr/share/fcitx/mozc/icon/mozc.png



これでアイコン小さくなりました。

■ APTonCDが動かないので無理やり動かす

昔はよくお世話になったAPTonCDですが、最近はめったに使わなくなりました…
しかし、一応ダウンロードしたパッケージを簡単便利に固めて保存しておきたいのは人情というもの。

ところがどっこいubuntu 14.04ではこれがまた動かない。
Restoreボタンを押してLoadボタンを押しても、待てど暮らせどまったく出てこないのですね。
これは実は、光学ドライブの列挙にhalを呼び出しているからでして。
12.04でもhalは除外されてはいましたが、インストールはできました。
が、今やhalは廃止、パッケージリストにも載っていません。

そこでマヌケにもdbusのUDisk2の勉強を始めてみたのですが、なんだか無理に難しい感じですね…
よくかんがえたらおいらはもうPCには光学ドライブを搭載していないので、UDisk2で光学ドライブを列挙できたところで、全く意味がないのでした(^^;

サクッと参ります。/usr/share/pyshared/APTonCD/core/dbus_helper.pyをdbus_helper.py.origなどとしてコピー保存し…
以下の新たなるdbus_helper.pyを作成します。

#!/usr/bin/env python
# -- coding: UTF-8 --

class DeviceList:

def init(self): pass def get_devices(self): return []



(苦笑)
まぁ目的は達したかと…まだリストア試してないですけどねwとりあえずダイアログは出るようになりましたw

その他思い出すたびに追記していきますです