Programm der Woche: portsnap

asg

push it, don´t hype
Mit "portsnap" (/usr/ports/sysutils/portsnap) liegt ein Programm vor mit dem es möglich ist den Ports-tree auch ohne "cvsup" up-to-date zu halten.
Portsnap arbeitet dabei über HTTPund signiert die sog. snapshots.

Installtion
Ich beziehe mich hierbei auf FreeBSD 5.3-STABLE
#portinstall portsnap

Download des Ports-tree
Der gesammte Portstree muss einmalig heruntergeladen werden. Dies sind in etwa 32MB.
Das Arbeitsverzeichnis von portsnap ist /usr/local/portsnap/
#portsnap fetch

Ports-tree installieren
Hierbei wird der heruntergeladene Ports-tree unter /usr/ports installiert. Sollte es schon einen Inhalt unter /usr/ports geben, so muss dieser gelöscht werden, da die Installation des Ports-tree sons nicht funktionieren würde.
#portsnap extract

Nun kann, so man portupgrade (/usr/ports/sysutils/portupgrade) nutzt, die INDEX.db aufgebaut werden. Dazu reicht ein Aufruf von "portsdb -uU" oder auch "portversion -v" (welches auch die INDEX-5 und INDEX.db erstellt um danach die installierten Ports anzuzeigen).

Portstree aktuell halten
#portsnap fetch
Code:
Fetching updated snapshot tag... done.
Updating from Wed Nov 24 09:36:28 CET 2004 to Wed Nov 24 11:36:25 CET 2004.
Attempting to generate index via delta compression... failed.
Fetching new index... success.
Generating list of updates needed... 6 files or ports need to be updated.
Attempting to fetch 6 patches... 6 fetched.
Attempting to apply patches... done.
Attempting to fetch 0 new files or ports... done.
#portsnap update
Code:
Removing old files and directories... done.
Extracting new files:
/usr/ports/comms/openobex/
/usr/ports/devel/p5-Heap-Simple/
/usr/ports/games/bygfoot/
/usr/ports/graphics/bugle/
/usr/ports/java/linux-sun-jdk14/
/usr/ports/www/swish++/

Konfigurationsdatei?
/usr/local/etc/portsnap.conf

Weiterführende Hilfe
man portsnap
http://www.daemonology.net/portsnap/
http://www.bsdforen.de/

Interessante verwandte Themen
In diesem Zusammenhang ist sicher "portindex" noch erwähnenswert. Diese ist vor einiger Zeit aus den Ports geflogen, es gibt aber eine Version unter: /usr/ports/sysutils/p5-FreeBSD-Portindex.
Hiermit ist es möglich die INDEX-5 und INDEX.db weitaus schneller zu erstellen als mit einem "make index". Braucht ein "make index" einige Minuten hierzu (15 bis 25 Minuten sind keine Seltenheit), so geht dies mit "portindex" innerhalb von 1 oder 2 Minuten.
Link: http://www.infracaninophile.co.uk/portindex/index.html
 
make fetchindex läuft mittlerweile auch sehr rund. Die INDEX Datei ist jetzt mit bzip2 gepackt und nur noch ca. 600KB gross. Außerdem wird sie afaik alle 2 Stunden gebaut, was selbst mir an Aktualität reicht.
Sie kann natürlich deshalb auch maximal 2 Stunden hinter den Ports zurückliegen, was mit make index, portsdb -uU (ruft auch nur `make index` auf) und portindex nicht passieren sollte.
 
Maledictus schrieb:
make fetchindex läuft mittlerweile auch sehr rund. Die INDEX Datei ist jetzt mit bzip2 gepackt und nur noch ca. 600KB gross. Außerdem wird sie afaik alle 2 Stunden gebaut, was selbst mir an Aktualität reicht.
Sie kann natürlich deshalb auch maximal 2 Stunden hinter den Ports zurückliegen, was mit make index, portsdb -uU (ruft auch nur `make index` auf) und portindex nicht passieren sollte.

Die INDEX.db für portupgrade muss dann aber immer noch erneuert werden, wenn man diese denn braucht. Und das dauert dann auch wieder etwas.
 
Da hast du recht, aber das geht selbst auf meinem Duron 800 in unter 20 sec. :)

Code:
% sudo time portsdb -u
[Updating the portsdb <format:bdb1_btree> in /usr/ports ... - 11993 port entries found .........1000.........2000.........3000.........4000.........5000.........6000.........7000.........8000.........9000.........10000.........11000......... ..... done]
       18.90 real        13.20 user         2.08 sys
 
Hm, auch wieder wahr. War falsch gewickelt. -U braucht man ja nicht das ja die INDEX schon vorhanden ist. Geht ja nur um die INDEX.db und da reicht ein -u.
Alles in allem geht es mittlerweile schneller. Und das ist schonmal erfreulich.
Ich finde es nur langsam verwirrend das es x-tools gibt. die pkg_*, portupgrade, portsindex, portsnap und alle mit dem gleichen Ziel...
 
Stimmt, aber irgendwer hier hatte doch mal angedacht das ganze in ein "emerge" shellskript zu packen. Der ist dann aber von einigen ziemlich klein gemacht worden...
 
Naja, die UNIX Philosophie eben. Jedes programm hat eine Funktion.
Ist ja auch gut so, aber wenn x Programme die gleiche oder eine ähnliche Funktion haben dabei vom Ansatz und der Ausführung etwas anders sind, dann wird es langsam verwirrend.
"He nutze portupgrade" "Ok" "und dann ist da noch portindex das macht es schneller und vergiss nicht make fetchindex" "ok" "und dann war da noch portsnap wenn du keinen cvsup willst" "ähh, ok" "und die alten tools pkg_* und "make..." ähhhhhhhh, also...." "Achja und portindex macht alles schneller als ein make index" "tilt"......
Alles schön und gut, aber es sollte dafür eine Lösung geben. Ich warte darauf das der näxte kommt und ein anderes "portupgrade" vorstellt weil er ruby nicht mag und bla...
 
Ist halt natürlich gewachsen, und nicht emerged worden ;)

Ich hoffe einfach, dass für den normalen Anwender bald mal eine Graphische Oberfläche komplett nutzbar wird. Sei es nun Barry, KPackage, portsman und wie sie alle heissen.

Ich hab kein Problem damit mir die alle zu merken, ich hab spass an der sache :)
 
Grafischer Portmanager

Bezüglich grafischer Portmanager: bpm sieht nicht recht vielversprechend aus. Ist zwar erst in der Version 0.4.1 beta, und daher natürlich auch noch längst nicht ausgereift, aber macht trotzdem schon einen ganz guten Eindruck.

Ciao,

rpw
 
der bpm ist doch so ein darwinports GUI Client. Naja, diesem doch recht ähnlich.
Wenn diese noch die Funktionalität bezgl. einem cvsup (oder via portsnap) einmal haben werden, dann ist das was rundes. Leider reichen meine Programmiererfahrung dazu nicht aus, und die fehlende Zeit macht es auch nicht besser.
 
ieee schrieb:
Das hört sich ja alles wunderbar an, aber woher bekommt man denn nun den mit portsnap fetch herunterzuladenen Ports-Tree? Die in der portsnap.conf vorgegebene Adresse http://portsnap.daemonology.net/ ist nämlich down. Wie komme ich nun an den Ports-Tree?

Die Seite ist nicht down. Diese Adresse wird nur verwendet zum Download der Snapshots vom Ports-Tree. Aber das steht ja auch alles auf der ersten Seite der Homepage. :-)

albix
 
Wo ist eigentlich der Unterschied zwischen /usr/ports/INDEX und usr/ports/INDEX-5? Das ist mir interessanterweise entfallen... und wieso generiert portupgrade daraus noch eine weitere INDEX.db?

Gruß, I.MC
 
I.MC schrieb:
Wo ist eigentlich der Unterschied zwischen /usr/ports/INDEX und usr/ports/INDEX-5?

Gruß, I.MC

INDEX = FreeBSD 4.x
INDEX-5 = FreeBSD 5.x

Zumindest habe ich auf meinen Rechner diese Konstellation festgestellt.

Gruß, Miguel
 
Installtion
Ich beziehe mich hierbei auf FreeBSD 5.3-STABLE
#portinstall portsnap

wenn ich das mache, bekomme ich
Code:
** No such installed package or port: portsnap


/usr/ports/sysutils/portsnap gibt es bei mir auch nicht
 
stable 5.3

wo sag ich den portsnap das er mir 5.3 Stable-branch aktuell halten soll. Oder wie erkenne ich welche version und Stand er aktuell hält?

Also das was ich gerne mit portsnap machen will ist in cvsup so ausgedrückt:
# /etc/stable-supfile
*default release=cvs tag=RELENG_5_3


Im Prinzip will ich immer die neusten Patches haben. (des Stable-Branches)

Gruss schibumi
 
Was sind die vorteile von portsnap über cvsup? Im Moment führe ich einfach und /usr/src/ ein make update aus um meine Ports aktuell zu halten.
 
Was sind die vorteile von portsnap über cvsup?
aus PORTSNAP(8):
The portsnap tool is used to fetch and update compressed snapshots of the
FreeBSD ports tree, and extract and update an uncompressed ports tree.

Für jeden Port wird ein Archiv in /usr/local/portsnap/files abgelegt und in der
Datei /usr/local/portsnap/INDEX eingetragen, bei einem update werden dann alle
aktualisierten Versionen heruntergeladen und nach /usr/ports entpackt.
Das geht deutlich schneller als ein cvs update, das für jede Datei in jedem
Port prüft ob eine neue Version heruntergeladen werden muss, da nur der Inhalt
der INDEX Datei geprüft und entsprechend aktualisiert werden muss.

Ich find's ne feine Sache, die Aktualisierung der Ports ist damit eine Sache von
wenigen Sekunden.

mfg dagnu

ps: make fetchindex bei der make update Methode nicht vergessen.
 
Zurück
Oben