zsh をローカルインストールする (2019/12/27)


Linux 環境でsudo権限なしで zsh を使いたい方へ。
色々ハマったので備忘録も兼ねて。

INDEX

  1. 準備
  2. ncursesのインストール
  3. zshのインストール
  4. 参考にさせていただいたサイト

準備

zsh の置き場を決めてディレクトリを作っておく。
今回は$HOME/.localディレクトリにインストールする。

zshを使いたいhost
$ mkdir ~/.local

ncursesのインストール

早速 zsh をインストールしようとしたら、configure時に以下のようなエラーを吐いて落ちた。

configure: error: "No terminal handling library was found on your system.
This is probably a library called 'curses' or 'ncurses'.  You may
need to install a package called 'curses-devel' or 'ncurses-devel' on your
system."

調べたところ、ncurses をローカルインストールしたら zsh がインストールできたというサイトがあった[2]ので、こちらを参考に ncurses をインストールする。

アナウンスサイトはこちら
ディストリビューションへのリンクがいくつかあるが、2019/12/27 時点で ncurses-6.0 以降のバージョンでは zsh が動作しなかったため、ncurses-5.9 をインストールする。

まずはcurlでダウンロードして解凍。

$ curl -L ftp://ftp.invisible-island.net/ncurses/ncurses-5.9.tar.gz > ncurses.tar.gz
$ tar zxvf ncurses.tar.gz

解凍できたら$HOME/.local/ncurses下にインストール。

$ mkdir ~/.local/ncurses
$ cd ncurses-5.9
$ ./configure \
--prefix=$HOME/.local/ncurses \
--without-cxx-binding \
--with-shared \
--enable-widec
$ make; make install

zshのインストール

どこからでもいいので、欲しいバージョンの zsh をダウンロードしてきて解凍する。
今回は SourceForge から取ってくることにする。
現在 (2019/12/27) の最新バージョンは zsh-5.7.1。

$ cd ~/
$ curl -L https://sourceforge.net/projects/zsh/files/zsh/5.7.1/zsh-5.7.1.tar.xz > zsh-5.7.1.tar.xz
$ xz -dc zsh-5.7.1.tar.xz | tar xfv -

解凍が完了したらインストールする。
オプションに関しては参考にさせていただいたサイトを見ていくつか設定した。
特に--with-tcsetpgrpオプションはつけないとエラーで落ちてインストールできなかった。

$ mkdir ~/.local/zsh
$ cd ~/zsh-5.7.1
$ ./configure \
--prefix=$HOME/.local/zsh \
--enable-cflags="-I $HOME/.local/ncurses/include" \
--enable-cppflags="-I $HOME/.local/ncurses/include" \
--enable-ldflags="-L $HOME/.local/ncurses/lib" \
--enable-multibyte \
--enable-locale \
--with-tcsetpgrp
$ make; make install

必要があれば .bashrc にzsh alias を追加して、

~/.bashrc
# その他設定
# ...

alias zsh=$HOME/.local/zsh/bin/zsh

sourceで bash の設定を反映させる。

$ source ~/.bashrc

下記が実行できればOK。

$ zsh

参考にさせていただいたサイト

[1] zsh を一般ユーザでインストール
[2] Unix :: zsh / zsh-5.0.2 のインストール
[3] How do I use curl to download content from sourceforge?