Ubuntu の MySQL を標準以外のディレクトリで動かす

Ubuntu の MySQL の datadir は /var/lib/mysql です。これを別のディレクトリに変更して動かそうとするとエラーになります。

# mkdir /hoge
# mysql_install_db --datadir=/hoge
Installing MySQL system tables...
140614  8:57:23 [Warning] Can't create test file /hoge/hostname.lower-test
140614  8:57:23 [Warning] Can't create test file /hoge/hostname.lower-test

Installation of system tables failed!  Examine the logs in
/hoge for more information.
...

これは AppArmor の設定で、mysqld に対して /hoge へのアクセスが許可されていないためです。

# vi /etc/apparmor.d/local/usr.sbin.mysqld

   # Site-specific additions and overrides for usr.sbin.mysqld.
   # For more details, please see /etc/apparmor.d/local/README.
   /hoge/ r,
   /hoge/** rwk,

# service apparmor reload
 * Reloading AppArmor profiles
Skipping profile in /etc/apparmor.d/disable: usr.bin.firefox
Skipping profile in /etc/apparmor.d/disable: usr.sbin.rsyslogd

これで /hoge にデータベースを作ることができるようになりました。

# mysql_install_db --datadir=/hoge
Installing MySQL system tables...
OK
Filling help tables...
OK
...

以下駄文

  • テスト用に tmpfs 上にデータベースを作りたかったのにエラーになった。
  • /tmp とか /var/tmp とかだとエラーにならないので、ディレクトリが異なるためじゃなくて、tmpfs のせいだと思い込んだ(実は AppArmor で /tmp, /var/tmp が許可されていた)。
  • tmpfs の制限を調べても見つからない。
  • 当然 SELinux は真っ先に疑ったけど入ってなかった。
  • Ubuntu の deb じゃなくて MySQL の公式バイナリを使用したらできた(これは /usr/sbin/mysqld じゃなくて /usr/local/mysql/bin/mysqld だったため)。
  • システムコールトレースとってみたけど違いがわからない。
  • deb ファイルのパッチ読んでみたけど怪しいところはなかった。
  • Twitter でつぶやいてたら教えてもらえた。

  • AppArmor なんてものがあるのは知らなかった。SELinux がないと思って油断してた。

  • 解決

Xubuntu 14.04

Ubuntu が Unity になって以来、デスクトップ環境を転々としている自分ですが、最近は Xubuntu を使っています。

しばらく前までは Linux Mint を使ってたのですが、会社の PC の OS が Windows 必須になってしまって、しかも PC のスペックがかなりヘボい(Core i5, メモリ4G, Windows 7 32bit)ので、その上の VM で動かすために軽いデスクトップとして Lubuntu を選択しました。

しばらく Lubuntu を使ってたのですが、Ubuntu 14.04 からデスクトップ環境でも 64bit が推奨になったということなので、64bit 化するついでに Xubuntu 14.04 にしてみました。 Lubuntu も良かったのですが、GUI での設定がちょっと弱いとか、Windows の VirtualBox 上で Emacs 上の文字が消える現象が起きたりしてたので。

結局 Xubuntu にしても Emacs で文字が消える現象は直らなかったのですが…。VirtualBox ではなく VMware Player を使っていた時はこの現象は起きてなかったので、VirtualBox 用の X サーバーの問題かもしれません。同じ頃に Emacs 23 から Emacs 24 にしたので、もしかしたら Emacs 24 の問題なのかもしれません。必ず文字単位で消えるわけではないので、部分的な再描画処理がおかしいような気がします。

以下、Xubuntu 14.04 での問題と対処。

Migu フォントでフォントサイズによって"「" の上の横棒が消える

Ubuntu 14.04 の文字が欠けるバグを何とかしてみた

freetype 2.5.x broke rendering of the default Korean font

libfreetype6 の問題のようです。 http://packages.ubuntu.com/utopic/libfreetype6 から新しいものをダウンロードしてインストールしたら直りました。 待っていればそのうち 14.04 にもバグ修正パッケージがリリースされるかもしれません。

[追記] libfreetype6 2.5.2-1ubuntu2.2 で直ったようです。

蓋を閉じてサスペンド後レジュームするとデスクトップが復帰しない

蓋を閉じるのではなく、メニューからサスペンドした場合はちゃんと復帰します。

Ubuntu 14.04 blank screen after wakeup from sleep

Comment 56 for bug 1303736 この対処で直りました。

gnome-terminal の縦方向最大化トグルがおかしい

Xubuntu の端末エミュレータは xfce4-terminal ですが、Ctrl+[+-] で拡大縮小ができないので、gnome-terminal を使ってますが、縦方向最大化トグルで、最大化したあとに何故か元に戻ってくれません。gnome-terminal 以外のウィンドウではちゃんと働くので謎です。

他にも xfwm4 だと、修飾キー+マウスイベントをカスタマイズできなかったので、openbox を使用することにしました。 「設定マネージャー」の「セッションと起動」の「自動開始アプリケーション」に openbox --replace を追加しただけです。ウィンドウマネージャー変更のちゃんとしたやり方があるのかもしれませんが…。

Rabbit で PDF 出力時のフォントが汚くなるのを回避

Ubuntu 12.10 で、Rabbit で PDF を作成するとボールドフォントが汚くなってしまう問題が発生していて困っていました。

12.04 だとこうだったのが、

f:id:tmtms:20130127193403p:plain

12.10 だとこんな残念な感じに…。

f:id:tmtms:20130127193348p:plain

細くなってしまっている字が目立ちますが、それ以外の文字も汚くなってます。

まつもとさんも困ってました。

続きを読む

Ubuntu 12.10 で core ファイルが作成されない

Ubuntu 12.10 でプログラムを走らせた時に segmentation fault と出力されるのに core ファイルが作成されませんでした。

ulimit -a コマンドで見てみると、

-c: core file size (blocks)    0

となっていて core ファイルのサイズの上限が 0 = core ファイルを作成しないようになっていたので、ulimit -c unlimited コマンドで core ファイルの上限を撤廃しました。

-c: core file size (blocks)    unlimited

そこでもう一度プログラムを走らせてみたところ、segmentation fault (core dumped) となり core ファイルを作成したようなメッセージなのですが、実際には作成されていません。

core(5) を見てみると、/proc/sys/kernel/core_pattern で core のファイル名を指定できるようになってるみたいなので、見てみました。

# cat /proc/sys/kernel/core_pattern 
|/usr/share/apport/apport %p %s %c

先頭が「|」で始まっているとコマンドを実行するみたいです。apport というコマンドが何をやってるのかはよくわかりませんが、/var/log/apport .log に次のように出力されていました。

ERROR: apport (pid 13004) Wed Jan  2 22:54:29 2013: called for pid 12996, signal 11, core limit 0
ERROR: apport (pid 13004) Wed Jan  2 22:54:29 2013: Unhandled exception:
Traceback (most recent call last):
  File "/usr/share/apport/apport", line 326, in <module>
    info.add_proc_info(pid)
  File "/usr/lib/python3/dist-packages/apport/report.py", line 498, in add_proc_info
    self['ProcMaps'] = _read_maps(int(pid))
  File "/usr/lib/python3/dist-packages/apport/report.py", line 88, in _read_maps
    maps = fd.read().strip()
  File "/usr/lib/python3.2/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 1226: ordinal not in range(128)
ERROR: apport (pid 13004) Wed Jan  2 22:54:29 2013: pid: 13004, uid: 1000, gid: 1000, euid: 0, egid: 0
ERROR: apport (pid 13004) Wed Jan  2 22:54:29 2013: environment: environ({})

なんとなく apport 自体が正常動作していないような雰囲気です。

よくわからないので apport を使用せず、core.PID ファイルを出力するように次のように設定しました。

# echo core.%p > /proc/sys/kernel/core_pattern

これでちゃんと出力されるようになりました。めでたしめでたし。

Ubuntu で Rabbit のフォントを変更する

Ubuntu 12.10 で Rabbit のフォントを変更しようと思って、悪戦苦闘したのでメモっておきます。

まず公式サイトのドキュメントを読んでみます。

例えば,各ページ(タイトルページは含まない)にあるタイトルの 文字の色を変更したい場合は以下のように書きます.

match(Page, HeadLine) do |heads|
  heads.prop_set("foreground", "red")
end

なるほど、わからん…。match() の引数には何が指定できるの…。

ということでパス。

Rabbit のソースの中を漁ってると、lib/rabbit/theme/base/base.rb の中に次のような記述がありました。

@font_family = find_font_family("Rabbit")
@monospace_font_family = find_font_family("Rabbit Monospace")

if windows?
  @font_family ||= find_font_family("MS PGothic")
  @monospace_font_family ||= find_font_family("MS Gothic")
else
  @font_family ||= find_font_family("Hiragino Kaku Gothic Pro")
  @monospace_font_family ||= find_font_family("Osaka-Mono")
  @monospace_font_family ||= find_font_family("Osaka")
end

@font_family ||= find_font_family("Sans")
@monospace_font_family ||= find_font_family("Monospace")

Rabbit → Hiragino Kaku Gothic Pro → Sans の順にフォントを探しているようです(等幅フォントは、Rabbit Monospace → Osaka-Mono → Osaka → Monospace の順)。 OS に Rabbit というフォントがあれば良さそうです。

既存のフォントに別名をつけようと思って、~/.fonts.conf に次のように書いてみました。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <alias>
    <family>Rabbit</family>
    <prefer>
      <family>IPAPMincho</family>
    </prefer>
  </alias>
</fontconfig>

以前はこれでフォントに別名をつけることができたような気がするのですが、効いてくれません。 fc-list でも出てきませんし、LibreOffice で指定しても変わりません。

おまけにこんなメッセージも出力されました。

Fontconfig warning: "/etc/fonts/conf.d/50-user.conf", line 9: reading configurations from ~/.fonts.conf is deprecated.

どうやら最近は ~/.config/fontconfig/fonts.conf に置くのが良いみたいです。

次に /etc/fonts/conf.d/69-language-selector-ja-jp.conf を見ながら、次のように書いてみました。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <match target="pattern">
        <test qual="any" name="family">
            <string>Rabbit</string>
        </test>
        <edit name="family" mode="prepend" binding="strong">
            <string>IPAPMincho</string>
        </edit>
    </match>
</fontconfig>

fc-list には出て来ませんが、fc-match では、ちゃんと「IPA P明朝」と出てきました。

% fc-match rabbit
ipam.ttf: "IPA P明朝" "Regular"

LibreOffice でも、フォントの一覧には出てきませんが、Rabbit と指定するとちゃんと明朝体になりました。

ところが、肝心の Rabbit 上では変わりません。どうも find_font_family("Rabbit")nil を返すようです。たぶん fc-list で出力されないのと同じ理由でしょう。

最終的に、次のようなテーマファイルを作ったらうまくいきました。

@font_family = 'Rabbit'
include_theme("clear-blue")

@font_family にフォント名を指定してから、既存のテーマを読み込んでます。

フォント名を直接指定すればいいので、システムに Rabbit という名前のフォントを設定する必要もないです。

@font_family = 'IPAPMincho'
include_theme("clear-blue")

しかしフォント周りは何年たっても良くわからないです…。

Ubuntu 12.10 を無線LANルーターにする

このまえ泊まったホテルが、部屋に無線LANがなかったのですが、Galaxy Nexus を無線LAN で使いたかったので、Ubuntu 12.10 が入った PC を無線LANルーターにしてみました。

hostapd のインストール

# apt-get install hostapd
# zcat /usr/share/doc/hostapd/examples/hostapd.conf.gz > /etc/hostapd/hostapd.conf
# vi /etc/hostapd/hostapd.conf

hostapd.conf は ssid, wpa, wpa_passphrase あたりを設定すれば良いでしょう。

# vi /etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.conf"
# service hostapd start

DHCP サーバーのインストール

# apt-get install isc-dhcp-server
# vi /etc/dhcp/dhcpd.conf
        ...末尾に追加...
subnet 192.168.11.0 netmask 255.255.255.0 {
  range 192.168.11.10 192.168.11.254;
  option domain-name-servers 8.8.8.8;
  option routers 192.168.11.1;
  default-lease-time 600;
  max-lease-time 7200;
}

# vi /etc/default/isc-dhcp-server
INTERFACES="wlan0"

dhcpd.conf の 192.168.11.x は適当なアドレスです。上の例では PC が 192.168.11.1 で、192.168.11.10〜192.168.11.254 の範囲からIPアドレスを割り当てます。

# ifconfig wlan0 192.168.11.1 netmask 255.255.255.0
# service isc-dhcp-server start

wlan0 から eth0 へパケット中継

# sysctl -w net.ipv4.ip_forward=1
# iptables -t nat -A POSTROUTING -s 192.168.11.0/24 -o eth0 -j MASQUERADE

以上で Galaxy Nexus から無線LAN経由でホテルのネットワークが使えるようになりました。 小型の無線LANルーターが2000円くらいで売ってるみたいなので買おうかと思ってたんですが、しばらくこの方法でいってみます。

Ubuntu 11.10 に KDE + compiz 0.8 を入れてみた

Ubuntu 11.10 の標準のデスクトップ環境の Unity に慣れずに、転々として一周して結局 Unity に戻ってきて2ヶ月ほど使っていたのですが、やっぱり色々だめでした。

不満な点:

  • ウィンドウ選択がアプリ単位。同じアプリで異なる用途に複数のウィンドウを起動していてもまとめて扱われるので不便。
  • タスクバーでウィンドウを最小化できない。
  • ウィンドウを閉じた時にマウスカーソルの下にあるウィンドウが最前面に出てしまう。
  • compiz 0.9 がバグだらけで、半透明機能やその他便利な機能がまともに使えない。
  • super キーがランチャメニューに使われてて自由に使えない。

で、今はデブサミ会場で @ に洗脳されたこともあって KDE を試してます。

KDE の標準のウィンドウマネージャ kwin はかなりの高機能なのですが、やはり不満がありました。

  • 半透明機能がウィンドウ単位ではなくアプリ単位。
  • フォーカスのあるウィンドウの上にあるウィンドウだけ半透明にすることができない。
  • ウィンドウリサイズ時にサイズ情報を表示できない。
  • なんかもっさり。

やはり compiz を使いたくなります。が、Ubuntu 標準の compiz はバグだらけでとても実用に耐えられません。

ということで compiz 0.8 を使ってみます。

compiz 0.8

Ubuntu は 11.04 natty から compiz がバグだらけの 0.9 になってしまったのですが、natty 用の compiz 0.8 のパッケージが ppa で公開されています。natty 用なので oneiric(11.10)に入れるには若干手間が必要です。

標準の compiz 関連パッケージ削除

compiz 関係のパッケージを全部削除します。

# apt-get purge compiz compizconfig-setting-manager ...

関連で unity や ubuntu-desktop も消えますが、気にしないでおきます。

libprotobuf6 パッケージのインストール

ppa の compiz を導入する時に依存関係で libprotobuf6 が必要と言われるのであらかじめ入れておきます。

http://packages.ubuntu.com/ から libprotobuf6 を検索すると natty のパッケージとして見つかってダウンロードできます。

# dpkg -i libprotobuf6_2.3.0-4ubuntu2_i386.deb
ppa からインストール

/etc/apt/sources.list.d/compiz-086.list ファイルを次の内容で作成します。

deb http://ppa.launchpad.net/guido-iodice/compiz-0.8.6-natty/ubuntu natty main

次のようにしてインストールします。

# apt-get update
# apt-get install compiz compiz-core compiz-fusion-plugins-main compiz-fusion-plugins-extra compiz-fusion-plugins-unsupported compiz-plugins compizconfig-backend-gconf compizconfig-settings-manager libcompizconfig0 libdecoration0 python-compizconfig emerald
起動

次のようにして起動できます。

% compiz --replace &
% emerald --replace &

ログイン時に自動的に起動するには、KDE のシステム設定の「起動と終了」→「自動起動」に「compiz --replace」と「emerald --replace」を設定しておけばいいみたいです。

[追記] 上記の方法だといったん kwin があがった後に compiz が置き換わるのでイマイチです。 $HOME/.xsessionrc に次のように書いとくのがいいみたいです。ソースは /usr/bin/startkde

export KDEWM=/usr/bin/compiz

emerald の方は ccsm(CompizConfig設定マネージャ)の「ウィンドウの装飾」のコマンドに「/usr/bin/emerald」を設定しておきます。

Unity の設定など

Ubuntu 11.10 のデフォルトのデスクトップ環境の Unity に挫折して GNOME Shell、Kubuntu、LinuxMint を転々として、ぐるっと一周して結局 Unity にまた戻って来ました。

しばらく Unity を使ってみて色々と設定をいじくってなんとか使えるようになってきたので、メモとして残しておきます。

フォントの設定

なんということでしょう。デスクトップのフォントを設定するツールが Ubuntu 11.10 では標準では用意されてません。

gnome-tweak-tool をインストールして、起動するとフォントが設定できます。

f:id:tmtms:20111229104516p:image:w360

GTK アプリのキーバインドEmacs 風にする

GTK アプリのテキスト入力のキーバインドEmacs 風にするには、以前は設定エディタ(gconf-editor)で desktop → gnome → interface の gtk_key_theme を Emacs に設定すればできたのですが、効かなくなってました。

dconf-editor で org → gnome → desktop → interface の gtk-key-theme を Emacs にすれば OK です。

コマンドラインで設定するには次のようにします。

% gsettings get org.gnome.desktop.interface gtk-key-theme Emacs

ネタ元は id:lpubsppop01:20111019:1319027972 です。

マウス Emulate3Buttons を有効にする

マウスの左右ボタン同時押しで中ボタンを押したことにする設定は /etc/X11/xorg.conf.d/50-mouse.conf に書いたりしてたのですが、それが効かなくなってしまいました。

dconf-editor で org → gnome →settings-daemon → peripherals → mouse の middle-button-enabled をチェックすれば OK です。

コマンドラインで設定するには次のようにします。

% gsettings set org.gnome.settings-daemon.peripherals.mouse middle-button-enabled true 

ネタ元は http://lists.freedesktop.org/archives/xorg/2011-July/053340.html です。

スクロールバーを従来のものにする

スクロールバーが変なものに変わってるので普通のものに戻します。

$HOME/.profile に次のように設定します。

export LIBOVERLAY_SCROLLBAR=0

ウィンドウのメニューバーを上のパネルに出さなくする

ウィンドウのメニューバーがウィンドウ内になくて画面上のパネルの中に表示されます。Mac OS みたいでとても使いにくいので、この機能を無効にします。

appmenu-gtk と appmenu-gtk3 パッケージをアンインストールすれば無効になりました。

[追記] Qt ツールでも無効にするために appmenu-qt plasma-widget-menubar もアンインストールしました

gnome-terminal で全角記号を全角幅で表示させる

標準だと端末上で全角記号が半角幅で表示されるため vi で表示がおかしくなったりします。

$HOME/.profile に次のように書いておけば良いようです。

export VTE_CJK_WIDTH=1

ホーム直下の日本語ディレクトリ

日本語環境でログインすると、ホーム直下にデスクトップ, ドキュメント 等の日本語ディレクトリができます。気持ち悪いので英語にします。

端末から次のコマンドを実行します。

% LANGUAGE=en_US xdg-user-dirs-update --force

これでもうまくいかない場合は $HOME/.config/user-dirs.dirs を直接編集すればいいような気もします。

左側のランチャパネルの設定

CompizConfig設定マネージャ(ccsm) → デスクトップ → Ubuntu Unity Plugin → Experimental → Launcher icon size のスライダーでランチャのアイコンのサイズを変更できます。

同じ画面の Backlight Mode を Backlight Toggles にすると、起動していないアプリのランチャアイコンの背景が透明になります。

Behaviour タブの Key to show the launcher でランチャを起動するキーを変更できます。Super から変更しようと思ったんですけど、どれもしっくりこなくて、結局 Super のままにしてます。

ウィンドウを画面端に移動すると最大化されたりする機能を無効化

ウィンドウを画面の端(上左右)に移動すると最大化されたりする機能がありますが、自分は使わないので無効にします。

CompizConfig設定マネージャ(ccsm) → ウィンドウ・マネジメント → Grid のチェックを外せば無効になります。

上のパネルに負荷モニタを表示する

System Load Indicator(indicator-multiload) を起動すると、CPU, Memory の使用率等が表示されるようになります。

iBus のアイコンがパネルに表示されない

何のタイミングがわかりませんが、iBus のアイコン(キーボードのマーク)がパネルに表示されなくなりました。

/etc/X11/Xsession.d/80im-switch を 99im-switch にリネームすることで表示されるようになりました。

ネタ元は https://forums.ubuntulinux.jp/viewtopic.php?pid=85853 です。

xchat の通知をパネルに出す

xchat の通知がパネルに出なくなりました。どうやらパネルに出すアイコンが制限されているようです。

dconf-editor で desktop → unity → panel の systray-whitelist を ['all'] に設定すると、無制限になって表示されるようになります。

コマンドラインの場合は次です。

% gsettings set com.canonical.Unity.Panel systray-whitelist "['all']"

ネタ元は http://kawaji.wordpress.com/2011/11/02/ubuntu-unity-tray-icons/ です。

f:id:tmtms:20111229104518p:image:w360

左側のランチャパネルに自作のツール等を表示する

$HOME/.local/share/applications 配下に xxx.desktop ファイルを作成してログインしなおすと、ランチャで検索されるようになるので、アイコンを左側パネルにドラッグすれば登録できます。

desktop ファイルの書式は次のような感じです。

[Desktop Entry]
Name=xxxxx
Exec=実行コマンドのパス(引数の指定も可)
Icon=アイコンファイルのパス
Terminal=false   # 起動に端末不要

システム標準の desktop ファイルは /usr/share/applications に沢山あります。

ネタ元は id:reppets:20111109:1320846292 です。

おわり

他にも見つけたら追記します。

CompizConfig設定マネージャで compiz の設定をいじってると compiz が落ちることが良くありますが、気にしたら負けです。

Kubuntu 11.10

ThinkPad X220 を購入しました。11/1 に届きました。量販店モデルの 4285-35J で 88,000円ナリ。

プレインストールの Windows を消す覚悟がないくらいのへたれですが、例によって Ubuntu を入れました。

Ubuntu 11.10 の新しい UI に馴染めなかったので Kubuntu にしました。さようなら Gnome...

ThinkPad X220, Ubuntu 11.10, KDE で初めてづくしで、うまくいかないのが誰のせいかわからなくなったりしつつもなんとか使えるレベルになりました。
忘れないうちに(もうかなり忘れてそうだけど)メモっておきます。

TouchPad の無効化

TouchPad が反応すると非常に邪魔なので無効化します。KDE の設定の TouchPad の設定では無効にできませんでした。
BIOS の設定でも無効にできるのですが、それだと負けた気分になるので、Xorg の設定で無効にします。

http://yoshi-1968.com/category/thinkpad/ に書いてあるのを参考にしました。

/etc/X11/xorg.conf.d/50-disable-touchpad.conf を次の内容で作成します。

Section "InputClass"
        Identifier "disable touchpad"
        MatchProduct "SynPS/2 Synaptics TouchPad"
        MatchIsTouchpad "on"
        Option "Ignore" "on"
EndSection

マウス左右ボタン同時押しで中ボタンのエミュレート

マウスのホイールボタンを押してもいいのですが、不器用なのか押した瞬間にホイールがずれてしまうことがあるので、左右ボタンの同時押しで中ボタンを押したことにします。

/etc/X11/xorg.conf.d/50-mouse.conf に次の内容を作成します。

Section "InputClass"
        Identifier "Mouse"
        MatchIsPointer "on"
        Driver "evdev"
        Option "Emulate3Buttons" "true"
EndSection

日本語入力

なぜか最初は日本語入力できませんでした。
システム設定の「ロケール」の「システム言語」を選択すると、足りないパッケージがインストールされたような気がします。

どうも iBus は合わないので、SCIM + Anthy を入れてみました。

scim とか anthy まわりのパッケージを一通り入れたあと /usr/bin/im-switch を実行すると GUIインプットメソッドを選択できます。

システム言語を英語にしているとこれだけではダメでした。ログイン時に言語を選択できればいいのでしょうけど、Kubuntu のログイン画面では言語選択ができないので、ファイルに書く必要がありました。
$HOME/.zlogin ファイルに以下の内容を書いておきます。zsh じゃなくて bash を使っている場合は $HOME/.bash_profile か $HOME/.bash_login に書けばいいと思います。

export LANG=ja_JP.UTF-8
export LC_CTYPE=ja_JP.UTF-8
export LANGUAGE=ja_JP
export LC_MESSAGES=ja_JP.UTF-8
export LC_COLLATE=ja_JP.UTF-8

Qt系のツールで日本語入力できなかったのですが、$HOME/.xsessionrc に次の設定をすることでできるようになりました。

export QT_IM_MODULE=scim-bridge

ホーム直下の日本語ディレクトリ

日本語環境でログインすると、ホーム直下にデスクトップ, ドキュメント 等の日本語ディレクトリができます。気持ち悪いので英語にします。

端末から次のコマンドを実行します。

% LANGUAGE=en_US xdg-user-dirs-update --force

これでもうまくいかない場合は $HOME/.config/user-dirs.dirs を直接編集すればいいような気もします。試してませんけど。

ウィンドウまわり

システム設定の「デスクトップ効果」「ウィンドウの挙動」「ワークスペースの挙動」あたりを色々いじって Gnome2 + Compiz でやってたことが割とできるようになりました。

挙動が違って違和感あるのは、

  • ウィンドウがデスクトップの端まで使ってると、スクリーンエッジの設定が効かない
  • ワークスペースをまたいでウィンドウを配置できない
  • タスクバーのタスクを自由に並び替えできない
  • パネル上のアプリケーションランチャを自由に並び替えできない できました。パネルの端の勾玉みたいな奴をクリックしてパネルの設定モードに入るとできます
  • フォーカスのあるウィンドウよりも手前にあるウィンドウだけを半透明にすることができない

くらいです。

VMware

VMware Workstation 7 が動かなかったので 8 を購入しようかとも思ったのですが、VMware Player で十分な機能しか普段使ってなかったので、VMware Player 4 にしました。普通に使えてます。

キーボード

普段、日本語キーボードを英語配列にして使ってるので、その設定をします。

システム設定の「入力デバイス」のキーボードでレイアウトを us にします。

xmodmap の設定は xmodmap -pke 出力の形式で $HOME/.Xmodmap というファイルを作っておけば自動的に実行されるみたいです。

Firefox 等 GTK を使ったアプリのテキスト入力で Emacsキーバインドを使用したい場合は $HOME/.gtkrc-2.0 というファイルを以下の内容で作ります。

gtk-key-theme-name = "Emacs"

画面切り替え

外部ディスプレイを繋いで Fn+F7 で画面を切り替えようとするとどうしようもなくなります。リブートしないと復帰できません。

危険なので、Fn+F7 でディスプレイの設定を起動するようにしてみました。

システム設定の「ショートカットとジェスチャー」→「グローバルキーボードショートカット」→「KDEデーモン」→「ディスプレイを変更」を「なし」にします。
「カスタムショートカット」で新規アクションを作成します。「編集」「新規」「グローバルショートカット」「コマンド/URL」。トリガーを Fn+F7 (Display) にしてアクションを「kcmshell4 display」に設定します。

Konsoleのフォント

Konsole のフォントとして Ricty を使用したかったのですが、Konsole の設定画面からは選択できませんでした。Konsole だけではなく KDE のフォント設定でも固定幅のフォントの選択肢にありません。

とりあえず Konsole では $HOME/.kde/share/apps/konsole/シェル.profile ファイルに次のように記述することでできました。

[Appearance]
Font=Ricty,9,-1,5,50,0,0,0,0,0

KDE 設定で固定幅フォントに好きなものを設定できるようにする方が正しい対処だと思うのですが、その方法はわかってません。

その他

思い出したら追記します。

Ubuntu 11.04 Natty Narwhal

Ubuntu 11.04 がリリースされたのでアップグレードインストールしてみました。
手順はここにあります→ https://wiki.ubuntulinux.jp/UbuntuTips/Install/UpgradeNatty

アップグレード完了後にやったことなど。

GNOMEを使う

標準のデスクトップが Unity って奴になりました。どうにも慣れないので今まで通り GNOME を使うことにします。
ログイン時に下のバーから「Ubuntu クラシック」を選択するだけです。簡単ですね。

スクロールバーを出す

EmacsFirefox は問題ないのですが、その他の GTK を使うツール達のスクロールの UI が新しくなってます。 http://journal.mycom.co.jp/news/2011/03/08/014/index.html
これも自分には使いにくいので従来通りのスクロールバーを表示させるようにしました。

ホームディレクトリに .xprofile というファイルを次の内容で作って、ログインしなおすだけです。

export LIBOVERLAY_SCROLLBAR=0

http://askubuntu.com/questions/34214/how-do-i-disable-overlay-scrollbars より。

無線LANの省電力を有効にする

これは 11.04 とは関係なく毎回やってるのですが、ThinkPad X61Ubuntu を動かすと無線LAN用モジュール iwlagn の省電力モードは無効になっています。有効にしようとしてもエラーになってしまいます。

% sudo iwconfig wlan0 power on
Error for wireless request "Set Power Management" (8B2C) :
    SET failed on device wlan0 ; Operation not supported.

おそらく何らかのバグの対処のためだと思うのですが、かなり熱くなるので無理やり省電力モードを有効にしてモジュールを作り直します。

% sudo aptitude install linux-source-2.6.38
% cd /tmp
% tar xpvf /usr/src/linux-source-2.6.38/linux-source-2.6.38.tar.bz2 linux-source-2.6.38/drivers/net/wireless
% cd linux-source-2.6.38/drivers/net/wireless/iwlwifi
% vi iwl-4965.c
...2608行目の .broken_powersave = true を false に変更...
% make -C /usr/src/linux-headers-2.6.38-8-generic-pae SUBDIRS=`pwd` modules

これで新しい iwlagn.ko ができるので、これをモジュールディレクトリにコピーします。

% sudo modprobe -r iwlagn
% cd /lib/modules/2.6.38-8-generic-pae/kernel/drivers/net/wireless/iwlwifi
% sudo mv iwlagn.ko iwlagn.ko.orig
% sudo cp /tmp/linux-source-2.6.38/drivers/net/wireless/iwlwifi/iwlagn.ko .
% sudo modprobe iwlagn

もしかしたらちゃんとリブートした方がいいかもしれません。

% iwconfig wlan0
wlan0     IEEE 802.11abgn  ESSID:"XXXXXXXXXXXX"  
          Mode:Managed  Frequency:2.457 GHz  Access Point: XX:XX:XX:XX:XX:XX   
          Bit Rate=65 Mb/s   Tx-Power=15 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:on
          Link Quality=70/70  Signal level=-33 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:1477  Invalid misc:91   Missed beacon:0

Power Management が on になりました。
このモジュールで何かトラブっても責任はとれないので自己責任でどうぞ。

追記

サスペンドから復帰した時(?)に省電力がoffになるみたいだったので、/etc/NetworkManager/dispatcher.d/00iwpower を次の内容で作ってみました。

#!/bin/sh
/sbin/iwconfig $1 power on

サスペンドから復帰してもちゃんと省電力モードになってるみたいです。

マウスボタンの左右押しで中ボタンのエミュレート

マウスボタンの左右押しで中ボタンをエミュレートするために次の行を .xprofile に追加しました。

xinput set-prop 'Microsoft Wireless Notebook Presenter Mouse 8000' 'Evdev Middle Button Emulation' 1

マウスの名前は xinput list コマンドでわかります。またプロパティ名は xinput list-props 'マウス名' でわかります。

追記

これもサスペンドから復帰した時にリセットされてしまいました。
/etc/X11/xorg.conf.d ディレクトリ(なかったら作る)の下に 50-mouse.conf という名前で次の内容のファイルを作ります。

Section "InputClass"
	Identifier "Mouse"
	MatchIsPointer "on"
	Driver "evdev"
	Option "Emulate3Buttons" "true"
EndSection

これでサスペンドから復帰してもエミュレートが効くようになりました。

さくらのVPSでUbuntu

さくらのVPSが開始した頃に一度試しに借りてみたんですが、DNSの逆引き設定ができなかったので、無料期間中にキャンセルしました。
社長のツイートによると、そのうちDNSの逆引きができるようになるらしいので、また借りてみることにしました。

前回とは違って Ubuntu が公式に選択できるようになってるので、それにしました。ただし最新の 10.10 ではなくて 10.04 です。

インストール方法はマニュアルにまとまってます。親切で良いですね。

このマニュアルの通りにしてインストールした後に次の設定をしました。

SSH

インストールすると ssh が起動していますが、22番ポートはやたらアタックがある印象があるので、速攻でポート番号を変更します。あと、パスワード認証をできないようにします。

vps# vi /etc/ssh/sshd_config
Port 22 ←この番号を変更
# PasswordAuthentication yes
          ↓
PasswordAuthentication no

UsePAM yes
   ↓
UsePAM no

このままだと自分もログインできなくなるので、自分の ssh public キーを置いておきます。

vps$ mkdir .ssh
vps$ vi .ssh/authorized_keys
<自分の public key の内容をコピペ>

sshd を再起動。

vps# /etc/init.d/ssh restart

ログアウトする前に、PCの別の端末からちゃんとログインできることを確認。

pc% ssh -p ポート番号 サーバーIPアドレス

PC の ~/.ssh/config にポート番号を設定しておくと便利です。

Host vps
        HostName サーバーIPアドレス
        Port ポート番号

これで「ssh vps」とするだけでサーバーにログインできます。

Ubuntu 10.10 へアップグレード

Ubuntu の最新は 10.10 なのでアップグレードします。

vps# vi /etc/update-manager/release-upgrades
Prompt=tls
    ↓
Prompt=normal
vps# do-release-upgrade

日本語ロケール

インストール時に英語を選択したからだと思うのですが、日本語ロケールが入ってませんでした。

10.10 へのアップグレード時に次のようなメッセージが頻発するので、アップグレード前にやっておいた方が良かったかもしれません。

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
	LANGUAGE = (unset),
	LC_ALL = (unset),
	LANG = "ja_JP.utf8"
    are supported and installed on your system.

次のようにしてインストールします。

vps# aptitude install language-pack-ja
vps# dpkg-reconfigure locales

サーバー名変更

デフォルト状態では謎のホスト名がついているので変更します。

vps# vi /etc/hostname

とりあえずこんな感じです。あとは普通にサーバーとしてセットアップすればよいかと。…さて、何に使うか…(ぉ

ThinkPad X61 無線LANの省電力モード

気温があがってきて、ThinkPad X61パームレストも熱くなる季節になってきました。
以前は http://blog.tmtm.org/tommy/?date=20081006#p01 にあるような設定で、無線LANを省電力化できたのですが、最近は、iwconfig wlan0 power on とやればいいようです。
ところが、X61 ではこれは効きません。

# iwconfig wlan0 power on
Error for wireless request "Set Power Management" (8B2C) :
    SET failed on device wlan0 ; Operation not supported.

どうやら iwlagn の省電力機構に問題があるようで無効にされているようです。
https://bugs.launchpad.net/ubuntu/+bug/367121

とは言っても熱くてかなわんので、無効にしてあるのを無効にしました。

$ mkdir /tmp/x
$ cd /tmp/x
$ apt-get source linux-backports-modules-wireless-2.6.32-22-generic-pae
$ cd linux-backports-modules-2.6.32-2.6.32
$ vi updates/compat-wireless-2.6/drivers/net/wireless/iwlwifi/iwl-4965.c
2239行目の .broken_powersave = true を false に変更。
$ dpkg-buildpackage -d -rfakeroot -us -uc
...
$ cd ..
$ sudo dpkg -i linux-backports-modules-wireless-2.6.32-22-generic-pae_2.6.32-22.13_i386.deb

リブート後に「iwconfig wlan0 power on」すると、エラーにならず、「Power Management:on」となり、ちゃんと動いているようです。

% sudo iwconfig wlan0 power on
% iwconfig wlan0
wlan0     IEEE 802.11abgn  ESSID:"xxxxxxxxxxxx"  
          Mode:Managed  Frequency:2.462 GHz  Access Point: xx:xx:xx:xx:xx:xx   
          Bit Rate=1 Mb/s   Tx-Power=15 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Power Management:on
          Link Quality=60/70  Signal level=-50 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

ちゃんと測ったわけではないですが、パームレストの熱さもマシになったようです。

deb パッケージの作り方には詳しくないので、変なことしてるかもしれません。あと、何か不具合があって機能を無効にしてあったものなので、有効にすることで何か問題が起きるかもしれません。

Ubuntu 10.04 Beta1 で無線LANが安定しない

Ubuntu 10.04 Beta1 でカーネルが 2.6.32-17 だと何故か無線LANが安定しません。つながったと思ったら数十秒後には切れたり。
2.6.32-16 だと問題ないので、しばらくこれを使おうと思います。

で、GRUB のデフォルトを 2.6.32-16 にしようと思って /etc/default/grub

GRUB_DEFAULT=saved

と書いたのに、何故か毎回先頭のエントリ(2.6.32-17)から起動しようとしちゃいます… orz
これもしばらく様子見で…。

追記

2.6.32-18 で無線LANは安定しました。

Ubuntu 10.04 Beta1

Ubuntu 10.04 Beta1 が出たので ThinkPad X61 を 9.10 からアップグレードインストールしてみました。フツーに動きました。

# aptitude upgrade
# update-manager -d

VMware Workstation 7 もちゃんと動きました。
無線LAN も、Bluetooth マウスも問題ありません。

Xinput

X のキーボード&マウスの設定が HAL じゃなくなったらしいです。設定ファイルの書き方がよく分からないので、とりあえず xinput で直接設定しました。

Thinkpadトラックポイントでホイールのエミュレート:

xinput set-prop '"TPPS/2 IBM TrackPoint"' 'Evdev Wheel Emulation' 1
xinput set-prop '"TPPS/2 IBM TrackPoint"' 'Evdev Wheel Emulation Button' 2
xinput set-prop '"TPPS/2 IBM TrackPoint"' 'Evdev Middle Button Emulation' 1

Microsoft Wireless Notebook Presenter Mouse 8000」で左右ボタン同時押しで中ボタンのエミュレート:

xinput set-prop '"Microsoft Wireless Notebook Presenter Mouse 8000"' 'Evdev Middle Button Emulation' 1

追記

udev で設定できるらしいです。
Input Configuration with udev (Ubuntu 10.04)
Writing udev rules
なんだかよくわからないので、そのうちじっくり読んでみようかと…。

追記

じっくり読むのはやめて適当に設定してみました。
/lib/udev/rules.d/99-emulate3buttons.rules

ENV{x11_options.Emulate3Buttons}="true"

/lib/udev/rules.d/99-trackpoint.rules

ENV{x11_options.EmulateWheel}="true"
ENV{x11_options.EmulateWheelButton}="2"

これでうまく動いているようです。

追記

/lib/udev よりも /etc/udev の方がよさそうです。
それはそれとして、最近 udev で設定した EmulateWheel が働かなくなってしまいました。xinput の方は効くので、しばらく様子見です。

Redmine 0.9.2 をインストール

Redmine 0.9 が正式にリリースされたので、Ubuntu マシンで動いてた 0.8.7 から 0.9.2 にアップグレードしてみました。

基本的に http://www.redmine.org/wiki/redmine/RedmineUpgrade の通りに。

webrick ではちゃんと動いたんですが、Apache + Passenger だと動きませんでした。Redmine 0.9.2 に含まれている Rails のバージョンと Passenger があっていなかったためのようです。
Ubuntu 9.10 の Passenger は 2.0.3 ですが、最新は 2.2.9 のようなので、それにしてみました。

Ubuntu の Passenger を削除:

# aptitude purge libapache2-mod-passenger

Gem で Passenger をインストール:

# gem install passenger
# passenger-install-apache2-module

"Please edit your Apache configuration file, and add these lines:" の後に表示される行を Apache の設定ファイルに追加します。Ubuntu の作法にならって、/etc/apache2/mods-available/passenger.load を作成してそこに記述しました。

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.9/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.9
PassengerRuby /usr/bin/ruby1.8
# a2enmod passenger

そして、"Deploying a Ruby on Rails application: an example" の出力にならって、/etc/apache2/sites-available/redmine を変更しました。

<VirtualHost *:80>
   ServerName redmine.example.com
   DocumentRoot /var/www/redmine/public
   <Directory /somewhere/public>
      AllowOverride all
      Options -MultiViews
   </Directory>
</VirtualHost>
# a2ensite redmine

そして、http://redmine.example.com/ にアクセスすると…

404 Page not found ... orz

ここで1時間ほど悩んだんですが、 http://www.shige.idani.jp/tdiary/?date=20090421 このページで答えが見つかりました。
redmine/public/.htaccess の RewriteRule をコメントアウトすることで正常に動作させることができました。

30分もあれば楽勝くらいに考えていたんですが1時間半も掛かってしまいました。まあ、動いたからOKです。原因が分からなかった時は 0.8 に戻さないといけないかと思っていたので。

ところで、0.8 では「Target version」だったのが 0.9 では日本語に訳されて「対象バージョン」となりました。
ん〜、これはビミョーですねぇ…。バグチケットの場合は修正されるバージョンを記入すると思うんですが、「対象バージョン」だとバグが発生したバージョンに思われかねないなぁ…と。

いい訳は思いつかないんですけど、たとえば「目標バージョン」とか…。