3 # install a file from a package
12 while getopts :f:v:r:d:a:u:l:p:b:P:R: opt; do
14 R) pkgroot="$OPTARG" ;;
15 f) pkgfile="$OPTARG" ;;
16 v) pkgver="$OPTARG" ;;
17 r) pkgrel="$OPTARG" ;;
18 P) prefix="$OPTARG" ;;
29 zpm shell $pkgfile<<EOS
30 select $1 from packagefiles
32 and package||'-'||version||'-'||release = '$pkg'
37 # if not from a package file, from local db
38 if [ -z "$pkgfile" ]; then
39 die "installing from non-pkgfile not supported"
50 echo installing $path from $pkg
52 fhash=$(zpm pkgfileinfo hash $path)
53 mode=$(zpm pkgfileinfo mode $path)
54 ftype=$(zpm pkgfileinfo filetype $path)
55 owner=$(zpm pkgfileinfo username $path)
56 group=$(zpm pkgfileinfo groupname $path)
58 name=$(basename -- $path)
59 dir=$(dirname -- $path)
61 if [ "$pkgroot" != '/' ]; then
64 if [ "$dir" = "//" ]; then dir=/ ; fi
67 tmppath=$dir/.installing.$name
69 # can't use install because it's not posix.
70 # probably worth writing a zpm-install, but with
71 # a different name since that wants to be a package install
72 # probably makes the most sense for extract to know how
73 # to do the extract to temp and such, then
74 # you can just add the -S option (secure)
78 zpm extract $pkgfile $fhash $tmppath 0
79 chown $owner:$group $tmppath
81 # TODO mv -n non-posix, going to need to have extract do all
83 mv -n $tmppath $dir/$name