top page > la vie en rose > here

Maxima on FreeBSD


概要

目的は,最新の Maxima を FreeBSD の ports として導入する方法を提示することです.

対象は次のようなものです.

  1. OS は FreeBSD の 8 系以降 (FreeBSD/i386, /pc98, /amd64)
  2. Maxima は 5.38.1 について例示します.

目次

1. 概説
2. 導入

1. 概説

Maxima は FreeBSD の ports/packages に収録されています. ports で言えば math/maxima にあります.

ソースは以下のところにあります.ここで歴代の version を確認することができます.

http://sourceforge.net/projects/maxima/files/Maxima-source

version up は,不定期ですが数ヵ月に一度のペースです. ここ 3 年ほどは下表のようになっております. (FreeBSD の ports になったものは右側に記します.)
    5.31.3 (2013.10.15)     ports (2013.11.21)
    5.32.0 (2013.12.25)
    5.32.1 (2014.1.2)
    5.33.0 (2014.4.5)
    5.34.0 (2014.8.27)
    5.34.1 (2014.9.8)
    5.35.1 (2014.12.13)     移植して bugzilla に送りましたが commit されませんでした.
    5.36.0 (2015.4.16)
    5.36.1 (2015.5.1)
    5.37.0 (2015.8.17)
    5.37.1 (2015.8.31)
    5.37.2 (2015.9.17)
    5.37.3 (2015.11.10)     ports (2016.3.1)
    5.38.0 (2016.4.3)
    5.38.1 (2016.5.12)      移植して bugzilla に送りました. → 2016.9.21 に commit されました.
    5.39.0 (2016.12.12)     ports (2017.4.8) [1]
    5.40.0 (2017.5.3)       移植して bugzilla に送りました. → 2017.8.18 に commit されました.
    5.41.0 (2017.10.3)      移植して bugzilla に送りました. → 2017.12.11 に commit されました.
    5.42.0 (2018.9.28)      2018.10.9 の時点で bugzilla に上がっています.
    5.42.1 (2018.10.16)     2019.1.6 に commit されました.
    5.42.2 (2019.1.24)      2019.2.8 の時点で ports になっています.
    5.43.0 (2019.5.31)      2019.6.15 の時点で ports になっています.
    5.43.2 (2020.1.27)      2020.3.8 の時点で ports になっています.
    5.44.0 (2020.7.8)       2020.7.9 の時点で ports になっています.
    5.45.0 (2021.5.24) [3]
    5.45.1 (2021.6.21) [3]  2022.2.15 に ports になりました.
    5.46.0 (2022.4.13)      2022.4.22 の時点で ports になっています.
    5.47.0 (2023.5.31)      2023.6.8 の時点で ports になっています.

一見して分かるように,ports が更新される頻度がかなり低いです.[2]

そこで,以下に最新の Maxima を FreeBSD に ports として導入する方法を提示致します. ここで「ports として」とは,他の ports/packages と同等に FreeBSD の管理ツールを使うことができると言う意味です.

[1] これは私の貢献によるものではありません.
  私も移植を試みたのですが,work/maxima-5.39.0/doc/info/errormessages.texi から生じるエラーでお手上げ状態になりました.

新しい Makefile を見ると,この問題は次のようにして解決されていました.

.if ${OSVERSION} < 1100000
# The older makeinfo from the base fails in 10.3
BUILD_DEPENDS+= ${LOCALBASE}/bin/makeinfo:print/texinfo
CONFIGURE_ENV+= MAKEINFO="${LOCALBASE}/bin/makeinfo"
.endif

すなわち,makeinfo の方に問題があったのでした.

[2] これを書き始めた時点ではそうだったのですが,最近はまめに更新されています.

[3] 2021.6.5 現在,maxima にはメンテナーがおりません. そこで,この最新版を ports で使えるようにしました. LISP は default である ecl を使いました. 私の使い方の範囲内では問題なく動作しております.

(2021.7.3) 5.45.1 が出たので,それ用の patch を作って bugzilla に上ました.

(2021.10.30) オリジナルの PORTREVISION が 14 から 18 に変わったので,以下の patch を修正しました.

(2021.11.17) オリジナルの PORTREVISION が 18 から 19 に変わったので,以下の patch を修正しました.

(2022.2.15) ports が更新されたので,以下の patch はもう不要です. (そのうち消します.)

--- Makefile.orig	2021-07-03 14:12:05.136004000 +0900
+++ Makefile	2021-07-04 22:29:23.320743000 +0900
@@ -1,8 +1,7 @@
 # Created by: Scott Flatman <sf@dsinw.com>
 
 PORTNAME=	maxima
-PORTVERSION=	5.44.0
-PORTREVISION=	19
+PORTVERSION=	5.45.1
 CATEGORIES=	math lisp tk
 MASTER_SITES=	SF/maxima/Maxima-source/${PORTVERSION}-source
 
--- distinfo.orig	2021-06-19 13:47:52.457473000 +0900
+++ distinfo	2021-07-03 14:36:31.291108000 +0900
@@ -1,3 +1,3 @@
-TIMESTAMP = 1592256101
-SHA256 (maxima-5.44.0.tar.gz) = d93f5e48c4daf8f085d609cb3c7b0bdf342c667fd04cf750c846426874c9d2ec
-SIZE (maxima-5.44.0.tar.gz) = 34976354
+TIMESTAMP = 1625290591
+SHA256 (maxima-5.45.1.tar.gz) = fe9016276970bef214a1a244348558644514d7fdfaa4fc8b9d0e87afcbb4e7dc
+SIZE (maxima-5.45.1.tar.gz) = 39951932
--- pkg-plist.orig	2021-04-07 18:14:46.070375000 +0900
+++ pkg-plist	2021-07-04 22:58:08.982674000 +0900
@@ -23,6 +23,7 @@
 share/emacs/site-lisp/imaxima.lisp
 share/emacs/site-lisp/maxima-font-lock.el
 share/emacs/site-lisp/maxima.el
+share/emacs/site-lisp/mylatex.ltx.el
 share/emacs/site-lisp/setup-imaxima-imath.el
 share/emacs/site-lisp/smart-complete.el
 share/emacs/site-lisp/sshell.el
--- files/patch-interfaces_xmaxima_Tkmaxima_Paths.tcl.orig	2021-06-19 13:47:52.457564000 +0900
+++ files/patch-interfaces_xmaxima_Tkmaxima_Paths.tcl	2021-07-03 14:50:49.579642000 +0900
@@ -1,6 +1,6 @@
---- interfaces/xmaxima/Tkmaxima/Paths.tcl.orig	2020-06-08 10:58:28 UTC
+--- interfaces/xmaxima/Tkmaxima/Paths.tcl.orig	2021-07-03 05:30:32 UTC
 +++ interfaces/xmaxima/Tkmaxima/Paths.tcl
-@@ -302,6 +302,8 @@ proc setMaxDir {} {
+@@ -294,6 +294,8 @@ proc setMaxDir {} {
  		set maxima_priv(pReferenceToc) [file join $dir html maxima_toc.html]
  	    }
  	}

手作業でやるなら,ファイル files/patch-interfaces_xmaxima_Tkmaxima_Paths.tclrm した方が早いです.

2. 導入

ある port を更新する方法の一般論は,maintain ports に提示しました. ここでは Maxima 特有の事項を述べます.

ソースは,以下のようにして download できます.

% fetch http://sourceforge.net/projects/maxima/files/Maxima-source/5.38.1-source/maxima-5.38.1.tar.gz

新しい Maxima を ports として導入するために必要な作業は,math/maxima の中の以下のファイルを修正することです.

ここで,

pkg-plist ですが,make makeplist で作成された pkg-plist.make を以下のように修正するだけです.

--- pkg-plist.make      2016-09-20 01:23:03.000000000 +0900
+++ pkg-plist   2016-09-19 23:16:28.000000000 +0900
@@ -1,15 +1,7 @@
-/you/have/to/check/what/makeplist/gives/you
 bin/maxima
 bin/rmaxima
 bin/xmaxima
-info/dir
-info/imaxima.info
 info/maxima-index.lisp
-info/maxima.info
-info/maxima.info-1
-info/maxima.info-2
-info/maxima.info-3
-info/xmaxima.info
 lib/maxima/%%PORTVERSION%%/%%BINDIR%%/%%MAXIMABIN%%
 libexec/maxima/%%PORTVERSION%%/mgnuplot
 man/man1/maxima.1.gz

poudriere の出力 maxima-5.38.1_1.log は attachment の制限 1.2MB を大きく越えるので,圧縮します.

% gzip maxima-5.38.1_1.log

sbcl も更新するなら,先にそちらをやる必要があります.[1] これは sbcl の version の違いだけが理由ではありません. 同一の sbclmake deinstall, make reinstall しただけで,maxima が動かなくなったこともありました. (この場合には maximamake し直したら動くようになりました.) [2]

[1] 当然ですが,Lisp として sbcl (Steel Bank Common Lisp) を選択した場合です.(FreeBSD の ports ではこれが default です.)
  Lisp の選択肢としては ccl (Clozure CL) や cmucl (CMUCL) もあります.
(2020.7.3) default の Lisp が ecl (Embeddable Common Lisp) に変更されていました.
sbcl も選択肢として残されています. ただし,make config にて SAGE を on にすると (これが default) ecl が前提となり sbcl を選択できません.

[2]「pkgsbcl を更新したら maxima が動かなくなった.」というトラブルの報告も見かけるようになりました.