+++ /dev/null
-:date: 2011-12-09 16:08:00
-:tags: debian, neuroscience, software, FSL, fslview, chroot, virtualization
-
-.. _chap_schroot_fslview:
-
-Chroot workaround for fslview (HOWTO)
-=====================================
-
-Preamble
---------
-
-Sometimes research software lags behind developments in libraries it relies
-upon, because necessary changes to the code might require considerable effort,
-and thus time. That leads to difficulties building those tools using
-up-to-date library versions due API incompatibility.
-
-That is what happened with fslview_ from the FSL_ suite. Today, at
-the end of 2011, it still relies on Qt3_ and VTK GUI
-support for it.
-
-.. _Qt3: http://doc.qt.nokia.com/3.3/
-
-.. note::
-
- Last version of Qt3, 3.3.8, was released in February 2007, with
- official support by Trolltech terminated later that year.
-
- Qt4 was first released in 2005, and current stable series 4.7
- released appeared in September 2010.
-
-Because of its age and discontinued upstream support, `Qt3 was
-orphaned`_ in Debian, and tools relying on it were encouraged to
-migrate to use Qt4. As a result, although Qt3 itself is still present
-in Debian (and thus Ubuntu), VTK GUI support for Qt3 (package
-`libvtk5.4-qt3`_) which fslview uses, was removed from Debian due to
-Qt3 deprecation. It should be made clear that it was not removed to annoy people,
-but rather because it became unfeasible to maintain its robust building
-and functioning. So nowadays fslview_ is
-present only in those previous releases of Debian and Ubuntu which carry
-the libvtk5.4-qt3 library. Those are -- Debian squeeze (stable), Ubuntu
-nutty and maverick. If you upgraded your system from one of those
-releases, chances are that you still have fslview (and required
-libraries) installed although not they are not available from the APT repository
-anymore. Therefore fresh systems installations will not have them at all.
-
-.. _`Qt3 was orphaned`: http://lists.debian.org/debian-devel/2011/05/msg00236.html
-.. _`libvtk5.4-qt3`: http://packages.debian.org/search?keywords=libvtk5.4-qt3
-
-Workaround
-----------
-
-While everyone is waiting for a new release of fslview_ compatible with Qt4
-there are possible workarounds to keep research going on bleeding edge
-Debian-based operating systems. The first, obvious choice for a FOSS
-enthusiast, is to build fslview_ from source by first building VTK Qt3
-bindings, possibly after building Qt3 itself. While it might be educationally
-valuable and exciting, we are afraid in the end it might be more frustrating
-than useful.
-
-Therefore we would like to suggest another, much more straightforward
-and hopefully painless approach -- lightweight virtualization, or chroot_
-jailing, which exists in Unix-land since 1970s.
-With this exercise in **4 simple steps** we will install a
-complete (minimalistic) installation of Debian stable into a separate
-directory -- without harming the original system installation. We will provide a convenience wrapper to
-run fslview as if it was installed on the "main" system. So your
-system will stay intact while you would enhance it with additional
-software in a stable Debian environment. Moreover if
-security or critical fixes to any components of that installation
-become available, this chroot
-environment, being a complete Debian installation, could be as
-easily upgraded as your main system, thus guaranteeing robust performance.
-
-Although we demonstrate this setup with fslview in mind, such approach
-is generally useful for various use cases. For example, we have used it in
-the opposite situation -- on stable Debian systems we needed to run
-some software available only from Debian unstable or testing, and
-backporting of all required dependencies was either cumbersome or just
-impossible without sacrificing stability of the system.
-
-.. _chroot: http://en.wikipedia.org/wiki/Chroot
-.. _fslview: http://www.fmrib.ox.ac.uk/fsl/fslview
-.. _FSL: http://www.fmrib.ox.ac.uk/fsl
-
-
-Prerequisites
--------------
-
-For this exercise you would need
-
-- 3--20 minutes depending on the bandwidth to the Debian mirror and
- efficiency in cut/paste operations
-
-- root access to the system while performing this setup, although
- end-users of fslview would not need root access after everything
- is set up
-
-- 2 additional tools -- debootstrap_ to install Debian in a directory
- and a convenience utility schroot_ to "enable" such an environment
-
-.. _debootstrap: http://wiki.debian.org/Debootstrap
-.. _schroot: http://packages.debian.org/sid/schroot
-
-
-Procedure
----------
-
-- Install the tools::
-
- sudo apt-get install debootstrap schroot
-
-- Choose a location with enough space (600 MB should be enough) and
- install a complete Debian squeeze installation with fslview::
-
- sudo debootstrap --include=fslview squeeze /srv/chroots/squeeze http://ftp.us.debian.org/debian
-
- .. note::
- You might like to adjust the URL to a `Debian mirror`_ closer to you
-
-.. _`Debian mirror`: http://www.debian.org/mirror/list
-
-- Create schroot_ configuration file ``/etc/schroot/chroot.d/squeeze``
- with the following content::
-
- [squeeze]
- description=Debian squeeze (6.x stable)
- type=directory
- directory=/srv/chroots/squeeze
- users=YOURLOGIN
- aliases=debian,default
-
- Replace YOURLOGIN with a comma separated list of users who should be
- allowed to access this chroot environment (see ``man schroot.conf``
- for more options, e.g. how to specify whole groups with ``groups=...``, etc.)
-
-- At this point you should already be able to invoke any command
- within the chroot environment, so just create a little shell script
- ``/usr/local/bin/fslview``, make it executable and be all set::
-
- echo -e '#!/bin/sh\nschroot -p -c squeeze /usr/bin/fslview "$@"' > /usr/local/bin/fslview
- chmod a+x /usr/local/bin/fslview
-
- .. note::
- You might need to become root for the above.
-
-Optional steps
---------------
-
-Although at this point you can run fslview from the chroot-ed
-environment, we would suggest a few additional steps. For some of
-them (marked with **chroot-root**) you would need to become root in a
-chroot environment via following steps:
-
-- enter chroot using ``schroot -c squeeze -p``
-
-- become root (via ``su`` command, root password should be the same as
- on the main system)
-
-So here are recommended optional additions:
-
-- **chroot-root**: `Enable NeuroDebian repository
- <http://neuro.debian.net/#how-to-use-this-repository>`_. Choose
- ``squeeze`` release and mirror of preference (remove ``sudo`` from
- provided cmdline).
-
-- **chroot-root**: Enable security and functionality updates::
-
- sed -e 's,squeeze,squeeze-updates,g' /etc/apt/sources.list > /etc/apt/sources.list.d/updates.list
- echo 'deb http://security.debian.org/ stable/updates main' > /etc/apt/sources.list.d/security.list
- apt-get update
- apt-get upgrade
-
-- Make fsl atlases accessible within the chroot environment. There
- are two ways and you must choose only **one** of them, otherwise
- you might damage your "main" system installation.
-
- - **chroot-root**: Install atlases packages in the chroot-ed environment::
-
- apt-get install fsl-atlases
-
- Although this is the best/correct way it would require additional 200MB of
- space, possibly duplicating what you already have installed in the
- main system. Also it requires `enabling of NeuroDebian repository
- in chroot environment
- <http://neuro.debian.net/#how-to-use-this-repository>`_.
-
- - Alternatively you can bind-mount those directories with atlases installed on the "main"
- system within chroot. For that edit (as root on the "main"
- system) ``/etc/schroot/default/fstab`` and add following entries::
-
- /usr/share/fsl/data/atlases /usr/share/fsl/data/atlases none rw,bind 0 0
- /usr/share/data /usr/share/data none rw,bind 0 0
-
- You need to be aware of the potential consequences of this second approach:
- Any package that installs files under /usr/share/data will modify files in
- the same directory outside the chroot as well. If you don't want to risk
- that don't use this method and simply install the necessary data packages
- inside the chroot environment too, as describe before.
-
- .. note::
- Similarly you can bind-mount any other directory you would like
- to make visible in chroot. Just be careful to not "overlap"
- with system directories in chroot which already carry something.
-
-Also you might like to read ``man schroot`` on how to enable
-persistent sessions so that chroot initiation could be done ones
-during boot instead of per each fslview invocation
-
-If you have any comments (typos, improvements, etc) -- feel welcome to
-leave a comment below, or just email `us@NeuroDebian`_ .
-
-.. _us@NeuroDebian: http://neuro.debian.net/#contacts
--- /dev/null
+:date: 2011-12-12 12:05:00
+:tags: debian, neuroscience, software, FSL, fslview, chroot, virtualization
+
+.. _chap_schroot_fslview:
+
+Chroot workaround for fslview (HOWTO)
+=====================================
+
+Preamble
+--------
+
+Sometimes research software lags behind developments in libraries it relies
+upon, because necessary changes to the code might require considerable effort,
+and thus time. That leads to difficulties building those tools using
+up-to-date library versions due API incompatibility.
+
+That is what happened with fslview_ from the FSL_ suite. Today, at
+the end of 2011, it still relies on Qt3_ and VTK GUI
+support for it.
+
+.. _Qt3: http://doc.qt.nokia.com/3.3/
+
+.. note::
+
+ Last version of Qt3, 3.3.8, was released in February 2007, with
+ official support by Trolltech terminated later that year.
+
+ Qt4 was first released in 2005, and current stable series 4.7
+ released appeared in September 2010.
+
+Because of its age and discontinued upstream support, `Qt3 was
+orphaned`_ in Debian, and tools relying on it were encouraged to
+migrate to use Qt4. As a result, although Qt3 itself is still present
+in Debian (and thus Ubuntu), VTK GUI support for Qt3 (package
+`libvtk5.4-qt3`_) which fslview uses, was removed from Debian due to
+Qt3 deprecation. It should be made clear that it was not removed to annoy people,
+but rather because it became unfeasible to maintain its robust building
+and functioning. So nowadays fslview_ is
+present only in those previous releases of Debian and Ubuntu which carry
+the libvtk5.4-qt3 library. Those are -- Debian squeeze (stable), Ubuntu
+nutty and maverick. If you upgraded your system from one of those
+releases, chances are that you still have fslview (and required
+libraries) installed although not they are not available from the APT repository
+anymore. Therefore fresh systems installations will not have them at all.
+
+.. _`Qt3 was orphaned`: http://lists.debian.org/debian-devel/2011/05/msg00236.html
+.. _`libvtk5.4-qt3`: http://packages.debian.org/search?keywords=libvtk5.4-qt3
+
+Workaround
+----------
+
+While everyone is waiting for a new release of fslview_ compatible with Qt4
+there are possible workarounds to keep research going on bleeding edge
+Debian-based operating systems. The first, obvious choice for a FOSS
+enthusiast, is to build fslview_ from source by first building VTK Qt3
+bindings, possibly after building Qt3 itself. While it might be educationally
+valuable and exciting, we are afraid in the end it might be more frustrating
+than useful.
+
+Therefore we would like to suggest another, much more straightforward
+and hopefully painless approach -- lightweight virtualization, or chroot_
+jailing, which exists in Unix-land since 1970s.
+With this exercise in **4 simple steps** we will install a
+complete (minimalistic) installation of Debian stable into a separate
+directory -- without harming the original system installation. We will provide a convenience wrapper to
+run fslview as if it was installed on the "main" system. So your
+system will stay intact while you would enhance it with additional
+software in a stable Debian environment. Moreover if
+security or critical fixes to any components of that installation
+become available, this chroot
+environment, being a complete Debian installation, could be as
+easily upgraded as your main system, thus guaranteeing robust performance.
+
+Although we demonstrate this setup with fslview in mind, such approach
+is generally useful for various use cases. For example, we have used it in
+the opposite situation -- on stable Debian systems we needed to run
+some software available only from Debian unstable or testing, and
+backporting of all required dependencies was either cumbersome or just
+impossible without sacrificing stability of the system.
+
+.. _chroot: http://en.wikipedia.org/wiki/Chroot
+.. _fslview: http://www.fmrib.ox.ac.uk/fsl/fslview
+.. _FSL: http://www.fmrib.ox.ac.uk/fsl
+
+
+Prerequisites
+-------------
+
+For this exercise you would need
+
+- 3--20 minutes depending on the bandwidth to the Debian mirror and
+ efficiency in cut/paste operations
+
+- root access to the system while performing this setup, although
+ end-users of fslview would not need root access after everything
+ is set up
+
+- 2 additional tools -- debootstrap_ to install Debian in a directory
+ and a convenience utility schroot_ to "enable" such an environment
+
+.. _debootstrap: http://wiki.debian.org/Debootstrap
+.. _schroot: http://packages.debian.org/sid/schroot
+
+
+Procedure
+---------
+
+- Install the tools::
+
+ sudo apt-get install debootstrap schroot
+
+- Choose a location with enough space (600 MB should be enough) and
+ install a complete Debian squeeze installation with fslview::
+
+ sudo debootstrap --include=fslview squeeze /srv/chroots/squeeze http://ftp.us.debian.org/debian
+
+ .. note::
+ You might like to adjust the URL to a `Debian mirror`_ closer to you
+
+.. _`Debian mirror`: http://www.debian.org/mirror/list
+
+- Create schroot_ configuration file ``/etc/schroot/chroot.d/squeeze``
+ with the following content::
+
+ [squeeze]
+ description=Debian squeeze (6.x stable)
+ type=directory
+ directory=/srv/chroots/squeeze
+ users=YOURLOGIN
+ aliases=debian,default
+
+ Replace YOURLOGIN with a comma separated list of users who should be
+ allowed to access this chroot environment (see ``man schroot.conf``
+ for more options, e.g. how to specify whole groups with ``groups=...``, etc.)
+
+- At this point you should already be able to invoke any command
+ within the chroot environment, so just create a little shell script
+ ``/usr/local/bin/fslview``, make it executable and be all set::
+
+ echo -e '#!/bin/sh\nschroot -p -c squeeze /usr/bin/fslview "$@"' > /usr/local/bin/fslview
+ chmod a+x /usr/local/bin/fslview
+
+ .. note::
+ You might need to become root for the above.
+
+Optional steps
+--------------
+
+Although at this point you can run fslview from the chroot-ed
+environment, we would suggest a few additional steps. For some of
+them (marked with **chroot-root**) you would need to become root in a
+chroot environment via following steps:
+
+- enter chroot using ``schroot -c squeeze -p``
+
+- become root (via ``su`` command, root password should be the same as
+ on the main system)
+
+So here are recommended optional additions:
+
+- **chroot-root**: `Enable NeuroDebian repository
+ <http://neuro.debian.net/#how-to-use-this-repository>`_. Choose
+ ``squeeze`` release and mirror of preference (remove ``sudo`` from
+ provided cmdline).
+
+- **chroot-root**: Enable security and functionality updates::
+
+ sed -e 's,squeeze,squeeze-updates,g' /etc/apt/sources.list > /etc/apt/sources.list.d/updates.list
+ echo 'deb http://security.debian.org/ stable/updates main' > /etc/apt/sources.list.d/security.list
+ apt-get update
+ apt-get upgrade
+
+- Make fsl atlases accessible within the chroot environment. There
+ are two ways and you must choose only **one** of them, otherwise
+ you might damage your "main" system installation.
+
+ - **chroot-root**: Install atlases packages in the chroot-ed environment::
+
+ apt-get install fsl-atlases
+
+ Although this is the best/correct way it would require additional 200MB of
+ space, possibly duplicating what you already have installed in the
+ main system. Also it requires `enabling of NeuroDebian repository
+ in chroot environment
+ <http://neuro.debian.net/#how-to-use-this-repository>`_.
+
+ - Alternatively you can bind-mount those directories with atlases installed on the "main"
+ system within chroot. For that edit (as root on the "main"
+ system) ``/etc/schroot/default/fstab`` and add following entries::
+
+ /usr/share/fsl/data/atlases /usr/share/fsl/data/atlases none rw,bind 0 0
+ /usr/share/data /usr/share/data none rw,bind 0 0
+
+ You need to be aware of the potential consequences of this second approach:
+ Any package that installs files under /usr/share/data will modify files in
+ the same directory outside the chroot as well. If you don't want to risk
+ that don't use this method and simply install the necessary data packages
+ inside the chroot environment too, as describe before.
+
+ .. note::
+ Similarly you can bind-mount any other directory you would like
+ to make visible in chroot. Just be careful to not "overlap"
+ with system directories in chroot which already carry something.
+
+Also you might like to read ``man schroot`` on how to enable
+persistent sessions so that chroot initiation could be done ones
+during boot instead of per each fslview invocation
+
+If you have any comments (typos, improvements, etc) -- feel welcome to
+leave a comment below, or just email `us@NeuroDebian`_ .
+
+.. _us@NeuroDebian: http://neuro.debian.net/#contacts