[announce] packages.pld-linux.org /early alpha/
Radosław Kintzi
rakin w pop.e-wro.pl
Pią, 7 Sty 2005, 12:32:51 CET
Radoslaw Zielinski napisał(a):
>Radosław Kintzi <rakin w pop.e-wro.pl> [06-01-2005 11:51]:
>
>
>>Radoslaw Zielinski napisał(a):
>>
>>
>[...]
>
>
>>>Chciałbym to rozwinąć do packages.debian.org, ale potrzebowałbym
>>>wsparcia zaawansowanego bazodanowca (szkoda, że depesz sobie z PLD
>>>poszedł). No i lepszy hosting, niż sam mogę dostarczyć.
>>>
>>>
>>Jeżeli faktycznie chcemy mieć coś jak packages.debian.org, to proponuje
>>zrobić bazę opartą o RDF. Nie wiem jak działa packages.debian.org ale o
>>
>>
>[...]
>
>Mogłoby działać.
>
>[...]
>
>
>>Interfejs mógłby wyglądać tak:
>>1. http://packages.pld-linux.org/?name=jakiś-pakiet&arch=athlon
>>dostarczałby wynik w htmlu
>>2. http://packages.pld-linux.org/?name=jakiś-pakiet&arch=athlon&type=xml/rdf
>>zwracałby wynik w postaci pliku .rdf - niech sobie robią z nim co chcą.
>>
>>
>
>Plus opcjonalne (preferowane) URI typu http://*/arch/dist/arch/name,
>jak jest teraz (jeśli są jednoznaczne). Informację o formacie lepiej
>trzymać w nazwie hosta: http://{rdf,rss,txt}.packages.pld-linux.org/,
>ułatwi ewentualne rozpraszanie na wiele maszyn.
>
>[...]
>
>
Proponuje jednak, żeby zapytanie o preferowane dist i arch były w
postaci: http://*/pakiet/?arch=athlon&dist=ac. Dlaczego nie
http://*/pakiet/arch/dist opowiem w jednym z moich następnych wątków. Na
razie musicie mi zaufać, że jest to działanie przemyślane (ma związek z
następnym projektem, jaki mi chodzi po głowie i z jakim
packages.pld-linux.org mógłby współpracować).
>>Ja w perlu nie piszę. Mogę popracować nad tym w Pythonie (wiązania
>>
>>
>[...]
>
>Nie znam i nie mam ochoty poznawać Pythona. Jeśli zaczniesz od pisania
>demona do zbierania informacji (demon do uruchomienia na FTP / hooki
>w automatyce; tam jest sporo węży), a ja od międzymordzia, to może się
>nie pogryziemy.
>
>
>
Chciałbym zrobić to bez typowego daemona. Do automatyki przenoszącej
pakiety z test/ready->mian, a także do automatyki builderów wrzucających
pakiety do test/ready, dołożyłbym mały skrypt, który uaktualnia bazę na
serwerze paskages.pld-linux.org. Wyglądałoby to mniej więcej tak.
update.packagesdb.py
--basename=ftp://ftp.pld-linux.org/dists/2.0/PLD/atholn/PLD/RPMS/
pakiet1.rpm pakiet2.rpm
Skrypt czytałby pakiety podane w linii poleceń i na podstawie ich
zawartości konstruował rządanie HTTP:
|POST /updatedb HTTP/1.1
Host: db.packages.pld-linux.org
Content-Type: application/xml
Content-Length: ...
|<rdf ns:rdf="http://www.w3c.org/......."
ns:rpm="http://www.rpm.org/">
<rdf:Description
rdf:about="ftp://ftp.pld-linux.org/dists/2.0/PLD/athlon/PLD/pakiet1-1.0-3.athlon.rpm">
<rpm:name>pakiet1</rpm:name>
<rpm:version>1.0</rpm:name>
<rpm:release>3</rpm:name>
<rpm:description>bla bla bla</rpm:description>
...
</rdf:Description>
<rdf:Description
rdf:about="ftp://ftp.pld-linux.org/dists/2.0/PLD/athlon/PLD/pakiet2-1.0-3.athlon.rpm">
<rpm:name>pakiet1</rpm:name>
<rpm:version>1.0</rpm:name>
<rpm:release>3</rpm:name>
<rpm:description>bla bla bla</rpm:description>
...
</rdf:Description>
</rdf>
i wysyłałby je do serwera z bazą danych. Ta wycinałaby starą informację
o pakietach i dodawała nowa.
Odpowiedź mniej/więcej taka:
|HTTP/1.1 201 Created
Location: http://db.packages.pld-linux.org/updatedb
Content-Type: application/xml
Content-Length: ...|
Zapytanie do bazy wyglądałoby tak:
|GET /query/pakiet1?arch=athlon&dist=ac HTTP/1.1
Host: db.packages.pld-linux.org
Accept: application/xml
Odpowiedź:
||HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: ...|
|
|<rdf ns:rdf="http://www.w3c.org/......."
ns:rpm="http://www.rpm.org/">
<rdf:Description
rdf:about="ftp://ftp.pld-linux.org/dists/2.0/PLD/athlon/PLD/pakiet1-1.0-3.athlon.rpm">
<rpm:name>pakiet1</rpm:name>
<rpm:version>1.0</rpm:name>
<rpm:release>3</rpm:name>
<rpm:description>bla bla bla</rpm:description>
...
</rdf:Description>
<rdf:Description
rdf:about="ftp://ftp.pld-linux.org/dists/2.0/PLD/athlon/PLD/pakiet1-devel-1.0-3.athlon.rpm">
<rpm:name>pakiet1-devel</rpm:name>
<rpm:version>1.0</rpm:name>
<rpm:release>3</rpm:name>
<rpm:description>bla bla bla</rpm:description>
...
</rdf:Description>
</rdf>
|Zalety takiego podejścia:
1. Międzymordzie możesz sobie napisać w czym chcesz, na ilu chcesz
maszynach. Możesz napisać skrypty w perlu, pythonie, w PHP i wysłać je
ludziom, którzy zarządzają projektami (albo ich stronami).
2. Czasowo można napisać międzymordzie na tym samym serwerze
(http/webware for Python) jako integralna część serwera
db.packages.pld-linux.org, dzięki czemu nie będzie ono musiało wysyłać
zapytań http do bazy.
Protokół jest do przedyskutowania. Skleciłem go w 12min na podstawie
http://www.w3.org/2001/Annotea/User/Protocol.html
Czekam na komentarze,
Pozdrawiam,
Radek
PS. Jeżeli format tego listu będzie odbiegał od przyjętych standardów
(np. >70 znaków/linia), to wybaczcie - czasem nie mogę dojść ładu z
Thunderbirdem i to jest właśnie ten czas.
|
Więcej informacji o liście dyskusyjnej pld-discuss-pl