Hello!
I tried to install GNU Radio with GNU Stow. I’d like to have several
versions of GNU Radio that I can switch betwenn without rebuild. Stow
seems to help much in that scenario. And it does a clean uninstall even
if the build tree has changed since build.
How install does not work:
The Stow manual recommends[1]:
6.1.2 Other FSF software
The Free Software Foundation, the organization behind the GNU project,
has been unifying the build procedure for its tools for some time.
Thanks to its tools autoconf' and
automake’, most packages now respond
well to these simple steps, with no other intervention necessary:
./configure options
make
make install prefix=/usr/local/stow/package
Hopefully, these tools can evolve to be aware of Stow-managed packages,
such that providing an option to configure' can allow
make’ and `make
install’ steps to work correctly without needing to “fool” the build
process.
Unfortnately libtool does not like this way of installing:
$ make install prefix=/usr/local/stow/package
[…]
test -z “/usr/local/stow/packag/lib” || /bin/mkdir -p
“/usr/local/stow/packag/lib”
/bin/bash …/…/…/libtool --mode=install /usr/bin/install -c
libgnuradio-core.la ‘/usr/local/stow/packag/lib’
libtool: install: error: cannot install `libgnuradio-core.la’ to a
directory not ending in /usr/local/lib
[…]
How install does work:
You rather need to install with DESTDIR[2]:
full version
STOWDIR=/usr/local/stow
PACKAGE=gnuradio
VERSION=3.3git
PREFIX=/usr/local
./configure --prefix=${PREFIX}
make
sudo make install DESTDIR=${STOWDIR}/${PACKAGE}-${VERSION}
stow -d ${STOWDIR} -t / ${PACKAGE}-${VERSION}
Note: make install with DESTDIR installs everything with DESTDIR
prepended. If PREFIX=/usr/local/, and DESTDIR=/usr/local/stow/package,
files will end up under /usr/local/stow/package/usr/local/. Stow just
moves files out of DESTDIR to the target directory. This is why the
target has to be /-
If you install to the standard paths, this can be simplified to
simple version
PACKAGE=gnuradio
VERSION=3.3
./configure
make
sudo make install DESTDIR=/usr/local/stow/${PACKAGE}-${VERSION}
sudo stow -d /usr/local -t / ${PACKAGE}-${VERSION}
If you get conflicts you probably have an old package version installed.
You need to uninstall first.
Uninstall:
List your stow packages:
STOWDIR=/usr/local/stow
ls $STOWDIR
The name of the directory is the name of the package.
Unstow the currently installed version:
sudo stow -d $STOWDIR -t/ -D package
[1] http://www.gnu.org/software/stow/manual.html#SEC8
[2] GNU Coding Standards
I hope this information can help others manage their GNU Radio
installations.
Regards
Patrick