<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.yobi.be/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=213.219.141.116</id>
	<title>YobiWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.yobi.be/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=213.219.141.116"/>
	<link rel="alternate" type="text/html" href="https://wiki.yobi.be/index.php?title=Special:Contributions/213.219.141.116"/>
	<updated>2026-05-05T02:35:37Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki.yobi.be/index.php?title=Sage&amp;diff=2508</id>
		<title>Sage</title>
		<link rel="alternate" type="text/html" href="https://wiki.yobi.be/index.php?title=Sage&amp;diff=2508"/>
		<updated>2008-02-03T21:11:53Z</updated>

		<summary type="html">&lt;p&gt;213.219.141.116: /* SAGE console via ssh with X11 forwarding */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Installation===&lt;br /&gt;
Some notes on the installation of [http://www.sagemath.org/ Sage] in a vserver:&lt;br /&gt;
&lt;br /&gt;
Create a vserver, remove tmpfs /tmp in /etc/vservers/sage/fstab as 16M is too short for compilation&lt;br /&gt;
&lt;br /&gt;
Create an account for the compilation&lt;br /&gt;
 # adduser --disabled-password --shell /bin/false sage&lt;br /&gt;
&lt;br /&gt;
Install packages needed for the compilation + some for runtime&lt;br /&gt;
 # apt-get install gcc-4.1-base make m4 bison flex tar perl binutils \&lt;br /&gt;
            libstdc++6-dev g++ openssh-client \&lt;br /&gt;
            less screen imagemagick&lt;br /&gt;
&lt;br /&gt;
Download and compile sources&lt;br /&gt;
 # cd /opt&lt;br /&gt;
 # export http_proxy=http://proxy....:8080 &lt;br /&gt;
 # wget http://www.sagemath.org/dist/src/sage-2.10.tar&lt;br /&gt;
 # tar xf sage-2.10.tar&lt;br /&gt;
 # chown -R sage:sage *&lt;br /&gt;
 # su -s /bin/bash - sage&lt;br /&gt;
 sage$ cd /opt/sage-2.10/&lt;br /&gt;
 sage$ make&lt;br /&gt;
Time for triple coffee...&lt;br /&gt;
&lt;br /&gt;
To maintain the installation and install optional packages:&lt;br /&gt;
 sage$ export http_proxy=http://proxy....:8080 &lt;br /&gt;
 sage$ ./sage -upgrade&lt;br /&gt;
 sage$ ./sage -optional&lt;br /&gt;
 sage$ ./sage -i extra_docs-&lt;br /&gt;
 sage$ ./sage -i openssl-0.9.8d.p1&lt;br /&gt;
 sage$ ./sage -i pyopenssl-0.6&lt;br /&gt;
 sage$ ./sage -i gap_packages-4.4.10_3&lt;br /&gt;
 sage$ ./sage -i database_gap-4.4.10&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Create an account to run sage as webserver&lt;br /&gt;
 # adduser --disabled-password --shell /bin/false saged&lt;br /&gt;
 # cp /opt/sage-2.10/sage /home/install&lt;br /&gt;
Edit the launch script /home/install/sage to point to the right directory:&lt;br /&gt;
 SAGE_ROOT=&amp;quot;/opt/sage-2.10&amp;quot;&lt;br /&gt;
 # ln -s /home/install/sage /usr/local/bin&lt;br /&gt;
To start &amp;amp; stop the webserver as a real daemon, in a screen session, save the following script as /home/install/saged:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#! /bin/sh&lt;br /&gt;
# Author: Philippe Teuwen&lt;br /&gt;
&lt;br /&gt;
# Do NOT &amp;quot;set -e&amp;quot;&lt;br /&gt;
&lt;br /&gt;
PATH=/usr/sbin:/usr/bin:/sbin:/bin&lt;br /&gt;
DESC=&amp;quot;Launching SAGE webserver&amp;quot;&lt;br /&gt;
NAME=sage&lt;br /&gt;
PIDFILE=/var/run/$NAME.pid&lt;br /&gt;
SCRIPTNAME=/etc/init.d/$NAME&lt;br /&gt;
DAEMON=/usr/local/bin/sage&lt;br /&gt;
HOST=&amp;quot;fqdn.of.the.server&amp;quot;&lt;br /&gt;
PORT=&amp;quot;8000&amp;quot;&lt;br /&gt;
ARGS=&amp;quot;-c \&amp;quot;notebook(address=\\\&amp;quot;$HOST\\\&amp;quot;,port=$PORT,accounts=true)\&amp;quot;&amp;quot;&lt;br /&gt;
USER=saged&lt;br /&gt;
# Exit if mysql client is not installed&lt;br /&gt;
[ -x &amp;quot;$DAEMON&amp;quot; ] || exit 0&lt;br /&gt;
&lt;br /&gt;
# Load the VERBOSE setting and other rcS variables&lt;br /&gt;
[ -f /etc/default/rcS ] &amp;amp;&amp;amp; . /etc/default/rcS&lt;br /&gt;
&lt;br /&gt;
# Define LSB log_* functions.&lt;br /&gt;
# Depend on lsb-base (&amp;gt;= 3.0-6) to ensure that this file is present.&lt;br /&gt;
. /lib/lsb/init-functions&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Function that starts the daemon/service&lt;br /&gt;
#&lt;br /&gt;
do_start()&lt;br /&gt;
{&lt;br /&gt;
        if [ -e $PIDFILE ]; then&lt;br /&gt;
            if ps -p $(cat $PIDFILE) &amp;gt;/dev/null; then&lt;br /&gt;
                echo -n -e &amp;quot;\nError: $NAME seems to be already running!&amp;quot;&lt;br /&gt;
                return 1&lt;br /&gt;
            else&lt;br /&gt;
                rm -f $PIDFILE&lt;br /&gt;
            fi&lt;br /&gt;
        fi&lt;br /&gt;
        screen -d -m -S sage su -s /bin/bash - $USER -c &amp;quot;$DAEMON $ARGS&amp;quot;&lt;br /&gt;
        sleep 1&lt;br /&gt;
        # PID of screen&lt;br /&gt;
        PID=$(screen -ls sage|grep sage|sed &#039;s/[[:space:]]*\([0-9]\+\)\..*/\1/&#039;)&lt;br /&gt;
        # PID of su&lt;br /&gt;
        PID=$(ps --ppid $PID -o pid --no-headers)&lt;br /&gt;
        # PID of sage&lt;br /&gt;
        PID=$(ps --ppid $PID -o pid --no-headers)&lt;br /&gt;
        echo $PID &amp;gt; $PIDFILE&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Function that stops the daemon/service&lt;br /&gt;
#&lt;br /&gt;
do_stop()&lt;br /&gt;
{&lt;br /&gt;
        if [ -e $PIDFILE ]; then&lt;br /&gt;
            PID=$(cat $PIDFILE)&lt;br /&gt;
            if ps -p $PID &amp;gt; /dev/null; then&lt;br /&gt;
                # kill script&lt;br /&gt;
                kill $PID&lt;br /&gt;
                rm -f $PIDFILE&lt;br /&gt;
                return 0&lt;br /&gt;
            else&lt;br /&gt;
                echo -e &amp;quot;\nWarning: $NAME was not running.&amp;quot;&lt;br /&gt;
                echo -n -e &amp;quot;\nCleaning PID file&amp;quot;&lt;br /&gt;
                rm -f $PIDFILE&lt;br /&gt;
                return 1&lt;br /&gt;
            fi&lt;br /&gt;
        else&lt;br /&gt;
            echo -n -e &amp;quot;\nWarning: $NAME was not running&amp;quot;&lt;br /&gt;
            return 1&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
  start)&lt;br /&gt;
        [ &amp;quot;$VERBOSE&amp;quot; != no ] &amp;amp;&amp;amp; log_daemon_msg &amp;quot;Starting $DESC&amp;quot; &amp;quot;$NAME&amp;quot;&lt;br /&gt;
        do_start&lt;br /&gt;
        case &amp;quot;$?&amp;quot; in&lt;br /&gt;
                0|1) [ &amp;quot;$VERBOSE&amp;quot; != no ] &amp;amp;&amp;amp; log_end_msg 0 ;;&lt;br /&gt;
                2) [ &amp;quot;$VERBOSE&amp;quot; != no ] &amp;amp;&amp;amp; log_end_msg 1 ;;&lt;br /&gt;
        esac&lt;br /&gt;
        ;;&lt;br /&gt;
  stop)&lt;br /&gt;
        [ &amp;quot;$VERBOSE&amp;quot; != no ] &amp;amp;&amp;amp; log_daemon_msg &amp;quot;Stopping $DESC&amp;quot; &amp;quot;$NAME&amp;quot;&lt;br /&gt;
        do_stop&lt;br /&gt;
        case &amp;quot;$?&amp;quot; in&lt;br /&gt;
                0|1) [ &amp;quot;$VERBOSE&amp;quot; != no ] &amp;amp;&amp;amp; log_end_msg 0 ;;&lt;br /&gt;
                2) [ &amp;quot;$VERBOSE&amp;quot; != no ] &amp;amp;&amp;amp; log_end_msg 1 ;;&lt;br /&gt;
        esac&lt;br /&gt;
        ;;&lt;br /&gt;
  restart|force-reload)&lt;br /&gt;
        #&lt;br /&gt;
        # If the &amp;quot;reload&amp;quot; option is implemented then remove the&lt;br /&gt;
        # &#039;force-reload&#039; alias&lt;br /&gt;
        #&lt;br /&gt;
        log_daemon_msg &amp;quot;Restarting $DESC&amp;quot; &amp;quot;$NAME&amp;quot;&lt;br /&gt;
        do_stop&lt;br /&gt;
        case &amp;quot;$?&amp;quot; in&lt;br /&gt;
          0|1)&lt;br /&gt;
                do_start&lt;br /&gt;
                case &amp;quot;$?&amp;quot; in&lt;br /&gt;
                        0) log_end_msg 0 ;;&lt;br /&gt;
                        1) log_end_msg 1 ;; # Old process is still running&lt;br /&gt;
                        *) log_end_msg 1 ;; # Failed to start&lt;br /&gt;
                esac&lt;br /&gt;
                ;;&lt;br /&gt;
          *)&lt;br /&gt;
                # Failed to stop&lt;br /&gt;
                log_end_msg 1&lt;br /&gt;
                ;;&lt;br /&gt;
        esac&lt;br /&gt;
        ;;&lt;br /&gt;
  *)&lt;br /&gt;
        echo &amp;quot;Usage: $SCRIPTNAME {start|stop|restart|force-reload}&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
        exit 3&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you don  want anybody to be able to create an account (which gives access to bash!!), remove &amp;quot;,accounts=true&amp;quot; from ARGS.&lt;br /&gt;
&lt;br /&gt;
Install the script:&lt;br /&gt;
 # ln -s /home/install/saged /etc/init.d&lt;br /&gt;
 # update-rc.d saged defaults 99 01&lt;br /&gt;
&lt;br /&gt;
===Client tuning: jsMath fonts===&lt;br /&gt;
If you want to install the jsMath fonts locally on your client for a faster rendering:&lt;br /&gt;
&amp;lt;br&amp;gt;[http://www.math.union.edu/~dpvc/jsMath/download/jsMath-fonts.html Download TEX fonts] and install them either in ~/.fonts/ or C:\Windows\Fonts&lt;br /&gt;
&lt;br /&gt;
===SAGE console via ssh===&lt;br /&gt;
Some notes to give a console access with python autocompletion:&lt;br /&gt;
&amp;lt;br&amp;gt;Put ssh keys in /home/saged/.ssh/authorized_keys&lt;br /&gt;
&amp;lt;br&amp;gt;Set /usr/local/bin/sage as shell of user saged in /etc/passwd&lt;br /&gt;
&amp;lt;br&amp;gt;Then on the client side:&lt;br /&gt;
 Host sage&lt;br /&gt;
   Hostname blabla&lt;br /&gt;
   User saged&lt;br /&gt;
===SAGE console via ssh with X11 forwarding===&lt;br /&gt;
Some notes to enable X11 forwarding with the sage console:&lt;br /&gt;
 apt-get install xbase-clients&lt;br /&gt;
 vi /etc/ssh/sshd_config&lt;br /&gt;
     X11Forwarding yes&lt;br /&gt;
     #if you&#039;re in a vserver:&lt;br /&gt;
     X11UseLocalhost no &lt;br /&gt;
 /etc/init.d/ssh restart&lt;br /&gt;
Then on the client side:&lt;br /&gt;
 Host sage&lt;br /&gt;
   Hostname blabla&lt;br /&gt;
   User saged&lt;br /&gt;
   ForwardX11 yes&lt;br /&gt;
&lt;br /&gt;
===Maxima plot via X11===&lt;br /&gt;
Some notes to enable tcl/tk interactive plotting with maxima:&lt;br /&gt;
&amp;lt;br&amp;gt;You need X11 forwarding, cf above&lt;br /&gt;
 apt-get install tk8.4&lt;br /&gt;
Test:&lt;br /&gt;
 ssh sage&lt;br /&gt;
 Last login: blabla&lt;br /&gt;
 ----------------------------------------------------------------------&lt;br /&gt;
 | SAGE Version 2.10, Release Date: 2008-01-18                        |&lt;br /&gt;
 | Type notebook() for the GUI, and license() for information.        |&lt;br /&gt;
 ----------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 sage: maxima.plot2d(&#039;cos(2*x) + 2*cos(x)&#039;,&#039;[x,0,1]&#039;,&#039;[plot_format,openmath]&#039;)&lt;br /&gt;
or&lt;br /&gt;
 sage: maxima.eval(&#039;load(&amp;quot;plotdf&amp;quot;)&#039;)&lt;br /&gt;
 sage: maxima.eval(&#039;plotdf(x+y,[trajectory_at,2,-0.1]);&#039;)&lt;br /&gt;
or&lt;br /&gt;
 sage: maxima.plot3d(&amp;quot;sin(x^2+y^2)&amp;quot;,&amp;quot;[x,-3,3]&amp;quot;,&amp;quot;[y,-3,3]&amp;quot;,&#039;[plot_format,openmath]&#039;)&lt;br /&gt;
&lt;br /&gt;
===octave &amp;amp; gnuplot via X11===&lt;br /&gt;
Some notes to enable octave and gnuplot:&lt;br /&gt;
&amp;lt;br&amp;gt;You need X11 forwarding, cf above&lt;br /&gt;
&lt;br /&gt;
 apt-get install octave gnuplot&lt;br /&gt;
 sage -i gnuplotpy-1.7.p3&lt;br /&gt;
Test:&lt;br /&gt;
 ssh sage&lt;br /&gt;
 Last login: blabla&lt;br /&gt;
 ----------------------------------------------------------------------&lt;br /&gt;
 | SAGE Version 2.10, Release Date: 2008-01-18                        |&lt;br /&gt;
 | Type notebook() for the GUI, and license() for information.        |&lt;br /&gt;
 ----------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 sage: octave.de_system_plot([&#039;x+y&#039;, &#039;x-y&#039;], [1, -1], [0,2])&lt;br /&gt;
===singular &amp;amp; surf via X11===&lt;br /&gt;
Some notes to enable surf for singular:&lt;br /&gt;
&amp;lt;br&amp;gt;You need X11 forwarding, cf above&lt;br /&gt;
&lt;br /&gt;
We need to compile surf from the sources:&lt;br /&gt;
 apt-get install zlib1g-dev libjpeg62-dev libtiff4-dev flex \&lt;br /&gt;
    libgmp3-dev libgtk1.2-dev libx11-dev libxmu-headers libxmu-dev&lt;br /&gt;
 cd /opt&lt;br /&gt;
 wget &amp;quot;http://downloads.sourceforge.net/surf/surf-1.0.5.tar.gz&amp;quot;&lt;br /&gt;
 tar xzf surf-1.0.5.tar.gz &lt;br /&gt;
 cd surf-1.0.5/&lt;br /&gt;
 ./configure &lt;br /&gt;
 make&lt;br /&gt;
 ln -s  /opt/surf-1.0.5/surf /usr/local/bin&lt;br /&gt;
Test:&lt;br /&gt;
 ssh sage&lt;br /&gt;
 Last login: blabla&lt;br /&gt;
 ----------------------------------------------------------------------&lt;br /&gt;
 | SAGE Version 2.10, Release Date: 2008-01-18                        |&lt;br /&gt;
 | Type notebook() for the GUI, and license() for information.        |&lt;br /&gt;
 ----------------------------------------------------------------------&lt;br /&gt;
 sage: s = singular.eval&lt;br /&gt;
 sage: s(&#039;LIB &amp;quot;surf.lib&amp;quot;;&#039;)&lt;br /&gt;
 &#039;// ** loaded /opt/sage-2.10/local/LIB/surf.lib (1.28,2007/07/13)&#039;&lt;br /&gt;
 sage: s(&amp;quot;ring rr0 = 0, (x1,x2),dp;&amp;quot;)&lt;br /&gt;
 &#039;&#039;&lt;br /&gt;
 sage: s(&amp;quot;ideal I = x1^3 - x2^2;&amp;quot;)&lt;br /&gt;
 &#039;&#039;&lt;br /&gt;
 sage: s(&amp;quot;plot(I);&amp;quot;)&lt;br /&gt;
 &amp;quot;Press q to exit from &#039;surf&#039;&amp;quot;&lt;br /&gt;
or&lt;br /&gt;
 sage: singular.eval(&#039;ring rr1 = 0,(x,y,z),dp;&#039;)&lt;br /&gt;
 &#039;&#039;&lt;br /&gt;
 sage: singular.eval(&#039;ideal I(1) = 2x2-1/2x3 +1-y+1;&#039;)&lt;br /&gt;
 &#039;&#039;&lt;br /&gt;
 sage: singular.eval(&#039;plot(I(1));&#039;)&lt;br /&gt;
 &amp;quot;Press q to exit from &#039;surf&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Maple===&lt;br /&gt;
Some notes if you want to use your Maple 32-bit on a 64-bit arch:&lt;br /&gt;
&lt;br /&gt;
 apt-get install ia32-libs&lt;br /&gt;
 /bin/maple -binary IBM_INTEL_LINUX&lt;br /&gt;
Or from Sage:&lt;br /&gt;
 maple.fsolve(&#039;x^2=cos(x)+4&#039;, &#039;x=0..5&#039;)&lt;br /&gt;
===Maple via X11===&lt;br /&gt;
You need X11 forwarding, cf above&lt;br /&gt;
&amp;lt;br&amp;gt;Test:&lt;br /&gt;
 ssh sage&lt;br /&gt;
 Last login: blabla&lt;br /&gt;
 ----------------------------------------------------------------------&lt;br /&gt;
 | SAGE Version 2.10, Release Date: 2008-01-18                        |&lt;br /&gt;
 | Type notebook() for the GUI, and license() for information.        |&lt;br /&gt;
 ----------------------------------------------------------------------&lt;br /&gt;
 sage: sh.eval(&amp;quot;xmaple&amp;quot;)&lt;/div&gt;</summary>
		<author><name>213.219.141.116</name></author>
	</entry>
	<entry>
		<id>https://wiki.yobi.be/index.php?title=Sage&amp;diff=2507</id>
		<title>Sage</title>
		<link rel="alternate" type="text/html" href="https://wiki.yobi.be/index.php?title=Sage&amp;diff=2507"/>
		<updated>2008-02-03T21:09:36Z</updated>

		<summary type="html">&lt;p&gt;213.219.141.116: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===Installation===&lt;br /&gt;
Some notes on the installation of [http://www.sagemath.org/ Sage] in a vserver:&lt;br /&gt;
&lt;br /&gt;
Create a vserver, remove tmpfs /tmp in /etc/vservers/sage/fstab as 16M is too short for compilation&lt;br /&gt;
&lt;br /&gt;
Create an account for the compilation&lt;br /&gt;
 # adduser --disabled-password --shell /bin/false sage&lt;br /&gt;
&lt;br /&gt;
Install packages needed for the compilation + some for runtime&lt;br /&gt;
 # apt-get install gcc-4.1-base make m4 bison flex tar perl binutils \&lt;br /&gt;
            libstdc++6-dev g++ openssh-client \&lt;br /&gt;
            less screen imagemagick&lt;br /&gt;
&lt;br /&gt;
Download and compile sources&lt;br /&gt;
 # cd /opt&lt;br /&gt;
 # export http_proxy=http://proxy....:8080 &lt;br /&gt;
 # wget http://www.sagemath.org/dist/src/sage-2.10.tar&lt;br /&gt;
 # tar xf sage-2.10.tar&lt;br /&gt;
 # chown -R sage:sage *&lt;br /&gt;
 # su -s /bin/bash - sage&lt;br /&gt;
 sage$ cd /opt/sage-2.10/&lt;br /&gt;
 sage$ make&lt;br /&gt;
Time for triple coffee...&lt;br /&gt;
&lt;br /&gt;
To maintain the installation and install optional packages:&lt;br /&gt;
 sage$ export http_proxy=http://proxy....:8080 &lt;br /&gt;
 sage$ ./sage -upgrade&lt;br /&gt;
 sage$ ./sage -optional&lt;br /&gt;
 sage$ ./sage -i extra_docs-&lt;br /&gt;
 sage$ ./sage -i openssl-0.9.8d.p1&lt;br /&gt;
 sage$ ./sage -i pyopenssl-0.6&lt;br /&gt;
 sage$ ./sage -i gap_packages-4.4.10_3&lt;br /&gt;
 sage$ ./sage -i database_gap-4.4.10&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Create an account to run sage as webserver&lt;br /&gt;
 # adduser --disabled-password --shell /bin/false saged&lt;br /&gt;
 # cp /opt/sage-2.10/sage /home/install&lt;br /&gt;
Edit the launch script /home/install/sage to point to the right directory:&lt;br /&gt;
 SAGE_ROOT=&amp;quot;/opt/sage-2.10&amp;quot;&lt;br /&gt;
 # ln -s /home/install/sage /usr/local/bin&lt;br /&gt;
To start &amp;amp; stop the webserver as a real daemon, in a screen session, save the following script as /home/install/saged:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#! /bin/sh&lt;br /&gt;
# Author: Philippe Teuwen&lt;br /&gt;
&lt;br /&gt;
# Do NOT &amp;quot;set -e&amp;quot;&lt;br /&gt;
&lt;br /&gt;
PATH=/usr/sbin:/usr/bin:/sbin:/bin&lt;br /&gt;
DESC=&amp;quot;Launching SAGE webserver&amp;quot;&lt;br /&gt;
NAME=sage&lt;br /&gt;
PIDFILE=/var/run/$NAME.pid&lt;br /&gt;
SCRIPTNAME=/etc/init.d/$NAME&lt;br /&gt;
DAEMON=/usr/local/bin/sage&lt;br /&gt;
HOST=&amp;quot;fqdn.of.the.server&amp;quot;&lt;br /&gt;
PORT=&amp;quot;8000&amp;quot;&lt;br /&gt;
ARGS=&amp;quot;-c \&amp;quot;notebook(address=\\\&amp;quot;$HOST\\\&amp;quot;,port=$PORT,accounts=true)\&amp;quot;&amp;quot;&lt;br /&gt;
USER=saged&lt;br /&gt;
# Exit if mysql client is not installed&lt;br /&gt;
[ -x &amp;quot;$DAEMON&amp;quot; ] || exit 0&lt;br /&gt;
&lt;br /&gt;
# Load the VERBOSE setting and other rcS variables&lt;br /&gt;
[ -f /etc/default/rcS ] &amp;amp;&amp;amp; . /etc/default/rcS&lt;br /&gt;
&lt;br /&gt;
# Define LSB log_* functions.&lt;br /&gt;
# Depend on lsb-base (&amp;gt;= 3.0-6) to ensure that this file is present.&lt;br /&gt;
. /lib/lsb/init-functions&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Function that starts the daemon/service&lt;br /&gt;
#&lt;br /&gt;
do_start()&lt;br /&gt;
{&lt;br /&gt;
        if [ -e $PIDFILE ]; then&lt;br /&gt;
            if ps -p $(cat $PIDFILE) &amp;gt;/dev/null; then&lt;br /&gt;
                echo -n -e &amp;quot;\nError: $NAME seems to be already running!&amp;quot;&lt;br /&gt;
                return 1&lt;br /&gt;
            else&lt;br /&gt;
                rm -f $PIDFILE&lt;br /&gt;
            fi&lt;br /&gt;
        fi&lt;br /&gt;
        screen -d -m -S sage su -s /bin/bash - $USER -c &amp;quot;$DAEMON $ARGS&amp;quot;&lt;br /&gt;
        sleep 1&lt;br /&gt;
        # PID of screen&lt;br /&gt;
        PID=$(screen -ls sage|grep sage|sed &#039;s/[[:space:]]*\([0-9]\+\)\..*/\1/&#039;)&lt;br /&gt;
        # PID of su&lt;br /&gt;
        PID=$(ps --ppid $PID -o pid --no-headers)&lt;br /&gt;
        # PID of sage&lt;br /&gt;
        PID=$(ps --ppid $PID -o pid --no-headers)&lt;br /&gt;
        echo $PID &amp;gt; $PIDFILE&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Function that stops the daemon/service&lt;br /&gt;
#&lt;br /&gt;
do_stop()&lt;br /&gt;
{&lt;br /&gt;
        if [ -e $PIDFILE ]; then&lt;br /&gt;
            PID=$(cat $PIDFILE)&lt;br /&gt;
            if ps -p $PID &amp;gt; /dev/null; then&lt;br /&gt;
                # kill script&lt;br /&gt;
                kill $PID&lt;br /&gt;
                rm -f $PIDFILE&lt;br /&gt;
                return 0&lt;br /&gt;
            else&lt;br /&gt;
                echo -e &amp;quot;\nWarning: $NAME was not running.&amp;quot;&lt;br /&gt;
                echo -n -e &amp;quot;\nCleaning PID file&amp;quot;&lt;br /&gt;
                rm -f $PIDFILE&lt;br /&gt;
                return 1&lt;br /&gt;
            fi&lt;br /&gt;
        else&lt;br /&gt;
            echo -n -e &amp;quot;\nWarning: $NAME was not running&amp;quot;&lt;br /&gt;
            return 1&lt;br /&gt;
        fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
case &amp;quot;$1&amp;quot; in&lt;br /&gt;
  start)&lt;br /&gt;
        [ &amp;quot;$VERBOSE&amp;quot; != no ] &amp;amp;&amp;amp; log_daemon_msg &amp;quot;Starting $DESC&amp;quot; &amp;quot;$NAME&amp;quot;&lt;br /&gt;
        do_start&lt;br /&gt;
        case &amp;quot;$?&amp;quot; in&lt;br /&gt;
                0|1) [ &amp;quot;$VERBOSE&amp;quot; != no ] &amp;amp;&amp;amp; log_end_msg 0 ;;&lt;br /&gt;
                2) [ &amp;quot;$VERBOSE&amp;quot; != no ] &amp;amp;&amp;amp; log_end_msg 1 ;;&lt;br /&gt;
        esac&lt;br /&gt;
        ;;&lt;br /&gt;
  stop)&lt;br /&gt;
        [ &amp;quot;$VERBOSE&amp;quot; != no ] &amp;amp;&amp;amp; log_daemon_msg &amp;quot;Stopping $DESC&amp;quot; &amp;quot;$NAME&amp;quot;&lt;br /&gt;
        do_stop&lt;br /&gt;
        case &amp;quot;$?&amp;quot; in&lt;br /&gt;
                0|1) [ &amp;quot;$VERBOSE&amp;quot; != no ] &amp;amp;&amp;amp; log_end_msg 0 ;;&lt;br /&gt;
                2) [ &amp;quot;$VERBOSE&amp;quot; != no ] &amp;amp;&amp;amp; log_end_msg 1 ;;&lt;br /&gt;
        esac&lt;br /&gt;
        ;;&lt;br /&gt;
  restart|force-reload)&lt;br /&gt;
        #&lt;br /&gt;
        # If the &amp;quot;reload&amp;quot; option is implemented then remove the&lt;br /&gt;
        # &#039;force-reload&#039; alias&lt;br /&gt;
        #&lt;br /&gt;
        log_daemon_msg &amp;quot;Restarting $DESC&amp;quot; &amp;quot;$NAME&amp;quot;&lt;br /&gt;
        do_stop&lt;br /&gt;
        case &amp;quot;$?&amp;quot; in&lt;br /&gt;
          0|1)&lt;br /&gt;
                do_start&lt;br /&gt;
                case &amp;quot;$?&amp;quot; in&lt;br /&gt;
                        0) log_end_msg 0 ;;&lt;br /&gt;
                        1) log_end_msg 1 ;; # Old process is still running&lt;br /&gt;
                        *) log_end_msg 1 ;; # Failed to start&lt;br /&gt;
                esac&lt;br /&gt;
                ;;&lt;br /&gt;
          *)&lt;br /&gt;
                # Failed to stop&lt;br /&gt;
                log_end_msg 1&lt;br /&gt;
                ;;&lt;br /&gt;
        esac&lt;br /&gt;
        ;;&lt;br /&gt;
  *)&lt;br /&gt;
        echo &amp;quot;Usage: $SCRIPTNAME {start|stop|restart|force-reload}&amp;quot; &amp;gt;&amp;amp;2&lt;br /&gt;
        exit 3&lt;br /&gt;
        ;;&lt;br /&gt;
esac&lt;br /&gt;
&lt;br /&gt;
:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you don  want anybody to be able to create an account (which gives access to bash!!), remove &amp;quot;,accounts=true&amp;quot; from ARGS.&lt;br /&gt;
&lt;br /&gt;
Install the script:&lt;br /&gt;
 # ln -s /home/install/saged /etc/init.d&lt;br /&gt;
 # update-rc.d saged defaults 99 01&lt;br /&gt;
&lt;br /&gt;
===Client tuning: jsMath fonts===&lt;br /&gt;
If you want to install the jsMath fonts locally on your client for a faster rendering:&lt;br /&gt;
&amp;lt;br&amp;gt;[http://www.math.union.edu/~dpvc/jsMath/download/jsMath-fonts.html Download TEX fonts] and install them either in ~/.fonts/ or C:\Windows\Fonts&lt;br /&gt;
&lt;br /&gt;
===SAGE console via ssh===&lt;br /&gt;
Some notes to give a console access with python autocompletion:&lt;br /&gt;
&amp;lt;br&amp;gt;Put ssh keys in /home/saged/.ssh/authorized_keys&lt;br /&gt;
&amp;lt;br&amp;gt;Set /usr/local/bin/sage as shell of user saged in /etc/passwd&lt;br /&gt;
&amp;lt;br&amp;gt;Then on the client side:&lt;br /&gt;
 Host sage&lt;br /&gt;
   Hostname blabla&lt;br /&gt;
   User saged&lt;br /&gt;
===SAGE console via ssh with X11 forwarding===&lt;br /&gt;
Some notes to enable X11 forwarding with the sage console:&lt;br /&gt;
 apt-get install xbase-clients&lt;br /&gt;
 vi /etc/ssh/sshd_config.conf&lt;br /&gt;
     X11Forwarding yes&lt;br /&gt;
     #if you&#039;re in a vserver:&lt;br /&gt;
     X11UseLocalhost no &lt;br /&gt;
 /etc/init.d/ssh restart&lt;br /&gt;
Then on the client side:&lt;br /&gt;
 Host sage&lt;br /&gt;
   Hostname blabla&lt;br /&gt;
   User saged&lt;br /&gt;
   ForwardX11 yes&lt;br /&gt;
===Maxima plot via X11===&lt;br /&gt;
Some notes to enable tcl/tk interactive plotting with maxima:&lt;br /&gt;
&amp;lt;br&amp;gt;You need X11 forwarding, cf above&lt;br /&gt;
 apt-get install tk8.4&lt;br /&gt;
Test:&lt;br /&gt;
 ssh sage&lt;br /&gt;
 Last login: blabla&lt;br /&gt;
 ----------------------------------------------------------------------&lt;br /&gt;
 | SAGE Version 2.10, Release Date: 2008-01-18                        |&lt;br /&gt;
 | Type notebook() for the GUI, and license() for information.        |&lt;br /&gt;
 ----------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 sage: maxima.plot2d(&#039;cos(2*x) + 2*cos(x)&#039;,&#039;[x,0,1]&#039;,&#039;[plot_format,openmath]&#039;)&lt;br /&gt;
or&lt;br /&gt;
 sage: maxima.eval(&#039;load(&amp;quot;plotdf&amp;quot;)&#039;)&lt;br /&gt;
 sage: maxima.eval(&#039;plotdf(x+y,[trajectory_at,2,-0.1]);&#039;)&lt;br /&gt;
or&lt;br /&gt;
 sage: maxima.plot3d(&amp;quot;sin(x^2+y^2)&amp;quot;,&amp;quot;[x,-3,3]&amp;quot;,&amp;quot;[y,-3,3]&amp;quot;,&#039;[plot_format,openmath]&#039;)&lt;br /&gt;
&lt;br /&gt;
===octave &amp;amp; gnuplot via X11===&lt;br /&gt;
Some notes to enable octave and gnuplot:&lt;br /&gt;
&amp;lt;br&amp;gt;You need X11 forwarding, cf above&lt;br /&gt;
&lt;br /&gt;
 apt-get install octave gnuplot&lt;br /&gt;
 sage -i gnuplotpy-1.7.p3&lt;br /&gt;
Test:&lt;br /&gt;
 ssh sage&lt;br /&gt;
 Last login: blabla&lt;br /&gt;
 ----------------------------------------------------------------------&lt;br /&gt;
 | SAGE Version 2.10, Release Date: 2008-01-18                        |&lt;br /&gt;
 | Type notebook() for the GUI, and license() for information.        |&lt;br /&gt;
 ----------------------------------------------------------------------&lt;br /&gt;
 &lt;br /&gt;
 sage: octave.de_system_plot([&#039;x+y&#039;, &#039;x-y&#039;], [1, -1], [0,2])&lt;br /&gt;
===singular &amp;amp; surf via X11===&lt;br /&gt;
Some notes to enable surf for singular:&lt;br /&gt;
&amp;lt;br&amp;gt;You need X11 forwarding, cf above&lt;br /&gt;
&lt;br /&gt;
We need to compile surf from the sources:&lt;br /&gt;
 apt-get install zlib1g-dev libjpeg62-dev libtiff4-dev flex \&lt;br /&gt;
    libgmp3-dev libgtk1.2-dev libx11-dev libxmu-headers libxmu-dev&lt;br /&gt;
 cd /opt&lt;br /&gt;
 wget &amp;quot;http://downloads.sourceforge.net/surf/surf-1.0.5.tar.gz&amp;quot;&lt;br /&gt;
 tar xzf surf-1.0.5.tar.gz &lt;br /&gt;
 cd surf-1.0.5/&lt;br /&gt;
 ./configure &lt;br /&gt;
 make&lt;br /&gt;
 ln -s  /opt/surf-1.0.5/surf /usr/local/bin&lt;br /&gt;
Test:&lt;br /&gt;
 ssh sage&lt;br /&gt;
 Last login: blabla&lt;br /&gt;
 ----------------------------------------------------------------------&lt;br /&gt;
 | SAGE Version 2.10, Release Date: 2008-01-18                        |&lt;br /&gt;
 | Type notebook() for the GUI, and license() for information.        |&lt;br /&gt;
 ----------------------------------------------------------------------&lt;br /&gt;
 sage: s = singular.eval&lt;br /&gt;
 sage: s(&#039;LIB &amp;quot;surf.lib&amp;quot;;&#039;)&lt;br /&gt;
 &#039;// ** loaded /opt/sage-2.10/local/LIB/surf.lib (1.28,2007/07/13)&#039;&lt;br /&gt;
 sage: s(&amp;quot;ring rr0 = 0, (x1,x2),dp;&amp;quot;)&lt;br /&gt;
 &#039;&#039;&lt;br /&gt;
 sage: s(&amp;quot;ideal I = x1^3 - x2^2;&amp;quot;)&lt;br /&gt;
 &#039;&#039;&lt;br /&gt;
 sage: s(&amp;quot;plot(I);&amp;quot;)&lt;br /&gt;
 &amp;quot;Press q to exit from &#039;surf&#039;&amp;quot;&lt;br /&gt;
or&lt;br /&gt;
 sage: singular.eval(&#039;ring rr1 = 0,(x,y,z),dp;&#039;)&lt;br /&gt;
 &#039;&#039;&lt;br /&gt;
 sage: singular.eval(&#039;ideal I(1) = 2x2-1/2x3 +1-y+1;&#039;)&lt;br /&gt;
 &#039;&#039;&lt;br /&gt;
 sage: singular.eval(&#039;plot(I(1));&#039;)&lt;br /&gt;
 &amp;quot;Press q to exit from &#039;surf&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Maple===&lt;br /&gt;
Some notes if you want to use your Maple 32-bit on a 64-bit arch:&lt;br /&gt;
&lt;br /&gt;
 apt-get install ia32-libs&lt;br /&gt;
 /bin/maple -binary IBM_INTEL_LINUX&lt;br /&gt;
Or from Sage:&lt;br /&gt;
 maple.fsolve(&#039;x^2=cos(x)+4&#039;, &#039;x=0..5&#039;)&lt;br /&gt;
===Maple via X11===&lt;br /&gt;
You need X11 forwarding, cf above&lt;br /&gt;
&amp;lt;br&amp;gt;Test:&lt;br /&gt;
 ssh sage&lt;br /&gt;
 Last login: blabla&lt;br /&gt;
 ----------------------------------------------------------------------&lt;br /&gt;
 | SAGE Version 2.10, Release Date: 2008-01-18                        |&lt;br /&gt;
 | Type notebook() for the GUI, and license() for information.        |&lt;br /&gt;
 ----------------------------------------------------------------------&lt;br /&gt;
 sage: sh.eval(&amp;quot;xmaple&amp;quot;)&lt;/div&gt;</summary>
		<author><name>213.219.141.116</name></author>
	</entry>
</feed>