faSTart
Witold Filipczyk
juandon w poczta.onet.pl
Czw, 10 Sty 2002, 13:27:54 CET
Kiedyś pisałem jak chciałbym, żeby wyglądała instalacja.
Tu zamieszczam przykładowe skrypty:
---model01.sh---
#!/bin/sh
a=1
read nr
while [ -n "$nr" ]
do
while [ $a -lt $nr ]
do
echo 0
let a=a+1
done
echo 1
read nr
done
------
---lista.sh---
#!/bin/sh
echo "<menu width=70 height=20 id=packages>"
a=1
read name install
while [ -n "$name" ]
do
echo "<item id=$a checked=${install:-0}>$name"
let a=a+1
read name install
done
echo "</menu>"
echo "<button>"
------
---scal.sh---
#!/bin/sh
scal () {
sorted=""
result="$result $1"
linia=`head -n $1 dependencies | tail -n 1`
shift
for i in $linia
do
while [ $1 ]
do
if [ $1 -gt $i ]
then
sorted="$sorted $1"
shift
elif [ $1 -eq $i ]
then
shift
break
else break
fi
done
sorted="$sorted $i"
done
sorted="$sorted $@"
}
# lineno - number of current line
# result - numbers of packages to install
eval `cat coinst | ./model01.sh | paste spis - | ./lista.sh | dml`
sorted=""
for i in $packages
do
sorted="$i $sorted"
done
result=""
while [ "$sorted" != " " ]
do
scal $sorted
# echo $sorted
done
echo $result
-------
W pliku 'spis' znajdują się posortowane według ważności nazwy pakietów
lub cokolwiek innego co można wyświetlić.
W pliku 'coinst' numery pakietów z pliku 'spis', które chcemy zainstalować
domyślnie.
W pliku 'dependencies' znajdują się zależności:
W linii N znajdują się numery pakietów od których bezpośrednio zależy
pakiet nr N posortowane malejąco lub nic jeśli pakiet jest niezależny.
Niech w linii N będą C B A. Spełniają one zależność N>C>B>A, np. N=15
i w 15 linii:
13 12 7 5
Odpala się program ./scal.sh i na wyjściu dostaje numery pakietów, które
trzeba zainstalować (teraz są uporządkowane malejąco, ale odwrócić to to
żaden problem).
Z numerów pakietów wygenerować plik z nazwami pakietów do zainstalowania
to też pryszcz.
Teraz to jest przygotowane do wersji "izi". W przypadku standard
w niektórych miejscach przydałyby się radio-buttons, ale nie wiem jak
to zrobić w dml-u.
HINT: checked może mieć dużo wartości (np. parzysta>0) oznacza grupę,
a nieparzysta (parzysta+1) wybrany radio-button.
Skrypty (programy) generujące pliki 'spis' i 'dependencies' też zrobię,
chyba że ktoś napisze je wcześniej.
WF
Więcej informacji o liście dyskusyjnej pld-installer