Numina Deployment in Solaris 10¶
Solaris 10 is the Operative System (OS) under a substantial part of the GTC Control System runs. The installation of the Python stack in this OS is not trivial, so in the following a description of the required steps is provided.
Basic Tools Installation¶
Firstly a GNU compiler collection should be installed (compilers for C, C++ and Fortran). The opencsw project provides precompiled binaries of these programs. Refer to the project’s documentation to setup opencsw in the system and then install with:
/opt/csw/bin/pkgutil -i CSWgcc4core
/opt/csw/bin/pkgutil -i CSWgcc4g++
/opt/csw/bin/pkgutil -i CSWgcc4gfortran
Additionally, both the Pyhton program and the developer tools can also be installed from opencsw
/opt/csw/bin/pkgutil -i CSWpython27
/opt/csw/bin/pkgutil -i CSWpython27-dev
ATLAS and LAPACK Installation¶
ATLAS is a linear algebra library. Numpy can be installed without any linear algebra library, but scipy can’t.
LAPACK provides Fortran routines for solving systems of simultaneous linear equations, least-squares solutions of linear systems of equations, eigenvalue problems, and singular value problems.
ATLAS needs to be built with LAPACK support, so both libraries can be found at source code of ATLAS and source code of LAPACK.
Once the source code of ATLAS and LAPACK are downloaded, the instructions
to build them can be found at
build documentation
which basically requires to setup a different directory to run
the configure
command in it and then make install
.
As an example, these configure
and make
lines are used in
our development machine:
../configure --cc=/opt/csw/bin/gcc --shared --with-netlib-lapack-tarfile=/path/to/lapack-3.5.0.tar.gz --prefix=/opt/atlas
make
make install
The install step may require root privileges. The libraries and headers will
be installed under some prefix (in our case, /opt/atlas/include
and
/opt/atlas/lib
).
Numpy Installation¶
Download the latest numpy source code from numpy’s webpage.
Numpy source distribution contains a file called site.cfg
which describes the different types of linear algebra libraries present in
the system.
Copy site.cfg.example
to site.cfg
and edit
the section containing the ATLAS libraries. Everything in the file should
be commented except the following
[atlas]
library_dirs = /opt/atlas/lib
include_dirs = /opt/atlas/include
The paths should point to the version of ATLAS installed in the system.
Other packages (such as scipy) will also use a site.cfg
file. To avoid
editing the same file again, copy site.cfg
to .numpy-site.cfg
in
the $HOME
directory.
cp site.cfg $HOME/.numpy-site.cfg
After this configuration step, numpy should be built.
python setup.py build
python setup.py install --prefix /path/to/my/python/packages
The last step may require root privileges. Notice that you can use
--user
instead of --prefix
for local packages.
Scipy Installation¶
As of this writing, the last released version of scipy is 0.15.1 and it doesn’t work in Solaris 10 due to a bug [1].
This bug may be fixed in next stable release (check the release notes of scipy), but meanwhile a patch can be used.
Download the scipy 0.15.1 source code from scipy’s webpage. Then download the patch: scipy151-solaris10.patch.
Extract the source code and apply the patch with the command:
patch -p1 -u -d scipy-0.15.1 < scipy151-solaris10.patch
After this step, build and install scipy normally.
python setup.py build
python setup.py install --prefix /path/to/my/python/packages
During the build step, local .numpy-site.cfg
will be read so the
path to the ATLAS libraries will be used.
The prefix used to install scipy must be the same than the used with numpy. In general all python packages must be installed under the same prefix.
Pip Installation¶
To install pip, download get-pip.py.
Then run the following:
python get-pip.py
Refer to https://pip.pypa.io/en/latest/installing.html#install-pip to more detailed documentation.
Numina Installation¶
Finally, numina can be installed directly using pip
. Remember to set
the same prefix used previously with numpy and scipy.
pip install numina --prefix /path/to/my/python/packages
[1] | https://github.com/scipy/scipy/issues/4704 |