浏览代码

+ Fixes for tar listing, and added detection of local or global installation

michael 21 年之前
父节点
当前提交
dbe1cd602a
共有 1 个文件被更改,包括 18 次插入3 次删除
  1. 18 3
      install/install.sh

+ 18 - 3
install/install.sh

@@ -45,7 +45,18 @@ unztarfromtar ()
 {
  tar -xOf $HERE/$1 $2 | tar --directory $3 -xzf -
 }
-
+# Get file list from tar archive ($1) in variable ($2)
+# optionally filter result through sed ($3)
+listtarfiles ()
+{
+  askvar=$2
+  if [ ! -z $3 ]; then
+    list=`tar tvf $1 | awk '{ print $(NF) }' | sed -n /$3/p`
+  else
+     list=`tar tvf $1 | awk '{ print $(NF) }'`
+  fi
+  eval $askvar='$list'
+}
 # Make all the necessary directories to get $1
 makedirhierarch ()
 {
@@ -94,6 +105,10 @@ if checkpath /usr/local/bin; then
 else
     PREFIX=/usr
 fi
+# If we can't write on prefix, select subdir of home dir
+if [ ! -w $PREFIX ]; then
+  PREFIX=$HOME/fpc-$VERSION
+fi
 ask "Install prefix (/usr or /usr/local) " PREFIX
 makedirhierarch $PREFIX
 
@@ -131,7 +146,7 @@ if yesno "Install FCL"; then
     unztarfromtar binary.tar unitsfcl${OSNAME}.tar.gz $PREFIX
 fi
 if yesno "Install packages"; then
-  packages=`tar -tvf binary.tar "units*" | awk '{ print $6 }'`
+  listtarfiles binary.tar packages units
   for f in $packages 
   do
     if [ $f != unitsfcl${OSNAME}.tar.gz ]; then
@@ -166,7 +181,7 @@ if yesno "Install sources"; then
     unztarfromtar sources.tar installersrc.tar.gz $PREFIX
   fi    
   if yesno "Install Packages source"; then
-    packages=`tar -tvf sources.tar "units*" | awk '{ print $6 }'`
+    listtarfiles sources.tar packages units
     for f in $packages
     do
       basename $f .tar.gz |\