原因

共有サーバーのGPU環境を利用する機会があったが、sudoが使えず、基本的なgitやvimが利用出来ずに苦労したのでメモしておく。 さすがにgitもvimも(viは入っている)がない状況だとサーバーで色々とソースコードを実装するのは辛いので、ローカル環境に入れる事を目標にする。

環境

  • wget, gccは入っている
  • uname -a
      Linux ubuntu 5.4.0-90-generic #101-Ubuntu SMP Fri Oct 15 20:00:55 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
    

参考サイト

こちらを参考にさせて頂きました!とても助かりました!

基本的な流れ

参考サイトにもあるが、基本的には共有ライブラリをローカル環境にダウンロードし、ビルド、インストールし、その後、gitやvimなども適宜ダウンロード、ビルド、インストールする事になる。

ライブラリをインストールするローカルのディレクトリは参考サイトに沿って、${HOME}/tools/srcとする。tools以下にライブラリをパッケージがインストールされることになる。

mkdir -p ~/tools/src

install libevent from source

libeventをインストールします。これはイベント通知系のライブラリである。 makefileを作成する際(./configure)、作成するバイナリデータを置く場所を--prefixで指定します。これを指定しないとデフォルトである/usr/localに作成されてしまうため、root権限が必要になる。それを避けるために、${HOME}/toolsを指定して、ユーザーのローカルディレクトリに実行ファイルを置くように指定する必要がある。

この--prefixを指定することが今回の件では一番重要と思われる。

cd ~/tools/src
wget https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz -P ~/tools/src
tar -zxf libevent-2.1.8-stable.tar.gz
./configure --prefix=${HOME}/tools
make
make install

install ncurses from source

ncureseをインストールする。ncureseは端末のUIを作成するライブラリである。

こちらも--prefixにローカルのディレクトリを指定する。

cd ~/tools/src
wget -nc ftp://ftp.invisible-island.net/ncurses/ncurses-6.1.tar.gz
tar -zxf ncurses-6.1.tar.gz
./configure --prefix=${HOME}/tools
make
make install

install openssl from source

gitをインストールしようとすると、opensslとcurlが必要なので、最初にそれらをインストールすることになる。

wget https://www.openssl.org/source/openssl-1.0.2o.tar.gz
tar -xf openssl-1.0.2o.tar.gz
cd openssl-1.0.2o
./config --prefix=${HOME}/tools --openssldir=${HOME}/tools shared zlib
make
make install

install curl from source

curlもソースコードからビルドする。

wget https://curl.haxx.se/download/curl-7.xx.x.tar.gz
tar xvfz curl-7.xx.x.tar.gz
cd curl-7.65.3
  • –enable-libcurl-option のオプションを入れないとダメだった。
./configure --prefix=${HOME}/tools --with-openssl=${HOME}/tools --enable-libcurl-option
make
make install
  • –with-opensslオプションにopensslインストール先を指定。
  • make install 時に出来たシンボリックリンクは削除した方が良い。

install git from source

gitもソースコードからビルドする。

cd ~/tools/src/
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.26.2.tar.gz
tar zvfx git-2.26.2.tar.gz
cd git-2.26.2
./configure --prefix=${HOME}/tools LDFLAGS="-L${HOME}/tools/lib" CFLAGS="-I${HOME}/tools/include"
make
make install

install vim from source

vimもソースコードからビルドする。 様々な拡張機能が使いやすいように、vim.hugeを選択する。

git clone https://github.com/vim/vim.git
cd vim
./configure --prefix=${HOME}/tools LDFLAGS="-L${HOME}/tools/lib" CFLAGS="-I${HOME}/tools/include" --with-features=huge --enable-pythoninterp --enable-python3interp
make
make install

最後に

最近はsudo apt install gitでpermission deniedで怒られる事はほとんどない。低レベルレイヤーの言語をいじらない限りはソースコードからビルドする機会は少なく、こういう操作をすると結構時間を取られてしまう。ただ、こういう機会がないと、コンピュータサイエンスの基本だったり、Linuxの基礎を忘れてしまいそうである。

忙しい時はイライラしてしまうが、貴重な勉強する時間だと捉えてLinuxの理解を深めたい。 (こういう事に意義を見いだしてしまうのがクラウドネイティブ世代ではない人間の証拠かもしれないが)