Belegter Plattenplatz durch Ports?

reaper

Well-Known Member
Hallo, gibt es eine Möglichkeit festzustellen wieviel Plattenplatz ein Port belegt (unter FreeBSD 5.2.1 falls relevant)? Danke für einen Info.
 
Wäre mir nicht bekannt, daß so was mit Bordmitteln geht. Habe ich vielleicht auch nur übersehen. Egal, kann man mittels
Code:
IFS="
" du -ch `pkg_info -L xmms-esound-1.2.10 | grep ^/`
improvisieren. Das zeigt dann die Größe für jede Datei des Ports und zum Schluß die Summe, hier für den Port xmms-esound-1.2.10. (Der belegt übrigens 4,9 MB, falls es wen interessiert.) Wenn du nur die Summe sehen willst:
Code:
IFS="
" du -ch `pkg_info -L xmms-esound-1.2.10 | grep ^/` | tail -n 1
Kann man sicher auch noch in ein schnuckeliges Skript verpacken, wenn man gerade nix zu tun hat :) Ich glaube, ich mache einfach mal.
 
nihil schrieb:
du -sh /usr/ports
Ich glaube nicht, daß reaper nach der Größe des Portstrees gefragt hatte...

So, jetzt hab ich einfach mal ein Beispiel-Skript gemacht, interessiert mich nämlich jetzt selbst mal (daß ich da noch nie selbst drauf gekommen bin, sowas zu machen):
Code:
#!/usr/local/bin/bash

IFS="
"

echo "Name des Ports, dessen Größe angezeigt werden soll
(erste Buchstaben ausreichend, leere Eingabe zeigt alle Ports):"
read -e SEARCH

declare -i TOTAL=0
declare -i SIZE=0

cd /var/db/pkg

for PORT in `ls -1d $SEARCH*` 
do
  SIZE=$(du -kc `pkg_info -L $PORT | grep ^/` | tail -n1 | cut -f1)
  TOTAL=$TOTAL+$SIZE
  echo "Der Port $PORT belegt $SIZE Kilobyte Speicherplatz"
done

if [ $TOTAL != $SIZE ]
   then echo -e "\nGröße aller aufgelisteten Ports insgesamt $TOTAL Kilobyte"
fi
Schon mal interessant zu sehen, wo mein ganzer Plattenplatz abgeblieben ist ;)
 
Code:
(0:36:34) elessar@loki: ~> pkg_info -s openssl-overwrite-base-0.9.7d
Information for openssl-overwrite-base-0.9.7d:

Package Size:
5537    (1K-blocks)
Find ich irgendwie handlicher. Ohne damit dein Skript schlecht machen zu wollen.
 
Scheiße, ich wußte genau, daß es da was an Bord gibt ;) Trotzdem hasse ich pkg_info wie die Pest, das ist so pingelig bei der Angabe des Portnamens. Ich skripte da immer drumrum, genauso bei pkg_delete. Und man kann nicht mehrere Ports anzeigen lassen, inkl. der Summe dieser Ports. :)

Naja, ich finde Frontend-Skripte handlicher als pkg_info oder auch pkg_delete, die sind eine Seuche, aber ist wohl Geschmackssache.
 
0815Chaot schrieb:
Scheiße, ich wußte genau, daß es da was an Bord gibt ;) Trotzdem hasse ich pkg_info wie die Pest, das ist so pingelig bei der Angabe des Portnamens.

aus man pkg_info:

-x Treat the pkg-name as a regular expression and display informa-
tion only for packages whose names match that regular expression.
Multiple regular expressions could be provided, in that case
pkg_info displays information about all packages that match at
least one regular expression from the list.

darueberhinaus gibts noch pkg_info | grep <bla>
 
Schön, aber wo ist die Funktion, um die Summe der Größe der Packages anzuzeigen? Wo ist die Tab-Completion bei der Eingabe des Paketnamens? Das will ich nicht immer alles von Hand eingeben. Daher brauch ich für sowas immer noch Skripts.
 
Das Script ist ganz komfortabel, und, bekommst Du das in die sourcen von "pkg_info" eingepflegt? Das wäre doch eine gewisse Neuerung.
Ansonsten ist "pkg_info" mit "-xs" fabelhaft zu gebrauchen:
Code:
pkg_info -xs docbook
Information for docbook-1.2_1:

Package Size:
1       (1K-blocks)
Information for docbook-241_2:
Package Size:
152     (1K-blocks)
Information for docbook-3.0_2:
Package Size:
203     (1K-blocks)
Information for docbook-3.1_2:
Package Size:
286     (1K-blocks)
Information for docbook-4.0_2:
Package Size:
301     (1K-blocks)
Information for docbook-4.1_2:
Package Size:
305     (1K-blocks)
Information for docbook-sk-4.1.2:
Package Size:
364     (1K-blocks)
Information for docbook-xml-4.2_1:
Package Size:
387     (1K-blocks)
Information for docbook-xsl-1.62.3:
Package Size:
7779    (1K-blocks)
Information for dsssl-docbook-modular-1.78_4,1:
Package Size:
4487    (1K-blocks)
Information for sdocbook-xml-4.1.2.5_1:
Package Size:
137     (1K-blocks)
 
Ich glaube nicht, daß reaper nach der Größe des Portstrees gefragt hatte...
Ports sind immer noch ports und keine packages. Und wenn mensch weiterdenkt, ist er per cd im portverzeichnis.

du -sh .
 
;) Wenn ich aber nen port baue und installiere gibt es ja quasi in der pkgdb keinen großen unterschied ob das prog aus dem port oder aus nem binary kommt oder irre ich mich da? Aber meine Frage war vielleicht tatsächlich nicht ganz eindeutig gestellt ;) Die Richtige Antwort kam ja aber trotzdem *g*
 
Es ist vollkommen egal ob Du das Stück Software aus den Ports baust oder als package installierst. Das macht keinen Unterschied und wird beides in die DB eingetragen.
 
@0815Chaot:

nicht schlecht dein kleines skript.
Aber ich finde es unhöflich bash skripte zu verbreiten, und soweit ich das sehe sollte es auch problemlos mit sh laufen.

gruss
Male *der niemals die bash installieren wird*
 
Maledictus schrieb:
@0815Chaot:
[ . . . ]
Aber ich finde es unhöflich bash skripte zu verbreiten, . . .
[ . . . ]

War bestimmt ein Scherz. Ganz nebenbei:


Ich finde auch unhöflich, das 3 meiner Arbeitskollegen die KDE installiert haben und mir auch noch davon erzählen.


mfg
tUNIX *der niemals KDE installieren wird*

:rolleyes:
 
Maledictus schrieb:
@0815Chaot:

nicht schlecht dein kleines skript.
Aber ich finde es unhöflich bash skripte zu verbreiten, und soweit ich das sehe sollte es auch problemlos mit sh laufen.

gruss
Male *der niemals die bash installieren wird*

Das muß Male doch auch nicht, wenn er die zsh nutzt. :)

ln -s /usr/local/bin/zsh /usr/local/bin/bash und das gleich geht IIRC auch mit der csh und ksh. :)
 
@ookami:
ich weiss, aber das tu ich der zsh nicht an ;)

Das soll hier kein geflame gegen die bash werden, bash ist durchaus eine respektable Shell.
Ich finde nur shell skripte sollten in sh geschrieben werden, z.B. der Portierbarkeit wegen.
 
Maledictus schrieb:
[ . . . ]

Das soll hier kein geflame gegen die bash werden, bash ist durchaus eine respektable Shell.
Ich finde nur shell skripte sollten in sh geschrieben werden, z.B. der Portierbarkeit wegen.


Klingt gleich wesentlich freundlicher und bekommt meine volle Zustimmung. :)
 
Maledictus schrieb:
Aber ich finde es unhöflich bash skripte zu verbreiten
"Ich finde es unhöflich, Ruby-Skripte zu verbreiten, weil ich das niemals installieren will." Ja und, dann nutze ich das Skript halt einfach nicht. Der Programmierer wählt selbst die Sprache, die er für angemessen hält.
Maledictus schrieb:
Ich finde nur shell skripte sollten in sh geschrieben werden, z.B. der Portierbarkeit wegen.
Ist doch wunderbar portierbar, die bash ist überall gleich. /bin/sh dagegen nicht, das ist auf jedem System was anderes. Unter der Version von FreeBSD ist es eine etwas bessere Bourne-Shell, unter Linux eine verquickte Bash usw. Was weiß ich, auf welchem System die /bin/sh Integer-Variablen deklarieren kann (auf Linux schon, auf FreeBSD nicht, wie sieht's anderswo aus?).
Maledictus schrieb:
ich weiss, aber das tu ich der zsh nicht an
Wenn du etwas ausschließlich aufgrund des verwendeten Interpreters nicht benutzt, gegen den du offensichtlich eine persönliche Abneigung hast, dann ist das deine Sache. Mir ist es egal, ich zwinge dich garantiert nicht, das "evil" bash-Skript zu benutzen. Aber "Bash-Skripte tu ich meiner Zsh nicht an" ist äußert kindisch. Die Aussage von reeper trifft den Kern der Sache.

Mir gefällt Ruby z.B. auch nicht, na und, deshalb haue ich die Leute von sysutils/portupgrade auch nicht von der Seite an, sie seien unhöflich - entweder ich akzeptiere die Sprache, die ein Programmierer gewählt hat, oder benutze die Software halt nicht.

Nihil schrieb:
Ports sind immer noch ports und keine packages. Und wenn mensch weiterdenkt, ist er per cd im portverzeichnis.
Das mag deine persönliche Definition sein, ich halte mich dagegen lieber an das offizielle Handbuch. Deiner Meinung nach müßte dann unter 4.5.3 ein "rm -r /usr/ports/sysutils/lsof" gezeigt werden, das ist mitnichten der Fall.
 
Zurück
Oben