Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Both sides previous revision Попередня ревізія Наступна ревізія | Попередня ревізія | ||
sage [2014/06/30 13:54] wombat [Дополнительные пакеты] spectrum |
sage [2016/10/25 12:45] (поточний) wombat Дополнительные пакеты |
||
---|---|---|---|
Рядок 1: | Рядок 1: | ||
- | ===== Первичная установка ===== | + | ====== Sage ====== |
+ | |||
+ | Приёмы работы и некоторые готовые рецепты описаны [[sage_tricks | здесь]]. | ||
+ | |||
+ | ====== Установка ====== | ||
+ | |||
+ | ===== На своём компьютере ===== | ||
+ | |||
+ | ==== Перед установкой ==== | ||
+ | |||
+ | Поскольку при запуске и использовании Sage на одном и том же (своём) компьютере нет нужды заботиться ни о шифровании передаваемых данных, ни о доступе к удалённой консоли, в которой происходит сборка, практически никакие дополнительные программы не нужны. | ||
+ | |||
+ | Для Debian GNU/Linux и Ubuntu | ||
+ | |||
+ | sudo apt-get install libpng12-dev | ||
+ | |||
+ | //libpng// нужно для экспорта изображений в PNG-файлы в R. | ||
+ | |||
+ | Создадим каталог, в который будем устанавливать Sage. | ||
+ | |||
+ | mkdir /home/username/sage | ||
+ | |||
+ | Далее продолжить согласно разделу "Обновление" | ||
+ | |||
+ | |||
+ | ==== Обновление ==== | ||
+ | |||
+ | **1.** Эвакуируем папку, в которой хранятся все рабочие листы нашего пользователя (///home/username/.sage//): | ||
+ | |||
+ | cd archive_catalog | ||
+ | tar -cvJf sage_home_backup-20120918.tar.xz /home/username/.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 | ||
+ | |||
+ | 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.** Распаковываем архив с исходниками: | ||
+ | |||
+ | tar -xvf sage-6.4.1.tar.gz | ||
+ | |||
+ | где ''sage-6.4.1.tar.gz'' заменить на имя скачанного файла. | ||
+ | |||
+ | **5.** Переходим в распакованный каталог: | ||
+ | |||
+ | cd sage-6.4.1/ | ||
+ | |||
+ | Для компиляции в 4 потока выполняем: | ||
+ | export MAKE="make -j4" | ||
+ | |||
+ | **6.** Запускаем сборку: | ||
+ | |||
+ | make | ||
+ | |||
+ | В случае использования пакетов, не входящих в комплект поставки Sage, после обновления самого Sage, необходимо обновить также и [[sage#Дополнительные пакеты|дополнительные пакеты]]. | ||
+ | |||
+ | ===== Дополнительные пакеты ===== | ||
+ | |||
+ | ==== Из коллекции Sage ==== | ||
+ | |||
+ | Sage содержит информацию о ряде пакетов, которые проверены на работоспособность в среде Sage и внесены в соответствующий список. Получить полный список таких пакетов можно следующим образом((http://doc.sagemath.org/html/en/reference/misc/sage/misc/package.html?highlight=list_packages)): | ||
+ | |||
+ | sage: from sage.misc.package import list_packages | ||
+ | sage: list_packages() | ||
+ | |||
+ | Список довольно велик, и чтобы отобразить только пакеты из определённого класса, можно указать аргумент этой функции: | ||
+ | |||
+ | sage: list_packages('standard') | ||
+ | sage: list_packages('optional') | ||
+ | sage: list_packages('experimental') | ||
+ | sage: list_packages('pip') | ||
+ | |||
+ | Пакеты всех классов, кроме ''pip'', устанавливаются следующим образом: | ||
+ | |||
+ | sage -i <имя_пакета> | ||
+ | |||
+ | Пакеты из класса ''pip'', устанавливаются следующим образом: | ||
+ | |||
+ | sage -pip install <имя_пакета> | ||
+ | |||
+ | === chardet === | ||
+ | |||
+ | Библиотека [[https://github.com/chardet/chardet | chardet]] позволяет автоматически определять кодировку текстовых файлов и просматривать их в корректном виде. Поскольку этот пакет входит в списки Sage, но входит в класс ''pip'', устанавливаем его следующим образом: | ||
+ | |||
+ | sage -pip install chardet | ||
+ | |||
+ | ==== Пакеты R ==== | ||
+ | |||
+ | sage: r.install_packages('tseriesChaos') | ||
+ | |||
+ | ==== Другие пакеты ==== | ||
+ | |||
+ | Если я правильно понимаю, ключевой приём такой: | ||
+ | sage -python setup.py install | ||
+ | |||
+ | Т.е. скачиваем пакет, распаковываем его куда-то. Заходим в это "куда-то", но там вместо стандартного "''python setup.py install''" запускаем то, что написано выше. Хотя, перед этим лучше прочесть README или INSTALL в самом архиве пакета, понимая, что когда попадётся там команда типа приведённой выше, нужно вместо "''python''" подставить "''sage -python''". | ||
+ | |||
+ | === mlpy === | ||
+ | |||
+ | http://mlpy.sourceforge.net/ | ||
+ | |||
+ | wget 'http://downloads.sourceforge.net/project/mlpy/mlpy 3.5.0/mlpy-3.5.0.tar.gz' | ||
+ | tar xvf mlpy-3.5.0.tar.gz | ||
+ | |||
+ | В файле документации к этому пакету //docs/source/install.txt// написано так: | ||
+ | |||
+ | $ python setup.py install | ||
+ | |||
+ | Стало быть, нужно делать так: | ||
+ | |||
+ | # sage -python setup.py install | ||
+ | |||
+ | === spectrum === | ||
+ | |||
+ | Для установки пакета spectrum потребовалось предварительно установить пакет easydev: | ||
+ | |||
+ | wget -cS 'https://pypi.python.org/packages/source/e/easydev/easydev-0.6.12.tar.gz' | ||
+ | tar xvf easydev-0.6.12.tar.gz | ||
+ | cd easydev-0.6.12/ | ||
+ | /opt/sage/sage -python setup.py install | ||
+ | |||
+ | wget -cS 'https://pypi.python.org/packages/source/s/spectrum/spectrum-0.5.6.tar.gz' | ||
+ | tar xvf spectrum-0.5.6.tar.gz | ||
+ | cd spectrum-0.5.6 | ||
+ | /opt/sage/sage -python setup.py install | ||
+ | |||
+ | Для пакетов, находящихся в PyPI, существует и такой способ установки: | ||
+ | |||
+ | /opt/sage/sage --python -m easy_install <имя_пакета> | ||
+ | |||
+ | Однако, этот способ не заработал даже после установки pyopenssl: | ||
+ | |||
+ | /opt/sage/sage -i pyopenssl | ||
+ | |||
+ | |||
+ | |||
+ | ===== На удалённом сервере ===== | ||
+ | |||
+ | Установка на сервер отличается от установки на локальный компьютер тем, что: | ||
+ | * Sage обычно устанавливается не в домашний каталог отдельного пользователя, а в //системный каталог//; | ||
+ | * запускается такой сервер также не от имени какого-либо реального пользователя, а от имени некоторого системного, специально созданного //виртуального пользователя//; | ||
+ | * от такого сервера обычно требуется //автоматический запуск//; | ||
+ | * для безопасного доступа к такому серверу, необходима //поддержка протокола HTTPS//; | ||
+ | * поскольку процесс компиляции может быть длительным, крайне желательно //работать через программу// ''screen''. | ||
+ | |||
+ | ==== Перед установкой ==== | ||
+ | |||
+ | Установим необходимые дополнительные библиотеки: | ||
Для Debian GNU/Linux и Ubuntu | Для Debian GNU/Linux и Ubuntu | ||
- | apt-get install openssl libssl-dev libpng12-dev screen | + | sudo apt-get install openssl libssl-dev libpng12-dev screen |
//OpenSSL// нужен для опции "secure" Sage Notebook'а. Работа по протоколу HTTPS. | //OpenSSL// нужен для опции "secure" Sage Notebook'а. Работа по протоколу HTTPS. | ||
Рядок 10: | Рядок 164: | ||
//screen// удобен для выполнения длительных операций на удалённом сервере, например, по SSH. | //screen// удобен для выполнения длительных операций на удалённом сервере, например, по SSH. | ||
+ | |||
+ | Создадим группу и пользователя, от имени которых в дальнейшем будет запускаться Sage-сервер: | ||
groupadd sagenb | groupadd sagenb | ||
useradd -d /home/sagenb -g sagenb -m -s /usr/sbin/nologin sagenb | useradd -d /home/sagenb -g sagenb -m -s /usr/sbin/nologin sagenb | ||
- | ===== Обновление ===== | + | Создадим каталог для общесистемной установки Sage: |
- | В случае работы на удалённом компьютере, подключаемся к нему по SSH, запускаем | + | sudo mkdir /opt/sage |
+ | |||
+ | Далее выполняем то, что описано в разделе [[sage#Обновление1 |"Обновление"]]. | ||
+ | |||
+ | ==== Обновление ==== | ||
+ | |||
+ | В случае подключения к удалённому компьютеру по SSH, после подключения запускаем | ||
screen | screen | ||
Рядок 22: | Рядок 184: | ||
и все дальнейшие команды выполняем в его командной строке. | и все дальнейшие команды выполняем в его командной строке. | ||
- | Эвакуируем папку ///home/sagenb/.sage// | + | **1.** Эвакуируем папку ''/home/sagenb/.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/sagenb/.sage | ||
- | Вместо даты '20120918', указанной в примере, разумно указывать текущую дату в формате "ГГГГММДД". 'archive_catalog' -- каталог, в котором будет создана резервная копия. | + | Вместо даты ''20120918'', указанной в примере, разумно указывать текущую дату в формате "ГГГГММДД". 'эarchive_catalogэ' -- каталог, в котором будет создана резервная копия. |
- | Проверяем, достаточно ли свободного места на диске (потребуется около 3,5 ГБ). | + | **2.** Проверяем, достаточно ли свободного места на диске (потребуется около 3,5 ГБ). |
- | + | ||
- | Загружаем архив свежей версии 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 | + | **3.** Загружаем архив свежей версии Sage с одного из [[http://sagemath.org/download-source.html|зеркал]]. |
- | wget -c http://sage.igor.onlinedirect.bg/src/sage-5.5.tar | + | Например, с http://mirror.yandex.ru/mirrors/sage.math.washington.edu/src/index.html или http://sage.igor.onlinedirect.bg/src/index.html и сравниваем контрольную сумму с указанной на сайте зеркала. |
- | md5sum sage-5.5.tar | + | |
- | Сравниваем контрольную сумму с указанной на сайте зеркала, с которого был загружен архив. | + | wget -c http://sage.igor.onlinedirect.bg/src/sage-6.4.1.tar.gz |
+ | md5sum sage-6.4.1.tar.gz | ||
- | Распаковываем архив с исходниками: | + | **4.** Распаковываем архив с исходниками: |
- | cd /opt | + | cd /opt/sage |
- | tar xvf sage-5.5.tar | + | sudo tar -xvf /path/to/downloaded/sage-6.4.1.tar.gz |
- | где s//age-5.5.tar// заменить на имя скачанного файла. | + | где ''sage-6.4.1.tar.gz'' заменить на имя скачанного файла. |
- | Переходим в распакованный каталог: | + | **5.** Переходим в распакованный каталог: |
cd sage-5.5/ | cd sage-5.5/ | ||
Рядок 60: | Рядок 214: | ||
export MAKE="make -j4" | export MAKE="make -j4" | ||
- | Запускаем сборку: | + | **6.** Запускаем сборку: |
make | make | ||
Рядок 67: | Рядок 221: | ||
для сборки с поддержкой OpenSSL | для сборки с поддержкой OpenSSL | ||
- | Если всё это выполняется в GNU Screen на удалённом компьютере, то "отсоединяем" консоль Screen от текущего экрана последовательным нажатием клавиш: | + | **7.** Если всё это выполняется в GNU Screen на удалённом компьютере, то "отсоединяем" консоль Screen от текущего экрана последовательным нажатием клавиш: |
Ctrl+a d | Ctrl+a d | ||
Рядок 74: | Рядок 228: | ||
В случае, если произошло "аварийное" отключение от сессии screen, его нужно сперва отключить от несуществующего более экрана, а затем подключить к нашему: | В случае, если произошло "аварийное" отключение от сессии screen, его нужно сперва отключить от несуществующего более экрана, а затем подключить к нашему: | ||
screen -dr | screen -dr | ||
+ | |||
+ | **8.** Для удобства общесистемного использования Sage, удобно создать ссылку на его исполнимый файл в одном из каталогов, перечисленных в переменной окружения ''PATH''. Обычно подходит каталог ''/usr/local/bin/''. После успешной сборки Sage мы видим такое сообщение: | ||
You *should* be able to move the sage-x.y.z/ directory anywhere you | You *should* be able to move the sage-x.y.z/ directory anywhere you | ||
Рядок 86: | Рядок 242: | ||
В случае использования пакетов, не входящих в комплект поставки Sage, после обновления Sage-сервера, необходимо обновить также и [[sage#Дополнительные пакеты|дополнительные пакеты]]. | В случае использования пакетов, не входящих в комплект поставки Sage, после обновления Sage-сервера, необходимо обновить также и [[sage#Дополнительные пакеты|дополнительные пакеты]]. | ||
- | ===== Дополнительные пакеты ===== | ||
- | В общем, если я правильно понял, то ключевой приём такой: | + | ==== Автозапуск ==== |
- | sage -python setup.py install | + | |
- | Т.е. качаешь пакет, распаковываешь его куда-то. Заходишь в это "куда-то", но там вместо стандартного "python setup.py install" мутишь то, что я написал. Хотя, перед этим лучше прочесть README или INSTALL в самом архиве пакета, понимая, что когда попадётся там команда типа приведённой выше, нужно всунуть "sage -python" вместо питона. | + | Ниже приводится пример построения сценария автозапуска Sage-сервера для Debian или Ubuntu. |
- | + | ||
- | ==== Пакеты R ==== | + | |
- | + | ||
- | sage: r.install_packages('tseriesChaos') | + | |
- | + | ||
- | ==== mlpy ==== | + | |
- | + | ||
- | http://mlpy.sourceforge.net/ | + | |
- | + | ||
- | wget 'http://downloads.sourceforge.net/project/mlpy/mlpy 3.5.0/mlpy-3.5.0.tar.gz' | + | |
- | tar xvf mlpy-3.5.0.tar.gz | + | |
- | + | ||
- | В файле документации к этому пакету //docs/source/install.txt// написано так: | + | |
- | + | ||
- | $ python setup.py install | + | |
- | + | ||
- | Стало быть, нужно делать так: | + | |
- | + | ||
- | # sage -python setup.py install | + | |
- | + | ||
- | ==== spectrum ==== | + | |
- | ===== Debian ===== | + | |
Если 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 сервер должен работать на всех сетевых интерфейсах компьютера. | ||
Рядок 157: | Рядок 289: | ||
###DAEMON=/usr/sbin/$NAME | ###DAEMON=/usr/sbin/$NAME | ||
##DAEMON_ARGS="--options args" | ##DAEMON_ARGS="--options args" | ||
- | DAEMON_ARGS='-n interface= port=8000 secure=True automatic_login=False' | + | |
+ | # Listen on localhost only. Useful for accessing through the HTTP proxy on the same host. | ||
+ | #DAEMON_ARGS='--notebook=sagenb interface=localhost port=8000 secure=False automatic_login=False' | ||
+ | # | ||
+ | # Listen on all interfaces with SSL encryption | ||
+ | DAEMON_ARGS='--notebook=sagenb interface= port=8000 secure=True automatic_login=False' | ||
+ | # | ||
+ | # Listen on all interfaces without SSL (DANGEROUS!!!). For testing purposes only. | ||
+ | #DAEMON_ARGS='--notebook=sagenb interface= port=8000 secure=False automatic_login=False' | ||
USERNAME="sagenb" | USERNAME="sagenb" | ||
GROUPNAME="sagenb" | GROUPNAME="sagenb" | ||
Рядок 298: | Рядок 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" | ||
Рядок 312: | Рядок 453: | ||
Полученные файлы поместим в ''/etc/sagenb/certs/'' | Полученные файлы поместим в ''/etc/sagenb/certs/'' | ||
- | ==== Apache ==== | + | === Apache === |
При использовании веб-сервера Apache, необходимо в его файле конфигурации указать следующее: | При использовании веб-сервера Apache, необходимо в его файле конфигурации указать следующее: | ||
<file conf /etc/apache2.conf> | <file conf /etc/apache2.conf> | ||
+ | <VirtualHost *:80> | ||
+ | ServerName sagenb.wombat.org.ua | ||
+ | Redirect permanent / https://sagenb.wombat.org.ua/ | ||
+ | </VirtualHost> | ||
- | <VirtualHost *:80 *:443> | + | <VirtualHost *:443> |
ServerName sagenb.wombat.org.ua | ServerName sagenb.wombat.org.ua | ||
- | | + | |
ProxyRequests off | ProxyRequests off | ||
- | #SSLProxyEngine On | + | # SSLProxyEngine On |
SSLEngine on | SSLEngine on | ||
SSLCertificateFile "/etc/sagenb/certs/sagenb.wombat.org.ua.crt" | SSLCertificateFile "/etc/sagenb/certs/sagenb.wombat.org.ua.crt" | ||
Рядок 339: | Рядок 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/]] |