Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Both sides previous revision Попередня ревізія Наступна ревізія | Попередня ревізія | ||
sage [2014/07/27 13:38] wombat Приёмы работы и рецепты - section added |
sage [2016/10/25 12:45] (поточний) wombat Дополнительные пакеты |
||
---|---|---|---|
Рядок 1: | Рядок 1: | ||
====== Sage ====== | ====== Sage ====== | ||
- | ===== Приёмы работы и рецепты ===== | + | Приёмы работы и некоторые готовые рецепты описаны [[sage_tricks | здесь]]. |
+ | ====== Установка ====== | ||
- | ===== Первичная установка ===== | + | ===== На своём компьютере ===== |
- | Для Debian GNU/Linux и Ubuntu | + | ==== Перед установкой ==== |
- | apt-get install openssl libssl-dev libpng12-dev screen | + | Поскольку при запуске и использовании Sage на одном и том же (своём) компьютере нет нужды заботиться ни о шифровании передаваемых данных, ни о доступе к удалённой консоли, в которой происходит сборка, практически никакие дополнительные программы не нужны. |
- | //OpenSSL// нужен для опции "secure" Sage Notebook'а. Работа по протоколу HTTPS. | + | Для Debian GNU/Linux и Ubuntu |
- | //libpng// нужно для R. Экспорт в PNG-файлы. | + | sudo apt-get install libpng12-dev |
- | //screen// удобен для выполнения длительных операций на удалённом сервере, например, по SSH. | + | //libpng// нужно для экспорта изображений в PNG-файлы в R. |
- | groupadd sagenb | + | Создадим каталог, в который будем устанавливать Sage. |
- | useradd -d /home/sagenb -g sagenb -m -s /usr/sbin/nologin sagenb | + | |
- | ===== Обновление ===== | + | mkdir /home/username/sage |
- | В случае работы на удалённом компьютере, подключаемся к нему по SSH, запускаем | + | Далее продолжить согласно разделу "Обновление" |
- | screen | ||
- | и все дальнейшие команды выполняем в его командной строке. | + | ==== Обновление ==== |
- | Эвакуируем папку ///home/sagenb/.sage// | + | **1.** Эвакуируем папку, в которой хранятся все рабочие листы нашего пользователя (///home/username/.sage//): |
cd archive_catalog | cd archive_catalog | ||
- | tar -cvJf sage_home_backup-20120918.tar.xz /home/sagenb/.sage | + | tar -cvJf sage_home_backup-20120918.tar.xz /home/username/.sage |
- | Вместо даты '20120918', указанной в примере, разумно указывать текущую дату в формате "ГГГГММДД". 'archive_catalog' -- каталог, в котором будет создана резервная копия. | + | Вместо даты ''20120918'', указанной в примере, разумно указывать текущую дату в формате "ГГГГММДД". ''archive_catalog'' -- каталог, в котором будет создана резервная копия. |
- | Проверяем, достаточно ли свободного места на диске (потребуется около 3,5 ГБ). | + | **2.** Проверяем, достаточно ли свободного места на диске (потребуется около 3,5 ГБ). |
- | Загружаем архив свежей версии Sage с одного из [[http://sagemath.org/download-source.html|зеркал]]. | + | **3.** Загружаем архив свежей версии Sage с одного из [[http://sagemath.org/download-source.html|зеркал]] и сравниваем контрольную сумму с указанной на сайте зеркала. |
- | Например, с | + | Например, с http://mirror.yandex.ru/mirrors/sage.math.washington.edu/src/index.html или http://sage.igor.onlinedirect.bg/src/index.html |
- | http://mirror.yandex.ru/mirrors/sage.math.washington.edu/src/index.html | + | cd /home/username/sage |
+ | wget -c http://sage.igor.onlinedirect.bg/src/sage-6.4.1.tar.gz | ||
+ | md5sum sage-6.4.1.tar.gz | ||
- | или | + | **4.** Распаковываем архив с исходниками: |
- | http://sage.igor.onlinedirect.bg/src/index.html | + | tar -xvf sage-6.4.1.tar.gz |
- | wget -c http://sage.igor.onlinedirect.bg/src/sage-5.5.tar | + | где ''sage-6.4.1.tar.gz'' заменить на имя скачанного файла. |
- | md5sum sage-5.5.tar | + | |
- | Сравниваем контрольную сумму с указанной на сайте зеркала, с которого был загружен архив. | + | **5.** Переходим в распакованный каталог: |
- | Распаковываем архив с исходниками: | + | cd sage-6.4.1/ |
- | cd /opt | + | Для компиляции в 4 потока выполняем: |
- | tar xvf sage-5.5.tar | + | export MAKE="make -j4" |
- | где s//age-5.5.tar// заменить на имя скачанного файла. | + | **6.** Запускаем сборку: |
- | Переходим в распакованный каталог: | + | make |
- | cd sage-5.5/ | + | В случае использования пакетов, не входящих в комплект поставки Sage, после обновления самого Sage, необходимо обновить также и [[sage#Дополнительные пакеты|дополнительные пакеты]]. |
- | Для компиляции в 4 потока выполняем: | + | ===== Дополнительные пакеты ===== |
- | export MAKE="make -j4" | + | |
- | Запускаем сборку: | + | ==== Из коллекции Sage ==== |
- | make | + | Sage содержит информацию о ряде пакетов, которые проверены на работоспособность в среде Sage и внесены в соответствующий список. Получить полный список таких пакетов можно следующим образом((http://doc.sagemath.org/html/en/reference/misc/sage/misc/package.html?highlight=list_packages)): |
- | или | + | |
- | make ssl | + | |
- | для сборки с поддержкой OpenSSL | + | |
- | Если всё это выполняется в GNU Screen на удалённом компьютере, то "отсоединяем" консоль Screen от текущего экрана последовательным нажатием клавиш: | + | sage: from sage.misc.package import list_packages |
+ | sage: list_packages() | ||
- | Ctrl+a d | + | Список довольно велик, и чтобы отобразить только пакеты из определённого класса, можно указать аргумент этой функции: |
- | Чтобы потом снова подключиться к запущенной сессии screen, нужно выполнить | + | |
- | screen -r | + | |
- | В случае, если произошло "аварийное" отключение от сессии screen, его нужно сперва отключить от несуществующего более экрана, а затем подключить к нашему: | + | |
- | screen -dr | + | |
- | You *should* be able to move the sage-x.y.z/ directory anywhere you | + | sage: list_packages('standard') |
- | want. If you copy the sage script or make a symbolic link to it, you | + | sage: list_packages('optional') |
- | should modify the script to reflect this (as instructed at the top of | + | sage: list_packages('experimental') |
- | the script). It is best if the path to Sage does not have any spaces in | + | sage: list_packages('pip') |
- | it. | + | |
- | Создаём символическую ссылку на исполнимый файл Sage: | + | Пакеты всех классов, кроме ''pip'', устанавливаются следующим образом: |
- | ln -fs /opt/sage-5.5/sage /usr/local/bin/sage | + | sage -i <имя_пакета> |
- | В случае использования пакетов, не входящих в комплект поставки Sage, после обновления Sage-сервера, необходимо обновить также и [[sage#Дополнительные пакеты|дополнительные пакеты]]. | + | Пакеты из класса ''pip'', устанавливаются следующим образом: |
- | ===== Дополнительные пакеты ===== | + | |
+ | sage -pip install <имя_пакета> | ||
- | В общем, если я правильно понял, то ключевой приём такой: | + | === chardet === |
- | sage -python setup.py install | + | |
- | Т.е. качаешь пакет, распаковываешь его куда-то. Заходишь в это "куда-то", но там вместо стандартного "python setup.py install" мутишь то, что я написал. Хотя, перед этим лучше прочесть README или INSTALL в самом архиве пакета, понимая, что когда попадётся там команда типа приведённой выше, нужно всунуть "sage -python" вместо питона. | + | Библиотека [[https://github.com/chardet/chardet | chardet]] позволяет автоматически определять кодировку текстовых файлов и просматривать их в корректном виде. Поскольку этот пакет входит в списки Sage, но входит в класс ''pip'', устанавливаем его следующим образом: |
+ | |||
+ | sage -pip install chardet | ||
==== Пакеты R ==== | ==== Пакеты R ==== | ||
Рядок 103: | Рядок 96: | ||
sage: r.install_packages('tseriesChaos') | sage: r.install_packages('tseriesChaos') | ||
- | ==== mlpy ==== | + | ==== Другие пакеты ==== |
+ | |||
+ | Если я правильно понимаю, ключевой приём такой: | ||
+ | sage -python setup.py install | ||
+ | |||
+ | Т.е. скачиваем пакет, распаковываем его куда-то. Заходим в это "куда-то", но там вместо стандартного "''python setup.py install''" запускаем то, что написано выше. Хотя, перед этим лучше прочесть README или INSTALL в самом архиве пакета, понимая, что когда попадётся там команда типа приведённой выше, нужно вместо "''python''" подставить "''sage -python''". | ||
+ | |||
+ | === mlpy === | ||
http://mlpy.sourceforge.net/ | http://mlpy.sourceforge.net/ | ||
Рядок 118: | Рядок 118: | ||
# sage -python setup.py install | # sage -python setup.py install | ||
- | ==== spectrum ==== | + | === spectrum === |
Для установки пакета spectrum потребовалось предварительно установить пакет easydev: | Для установки пакета spectrum потребовалось предварительно установить пакет easydev: | ||
Рядок 140: | Рядок 140: | ||
/opt/sage/sage -i pyopenssl | /opt/sage/sage -i pyopenssl | ||
- | ===== Debian ===== | + | |
+ | |||
+ | ===== На удалённом сервере ===== | ||
+ | |||
+ | Установка на сервер отличается от установки на локальный компьютер тем, что: | ||
+ | * Sage обычно устанавливается не в домашний каталог отдельного пользователя, а в //системный каталог//; | ||
+ | * запускается такой сервер также не от имени какого-либо реального пользователя, а от имени некоторого системного, специально созданного //виртуального пользователя//; | ||
+ | * от такого сервера обычно требуется //автоматический запуск//; | ||
+ | * для безопасного доступа к такому серверу, необходима //поддержка протокола HTTPS//; | ||
+ | * поскольку процесс компиляции может быть длительным, крайне желательно //работать через программу// ''screen''. | ||
+ | |||
+ | ==== Перед установкой ==== | ||
+ | |||
+ | Установим необходимые дополнительные библиотеки: | ||
+ | |||
+ | Для Debian GNU/Linux и Ubuntu | ||
+ | |||
+ | sudo apt-get install openssl libssl-dev libpng12-dev screen | ||
+ | |||
+ | //OpenSSL// нужен для опции "secure" Sage Notebook'а. Работа по протоколу HTTPS. | ||
+ | |||
+ | //libpng// нужно для R. Экспорт в PNG-файлы. | ||
+ | |||
+ | //screen// удобен для выполнения длительных операций на удалённом сервере, например, по SSH. | ||
+ | |||
+ | Создадим группу и пользователя, от имени которых в дальнейшем будет запускаться Sage-сервер: | ||
+ | |||
+ | groupadd sagenb | ||
+ | useradd -d /home/sagenb -g sagenb -m -s /usr/sbin/nologin sagenb | ||
+ | |||
+ | Создадим каталог для общесистемной установки Sage: | ||
+ | |||
+ | sudo mkdir /opt/sage | ||
+ | |||
+ | Далее выполняем то, что описано в разделе [[sage#Обновление1 |"Обновление"]]. | ||
+ | |||
+ | ==== Обновление ==== | ||
+ | |||
+ | В случае подключения к удалённому компьютеру по SSH, после подключения запускаем | ||
+ | |||
+ | screen | ||
+ | |||
+ | и все дальнейшие команды выполняем в его командной строке. | ||
+ | |||
+ | **1.** Эвакуируем папку ''/home/sagenb/.sage'' | ||
+ | |||
+ | cd archive_catalog | ||
+ | tar -cvJf sage_home_backup-20120918.tar.xz /home/sagenb/.sage | ||
+ | |||
+ | Вместо даты ''20120918'', указанной в примере, разумно указывать текущую дату в формате "ГГГГММДД". 'эarchive_catalogэ' -- каталог, в котором будет создана резервная копия. | ||
+ | |||
+ | **2.** Проверяем, достаточно ли свободного места на диске (потребуется около 3,5 ГБ). | ||
+ | |||
+ | **3.** Загружаем архив свежей версии Sage с одного из [[http://sagemath.org/download-source.html|зеркал]]. | ||
+ | |||
+ | Например, с http://mirror.yandex.ru/mirrors/sage.math.washington.edu/src/index.html или http://sage.igor.onlinedirect.bg/src/index.html и сравниваем контрольную сумму с указанной на сайте зеркала. | ||
+ | |||
+ | wget -c http://sage.igor.onlinedirect.bg/src/sage-6.4.1.tar.gz | ||
+ | md5sum sage-6.4.1.tar.gz | ||
+ | |||
+ | **4.** Распаковываем архив с исходниками: | ||
+ | |||
+ | cd /opt/sage | ||
+ | sudo tar -xvf /path/to/downloaded/sage-6.4.1.tar.gz | ||
+ | |||
+ | где ''sage-6.4.1.tar.gz'' заменить на имя скачанного файла. | ||
+ | |||
+ | **5.** Переходим в распакованный каталог: | ||
+ | |||
+ | cd sage-5.5/ | ||
+ | |||
+ | Для компиляции в 4 потока выполняем: | ||
+ | export MAKE="make -j4" | ||
+ | |||
+ | **6.** Запускаем сборку: | ||
+ | |||
+ | make | ||
+ | или | ||
+ | make ssl | ||
+ | для сборки с поддержкой OpenSSL | ||
+ | |||
+ | **7.** Если всё это выполняется в GNU Screen на удалённом компьютере, то "отсоединяем" консоль Screen от текущего экрана последовательным нажатием клавиш: | ||
+ | |||
+ | Ctrl+a d | ||
+ | Чтобы потом снова подключиться к запущенной сессии screen, нужно выполнить | ||
+ | screen -r | ||
+ | В случае, если произошло "аварийное" отключение от сессии screen, его нужно сперва отключить от несуществующего более экрана, а затем подключить к нашему: | ||
+ | screen -dr | ||
+ | |||
+ | **8.** Для удобства общесистемного использования Sage, удобно создать ссылку на его исполнимый файл в одном из каталогов, перечисленных в переменной окружения ''PATH''. Обычно подходит каталог ''/usr/local/bin/''. После успешной сборки 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 /opt/sage-5.5/sage /usr/local/bin/sage | ||
+ | |||
+ | В случае использования пакетов, не входящих в комплект поставки Sage, после обновления Sage-сервера, необходимо обновить также и [[sage#Дополнительные пакеты|дополнительные пакеты]]. | ||
+ | |||
+ | |||
+ | ==== Автозапуск ==== | ||
+ | |||
+ | Ниже приводится пример построения сценария автозапуска Sage-сервера для Debian или Ubuntu. | ||
Если Sage компилировали **без поддержки //OpenSSL//**, то опцию "secure" нужно выключить. | Если Sage компилировали **без поддержки //OpenSSL//**, то опцию "secure" нужно выключить. | ||
- | DAEMON_ARGS='-n interface=192.168.1.101 port=8000 secure=False automatic_login=False' | + | DAEMON_ARGS='--notebook=sagenb interface=192.168.1.101 port=8000 secure=False automatic_login=False' |
| | ||
в противном случае предпочтительно оставить её включённой: | в противном случае предпочтительно оставить её включённой: | ||
- | DAEMON_ARGS='-n interface=192.168.1.101 port=8000 secure=True automatic_login=False' | + | DAEMON_ARGS='--notebook=sagenb interface=192.168.1.101 port=8000 secure=True automatic_login=False' |
| | ||
- | Здесь 192.168.1.101 -- сетевой адрес компьютера, на котором будет работать Sage Notebook сервер. Если оставить строку адреса пустой, т.е. | + | Здесь ''192.168.1.101'' -- сетевой адрес компьютера, на котором будет работать Sage Notebook сервер. Если оставить строку адреса пустой, т.е. |
- | DAEMON_ARGS='-n interface= port=8000 secure=True automatic_login=False' | + | DAEMON_ARGS='--notebook=sagenb interface= port=8000 secure=True automatic_login=False' |
| | ||
то Sage Notebook сервер должен работать на всех сетевых интерфейсах компьютера. | то Sage Notebook сервер должен работать на всех сетевых интерфейсах компьютера. | ||
Рядок 185: | Рядок 291: | ||
# Listen on localhost only. Useful for accessing through the HTTP proxy on the same host. | # Listen on localhost only. Useful for accessing through the HTTP proxy on the same host. | ||
- | #DAEMON_ARGS='-n interface=localhost port=8000 secure=False automatic_login=False' | + | #DAEMON_ARGS='--notebook=sagenb interface=localhost port=8000 secure=False automatic_login=False' |
# | # | ||
# Listen on all interfaces with SSL encryption | # Listen on all interfaces with SSL encryption | ||
- | DAEMON_ARGS='-n interface= port=8000 secure=True automatic_login=False' | + | DAEMON_ARGS='--notebook=sagenb interface= port=8000 secure=True automatic_login=False' |
# | # | ||
# Listen on all interfaces without SSL (DANGEROUS!!!). For testing purposes only. | # Listen on all interfaces without SSL (DANGEROUS!!!). For testing purposes only. | ||
- | #DAEMON_ARGS='-n interface= port=8000 secure=False automatic_login=False' | + | #DAEMON_ARGS='--notebook=sagenb interface= port=8000 secure=False automatic_login=False' |
USERNAME="sagenb" | USERNAME="sagenb" | ||
Рядок 333: | Рядок 439: | ||
</file> | </file> | ||
- | ===== После установки/обновления ===== | + | ==== После установки/обновления ==== |
/etc/init.d/sage restart | /etc/init.d/sage restart | ||
- | ===== Sage через прокси ===== | + | ==== Sage через прокси ==== |
Чтобы иметь доступ к Sage-серверу с компьютеров, которым не разрешены соединения в нестандартные порты (например, в 8000), можно настроить прокси-сервер, который будет ожидать соединения на 80-м порту (в случае HTTP) или на 443-м порту (в случае HTTPS) и перенаправлять их запущенному Sage-серверу. | Чтобы иметь доступ к Sage-серверу с компьютеров, которым не разрешены соединения в нестандартные порты (например, в 8000), можно настроить прокси-сервер, который будет ожидать соединения на 80-м порту (в случае HTTP) или на 443-м порту (в случае HTTPS) и перенаправлять их запущенному Sage-серверу. | ||
- | Создадим для этого SSL-сертификат сервера: | + | Создадим для этого SSL-сертификат сервера((Самоподписанный сертификат по умолчанию не считается доверенным большинством программ, поэтому они будут выдавать запрос на его подтверждение. Можно получить доверенный SSL-сертификат для своего домена бесплатно -- см. [[https://letsencrypt.readthedocs.org/en/latest/intro.html | Let’s Encrypt ]])): |
openssl req -new -x509 -days 365 -nodes -out "sagenb.wombat.org.ua.crt" -keyout "sagenb.wombat.org.ua.key" | openssl req -new -x509 -days 365 -nodes -out "sagenb.wombat.org.ua.crt" -keyout "sagenb.wombat.org.ua.key" | ||
Рядок 347: | Рядок 453: | ||
Полученные файлы поместим в ''/etc/sagenb/certs/'' | Полученные файлы поместим в ''/etc/sagenb/certs/'' | ||
- | ==== Apache ==== | + | === Apache === |
При использовании веб-сервера Apache, необходимо в его файле конфигурации указать следующее: | При использовании веб-сервера Apache, необходимо в его файле конфигурации указать следующее: | ||
Рядок 378: | Рядок 484: | ||
Также нужно убедиться, что по умолчанию загружаются модули ''mod_proxy'', ''mod_ssl'' и ''mod_proxy_http''. | Также нужно убедиться, что по умолчанию загружаются модули ''mod_proxy'', ''mod_ssl'' и ''mod_proxy_http''. | ||
+ | ====== Использование Sage ====== | ||
+ | |||
+ | == Sage Tutorial == | ||
+ | |||
+ | [[http://sagemath.org/doc/tutorial/index.html | Sage Tutorial ]] | ||
+ | |||
+ | [[http://freetonik.com/sage/tutorial/ | Русская версия учебного пособия Sage]] | ||
+ | |||
+ | == SDSU Sage Tutorial == | ||
+ | |||
+ | [[http://www-rohan.sdsu.edu/~mosulliv/Teaching/sdsu-sage-tutorial/ | SDSU Sage Tutorial]] | ||
+ | |||
+ | == Books == | ||
+ | |||
+ | [[http://www.gregorybard.com/sage_for_undergraduates_color.pdf.zip | Sage for Undergraduates]] | ||
+ | |||
+ | [[https://www.packtpub.com/hardware-and-creative/sage-beginners-guide | Sage Beginner's Guide by Craig Finch]] | ||
+ | |||
+ | |||
+ | == wikisage == | ||
+ | |||
+ | [[http://wikisage.ru/ | wikisage.ru]] | ||
+ | |||
+ | |||
+ | == William Stein courses == | ||
+ | |||
+ | [[http://wstein.org/courses/]] |