0
0

More than 1 year has passed since last update.

SageMathの再インストールにてこずった話

Posted at

この記事は RICORA Advent Calendar 2022の7日目の記事です。

動機

  1. CTFで最近SageMathによるCryptoのWriteUpが増えている
  2. 約1年前にSageMath(Windowsバイナリ版)をダウンロードしていた
  3. 最近うまく動かない
  4. 再インストールしよう!
  5. SageMathのWindowsサポートが終了していた
  6. Virtualbox上のKali Linuxに再ダウンロードするか…

SageMath(sage)とは

"Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, and MATLAB"
Copyright (C) 2005-2022 The Sage Development Team

複雑な数学的計算をいろいろできるソフト。

参考:Sage Quick Reference(日本語訳)

問題

SageMathのリファレンス少なくないか?
インストール方法を探してもみんな公式のreadmeに飛ばしやがる。英語ザコ&gitサボってた私にはわからん…ということで、手探りでインストールを進めていく。
環境:Kali GNU/Linux 2022.04

実践

1.前提条件を整える。まず、最小の条件である、

  • gcc,g++
  • clang
  • gfortran
  • perl
  • make
  • m4
  • ar
  • ranlib
  • tar
  • python(3)
    を含む、
sudo apt-get install  bc binutils bzip2 ca-certificates cliquer cmake curl ecl eclib-tools fflas-ffpack flintqs g++ gcc gengetopt gfan gfortran glpk-utils gmp-ecm lcalc libatomic-ops-dev libboost-dev libbraiding-dev libbrial-dev libbrial-groebner-dev libbz2-dev libcdd-dev libcdd-tools libcliquer-dev libcurl4-openssl-dev libec-dev libecm-dev libffi-dev libflint-arb-dev libflint-dev libfplll-dev libfreetype6-dev libgc-dev libgd-dev libgf2x-dev libgiac-dev libgivaro-dev libglpk-dev libgmp-dev libgsl-dev libhomfly-dev libiml-dev liblfunction-dev liblinbox-dev liblrcalc-dev liblzma-dev libm4ri-dev libm4rie-dev libmpc-dev libmpfi-dev libmpfr-dev libncurses5-dev libntl-dev libopenblas-dev libpari-dev libpcre3-dev libplanarity-dev libppl-dev libprimesieve-dev libpython3-dev libqhull-dev libreadline-dev librw-dev libsingular4-dev libsqlite3-dev libssl-dev libsuitesparse-dev libsymmetrica2-dev libz-dev libzmq3-dev libzn-poly-dev m4 make nauty ninja-build openssl palp pari-doc pari-elldata pari-galdata pari-galpol pari-gp2c pari-seadata patch perl pkg-config planarity ppl-dev python3 python3-distutils python3-venv r-base-dev r-cran-lattice singular singular-doc sqlite3 sympow tachyon tar tox xcas xz-utils

を実行する。
また、開発用途で

sudo apt-get install  autoconf automake git gpgconf libtool openssh openssh-client pkg-config

、さらにオマケとして

sudo apt-get install  default-jdk dvipng ffmpeg imagemagick latexmk libavdevice-dev pandoc tex-gyre texlive-fonts-recommended texlive-lang-cyrillic texlive-lang-english texlive-lang-european texlive-lang-french texlive-lang-german texlive-lang-italian texlive-lang-japanese texlive-lang-polish texlive-lang-portuguese texlive-lang-spanish texlive-latex-extra texlive-xetex

を実行する。

2.sageをインストールするディレクトリで、

git clone https://github.com/sagemath/sage.git

。sageのコンパイル前のソースファイルがダウンロードされる。

3.実行ディレクトリ直下にディレクトリsageができるので、cd sageして

make configure

4.3.の終了後、

./configure

を実行。その後

./config.status --recheck && ./config.status

5.recheckが終わったら、

make

を実行する。これで、ソースファイルから先ほどダウンロードしたg++等によるコンパイルが始まる。
注意!:コンパイル後のファイルは10GB弱ほどになります。容量もさることながら、何よりコンパイル時間がめっちゃ長いです(私の場合は5時間でした)。

6.sageディレクトリで

./sage

を実行し、

┌────────────────────────────────────────────────────────────────────┐
│ SageMath version 9.8.beta4, Release Date: 2022-11-21               │
│ Using Python 3.10.8. Type "help()" for help.                       │
└────────────────────────────────────────────────────────────────────┘
sage: 

などとなったら目標達成。

終わりに

gitさえ知っていれば多分できるんだろうが、私は死にかけたので書き残すことにした。なお、.sageを拡張子とするsageのプログラムファイルは./sage "example.sage"という形で実行するのではなく、sageシェル内で

sage: load("example.sage")

という形で実行する。Sage チュートリアル(日本語版)等を参考に、ぜひSageMathを使いこなしてほしい。

あとはSageMathのVScode拡張さえあればなあ…

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0