[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