【Ubuntu】Vimをビルドする手順
Ubuntuで最新VIMをビルドするまでの手順を紹介します。
依存パッケージをインストールする
ソースに依存するパッケージを全てインストールするので全部で1GB程度の空き容量が必要です。(インストールされたものは後述)
①sources.listを編集(もしくは「ソフトウェアとアップデート」を変更
sources.listを編集し、deb-srcの前にあるコメントを外して保存します。
②依存パッケージのインストール
※luajitはbuild-depでもインストールされないので追加が必要。
sudo apt update
sudo apt build-dep vim
sudo apt install luajit libluajit-5.1
ソースをGithubからダウンロード
ホームディレクトリのGitReposにソースをダウンロードします。(※ディレクトリはどこでも構いません。)
cd ~
mkdir GitRepos
cd GitRepos
git clone https://github.com/vim/vim.git
ソースをビルド
①vim/srcに移動
cd vim/src
②configureを実行
下記のコマンドを実行し、各種オプションを設定します。
./configure --prefix=/usr/local \
--with-features=huge \
--enable-multibyte \
--enable-perlinterp \
--enable-terminal \
--enable-python3interp \
--enable-rubyinterp \
--enable-luainterp \
--with-luajit \
--enable-fail-if-missing
★オプションについて★
詳しいオプションの説明は下記のコマンドを実行すると知ることができます。
./configure --help
makeしてインストール
make
sudo make install
確認
バージョンを確認して新しくなっているか確認してください。
vim --version
【補足1】GUIなし(CUIのみ)でビルドしたい場合
with GUI gtk2でビルドされるので、without GUIのままが良い場合は「--disable-gui」を追加してください。
「+X11」も有効になるのでX11 forwardingを使っている状態でVIMだけ使っていても、クライアント側でXming等が起動していないと
unable to connect to forwarded X server: Network error: Connection refused
というメッセージが表示されるようになります。(X11と連携するようになってしまう。)
気になるときは「--without-x」も追加してください。
./configure --prefix=/usr/local \
--with-features=huge \
--enable-multibyte \
--enable-perlinterp \
--enable-terminal \
--enable-python3interp \
--enable-rubyinterp \
--enable-luainterp \
--disable-gui \
--with-luajit \
--without-x \
--enable-fail-if-missing
【補足2】ビルド済みで必要なもの
Python3,Ruby,LuaをONにしたときにOSを再インストールした時など、実行するときに必要なパッケージ。
sudo apt-get install build-essential luajit luajit-5.1 ruby-dev python-dev
【補足3】build-depでインストールされた依存パッケージ
debhelper dh-strip-nondeterminism{a} docbook-dsssl{a} docbook-utils
docbook-xml fonts-lato{a} fonts-lmodern{a} fonts-texgyre{a}
gconf-service{a} gconf-service-backend{a} gconf2{a} gconf2-common{a}
ghostscript gir1.2-atk-1.0{a} gir1.2-atspi-2.0{a} gir1.2-freedesktop{a}
gir1.2-gconf-2.0{a} gir1.2-gdkpixbuf-2.0{a} gir1.2-gnomekeyring-1.0{a}
gir1.2-gtk-2.0{a} gir1.2-gtk-3.0{a} gir1.2-pango-1.0{a} gsfonts{a}
icu-devtools{a} intltool-debian{a} jadetex{a} javascript-common{a}
libacl1-dev libarchive-zip-perl{a} libart-2.0-2{a} libart-2.0-dev{a}
libatk-bridge2.0-dev{a} libatk1.0-dev{a} libatspi2.0-dev{a}
libattr1-dev{a} libauthen-sasl-perl{a} libavahi-client-dev{a}
libavahi-common-dev{a} libavahi-glib-dev{a} libavahi-glib1{a}
libbonobo2-0{a} libbonobo2-common{a} libbonobo2-dev{a} libbonoboui2-0{a}
libbonoboui2-common{a} libbonoboui2-dev{a}
libcairo-script-interpreter2{a} libcairo2-dev{a} libcanberra-dev{a}
libcupsfilters1{a} libcupsimage2{a} libdbus-1-dev{a} libegl1-mesa-dev{a}
libepoxy-dev{a} libfile-basedir-perl{a} libfile-desktopentry-perl{a}
libfile-homedir-perl{a} libfile-listing-perl{a} libfile-mimeinfo-perl{a}
libfile-stripnondeterminism-perl{a} libfile-which-perl{a}
libfont-afm-perl{a} libfontconfig1-dev{a} libgail-common{a}
libgail-dev{a} libgail18{a} libgconf-2-4{a} libgconf2-dev{a}
libgconf2-doc{a} libgdk-pixbuf2.0-dev{a} libglade2-0{a} libglib2.0-bin{a}
libglib2.0-dev{a} libgmp-dev{a} libgmpxx4ldbl{a} libgnome-2-0{a}
libgnome-keyring-common{a} libgnome-keyring-dev{a} libgnome-keyring0{a}
libgnome2-0{a} libgnome2-bin{a} libgnome2-common{a} libgnome2-dev{a}
libgnomecanvas2-0{a} libgnomecanvas2-common{a} libgnomecanvas2-dev{a}
libgnomeui-0{a} libgnomeui-common{a} libgnomeui-dev libgnomevfs2-0{a}
libgnomevfs2-common{a} libgnomevfs2-dev{a} libgnutls-dev{a}
libgnutlsxx28{a} libgs9{a} libgs9-common{a} libgtk-3-dev libgtk2.0-dev
libharfbuzz-dev{a} libharfbuzz-gobject0{a} libhtml-form-perl{a}
libhtml-format-perl{a} libhtml-tree-perl{a} libhttp-cookies-perl{a}
libhttp-daemon-perl{a} libhttp-negotiate-perl{a} libice-dev{a}
libicu-dev{a} libidl-2-0{a} libidl-dev{a} libidn11-dev{a} libijs-0.35{a}
libio-socket-ssl-perl{a} libipc-system-simple-perl{a} libjbig2dec0{a}
libjs-jquery{a} libkpathsea6{a} libltdl-dev{a} liblua5.2-dev
liblwp-protocol-https-perl{a} libmail-sendmail-perl{a}
libmailtools-perl{a} libmirclient-dev{a} libmircommon-dev{a}
libmircookie-dev{a} libmircookie2{a} libnet-dbus-perl{a}
libnet-http-perl{a} libnet-smtp-ssl-perl{a} libnet-ssleay-perl{a}
liborbit-2-0{a} liborbit2{a} liborbit2-dev{a} libosp5{a} libostyle1c2{a}
libp11-kit-dev{a} libpango1.0-dev{a} libpangoxft-1.0-0{a}
libpaper-utils{a} libpaper1{a} libpcre3-dev{a} libpcre32-3{a}
libpcrecpp0v5{a} libperl-dev libpixman-1-dev{a} libpoppler-glib8{a}
libpoppler58{a} libpopt-dev{a} libpotrace0{a} libprotobuf-dev{a}
libptexenc1{a} libpython-dev{a} libpython-stdlib{a} libpython2.7{a}
libpython2.7-dev{a} libpython2.7-minimal{a} libpython2.7-stdlib{a}
libpython3-dev{a} libpython3.5-dev{a} libreadline-dev{a}
libreadline6-dev{a} libruby2.3{a} libselinux1-dev libsepol1-dev{a}
libsgmls-perl{a} libsm-dev{a} libsp1c2{a} libsynctex1{a}
libsys-hostname-long-perl{a} libtasn1-6-dev{a} libtasn1-doc{a}
libtcl8.6{a} libtexlua52{a} libtexluajit2{a} libtie-ixhash-perl{a}
libtinfo-dev libtk8.6{a} libtool{a} libtool-bin{a} libwayland-dev{a}
libwww-perl{a} libwww-robotrules-perl{a} libx11-protocol-perl{a}
libxaw7-dev libxcb-shm0-dev{a} libxcomposite-dev{a} libxcursor-dev{a}
libxft-dev{a} libxi-dev{a} libxinerama-dev{a} libxkbcommon-dev{a}
libxml-parser-perl{a} libxml-twig-perl{a} libxml-xpathengine-perl{a}
libxml2-dev{a} libxml2-utils{a} libxmu-dev{a} libxmu-headers{a}
libxpm-dev libxrandr-dev{a} libxrender-dev{a} libxt-dev libxtst-dev{a}
libyaml-0-2{a} libyaml-tiny-perl{a} libzzip-0-13{a} lmodern{a} lua5.2
lynx{a} lynx-common{a} nettle-dev{a} openjade{a} orbit2{a} pdf2svg
pkg-config{a} po-debconf{a} poppler-data{a} prosper{a} ps2eps{a}
python{a} python-dev python-minimal{a} python2.7{a} python2.7-dev{a}
python2.7-minimal{a} python3-dev python3.5-dev{a} rake{a} ruby ruby-dev
ruby-did-you-mean{a} ruby-minitest{a} ruby-net-telnet{a}
ruby-power-assert{a} ruby-test-unit{a} ruby2.3{a} ruby2.3-dev{a}
rubygems-integration{a} sgml-data{a} sgmlspl{a} sp{a} t1utils{a} tcl{a}
tcl-dev tcl8.6{a} tcl8.6-dev{a} tex-common{a} tex-gyre{a} texlive-base{a}
texlive-binaries{a} texlive-extra-utils{a} texlive-font-utils{a}
texlive-fonts-recommended{a} texlive-fonts-recommended-doc{a}
texlive-generic-recommended{a} texlive-latex-base{a}
texlive-latex-base-doc{a} texlive-latex-recommended{a}
texlive-latex-recommended-doc{a} texlive-pictures{a}
texlive-pictures-doc{a} texlive-pstricks{a} texlive-pstricks-doc{a}
tipa{a} tk{a} tk8.6{a} unzip{a} x11-xserver-utils{a}
x11proto-composite-dev{a} x11proto-randr-dev{a} x11proto-record-dev{a}
x11proto-render-dev{a} x11proto-xinerama-dev{a} xdg-utils{a} xterm{a}
zip{a}