octave が古いのが気に入らないので簡単に入るか試してみる。
GNU Octave からソースをダウンロード。
$HOME/opt/SRC の下へ解凍
Ras1:~/opt/SRC> wget ftp://ftp.jaist.ac.jp/pub/GNU/octave/octave-5.1.0.tar.xz
Ras1:~/opt/SRC> unxz -c octave-5.1.0.tar.xz | tar xvf -
Ras1:~/opt/SRC> cd octave-5.1.0
Ras1:~/opt/SRC/octave-5.1.0> ./configure --prefix=$HOME/opt/octave-5.1.0
configure で無いと言われたものを順次入れていく。
Fortran コンパイラがないと言われるので入れる
Ras1:~/opt/SRC/octave-5.1.0> sudo apt install gfortran-6 gfortran-6-doc
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
gcc-6-doc gcc-doc-base libgfortran-6-dev
提案パッケージ:
doc-base libgfortran3-dbg libcoarrays-dev
以下のパッケージが新たにインストールされます:
gcc-6-doc gcc-doc-base gfortran-6 gfortran-6-doc libgfortran-6-dev
アップグレード: 0 個、新規インストール: 5 個、削除: 0 個、保留: 0 個。
15.6 MB のアーカイブを取得する必要があります。
この操作後に追加で 37.9 MB のディスク容量が消費されます。
続行しますか? [Y/n]
...
それでも Fortran が見つけられないというので環境変数 F77 を定義。
Ras1:~/opt/SRC/octave-5.1.0> gfortran-6 --version
GNU Fortran (Raspbian 6.3.0-18+rpi1+deb9u1) 6.3.0 20170516
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Ras1:~/opt/SRC/octave-5.1.0> setenv F77 `which gfortran-6`
コンパイラツールを追加
Ras1:~/opt/SRC/octave-5.1.0> sudo apt install flex bison byacc gperf
BLAS LAPACK ライブラリを追加
Ras1:~/opt/SRC/octave-5.1.0> sudo apt install libopenblas-dev libtmglib-dev libtmglib3
Qhull PCRE ライブラリ追加
Ras1:~/opt/SRC/octave-5.1.0> sudo apt install libqhull-dev libpcre3-dev
termcap, terminfo, ncurses, curses, termlib... が無いなら readline off にしてくださいと言われる。ライブラリはあるので、-dev のヘッダなどを追加。
Ras1:~/opt/SRC/octave-5.1.0> sudo apt install libtinfo-dev libncurses5-dev
GNU Readline 4.2 or later が無いと言われるも apt install
Ras1:~/opt/SRC/octave-5.1.0> sudo apt install libreadline-dev
ここまで入れたところで最後まで configure が通るようになる。が...
configure: WARNING: BZIP2 library not found. Octave will not be able to compress or decompress bzip
2 files.
configure: WARNING: HDF5 library not found. Octave will not be able to load or save HDF5 data files
.
configure: WARNING: FFTW3 library not found. The slower FFTPACK library will be used instead.
configure: WARNING: FFTW3F library not found. The slower FFTPACK library will be used instead.
configure: WARNING: GLPK library not found. The glpk function for solving linear programs will be d
isabled.
configure: WARNING: cURL library not found. The ftp objects, urlread, and urlwrite functions will b
e disabled.
configure: WARNING: sndfile library not found. The audioinfo, audioread, and audiowrite functions will be disabled.
configure: WARNING: PortAudio library not found. The audioplayer, audiorecorder, and audiodevinfo functions will be disabled.
configure: WARNING: GraphicsMagick++ library not found. The imread, imwrite, and imfinfo functions for reading and writing image files will not be fully functional.
configure: WARNING: OpenGL libs (GL and GLU) not found. OpenGL graphics will be disabled.
configure: WARNING: Fontconfig library not found. OpenGL graphics will not be fully functional.
configure: WARNING: gl2ps library not found. Printing of OpenGL graphics will be disabled.
configure: WARNING: Qt libraries not found; disabling Qt GUI
configure: WARNING: FLTK config script not found. FLTK toolkit will be disabled.
configure: WARNING: qrupdate not found. The QR & Cholesky updating functions will be slow.
configure: WARNING: AMD library not found. This will result in some lack of functionality for sparse matrices.
configure: WARNING: CAMD library not found. This will result in some lack of functionality for sparse matrices.
configure: WARNING: COLAMD library not found. This will result in some lack of functionality for sparse matrices.
configure: WARNING: CCOLAMD library not found. This will result in some lack of functionality for sparse matrices.
configure: WARNING: CHOLMOD library not found. This will result in some lack of functionality for sparse matrices.
configure: WARNING: CXSparse library not found. This will result in some lack of functionality for sparse matrices.
configure: WARNING: UMFPACK not found. This will result in some lack of functionality for sparse matrices.
configure: WARNING: KLU library not found. This will result in some lack of functionality for sparse matrices.
configure: WARNING: SUNDIALS NVECTOR serial library not found. Solvers ode15i and ode15s will be disabled.
configure: WARNING: SUNDIALS IDA library not found. Solvers ode15i and ode15s will be disabled.
configure: WARNING: ARPACK not found. The eigs function will be disabled.
configure: WARNING: JAVA_HOME environment variable not initialized. Auto-detection will proceed but is unreliable.
configure: WARNING: Include file <jni.h> not found. Octave will not be able to call Java methods.
configure: WARNING:
configure: WARNING: The libraries needed for OpenGL graphics were not found.
configure: WARNING: Creating plots is still possible if gnuplot is installed.
configure:
configure: NOTE: Libraries or auxiliary programs may be skipped if they are not found
configure: NOTE: OR if they are missing required features on your system.
それっぽいものを apt search から探して適当に追加
> sudo apt install lbzip2 libbz2-dev hdf5-helpers hdf5-tools libhdf5-openmpi-dev libfftw3-3 libfftw3-dev libfftw3-mpi-dev libfltk1.3-dev libglpk-dev libgli-dev libglu1-mesa-dev libgl1-mesa-dev libgladeui-dev libqt5opengl5-dev libqt5opengl5 libqt5help5 qttools5-dev libqt5scintilla2-dev libgl2ps-dev libgraphicsmagick++1-dev libgraphicsmagick1-dev libfftw3-dev libfftw3-mpi-dev libarpack2-dev libparpack2-dev libqrupdate-dev libsundials-serial-dev libomp-dev llvm-dev
> sudo apt install openjdk-8-jdk-headless openjdk-8-jdk libsndfile1-dev libcurl4-openssl-dev portaudio19-dev
> sudo apt install libgmp3-dev
余計なのも一杯入ったみたいですが取り敢えずライブラリはここまで。
古そうなのは $HOME/opt の下に手動で。環境変数は .tcshrc に以下のようなものを
setenv PATH ~/opt/bin:$PATH
setenv PYTHONPATH ~/opt/lib/python2.7/site-packages
setenv CFLAGS "-I/usr/include/arm-linux-gnueabihf -I$HOME/opt/include"
setenv CXXFLAGS "-I/usr/include/arm-linux-gnueabihf -I$HOME/opt/include"
setenv LDFLAGS "-L$HOME/opt/lib -Wl,-rpath,$HOME/opt/lib"
setenv LD_LIBRARY_PATH "$HOME/opt/lib;$HOME/opt/lib/gcc/armv7l-unknown-linux-gnueabihf/9.1.0;$HOME/opt/lib/gcc/armv7l-unknown-linux-gnueabihf/9.1.0/plugin;$HOME/opt/libexec/gcc/armv7l-unknown-linux-gnueabihf/9.1.0"
LDFLAGS の -Wl,-rpath,$HOME/opt/lib
は、本当なら -R$HOME/opt/lib
で良い筈なんですが上手くいかないのでこれで。 (gcc 専用)
automake, libtool
> wget ftp://ftp.jaist.ac.jp/pub/GNU/automake/automake-1.9.tar.gz
> tar xzvf automake-1.9.tar.gz
> cd automake-1.9
> ./configure --prefix=$HOME/opt
> make && make install
> wget ftp://ftp.jaist.ac.jp/pub/GNU/libtool/libtool-2.4.6.tar.xz
> xzcat libtool-2.4.6.tar.xz |tar xvf -
> cd libtool-2.4.6
> ./configure --prefix=$HOME/opt
> make -j4 && make install
gmake 4.1 → 4.2.1
> wget ftp://ftp.jaist.ac.jp/pub/GNU/make/make-4.2.1.tar.bz2
> bzip2 -dc make-4.2.1.tar.bz2 | tar xvf -
> ./configure --prefix=$HOME/opt
> make -j4
> make install
GNU gperf 3.0.4 → 3.1
> wget http://ftp.gnu.org/gnu/gperf/gperf-3.1.tar.gz
> tar xzvf gperf-3.1.tar.gz
> cd gperf-3.1
> ./configure --prefix=$HOME/opt
> make -j4 && make install
flex 2.6.1 → 2.6.4
> wget https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.lz
> lzip -dc flex-2.6.4.tar.lz | tar xvf -
> cd flex-2.6.4
> ./configure --prefix=$HOME/opt
> make -j4 && make install
diffutils 3.5 → 3.7
> wget ftp://ftp.jaist.ac.jp/pub/GNU/diffutils/diffutils-3.7.tar.xz
> xzcat diffutils-3.7.tar.xz | tar xvf -
> ./configure --prefix=$HOME/opt
> make -j4 && make install
make check が skip するので適当に locale を追加しておく
sudo dpkg-reconfigure locales
cs_CZ.UTF-8
el_GR.ISO-8859-7
en_US.UTF-8
fr_FR.UTF-8
ja_JP.UTF-8
ru_RU.KOI8-R
ru_RU.UTF-8
tr_TR.UTF-8
zh_CN.GB18030
zh_HK.BIG5-HKSCS
そして unsetenv LANG
してロケールを解除しておく
grep 2.27 → 3.3
> curl -O http://ftp.iij.ad.jp/pub/gnu/grep/grep-3.3.tar.xz
> xzcat grep-3.3.tar.xz | tar xvf -
> cd grep-3.3
> ./configure --prefix=$HOME/opt
> make -j4 && make check && make install
sed 4.4 → 4.7
> curl -O http://ftp.iij.ad.jp/pub/gnu/sed/sed-4.7.tar.xz
> xzcat sed-4.7.tar.xz | tar xf -
> cd sed-4.7
> ./configure --prefix=$HOME/opt
> make -j4 && make check && make install
> wget https://codeload.github.com/rrthomas/paper/zip/master
> mv master paper.zip
> unzip paper.zip
> cd paper-master/
> ./bootstrap && ./configure --prefix=$HOME/opt && make
psutils
github から master ブランチを取ってくる
> wget https://codeload.github.com/rrthomas/psutils/zip/master
> mv master psutils.zip
> unzip psutils.zip
> cd psutils-master/
groff
> wget ftp://ftp.iij.ad.jp/pub/gnu/groff/groff-1.22.4.tar.gz
> tar zxvf groff-1.22.4.tar.gz
> ./configure --prefix=$HOME/opt
patch 2.7.5 → 2.7.6
> wget ftp://ftp.jaist.ac.jp/pub/GNU/patch/patch-2.7.6.tar.xz
> unxz -c patch-2.7.6.tar.xz | tar xvf -
> ./configure --prefix=$HOME/opt
> make -j4 && make install
gmp は libgmp3-dev が最新版
mpfr 3.1.5 → 4.0.2
> wget ftp://ftp.jaist.ac.jp/pub/GNU/mpfr/mpfr-4.0.2.tar.xz
> xzcat mpfr-4.0.2.tar.xz | tar xvf -
> cd mpfr-4.0.2
> ./configure --prefix=$HOME/opt
> make -j4 && make install
mpc 1.0.3 → 1.1.0
> apt search libmpc-dev
libmpc-dev/stable,stable 1.0.3-1 armhf
> wget ftp://ftp.jaist.ac.jp/pub/GNU/mpc/mpc-1.1.0.tar.gz
> tar xzvf mpc-1.1.0.tar.gz
> cd mpc-1.1.0
> ./configure --prefix=$HOME/opt --with-mpfr=$HOME/opt
> make -j4 && make check && make install
binutils 2.28-5 → 2.32
> wget ftp://ftp.jaist.ac.jp/pub/GNU/binutils/binutils-2.32.tar.lz
> lzip -dc binutils-2.32.tar.lz | tar xvf -
> cd binutils-2.32
> ./configure --prefix=$HOME/opt && make -j4 && make install
isl
> wget http://isl.gforge.inria.fr/isl-0.21.tar.xz
> xzcat isl-0.21.tar.xz | tar xvf -
> cd isl-0.21
> ./configure --prefix=$HOME/opt && make -j4 && make install
openmpi
> curl -O https://download.open-mpi.org/release/open-mpi/v4.0/openmpi-4.0.1.tar.bz2
> tar jxf openmpi-4.0.1.tar.bz2
> cd openmpi-4.0.1
> ./configure --prefix=$HOME/opt --enable-mpi-java --enable-openib-control-hdr-padding --enable-btl-portals4-flow-control --with-jdk-dir=/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt
> make -j4 && make install
gawk 4.1.4 → 5.0.1
> curl -O http://ftp.iij.ad.jp/pub/gnu/gawk/gawk-5.0.1.tar.lz
> lzip -dc gawk-5.0.1.tar.lz | tar xvf -
> cd gawk-5.0.1
> ./configure --prefix=$HOME/opt --enable-versioned-extension-dir
> make -j4 && make check && make install
bison & yacc 3.0.4 → 3.4
> curl -O http://ftp.iij.ad.jp/pub/gnu/bison/bison-3.4.2.tar.xz
> tar axvf bison-3.4.2.tar.xz
> cd bison-3.4.2
> ./configure --prefix=$HOME/opt
> make -j4 && make check && make install
make check は恐ろしく時間が掛かるので飛ばしてしまっても...
bc 1.06.95 → 1.07.1
> wget http://ftp.iij.ad.jp/pub/gnu/bc/bc-1.07.1.tar.gz
> tar xzf bc-1.07.1.tar.gz
> cd bc-1.07.1
> ./configure --prefix=$HOME/opt --with-readline
> make -j4 && make check && make install
gcc 6.3.0 → 9.2.0
> curl -O http://ftp.iij.ad.jp/pub/gnu/gcc/gcc-9.2.0/gcc-9.2.0.tar.xz
> xzcat gcc-9.2.0.tar.xz | tar xvf -
> cd gcc-9.2.0
> ./configure --prefix=$HOME/opt \
--with-mpc=$HOME/opt --with-mpc-include=$HOME/opt/include --with-mpc-lib=$HOME/opt/lib \
--with-mpfr=$HOME/opt --with-mpfr-include=$HOME/opt/include --with-mpfr-lib=$HOME/opt/lib\
--with-isl=$HOME/opt --with-isl-include=$HOME/opt/include --with-isl-lib=$HOME/opt/lib \
--with-float=hard
> make -j3
...
> ls -ltr
...
-rw-r--r-- 1 pi pi 13 May 7 06:31 serdep.tmp
-rwxr-xr-x 1 pi pi 41154 May 7 06:31 config.status*
-rw-r--r-- 1 pi pi 945592 May 7 06:31 Makefile
-rw-r--r-- 1 pi pi 34817 May 7 06:31 config.log
-rw-r--r-- 1 pi pi 7 May 7 06:31 stage_final
drwxr-xr-x 5 pi pi 4096 May 7 06:31 build-armv7l-unknown-linux-gnueabihf/
drwxr-xr-x 5 pi pi 4096 May 7 07:25 stage1-armv7l-unknown-linux-gnueabihf/
drwxr-xr-x 5 pi pi 4096 May 7 10:52 prev-armv7l-unknown-linux-gnueabihf/
-rw-r--r-- 1 pi pi 10 May 7 13:09 compare
-rw-r--r-- 1 pi pi 7 May 7 13:09 stage_last
-rw-r--r-- 1 pi pi 7 May 7 13:09 stage_current
drwxr-xr-x 30 pi pi 4096 May 7 13:09 host-armv7l-unknown-linux-gnueabihf/
drwxr-xr-x 14 pi pi 4096 May 7 13:10 armv7l-unknown-linux-gnueabihf/
> make install
6時間半かかってコンパイルが完了したようです
--with-float=hard は以下のメッセージの回避のため。確かに OS の中に gnu/stubs-
soft.h というファイルはありません。
/usr/include/arm-linux-gnueabihf/gnu/stubs.h:7:11: fatal error: gnu/stubs-soft.h: そのようなファイルやディレクトリはありません
7 | # include <gnu/stubs-soft.h>
| ^~~~~~~~~~~~~~~~~~
compilation terminated.
bash
> wget http://ftp.iij.ad.jp/pub/gnu/bash/bash-5.0.tar.gz
> tar xzf bash-5.0.tar.gz
> cd bash-5.0
> setenv LDFLAGS "-L/home/pi/opt/lib -Wl,-rpath,/home/pi/opt/lib"
> ./configure --prefix=$HOME/opt --enable-largefile \
--enable-alias --enable-arith-for-command --enable-array-variables \
--enable-bang-history --enable-brace-expansion --enable-command-timing \
--enable-cond-command --enable-cond-regexp --enable-directory-stack \
--enable-extended-glob --enable-history --enable-job-control \
--enable-multibyte --enable-prompt-string-decoding
> unsetenv LANG
> make -j4 && make check && make install
いよいよ本題の octave
> xzcat octave-5.1.0.tar.xz | tar xvf -
> cd octave-5.1.0
> /usr/bin/aclocal (←普通はしないですが、automake で怒られたので)
> /usr/bin/automake-1.15 (← automake 1.14 を使えと言われたので)
> autoconf
> time ./configure --prefix=$HOME/opt/octave-5.1.0
...snip...
configure: WARNING: Qt does not work with the OpenGL libs (GL and GLU); disabling OpenGL graphics with Qt GUI
configure: WARNING: SUNDIALS IDA library not configured with IDAKLU, ode15i and ode15s will not support the sparse Jacobian feature
configure: WARNING: JAVA_HOME environment variable not initialized. Auto-detection will proceed but is unreliable.
configure:
configure: NOTE: Libraries or auxiliary programs may be skipped if they are not found
configure: NOTE: OR if they are missing required features on your system.
340.285u 54.282s 6:50.69 96.0% 0+0k 349056+150808io 1302pf+0w
こんな感じなので動きそうなのですが Qt の OpenGL が無効になってますねぇ。
> pkg-config --libs Qt5OpenGL
-lQt5OpenGL -lQt5Widgets -lQt5Gui -lQt5Core
特に指定しなくても OpenGL が有効になるってことなのかな?
正しくは configure の中で見ているヘッダファイルやライブラリのファイルを見つけて パッケージの内容を検索 で検索。該当のパッケージを追加するのが良いでしょう。
色々入れて、sudo ldconfig しても見つからないと言われたりするので一旦再起動。そしていよいよ...
> time make -j 4
...
CXXLD libgui/liboctgui.la
CXXLD src/octave-cli
liboctave/.libs/liboctave.so: undefined reference to `MArray<long long>& operator-=<long long>(MArra
y<long long>&, long long const&)'
collect2: error: ld returned 1 exit status
Makefile:14379: recipe for target 'src/octave-cli' failed
make[2]: *** [src/octave-cli] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory '/home/pi/opt/SRC/octave-5.1.0'
Makefile:25970: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/pi/opt/SRC/octave-5.1.0'
Makefile:9763: recipe for target 'all' failed
make: *** [all] Error 2
22995.933u 1684.597s 4:46:29.04 143.5% 0+0k 95665664+13795800io 7629572pf+0w
>
4時間半以上かかってエラー... octave-cli をリンクする時にエラー?-j4 の並列コンパイルでタイミングが悪かったかなと -j 無しでもう一度。
> time make
preserving existing HG-ID file
make all-recursive
make[1]: Entering directory '/home/pi/opt/SRC/octave-5.1.0'
preserving existing HG-ID file
Making all in libgnu
make[2]: Entering directory '/home/pi/opt/SRC/octave-5.1.0/libgnu'
make all-recursive
make[3]: Entering directory '/home/pi/opt/SRC/octave-5.1.0/libgnu'
make[4]: Entering directory '/home/pi/opt/SRC/octave-5.1.0/libgnu'
make[4]: Nothing to be done for 'all-am'.
make[4]: Leaving directory '/home/pi/opt/SRC/octave-5.1.0/libgnu'
make[3]: Leaving directory '/home/pi/opt/SRC/octave-5.1.0/libgnu'
make[2]: Leaving directory '/home/pi/opt/SRC/octave-5.1.0/libgnu'
make[2]: Entering directory '/home/pi/opt/SRC/octave-5.1.0'
preserving existing HG-ID file
CXXLD src/octave-cli
liboctave/.libs/liboctave.so: undefined reference to `MArray<long long>& operator-=<long long>(MArray<long long>&, long long const&)'
collect2: error: ld returned 1 exit status
Makefile:14379: recipe for target 'src/octave-cli' failed
make[2]: *** [src/octave-cli] Error 1
make[2]: Leaving directory '/home/pi/opt/SRC/octave-5.1.0'
Makefile:25970: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/pi/opt/SRC/octave-5.1.0'
Makefile:9763: recipe for target 'all' failed
make: *** [all] Error 2
37.288u 12.206s 0:51.35 96.3% 0+0k 92760+224io 14pf+0w
>
> ls -l src/octave
-rwxr-xr-x 1 pi pi 152796 Mar 14 05:08 src/octave*
やっぱり駄目ですね。まぁ、octave 本体ができてるから...make が進まないのか。
では、Makefile の octave 本体のリンク設定を octave-cli に追加して→失敗しました。
うーん、何が悪いんだろう。当然ながら make src/octave-gui も同じエラーで失敗。
liboctave が悪そうなので、そのディレクトリをエラーメッセージで egrep 'MArray.*long' するとスタティックリンク用のライブラリがいくつか引っかかる。
名前からして怪しいのは libarray.a かなぁ。
> find liboctave/ -type f | grep -v '\.o$' | xargs egrep 'MArray.*long'
バイナリファイル liboctave/operators/.libs/liboperators.a に一致しました
バイナリファイル liboctave/array/.libs/libarray.a に一致しました
バイナリファイル liboctave/.libs/liboctave.so.7.0.0 に一致しました
バイナリファイル liboctave/numeric/.libs/libnumeric.a に一致しました
>
nm 使って調べるの?とか思ってたらこんなのを発見。
あるシンボルが どのオブジェクトファイル/共有オブジェクトに含まれているか検索するスクリプト を使って
T or t を見つければ良いんじゃない? (このレベルになると sh の方が楽なので bash に切り替え)
bash$ ( for i in liboctave/operators/.libs liboctave/array/.libs liboctave/.libs liboctave/numeric/.libs
do
( cd $i ; ~/bin/search-sym MArray )
done ) | less
そして見つからず。うん、事前に追加したライブラリを参照してるよね。と思い直す。も、それらしきものは見つからず
bash$ ( for i in `find /usr/lib -type d`
do
( cd $i ; ~/bin/search-sym MArray )
done ) | less
が、ここで apt でインストールされた octave を思い出す。ひょっとしてこいつのライブラリをリンクしようとしてバージョンが古いからおかしくなっているのでは?
sudo apt remove octave octave-common octave-info
sudo apt autoremove
以下のパッケージは「削除」されます:
aglfn gnuplot-data gnuplot-x11 liblua5.1-0 liboctave3v5 libosmesa6 libplot2c2 libpstoedit0c2a
libqscintilla2-12v5 libqscintilla2-l10n libqt4-network libqt4-opengl libtext-unidecode-perl
libwxbase3.0-0v5 libwxgtk3.0-0v5 libxml-libxml-perl libxml-namespacesupport-perl
libxml-parser-perl libxml-sax-base-perl libxml-sax-expat-perl libxml-sax-perl libzip4 pstoedit
tex-common texinfo
して、消しすぎた感じがするので必要そうなのをインストール。octave の GUI を Qt 5 にしたので gnuplot も Qt に。
sudo apt install tex-common texinfo gnuplot-qt libosmesa6
そしてビルド! 5時間待ち。ビルドもこんな感じでログを取りながら実行するよう shell script 化済み。
# !/bin/bash
BANNER (){
echo =============================
date +"=== $1 %F %T ==="
echo =============================
}
ls octave-5.1.0/ > /dev/null && rm -rf octave-5.1.0
( \
BANNER "extract" ;\
xzcat gcc-9.1.0.tar.xz | tar xvf - ;\
cd octave-5.1.0 ;\
BANNER "aclocal" ;\
/usr/bin/aclocal ;\
\
BANNER "automake" ;\
/usr/bin/automake-1.15 ;\
\
BANNER "autoconf" ;\
autoconf ;\
\
BANNER "configure" ;\
./configure --prefix=$HOME/opt ;\
\
BANNER "make" ;\
make -j4 ;\
BANNER "done" ;\
) 2>&1 | tee octave_make_log
```
そしてやはり失敗。うーん、どうしたらいいんだろう?
ついでに [mutt-ja](https://osdn.net/projects/mutt-j/releases/71043) も
[本家](http://www.mutt.org/) の方がバージョンが上ですが
```tcsh:
> apt list mutt
一覧表示... 完了
mutt/stable,stable,now 1.7.2-1+deb9u1 armhf [インストール済み]
> sudo apt remove mutt
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
libnotmuch4 libtokyocabinet9
これを削除するには 'sudo apt autoremove' を利用してください。
以下のパッケージは「削除」されます:
mutt
アップグレード: 0 個、新規インストール: 0 個、削除: 1 個、保留: 0 個。
この操作後に 5,997 kB のディスク容量が解放されます。
続行しますか? [Y/n]
(データベースを読み込んでいます ... 現在 181152 個のファイルとディレクトリがインストールされています。)
mutt (1.7.2-1+deb9u1) を削除しています ...
mime-support (3.60) のトリガを処理しています ...
desktop-file-utils (0.23-1) のトリガを処理しています ...
man-db (2.7.6.1-2) のトリガを処理しています ...
gnome-menus (3.13.3-9) のトリガを処理しています ...
本体をダウンロード
> curl -O ftp://ftp.mutt.org/pub/mutt/mutt-1.11.4.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 4475k 100 4475k 0 0 933k 0 0:00:04 0:00:04 --:--:-- 1052k
> tar zxf mutt-1.11.4.tar.gz
> cd mutt-1.11.4
パッチをダウンロード
> curl -O 'https://jaist.dl.osdn.jp/mutt-j/71043/ja-mutt-1.11.4.tar.bz2'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 496k 100 496k 0 0 1378k 0 --:--:-- --:--:-- --:--:-- 1383k
> mkdir FreeBSD_PORTS
> cd FreeBSD_PORTS/
> tar jxf ../ja-mutt-1.11.4.tar.bz2
```