新しい環境を作ったものの、tmuxの調子が悪く、 vimで■や●等の全角記号が正しく表示されませんでした。
yumでインストールしたので、 少しバージョンも古いのかなぁと思い、 最新バージョンをソースからインストールしました。 結果、正しく表示されるようになりました。 (ただしバージョンが古かったことが原因かどうかは分かりません。)
今回は、ソースからtmuxのインストール方法を記載します。 この方法を使うことで、別のツールやライブラリも同じようにインストールすることができます。
環境は、Vagrant + VirtualBoxを使い、OSは以下を使います。
CentOS 7.2 x64 (Minimal, Puppet 4.2.3, Guest Additions 4.3.30)
https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.2/vagrant-centos-7.2.box
rootユーザーになる
su
でroot
になります。
vagrantユーザで、特に指定していなければ、パスワードはvagrant
です。
本来はsudo
を使って進めたかったのですが、
make
でパーミッションエラーが出てしまいました。
いずれにせよ、後述のコマンドも同じ理由で毎回sudo
が必要なので、
最初からsu
を使って対処してしまいます。
$ su
必要なパッケージをインストール
必要なパッケージをインストールします。 既にインストール済みであればこの処理は不要です。
# yum install -y git automake libevent-devel ncurses-devel
ソースを取得
tmuxのソースを取得します。 取得方法はどんな方法でも構いませんが、今回はgithubからリポジトリをcloneしました。
# cd /usr/local/src
# git clone https://github.com/tmux/tmux.git
インストール
githubから取得したソースにはconfigure
スクリプトがありません。
そこでautogen.sh
を使ってconfigure
を生成します。
そして、configure
→make
→make install
で完了です。
# cd tmux
# sh autogen.sh
# ./configure
# make
# make install
インストール確認
とりあえずバージョンを確認して完了です。
$ tmux -V
tmux master
文字化けについて
日本語が正しく表示される場合、以降の内容は読む必要ありません。
tmuxを起動中にvim等でUTF-8
のファイルを開くと、日本語が_(アンダースコア)
で置き換えられてしまう場合があります。
その場合、環境変数LC_ALL
、LC_CTYPE
、LANG
を確認しましょう。
環境変数に設定された文字コードにUTF-8
が含まれていないと、文字化けしてしまいます。
(殆どの場合、基本的にUTF-8
が設定されていると思います。)
同じ環境を使用している場合、bash
では文字化けしませんでしたが、
fish
では文字化けを確認しました。
対処方法は2種類あり、エイリアスを指定する方法と、ロケールを指定する方法です。 エイリアスを設定する方法が簡単で、他への影響が少なく済みます。
alias tmux="tmux -u"
エイリアスを設定しない場合は以下の手順で対応することができます。
ここでは文字化けを確認したfish
を使っている想定で説明します。
まず、設定されているロケールを確認します。
以下の例ではLANG
が空っぽです。
tmuxの文字化け(_で置換されてしまう点)だけでいえば、
要はLANG
にUTF-8
が設定されていれば良いことになります。
$ locale
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
使用可能な日本語ロケールを確認します。
ここでは日本語(ja)で検索していますが、実際はUTF-8
であればどんな言語でも構いません。
$ locale -a | grep -i ja
ja_JP
ja_JP.eucjp
ja_JP.ujis
ja_JP.utf8
japanese
japanese.euc
LANG
を設定します。
bash
ならば、以下のコマンドで対応できるのですが、
fish
の場合、環境変数設定のLANG=ja_JP.utf8
の構文が違うため、対応できません。
$ localectl set-locale LANG=ja_JP.utf8
$ source /etc/locale.conf
Unsupported use of '='. In fish, please use 'set LANG ja_JP.utf8'.
/etc/locale.conf (line 1): LANG=ja_JP.utf8
^
from sourcing file /etc/locale.conf
called on standard input
なのでログイン時に環境変数をexport
するために、設定ファイルに書き込みます。
fish
ではexport
コマンドが無いので、set -x
という形で指定します。
$ vim ~/.config/fish/config.fish
set -x LANG ja_JP.utf8
$ source ~/.config/fish/config.fish
(export LANG=ja_JP.utf8
と指定してもエラーにはならず、正しく設定されます。不思議です。)
$ locale
LANG=ja_JP.utf8
LC_CTYPE="ja_JP.utf8"
LC_NUMERIC="ja_JP.utf8"
LC_TIME="ja_JP.utf8"
LC_COLLATE="ja_JP.utf8"
LC_MONETARY="ja_JP.utf8"
LC_MESSAGES="ja_JP.utf8"
LC_PAPER="ja_JP.utf8"
LC_NAME="ja_JP.utf8"
LC_ADDRESS="ja_JP.utf8"
LC_TELEPHONE="ja_JP.utf8"
LC_MEASUREMENT="ja_JP.utf8"
LC_IDENTIFICATION="ja_JP.utf8"
LC_ALL=
この状態でtmuxを起動してUTF-8
のファイルを開くと、文字化けせずに表示されます。
参考サイト
tmux(1) - OpenBSD manual pageshttp://man.openbsd.org/OpenBSD-current/man1/tmux.1
ロケール(locale)まとめ
https://qiita.com/aosho235/items/58e2e7acd5c2ee3641ff