sage
Розбіжності
Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
| Порівняння попередніх версійПопередня ревізіяНаступна ревізія | Попередня ревізія | ||
| sage [2014/01/03 14:30] – [Sage через прокси] опечатка wombat | sage [2016/10/25 09:45] (поточний) – Дополнительные пакеты wombat | ||
|---|---|---|---|
| Рядок 1: | Рядок 1: | ||
| + | ====== Sage ====== | ||
| + | Приёмы работы и некоторые готовые рецепты описаны [[sage_tricks | здесь]]. | ||
| + | |||
| + | ====== Установка ====== | ||
| + | |||
| + | ===== На своём компьютере ===== | ||
| + | |||
| + | ==== Перед установкой ==== | ||
| + | |||
| + | Поскольку при запуске и использовании Sage на одном и том же (своём) компьютере нет нужды заботиться ни о шифровании передаваемых данных, | ||
| + | |||
| + | Для Debian GNU/Linux и Ubuntu | ||
| + | |||
| + | sudo apt-get install libpng12-dev | ||
| + | |||
| + | //libpng// нужно для экспорта изображений в PNG-файлы в R. | ||
| + | |||
| + | Создадим каталог, | ||
| + | |||
| + | mkdir / | ||
| + | |||
| + | Далее продолжить согласно разделу " | ||
| + | |||
| + | |||
| + | ==== Обновление ==== | ||
| + | |||
| + | **1.** Эвакуируем папку, в которой хранятся все рабочие листы нашего пользователя (/// | ||
| + | |||
| + | cd archive_catalog | ||
| + | tar -cvJf sage_home_backup-20120918.tar.xz / | ||
| + | |||
| + | Вместо даты '' | ||
| + | |||
| + | **2.** Проверяем, | ||
| + | |||
| + | **3.** Загружаем архив свежей версии Sage с одного из [[http:// | ||
| + | |||
| + | Например, | ||
| + | |||
| + | cd / | ||
| + | wget -c http:// | ||
| + | md5sum sage-6.4.1.tar.gz | ||
| + | |||
| + | **4.** Распаковываем архив с исходниками: | ||
| + | |||
| + | tar -xvf sage-6.4.1.tar.gz | ||
| + | |||
| + | где '' | ||
| + | |||
| + | **5.** Переходим в распакованный каталог: | ||
| + | |||
| + | cd sage-6.4.1/ | ||
| + | |||
| + | Для компиляции в 4 потока выполняем: | ||
| + | export MAKE=" | ||
| + | |||
| + | **6.** Запускаем сборку: | ||
| + | |||
| + | make | ||
| + | |||
| + | В случае использования пакетов, | ||
| + | |||
| + | ===== Дополнительные пакеты ===== | ||
| + | |||
| + | ==== Из коллекции Sage ==== | ||
| + | |||
| + | Sage содержит информацию о ряде пакетов, | ||
| + | |||
| + | sage: from sage.misc.package import list_packages | ||
| + | sage: list_packages() | ||
| + | |||
| + | Список довольно велик, и чтобы отобразить только пакеты из определённого класса, | ||
| + | |||
| + | sage: list_packages(' | ||
| + | sage: list_packages(' | ||
| + | sage: list_packages(' | ||
| + | sage: list_packages(' | ||
| + | |||
| + | Пакеты всех классов, | ||
| + | |||
| + | sage -i < | ||
| + | |||
| + | Пакеты из класса '' | ||
| + | |||
| + | sage -pip install < | ||
| + | |||
| + | === chardet === | ||
| + | |||
| + | Библиотека [[https:// | ||
| + | |||
| + | sage -pip install chardet | ||
| + | |||
| + | ==== Пакеты R ==== | ||
| + | |||
| + | sage: r.install_packages(' | ||
| + | |||
| + | ==== Другие пакеты ==== | ||
| + | |||
| + | Если я правильно понимаю, | ||
| + | sage -python setup.py install | ||
| + | |||
| + | Т.е. скачиваем пакет, распаковываем его куда-то. Заходим | ||
| + | |||
| + | === mlpy === | ||
| + | |||
| + | http:// | ||
| + | |||
| + | wget ' | ||
| + | tar xvf mlpy-3.5.0.tar.gz | ||
| + | |||
| + | В файле документации к этому пакету // | ||
| + | |||
| + | $ python setup.py install | ||
| + | |||
| + | Стало быть, нужно делать так: | ||
| + | |||
| + | # sage -python setup.py install | ||
| + | |||
| + | === spectrum === | ||
| + | |||
| + | Для установки пакета spectrum потребовалось предварительно установить пакет easydev: | ||
| + | |||
| + | wget -cS ' | ||
| + | tar xvf easydev-0.6.12.tar.gz | ||
| + | cd easydev-0.6.12/ | ||
| + | / | ||
| + | |||
| + | wget -cS ' | ||
| + | tar xvf spectrum-0.5.6.tar.gz | ||
| + | cd spectrum-0.5.6 | ||
| + | / | ||
| + | |||
| + | Для пакетов, | ||
| + | |||
| + | / | ||
| + | |||
| + | Однако, | ||
| + | |||
| + | / | ||
| + | |||
| + | |||
| + | |||
| + | ===== На удалённом сервере ===== | ||
| + | |||
| + | Установка на сервер отличается от установки на локальный компьютер тем, что: | ||
| + | * Sage обычно устанавливается не в домашний каталог отдельного пользователя, | ||
| + | * запускается такой сервер также не от имени какого-либо реального пользователя, | ||
| + | * от такого сервера обычно требуется // | ||
| + | * для безопасного доступа к такому серверу, | ||
| + | * поскольку процесс компиляции может быть длительным, | ||
| + | |||
| + | ==== Перед установкой ==== | ||
| + | |||
| + | Установим необходимые дополнительные библиотеки: | ||
| + | |||
| + | Для Debian GNU/Linux и Ubuntu | ||
| + | |||
| + | sudo apt-get install openssl libssl-dev libpng12-dev screen | ||
| + | |||
| + | //OpenSSL// нужен для опции " | ||
| + | |||
| + | //libpng// нужно для R. Экспорт в PNG-файлы. | ||
| + | |||
| + | //screen// удобен для выполнения длительных операций на удалённом сервере, | ||
| + | |||
| + | Создадим группу и пользователя, | ||
| + | |||
| + | groupadd sagenb | ||
| + | useradd -d / | ||
| + | |||
| + | Создадим каталог для общесистемной установки Sage: | ||
| + | |||
| + | sudo mkdir /opt/sage | ||
| + | |||
| + | Далее выполняем то, что описано в разделе [[sage# | ||
| + | |||
| + | ==== Обновление ==== | ||
| + | |||
| + | В случае подключения к удалённому компьютеру по SSH, после подключения запускаем | ||
| + | |||
| + | screen | ||
| + | |||
| + | и все дальнейшие команды выполняем в его командной строке. | ||
| + | |||
| + | **1.** Эвакуируем папку ''/ | ||
| + | |||
| + | cd archive_catalog | ||
| + | tar -cvJf sage_home_backup-20120918.tar.xz / | ||
| + | |||
| + | Вместо даты '' | ||
| + | |||
| + | **2.** Проверяем, | ||
| + | |||
| + | **3.** Загружаем архив свежей версии Sage с одного из [[http:// | ||
| + | |||
| + | Например, | ||
| + | |||
| + | wget -c http:// | ||
| + | md5sum sage-6.4.1.tar.gz | ||
| + | |||
| + | **4.** Распаковываем архив с исходниками: | ||
| + | |||
| + | cd /opt/sage | ||
| + | sudo tar -xvf / | ||
| + | |||
| + | где '' | ||
| + | |||
| + | **5.** Переходим в распакованный каталог: | ||
| + | |||
| + | cd sage-5.5/ | ||
| + | |||
| + | Для компиляции в 4 потока выполняем: | ||
| + | export MAKE=" | ||
| + | |||
| + | **6.** Запускаем сборку: | ||
| + | |||
| + | make | ||
| + | или | ||
| + | make ssl | ||
| + | для сборки с поддержкой OpenSSL | ||
| + | |||
| + | **7.** Если всё это выполняется в GNU Screen на удалённом компьютере, | ||
| + | |||
| + | Ctrl+a d | ||
| + | Чтобы потом снова подключиться к запущенной сессии screen, нужно выполнить | ||
| + | screen -r | ||
| + | В случае, | ||
| + | screen -dr | ||
| + | |||
| + | **8.** Для удобства общесистемного использования Sage, удобно создать ссылку на его исполнимый файл в одном из каталогов, | ||
| + | |||
| + | You *should* be able to move the sage-x.y.z/ directory anywhere you | ||
| + | want. If you copy the sage script or make a symbolic link to it, you | ||
| + | should modify the script to reflect this (as instructed at the top of | ||
| + | the script). It is best if the path to Sage does not have any spaces in | ||
| + | it. | ||
| + | |||
| + | Создаём символическую ссылку на исполнимый файл Sage: | ||
| + | |||
| + | ln -fs / | ||
| + | |||
| + | В случае использования пакетов, | ||
| + | |||
| + | |||
| + | ==== Автозапуск ==== | ||
| + | |||
| + | Ниже приводится пример построения сценария автозапуска Sage-сервера для Debian или Ubuntu. | ||
| + | |||
| + | Если Sage компилировали **без поддержки // | ||
| + | |||
| + | DAEMON_ARGS=' | ||
| + | | ||
| + | в противном случае предпочтительно оставить её включённой: | ||
| + | |||
| + | DAEMON_ARGS=' | ||
| + | | ||
| + | Здесь '' | ||
| + | |||
| + | DAEMON_ARGS=' | ||
| + | | ||
| + | то Sage Notebook сервер должен работать на всех сетевых интерфейсах компьютера. | ||
| + | |||
| + | <file bash sage> | ||
| + | #! /bin/sh | ||
| + | ### BEGIN INIT INFO | ||
| + | # Provides: | ||
| + | # Required-Start: | ||
| + | # Required-Stop: | ||
| + | # Default-Start: | ||
| + | # Default-Stop: | ||
| + | # Short-Description: | ||
| + | # Description: | ||
| + | # placed in / | ||
| + | ### END INIT INFO | ||
| + | |||
| + | # Author: Foo Bar < | ||
| + | # | ||
| + | # Please remove the " | ||
| + | # with your own name if you copy and modify this script. | ||
| + | |||
| + | # Do NOT "set -e" | ||
| + | |||
| + | # PATH should only include /usr/* if it runs after the mountnfs.sh script | ||
| + | PATH=/ | ||
| + | DESC=" | ||
| + | NAME=sage | ||
| + | DAEMON=/ | ||
| + | ### | ||
| + | ## | ||
| + | |||
| + | # Listen on localhost only. Useful for accessing through the HTTP proxy on the same host. | ||
| + | # | ||
| + | # | ||
| + | # Listen on all interfaces with SSL encryption | ||
| + | DAEMON_ARGS=' | ||
| + | # | ||
| + | # Listen on all interfaces without SSL (DANGEROUS!!!). For testing purposes only. | ||
| + | # | ||
| + | |||
| + | USERNAME=" | ||
| + | GROUPNAME=" | ||
| + | |||
| + | PIDFILE=/ | ||
| + | SCRIPTNAME=/ | ||
| + | |||
| + | # Exit if the package is not installed | ||
| + | [ -x " | ||
| + | |||
| + | # Read configuration variable file if it is present | ||
| + | |||
| + | # [ -r / | ||
| + | |||
| + | # Load the VERBOSE setting and other rcS variables | ||
| + | . / | ||
| + | |||
| + | # Define LSB log_* functions. | ||
| + | # Depend on lsb-base (>= 3.0-6) to ensure that this file is present. | ||
| + | . / | ||
| + | |||
| + | # | ||
| + | # Function that starts the daemon/ | ||
| + | # | ||
| + | do_start() | ||
| + | { | ||
| + | # Return | ||
| + | # 0 if daemon has been started | ||
| + | # 1 if daemon was already running | ||
| + | # 2 if daemon could not be started | ||
| + | start-stop-daemon --start -c sagenb: | ||
| + | || return 1 | ||
| + | start-stop-daemon --start -c sagenb: | ||
| + | $DAEMON_ARGS \ | ||
| + | || return 2 | ||
| + | # Add code here, if necessary, that waits for the process to be ready | ||
| + | # to handle requests from services started subsequently which depend | ||
| + | # on this one. As a last resort, sleep for some time. | ||
| + | } | ||
| + | |||
| + | # | ||
| + | # Function that stops the daemon/ | ||
| + | # | ||
| + | do_stop() | ||
| + | { | ||
| + | # Return | ||
| + | # 0 if daemon has been stopped | ||
| + | # 1 if daemon was already stopped | ||
| + | # 2 if daemon could not be stopped | ||
| + | # other if a failure occurred | ||
| + | start-stop-daemon --stop --quiet | ||
| + | RETVAL=" | ||
| + | [ " | ||
| + | # Wait for children to finish too if this is a daemon that forks | ||
| + | # and if the daemon is only ever run from this initscript. | ||
| + | # If the above conditions are not satisfied then add some other code | ||
| + | # that waits for the process to drop all resources that could be | ||
| + | # needed by services started subsequently. | ||
| + | # sleep for some time. | ||
| + | start-stop-daemon --stop --quiet | ||
| + | [ " | ||
| + | # Many daemons don't delete their pidfiles when they exit. | ||
| + | rm -f $PIDFILE | ||
| + | return " | ||
| + | } | ||
| + | |||
| + | # | ||
| + | # Function that sends a SIGHUP to the daemon/ | ||
| + | # | ||
| + | do_reload() { | ||
| + | # | ||
| + | # If the daemon can reload its configuration without | ||
| + | # restarting (for example, when it is sent a SIGHUP), | ||
| + | # then implement that here. | ||
| + | # | ||
| + | start-stop-daemon --stop --signal 1 --quiet | ||
| + | return 0 | ||
| + | } | ||
| + | |||
| + | case " | ||
| + | start) | ||
| + | [ " | ||
| + | do_start | ||
| + | case " | ||
| + | 0|1) [ " | ||
| + | 2) [ " | ||
| + | esac | ||
| + | ;; | ||
| + | stop) | ||
| + | [ " | ||
| + | do_stop | ||
| + | case " | ||
| + | 0|1) [ " | ||
| + | 2) [ " | ||
| + | esac | ||
| + | ;; | ||
| + | status) | ||
| + | | ||
| + | ;; | ||
| + | # | ||
| + | # | ||
| + | # If do_reload() is not implemented then leave this commented out | ||
| + | # and leave ' | ||
| + | # | ||
| + | # | ||
| + | #do_reload | ||
| + | # | ||
| + | #;; | ||
| + | restart|force-reload) | ||
| + | # | ||
| + | # If the " | ||
| + | # ' | ||
| + | # | ||
| + | log_daemon_msg " | ||
| + | do_stop | ||
| + | case " | ||
| + | 0|1) | ||
| + | do_start | ||
| + | case " | ||
| + | 0) log_end_msg 0 ;; | ||
| + | 1) log_end_msg 1 ;; # Old process is still running | ||
| + | *) log_end_msg 1 ;; # Failed to start | ||
| + | esac | ||
| + | ;; | ||
| + | *) | ||
| + | # Failed to stop | ||
| + | log_end_msg 1 | ||
| + | ;; | ||
| + | esac | ||
| + | ;; | ||
| + | *) | ||
| + | #echo " | ||
| + | echo " | ||
| + | exit 3 | ||
| + | ;; | ||
| + | esac | ||
| + | |||
| + | : | ||
| + | |||
| + | </ | ||
| + | |||
| + | ==== После установки/ | ||
| + | |||
| + | / | ||
| + | |||
| + | ==== Sage через прокси ==== | ||
| + | |||
| + | Чтобы иметь доступ к Sage-серверу с компьютеров, | ||
| + | |||
| + | Создадим для этого SSL-сертификат сервера((Самоподписанный сертификат по умолчанию не считается доверенным большинством программ, | ||
| + | |||
| + | openssl req -new -x509 -days 365 -nodes -out " | ||
| + | |||
| + | Полученные файлы поместим в ''/ | ||
| + | |||
| + | === Apache === | ||
| + | |||
| + | При использовании веб-сервера Apache, необходимо в его файле конфигурации указать следующее: | ||
| + | |||
| + | <file conf / | ||
| + | < | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | ServerName sagenb.wombat.org.ua | ||
| + | |||
| + | ProxyRequests off | ||
| + | # SSLProxyEngine On | ||
| + | SSLEngine on | ||
| + | SSLCertificateFile "/ | ||
| + | SSLCertificateKeyFile "/ | ||
| + | |||
| + | <Proxy *> | ||
| + | Order deny,allow | ||
| + | Allow from all | ||
| + | </ | ||
| + | ProxyPass / http:// | ||
| + | ProxyPassReverse / http:// | ||
| + | ProxyPreserveHost on | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Также нужно убедиться, | ||
| + | |||
| + | ====== Использование Sage ====== | ||
| + | |||
| + | == Sage Tutorial == | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | == SDSU Sage Tutorial == | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | == Books == | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | |||
| + | == wikisage == | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | |||
| + | == William Stein courses == | ||
| + | |||
| + | [[http:// | ||
