[bash] Script non fonctionnel

Questions et astuces concernant l'installation et la configuration d'archlinux
adichou
newbie
Messages : 2
Inscription : sam. 22 nov. 2008, 03:37

[bash] Script non fonctionnel

Message par adichou »

Bonjour, je ne connais pas bien Bash et j'ai un script qui me cause du souci. Quand je l'exécute, j'obtiens l'output suivant :

Code : Tout sélectionner

lkb: unknown Linux architecture (check `uname -m'); exit.
Je sais que le problème réside dans la détection de l'architecture x86, mais j'ai très peu de connaissances pour modifier le script en question. En passant, quand je tape uname -m j'obtiens le résultat suivant :i686.

Code : Tout sélectionner

#!/bin/bash

#
# a first shot at automating an install of several of the DELPH-IN open-source
# packages, specifically:
#
# - the Linguistic Knowledge Builder (LKB);
# - the LinGO English Resource Grammar (ERG);
# - the Grammar Matrix, a grammar development starter kit;
# - the [incr tsdb()] (aka `tee ess dee bee plus plus') profiler;
# - the Redwoods HPSG treebank in [incr tsdb()] form (optionally).
#
# others (e.g. PET, maybe more grammars) to follow.  for now, this is a rough
# script intended to give people an idea of how to do an installation; i have
# mostly tested it on Linux and Solaris, although Windoze plus the open-source
# CygWin package (a Un*x-like add-on set of tools for Windoze) should work.
#                                                              (9-nov-04; oe)


#
# the root directory for the DELPH-IN installation; everything else will end up
# in sub-directories of $DELPHINHOME.  the default is a directory `delphin' in
# the user home directory.
#
if [ -z "${DELPHINHOME}" ]; then
  DELPHINHOME=${HOME}/delphin
fi

#
# for the script to be independent of where specific OS versions keep their
# files (e.g. on some Solaris boxes one might have to use `gtar' for a decent
# GNU tar(1)).
#
# _fix_me_
# come to think of it, we should probably use gunzip(1) plus tar(1) instead,
# so as to not be dogmatic and even succeed with a Sun tar(1).  (9-nov-04; oe)
#
MKDIR=mkdir
LS=ls
RM=rm
LN="ln -s"
GREP=grep
WGET="wget --quiet --timestamping"
GUNZIP="gunzip -c"
TAR="tar xf -"
SED=sed

build="latest"

#
# process command-line options; for now, either set root directory and toggle
# inclusion of Redwoods data (off by default).
#
while [ $# -gt 0 ]; do
  case ${1} in
    -h|--home)
      DELPHINHOME=${2};
      shift 2;
    ;;
    -s|--stable)
      build="stable";
      WGET="wget --quiet";
      shift 1;
    ;;
    -t|--test)
      build="test";
      WGET="wget --quiet";
      shift 1;
    ;;
    -r|--redwoods)
      TSDBHOME=${DELPHINHOME}/lkb/src/tsdb/home;
      shift 1;
    ;;
    -j|--jacy)
      JACY="http://www.delph-in.net/jacy/japanese.tar.gz"
      shift;
    ;;
    *)
      echo "install: invalid parameter \`${1}'.";
      exit 1;
    ;;
  esac
done

#
# create the target directory, unless it exists already.  if the target exists
# as a non-directory (e.g. plain file), then stop here.
#
if [ ! -d ${DELPHINHOME} -a -e ${DELPHINHOME} ]; then
  echo "install: \`${DELPHINHOME}' exists as a non-directory."
  exit 1;
fi
[ -d ${DELPHINHOME} ] || ${MKDIR} ${DELPHINHOME}

#
# next, determine the current operating system, one of `linux' (x86), `solaris'
# (sparc), or `windows' (x86); anything else will require manual installation.
#
if [ "$OSTYPE" = "linux" -o "$OSTYPE" = "linux-gnu" ]; then
  #
  # apparently, (some) Debian installations come with an older uname(1), where
  # `-i' is not available :-{.                                 (11-mar-05; oe)
  #
  if uname -i > /dev/null 2>&1; then
    cpu=$(uname -i)
    if [ "${cpu}" = "unknown" ]; then cpu=$(uname -m); fi
  else
    cpu=$(uname -m)
  fi
  case "${cpu}" in
    i?86)
      os="linux.x86.32"
      ;;
    x86_64)
      os="linux.x86.64"
      ;;
    *)
      echo "lkb: unknown Linux architecture (check \`uname -m'); exit."
      exit 1;
  esac
elif [ "$OSTYPE" = "solaris" -o "${OSTYPE%%?.?}" = "solaris" ]; then
  os="solaris";
elif [ "$OSTYPE" = "cygwin" ]; then
  os="windows";
fi

#
# for the LKB, make sure there is a temporary directory available.
#
if [ "${os%%.*}" == "linux" -o "$os" == "solaris" ]; then
  [ -d ${HOME}/tmp ] || ${MKDIR} ${HOME}/tmp;
fi

#
# now, obtain all the installation archives, defaulting to the latest version
# for those packages distributed from the LinGO server at CSLI.
#
cd ${DELPHINHOME}

[ -d ${DELPHINHOME}/Archives ] || ${MKDIR} ${DELPHINHOME}/Archives
[ -d ${DELPHINHOME}/lkb ] || ${MKDIR} ${DELPHINHOME}/lkb
[ -d ${DELPHINHOME}/bin ] || ${MKDIR} ${DELPHINHOME}/bin

for i in lkb_data.tgz lkb_${os}.tgz lkb_source.tgz; do
  echo -n "install: \`${i}' ...";
  ( cd Archives; ${WGET} http://lingo.stanford.edu/ftp/${build}/${i}; )
  if [ -f Archives/${i} ]; then
    ( cd lkb; ${GUNZIP} ${DELPHINHOME}/Archives/${i} | ${TAR}; )
    echo " done.";
  else
    echo " missing.";
  fi
  if [ -f ${DELPHINHOME}/lkb/etc/lkb ]; then
    [ -f ${DELPHINHOME}/bin/lkb ] && ${RM} ${DELPHINHOME}/bin/lkb;
    ${LN} ${DELPHINHOME}/lkb/etc/lkb ${DELPHINHOME}/bin/lkb;
  fi
done

#
# the [incr tsdb()] software, for now, is only available on Linux and Solaris
# and shares a source directory with the LKB
#
if [ "${os%%.*}" == "linux" -o "$os" == "solaris" ]; then
  for i in itsdb_libraries.tgz itsdb_tsdb.tgz itsdb_capi.tgz \
           itsdb_${os}.tgz itsdb_data.tgz itsdb_documentation.tgz \
           itsdb_source.tgz; do
    echo -n "install: \`${i}' ...";
    ( cd Archives; ${WGET} http://lingo.stanford.edu/ftp/${build}/${i}; )
    ( cd lkb; ${GUNZIP} ${DELPHINHOME}/Archives/${i} | ${TAR}; )
    if [ -f Archives/${i} ]; then
      ( cd lkb; ${GUNZIP} ${DELPHINHOME}/Archives/${i} | ${TAR}; )
      echo " done.";
    else
      echo " missing.";
    fi
  done
fi

#
# for integration of the LKB et al. with emacs(1), we need the following
#
echo -n "install: \`eli.tgz' ...";
( cd Archives; ${WGET} http://lingo.stanford.edu/ftp/etc/eli.tgz )
${GUNZIP} ${DELPHINHOME}/Archives/eli.tgz | ${TAR}
echo " done.";

#
# finally, a couple of grammars (and the Matrix `meta-grammar') ...
#
for i in erg.tgz matrix.tgz spanish.tgz; do
  echo -n "install: \`${i}' ...";
  ( cd Archives; ${WGET} http://lingo.stanford.edu/ftp/${build}/${i}; )
  if [ -f Archives/${i} ]; then
    ( cd ${DELPHINHOME}; ${GUNZIP} ${DELPHINHOME}/Archives/${i} | ${TAR}; )
    echo " done.";
  else
    echo " missing.";
  fi
done

#
# some grammars remain optional packages, for right now.
#
if [ -n "${JACY}" ]; then
  echo -n "install: \`japanese.tar.gz' ...";
  ( cd Archives; ${WGET} -O japanese.tgz ${JACY}; )
  ${GUNZIP} ${DELPHINHOME}/Archives/japanese.tgz | ${TAR};
  echo " done.";
fi

#
#
# on demand, also get the Redwoods treebanks and corresponding versions of the 
# ERG; by default, only get the latest growth (currently the fifth).
#
if [ -n "${TSDBHOME}" ]; then
  echo -n "install: \`erg.jan-06.tgz' ...";
  ( cd Archives; ${WGET} http://redwoods.stanford.edu/ftp/6th/erg.jan-06.tgz; )
  ${GUNZIP} ${DELPHINHOME}/Archives/erg.jan-06.tgz | ${TAR};
  echo " done.";
  for i in vm ec jh; do
    file="itsdb_${i}.tgz"
    echo -n "install: \`${file}' ...";
    ( \
      cd Archives; \
      ${WGET} http://redwoods.stanford.edu/ftp/6th/${file}; \
      if [ -f ${file} ]; then \
        cd ${TSDBHOME}; \
        ${GUNZIP} ${DELPHINHOME}/Archives/${file} | ${TAR}; \
        echo " done."; \
      else \
        echo " missing."; \
      fi; \
    )
  done
fi

#
# on Linux, we need to make sure that a (good) version of the Motif library is
# available for the LKB; unless we find one in `/usr/X11R6/lib' that looks as
# if it were right, install our own and suggest that the user that they tell
# their shell how to find it.  this all is a little iffy ...
#
if [ false -a "${os}" == "linux.x86.32" ]; then
  if [ -e /usr/X11R6/lib/libXm.so.2 ]; then
    link=$(${LS} -l /usr/X11R6/lib/libXm.so.2 | grep -i "lesstif")
    if [ -n "${link}" ]; then
      echo
      echo "most likely the Motif library \`/usr/X11R6/lib/libXm.so.2' is not"
      echo "suitable for the LKB; un-install LessTiff and install OpenMotif."
      echo
      sleep 5;
    fi
  fi
  [ -d ${DELPHINHOME}/lib ] || ${MKDIR} ${DELPHINHOME}/lib;
  [ -d ${DELPHINHOME}/lib/${os} ] || ${MKDIR} ${DELPHINHOME}/lib/${os};
  ( \
    cd lib/${os}; \
    ${WGET} http://lingo.stanford.edu/ftp/lib/linux/libXm.so.2; \
    ${WGET} http://lingo.stanford.edu/ftp/lib/linux/libXm.so.3; \
  )
fi

#
# finally, instruct users on how to set-up their local start-up files
#
echo
echo "add the following to the file \`~/.bashrc' in your home directory:"
echo
echo "  export DELPHINHOME=${DELPHINHOME}"
echo 
echo "to permanently record the root directory of your DELPH-IN installation;"
echo "if you are a (t)csh(1) user, use \`setenv' rather than \`export'; e.g."
echo 
echo "  setenv DELPHINHOME ${DELPHINHOME}"
echo
echo "in the file \`~/.cshrc' (or \`~/.tcshrc') in your home directory."
echo
echo "to run the LKB and [incr tsdb()] from within emacs(1), add the following"
echo "to the file \`.emacs' in your home directory:"
echo
echo "  (let ((root (or (getenv \"DELPHINHOME\")"
echo "                  \"${DELPHINHOME}\")))" 
echo "    (if (file-exists-p (format \"%s/lkb/etc/dot.emacs\" root))"
echo "      (load (format \"%s/lkb/etc/dot.emacs\" root) nil t t)))"
echo
Quelqu'un aurait une idée comment le modifier? :?:
Dernière modification par adichou le sam. 22 nov. 2008, 14:40, modifié 1 fois.
Avatar de l’utilisateur
mélodie
Maître du Kyudo
Messages : 2784
Inscription : lun. 30 oct. 2006, 02:06
Localisation : Pyrénées

Message par mélodie »

Bonjour,

Bienvenu sur Archlinux.fr. Tu as peut-être voulu dire "je ne connais pas bien bash" ?

Pourrais-tu s'il te plaît formater ton titre correctement ? La manière est décrite dans le règlement, et en regardant l'index d'un des forums, tu pourras voir comment les autres font.

Merci par avance.
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Message par tuxce »

salut, change cette ligne:

Code : Tout sélectionner

  if uname -i > /dev/null 2>&1; then 
par

Code : Tout sélectionner

  if false; then 
adichou
newbie
Messages : 2
Inscription : sam. 22 nov. 2008, 03:37

Message par adichou »

tuxce a écrit :salut, change cette ligne:

Code : Tout sélectionner

  if uname -i > /dev/null 2>&1; then 
par

Code : Tout sélectionner

  if false; then 

Merci, je vais essayer cela ce soir.
farvardin
Maître du Kyudo
Messages : 1084
Inscription : sam. 29 mars 2008, 22:56

Message par farvardin »

tu peux aussi remplacer la partie :

Code : Tout sélectionner

case "${cpu}" in 
par

Code : Tout sélectionner

case "${uname -m}" in 
Répondre