Pagina 1 di 1

RKWard errore durante il make install del backend di R

Inviato: dom 23 set 2007, 15:34
da giberg
Ciao
dovendo valutare un po' di GUI per R (potenzialità, carenze...) mi sto creando il pacchetto di RKWard.
Il pacchetto viene creato, è installabile, però non funziona perché riscontra dei problemi con la libreria che va ad installarsi tra quelle esterne di R (in /usr/lib/R/library).
Durante il make install (eseguito dallo slackbuild) ad un certo punto trovo questo errore:

Codice: Seleziona tutto

[...]
Making install in rbackend
make[2]: Entering directory `/tmp/rkward-0.4.7a/rkward/rbackend'
Making install in rpackages
make[3]: Entering directory `/tmp/rkward-0.4.7a/rkward/rbackend/rpackages'
Makefile:661: warning: overriding commands for target `distclean'
Makefile:589: warning: ignoring old commands for target `distclean'
mkdir -p tmp ; \
        OLDTMP=$TMPDIR ; \
        export TMPDIR=`pwd`/tmp ; \
        /usr/lib/R/bin/R CMD INSTALL -l /tmp/package-rkward//usr/lib/R/library rkward ; \
        export TMPDIR=$OLDTMP
ERROR: -l or --library value '/tmp/package-rkward//usr/lib/R/library' does not exist or is not a directory
[...]
Credo sia questo il pezzo problematico.

Se installo e lancio il programma ottengo infatti l'errore che si può leggere nello screenshot:
http://img458.imageshack.us/img458/2629 ... ardlv7.png

Nello slackbuild non ho messo opzioni particolari, come al solito ho messo prefix=/usr .

Forse va creata manualmente nello script la directory che non trova?

Ricordo che qui su Slacky c'era il pacchetto per Slackware 10.2 fatto da gohanz (mi pare). Se ci fosse ancora lo slackbuild potrei modificare quello.


Il mio è semplicemente la copia di uno slackbuild a caso preso su Slacky adattata al pacchetto:

Codice: Seleziona tutto

#!/bin/sh
# Heavily based on the Slackware 12.0 SlackBuild
# http://rkward.sourceforge.net
#
# RKWard requires:
# - KDE-libraries and headers (>= 3.x) (http://www.kde.org)
# - Qt-libraries and headers (>= 3.x) (http://www.trolltech.com)
# - R and headers (http://www.r-project.org)
# - PHP with commandline-interface (http://www.php.net)


CWD=`pwd`
if ["$TMP" = ""]; then
 TMP=/tmp
fi

PKG=$TMP/package-rkward
NAME=rkward
VERSION=0.4.7a
CHOST=i486
ARCH=${ARCH:-i486}
BUILD=1gb

if [ "$ARCH" = "i486" ]; then
  SLKCFLAGS="-O2 -march=i486   -mtune=i686"
elif [ "$ARCH" = "i686" ]; then
  SLKCFLAGS="-O3 -march=i686 -pipe -fomit-frame-pointer"
elif [ "$ARCH" = "x86_64" ]; then
  SLKCFLAGS="-O2 -march=athlon64 -pipe"
elif [ "$ARCH" = "athlonxp" ]; then
  SLKCFLAGS="-O3 -march=athlon-xp -pipe -fomit-frame-pointer"
fi

if [ ! -d $TMP ]; then
 mkdir -p $TMP
fi
if [ ! -d $PKG ]; then
 mkdir -p $PKG
fi

cd $TMP
tar xvzf $CWD/$NAME-$VERSION.tar.gz

echo "+--------------------------------------+"
echo "| Starting SlackBuild  $NAME-$VERSION  |"
echo "+--------------------------------------+"

cd $NAME-$VERSION

find . -perm 777 -exec chmod 755 {} \;
find . -perm 775 -exec chmod 755 {} \;
find . -perm 555 -exec chmod 755 {} \;
find . -perm 666 -exec chmod 644 {} \;
find . -perm 664 -exec chmod 644 {} \;
find . -perm 444 -exec chmod 644 {} \;

chown -R root.root .
CXXFLAGS="${CFLAGS}" \
CFLAGS="$SLKCFLAGS" \
./configure \
    --prefix=/usr \
    --build=$CHOST-slackware-linux
make
make install DESTDIR=$PKG

( cd $PKG
  find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
  find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
  find . | xargs file | grep "current ar archive" | cut -f 1 -d : | xargs strip -g 2> /dev/null
)

mkdir -p $PKG/usr/doc/$NAME-$VERSION
cp -a AUTHORS COPYING ChangeLog INSTALL README VERSION \
$PKG/usr/doc/$NAME-$VERSION
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $CWD
cp -a $NAME.SlackBuild slack-desc $PKG/usr/doc/$NAME-$VERSION

cd $PKG
makepkg -l y -c n $CWD/$NAME-$VERSION-$ARCH-$BUILD.tgz

if [ "$1" = "--cleanup" ]; then
 rm -rf $TMP/$NAME-$VERSION
 rm -rf $PKG
fi

Inviato: lun 24 set 2007, 19:28
da giberg
Nel file rkward/rkward-0.4.7a.tar.gz/rkward-0.4.7a/rkward/rbackend/rpackages/Makefile.am
ho trovato le righe che gestiscono quel pezzetto:

Codice: Seleziona tutto

SUBDIRS = rkward

all:
	-${R_HOMEDIR}/bin/R CMD build rkward
install:
	-mkdir -p tmp ; \
	OLDTMP=$$TMPDIR ; \
	export TMPDIR=`pwd`/tmp ; \
	${R_HOMEDIR}/bin/R CMD INSTALL -l $(DESTDIR)/$(R_LIBDIR) rkward ; \
	export TMPDIR=$$OLDTMP
uninstall:
	-${R_HOMEDIR}/bin/R CMD REMOVE -l $(DESTDIR)/$(R_LIBDIR) rkward
check:
	-${R_HOMEDIR}/bin/R CMD check rkward
clean \
distclean:
	-rm -f rkward_*.tar.gz
	-rm -rf tmp
Il problema è quel percorso d'installazione che si crea:
ERROR: -l or --library value '/tmp/package-rkward//usr/lib/R/library' does not exist or is not a directory

Quel doppio slash che si forma tra package-rkward e usr non va bene.

La sintassi del comando che viene eseguito è:

Codice: Seleziona tutto

R CMD INSTALL [options] pkgs
In questo caso l'opzione è -l oppure -library che indica il percorso dove vengono installate librerie aggiuntive in R.
Poi dopo l'opzione viene indicato il pacchetto (libreria) che verrà installata (kward).

Forse il codice non funziona con il fatto che l'installazione del pacchetto è "fasulla" in quanto non viene fatta realmente nel sistema ma nel percorso /tmp/package-rkward?

Non ho provato a fare l'installazione senza creare il pacchetto per non sporcare troppo (anche se in realtà dovrebbe esserci la possibilità di fare make uninstall).
Ad ogni modo non credo crei problemi normalmente perché è codice già rilasciato e se fosse un bug non permetterebbe nemmeno il funzionamento del software.

L'unica cosa che ho notato è che era stato modificato ma per altri motivi:
https://sourceforge.net/mailarchive/for ... rkward-cvs

Inviato: mar 25 set 2007, 0:28
da giberg
giberg ha scritto: Il problema è quel percorso d'installazione che si crea:
ERROR: -l or --library value '/tmp/package-rkward//usr/lib/R/library' does not exist or is not a directory

Quel doppio slash che si forma tra package-rkward e usr non va bene.

La sintassi del comando che viene eseguito è:

Codice: Seleziona tutto

R CMD INSTALL [options] pkgs
Ho provato ad installare senza creare il pacchetto e funziona. Questa sarebbe l'installazione corretta nello stesso punto (anche in questo caso c'è il doppio slash).

Codice: Seleziona tutto

Making install in rbackend
make[2]: Entering directory `/home/gianni/Sorgenti/rkward/rkward-0.4.7a/rkward/
rbackend'
Making install in rpackages
make[3]: Entering directory `/home/gianni/Sorgenti/rkward/rkward-0.4.7a/rkward/
rbackend/rpackages'
Makefile:661: warning: overriding commands for target `distclean'
Makefile:589: warning: ignoring old commands for target `distclean'
mkdir -p tmp ; \
        OLDTMP=$TMPDIR ; \
        export TMPDIR=`pwd`/tmp ; \
        /usr/lib/R/bin/R CMD INSTALL -l //usr/lib/R/library rkward ; \
        export TMPDIR=$OLDTMP
Qualche idea su come aggirare l'ostacolo per poter creare anche il pacchetto?

Inviato: mer 3 ott 2007, 22:58
da giberg
Ora c'è il nuovo pacchetto su Slacky, quindi nessun problema.
Per curiosità ho controllato lo Slackbuild ma non mi pare ci siano accorgimenti particolari quindi la domanda è:
come mai ha funzionato senza quell'errore che capitava a me? Tutto sommato nella base gli slackbuild sono identici.

Inviato: gio 4 ott 2007, 20:54
da Loris
Forse la versione nuova ha risolto i vari problemi di ricompilazione, ricordo che ho sempre fatto fatica con questo pacchetto e per diversi anni non l'ho pacchettizzato.

Inviato: ven 5 ott 2007, 9:53
da giberg
Ok,grazie! :)

Intanto segnalo che dopo aver aggiornato il pacchetto R-project alla versione 2.6.0 appena inserita nel repository, ho dovuto ricompilare RKward perché non funzionava più, nemmeno reinstallandolo.