faSTart
Michal Moskal
malekith w pld.org.pl
Czw, 10 Sty 2002, 16:13:14 CET
On Thu, Jan 10, 2002 at 01:27:54PM +0100, Witold Filipczyk wrote:
> 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
> ------
Polecam lekturę SUSv2 i nie stosowanie rozszerzeń ksh.
> ---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>"
> ------
Eeee... stary świetny pomysł. Dostaję taką fajną listę z 2.5k pakietów
(czy ile tam) i sobie wybieram? Wow!
Polecam lekturę ui-pkgs.
> ---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
> -------
Może jestem ślepy, ale ja tu chybe widzę O(n^2) a może O(n^3),
czytaj spróbuj to uruchomić dla kilkuset pakietów.
> 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
Eh... ty znowu o tym samym... co Ci się nie podoba w Poldku?
> 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.
Sugeruje lekturę mana do dml'a, radiobutton dodałem wieki temu.
> Skrypty (programy) generujące pliki 'spis' i 'dependencies' też zrobię,
> chyba że ktoś napisze je wcześniej.
Nothing personal, ale rób to w branchu (jeśli koniecznie musisz).
--
: Michal ``,/\/\, '' Moskal | | : GCS {C,UL}++++$
: | |alekith @ |)|(| . org . pl : {E--, W, w-,M}-
: Linux: We are dot in .ORG. | : {b,e>+}++ !tv h
: CurProj: ftp://ftp.pld.org.pl/people/malekith/ksi : PLD Team member
Więcej informacji o liście dyskusyjnej pld-installer