カテゴリー
Microsoft

WSL の brew で Vim のインストールに失敗した原因と対処

はじめに

WSL に Homebrew をインストールする記録 – oki2a24 で Homebrew on WSL を実現しました。

しかし、タイトル通り Vim のインストールに失敗したことから、先の投稿の手順は失敗だったのではないかと思うようになりました。

この点について、ノートいたします。

まとめ

  • brew install vim を行うと失敗した。
    configure: creating cache auto/config.cache
    checking whether make sets $(MAKE)... no
    checking for gcc... gcc-5
    checking whether the C compiler works... no
    configure: error: in `/tmp/vim-20190330-2026-capht6/vim-8.1.1050/src':
    configure: error: C compiler cannot create executables
    See `config.log' for more details
    
  • 原因 (たぶん) は、 Vim の brew インストールに、 brew でインストールした gcc を使用したこと。
  • 原因 (たぶん) は、 brew のインストール前に、パッケージのアップグレードを行わなかったこと。
  • 原因 (たぶん) は、コマンドの実行の順番
    1. brew のインストール
    2. sudo apt-get install build-essential
    3. sudo apt update
    4. sudo apt upgrade -y
    5. brew install gcc
    6. brew install vim
  • 問題解決は、次のコマンドを実行することで brew で Vim をインストールできた。
    1. brew uninstall gcc
    2. sudo apt-get install build-essential
    3. brew install vim
  • 根本的な解決策はおそらく、 WSL に Homebrew をインストールする前に、次のことを行っておくこと。
    1. パッケージのアップグレードを行う。 apt update && apt upgrade -y
    2. Homebrew の 必要要件パッケージをインストール しておく。

brew install vim 時のエラー発生の様子

$ brew install vim
Updating Homebrew...
==> Installing dependencies for vim: ncurses, gettext, readline, bzip2, unzip, lua, gdbm, openssl, berkeley-db, libbsd, expat, perl, sqlite, xz, libffi, python, libyaml and ruby
==> Installing vim dependency: ncurses
... 略 ...
==> Installing vim dependency: perl
==> Downloading https://linuxbrew.bintray.com/bottles/perl-5.28.1.x86_64_linux.bottle.2.tar.gz
######################################################################## 100.0%
==> Pouring perl-5.28.1.x86_64_linux.bottle.2.tar.gz
==> /home/linuxbrew/.linuxbrew/Cellar/perl/5.28.1/bin/cpan -i XML::Parser
Last 15 lines from /home/oki2a24/.cache/Homebrew/Logs/perl/post_install.01.cpan:
  Has already been unwrapped into directory /home/oki2a24/.cpan/build/Test-LeakTrace-0.16-0
  LEEJO/Test-LeakTrace-0.16.tar.gz
  Has already been prepared
  LEEJO/Test-LeakTrace-0.16.tar.gz
  Could not make: Unknown error

  TODDR/XML-Parser-2.44.tar.gz
  Has already been unwrapped into directory /home/oki2a24/.cpan/build/XML-Parser-2.44-0
  TODDR/XML-Parser-2.44.tar.gz
  Has already been prepared
Running make for T/TO/TODDR/XML-Parser-2.44.tar.gz
Warning: Prerequisite 'LWP::UserAgent => 0' for 'TODDR/XML-Parser-2.44.tar.gz' failed when processing 'OALDERS/libwww-perl-6.38.tar.gz' with 'make => NO'. Continuing, but chances to succeed are limited.
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/shims/linux/super/make: line 25: exec: : not found
  TODDR/XML-Parser-2.44.tar.gz
  /home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/shims/linux/super/make -- NOT OK
Warning: The post-install step did not complete successfully
You can try again using `brew postinstall perl`
==> Caveats
... 略 ...
==> Installing vim
==> Downloading https://github.com/vim/vim/archive/v8.1.1050.tar.gz
==> Downloading from https://codeload.github.com/vim/vim/tar.gz/v8.1.1050
# # #   #                            -=O=-




==> ./configure --prefix=/home/linuxbrew/.linuxbrew --mandir=/home/linuxbrew/.linuxbrew/Cellar/vim/8.1.1050/share/man --enable-multibyte --with-tlib=ncurses
Last 15 lines from /home/oki2a24/.cache/Homebrew/Logs/vim/01.configure:
--enable-perlinterp
--enable-rubyinterp
--enable-python3interp
--enable-gui=no
--without-x
--enable-luainterp
--with-lua-prefix=/home/linuxbrew/.linuxbrew/opt/lua

configure: creating cache auto/config.cache
checking whether make sets $(MAKE)... no
checking for gcc... gcc-5
checking whether the C compiler works... no
configure: error: in `/tmp/vim-20190330-2026-capht6/vim-8.1.1050/src':
configure: error: C compiler cannot create executables
See `config.log' for more details

READ THIS: https://docs.brew.sh/Troubleshooting
$

brew install vim の成功の様子

$ brew install vim
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
No changes to formulae.

==> Downloading https://github.com/vim/vim/archive/v8.1.1050.tar.gz
Already downloaded: /home/oki2a24/.cache/Homebrew/downloads/117e4e936195728e696b54dd5f41a5c2c83378a972be3254820b30858e012b19--vim-8.1.1050.tar.gz
==> ./configure --prefix=/home/linuxbrew/.linuxbrew --mandir=/home/linuxbrew/.linuxbrew/Cellar/vim/8.1.1050/share/man --enable-multibyte --with-tlib=ncurses
==> make
==> make install prefix=/home/linuxbrew/.linuxbrew/Cellar/vim/8.1.1050 STRIP=/bin/true
?  /home/linuxbrew/.linuxbrew/Cellar/vim/8.1.1050: 1,845 files, 35.3MB, built in 2 minutes 51 seconds
$

brew で Vim をインストールできたものの、変。使うことができない><。

どうやら、コンフリクトが発生しているようです。

そして、 Vim のインストールされたディレクトリを見ると、 vi などが vim へシンボリックリンクが貼られています。

もしやと思い、 vi がどのパスで起動しているか調べてみると、、、 vi こそ vim 8.1 としてインストールされていたのでした><。

vim の場合は、 8.0 。なぜでしょうか。。。。><

追記: 多分、ターミナルを新しく立ち上げれば、反映されていたと思います。

$ type vim
vim is hashed (/usr/bin/vim)
$
$ brew info vim
vim: stable 8.1.1050, HEAD
Vi 'workalike' with many additional features
https://www.vim.org/
Conflicts with:
  ex-vi (because vim and ex-vi both install bin/ex and bin/view)
  macvim (because vim and macvim both install vi* binaries)
/home/linuxbrew/.linuxbrew/Cellar/vim/8.1.1050 (1,845 files, 35.3MB) *
  Built from source on 2019-03-30 at 19:04:42
From: https://github.com/Homebrew/linuxbrew-core/blob/master/Formula/vim.rb
==> Dependencies
Required: gettext ✔, lua ✔, perl ✔, python ✔, ruby ✔, ncurses ✔
==> Options
--HEAD
        Install HEAD version
$
$ ls -al /home/linuxbrew/.linuxbrew/Cellar/vim/8.1.1050/bin/
total 6808
drwxr-xr-x 1 oki2a24 oki2a24    4096 Mar 30 19:04 .
drwxrwxr-x 1 oki2a24 oki2a24    4096 Mar 30 19:04 ..
lrwxrwxrwx 1 oki2a24 oki2a24       3 Mar 30 19:04 ex -> vim
lrwxrwxrwx 1 oki2a24 oki2a24       3 Mar 30 19:04 rview -> vim
lrwxrwxrwx 1 oki2a24 oki2a24       3 Mar 30 19:04 rvim -> vim
lrwxrwxrwx 1 oki2a24 oki2a24       3 Mar 30 19:04 vi -> vim
lrwxrwxrwx 1 oki2a24 oki2a24       3 Mar 30 19:04 view -> vim
-r-xr-xr-x 1 oki2a24 oki2a24 6493192 Mar 30 19:04 vim
lrwxrwxrwx 1 oki2a24 oki2a24       3 Mar 30 19:04 vimdiff -> vim
-r-xr-xr-x 1 oki2a24 oki2a24    2121 Mar 30 19:04 vimtutor
-r-xr-xr-x 1 oki2a24 oki2a24   22336 Mar 30 19:04 xxd
$
$ type vi
vi is /home/linuxbrew/.linuxbrew/bin/vi
$

おわりに

最後は、アプリ (今回は Homebrew) をインストールする前は、環境を最新化しておく、というごく当たり前の結論となりました。

すこしぐちゃぐちゃになってきましたので、 WSL のインストールからやり直したいな、と思い始めております。

以上です。

コメントを残す