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