Mit Hilfe von curly lassen sich Dateinamen zusammenfassen, so dass sie danach in gekürzter Form mit der csh weiterverwendet werden können. Im FreeBSD-Portbaum findet man curly unter sysutils/curly:
# cd /usr/ports/sysutils/curly && make install clean
Möchte man verschiedene Dateinamen zusammenfassen, so werden alle Dateinamen an uncurly übergeben und die gekürzte From wird danach angezeigt:
# uncurly ab.c ab.h de.c de.h ef.c ef.h
{ab,de,ef}.{c,h}
Umgekehrt kann die gekürzte Form an curly übergeben werden und alle Dateinamen welche auf das übergebene Muster zutreffen werden danach angezeigt:
# curly {ab,de,ef}.{c,h}
ab.c
ab.h
de.c
de.h
ef.c
ef.h
Mehr Informationen zu curly findet man in der Manpage curly(1).
Möchte man nach dem Ende von systinstall in FreeBSD 9.0 nicht auf ein Konfigurationshilfsmittel verzichten so kann man für die grundlegendsten Konfigurationen host-setup verwenden. Im FreeBSD-Portbaum findet man host-setup unter sysutils/host-setup:
# cd /usr/ports/sysutils/host-setup && make install clean
Nun kann host-setup als root gestartet werden:
# host-setup
Danach lassen sich mit der dialog-basierten Menu-Steuerung die wichtigsten Einstellungen zur Zeitzone, des Hostnamens und der Domain, den Netzwerkkonfigurationen und zum DNS machen. Mehr Informationen zu host-setup findet man in der Manage host-setup(1).
Mit Hilfe von sysrc können Informationen zur /etc/rc.conf ausgelesen werden und die Datei auf eine sichere Art bearbeitet werden. Im FreeBSD-Portbaum findet man sysrc unter sysutils/sysrc:
# cd /usr/ports/sysutils/sysrc && make install clean
Verwendet man die -A Option so werden alle möglichen Konfigurationsvariablen und ihren Standardwert angezeigt:
# sysrc -A
accept_sourceroute: NO
accounting_enable: NO
allscreens_flags:
[...]
Mit der -a Option werden alle Variablen angezeigt, welche nicht mit ihrem Standardwert gesetzt sind:
# sysrc -a
apache22_enable: YES
apache22_http_accept_enable: YES
apache2ssl_enable: YES
[...]
Falls eine Beschreibung zu einer Variable existiert, kann diese mit der -d Option angezeigt werden:
# sysrc -d fsck_y_enable
fsck_y_enable: Set to YES to do fsck -y if the initial preen fails.
Um den aktuell konfigurierten Wert auszulesen, kann einfach der Variablenname angegeben werden:
# sysrc jail_enable
jail_enable: YES
Auch können die aktuell konfigurierten Werte geändert werden ohne das die /etc/rc.conf manuell bearbeitet werden muss:
# grep jail_enable /etc/rc.conf
jail_enable="YES"
# sysrc jail_enable=NO
jail_enable: YES -> NO
# grep jail_enable /etc/rc.conf
jail_enable="NO"
Mehr Informationen und alle Optionen von sysrc findet man in der Manpage sysrc(8).
Mit Hilfe von ioping kann die Disk-Latenzzeit ähnlich wie mit ping(8) gemessen werden. Im FreeBSD-Portbaum findet man ioping unter sysutils/ioping:
# cd /usr/ports/sysutils/ioping && make install clean
Folgendes Beispiel misst die Latenzzeit einer SATA und einer SCSI-Platte und dabei wird mit der -c Option angegeben, dass 5 Messungen durchgeführt werden sollen:
# ioping -c 5 /dev/ad6
4096 bytes from /dev/ad6 (device 698.6 Gb): request=1 time=16.9 ms
4096 bytes from /dev/ad6 (device 698.6 Gb): request=2 time=16.5 ms
4096 bytes from /dev/ad6 (device 698.6 Gb): request=3 time=17.7 ms
4096 bytes from /dev/ad6 (device 698.6 Gb): request=4 time=10.2 ms
4096 bytes from /dev/ad6 (device 698.6 Gb): request=5 time=16.7 ms
--- /dev/ad6 (device 698.6 Gb) ioping statistics ---
5 requests completed in 4080.3 ms, 64 iops, 0.3 mb/s
min/avg/max/mdev = 10.2/15.6/17.7/2.7 ms
# ioping -c 5 /dev/da0
4096 bytes from /dev/da0 (device 279.4 Gb): request=1 time=10.9 ms
4096 bytes from /dev/da0 (device 279.4 Gb): request=2 time=9.1 ms
4096 bytes from /dev/da0 (device 279.4 Gb): request=3 time=5.4 ms
4096 bytes from /dev/da0 (device 279.4 Gb): request=4 time=8.6 ms
4096 bytes from /dev/da0 (device 279.4 Gb): request=5 time=8.2 ms
--- /dev/da0 (device 279.4 Gb) ioping statistics ---
5 requests completed in 4044.6 ms, 118 iops, 0.5 mb/s
min/avg/max/mdev = 5.4/8.4/10.9/1.8 ms
Mehr Informationen zu ioping erhält man in der Manage ioping(1).
Mit Hilfe von pkg_remove kann ein Port deinstalliert werden und alle installierten Ports die davon abhängig sind, werden auch automatisch deinstalliert. Im FreeBSD -Portbaum findet man pkg_remove unter ports-mgmt/pkg_remove:
# cd /usr/ports/ports-mgmt/pkg_remove && make install clean
Möchte man einen Port mit pkg_delete deinstallieren muss man die genaue Version angeben oder eine Regex verwenden und Abhängigkeiten werden nicht automatsch entfernt:
# pkg_delete thunderbird
pkg_delete: no such package 'thunderbird' installed
# pkg_delete thunderbird-9.0
pkg_delete: package 'thunderbird-9.0' is required by these other packages
and may not be deinstalled:
thunderbird-i18n-9.0
Ein rekursives Deinstallieren ist mit der -r Option von pkg_delete auch möglich, allerdings muss immer noch die genaue Version des Ports angegeben werden. Mit pkg_remove kann einfach der Portname angegeben werden und die Abhängigkeiten werden automatisch deinstalliert:
# pkg_remove thunderbird
remove: thunderbird-i18n-9.0
remove: thunderbird-9.0
Möchte man alle Ports eines Systemes deinstallieren verwendet man einfach das Schlüsselwort ALL und schon werden alle Ports deinstalliert:
# pkg_remove ALL
Mit Hilfe von logcheck können Logdateien überwacht werden und neue Einträge werden automatisch regelmässig per Mail versandt. Im FreeBSD-Portbaum findet man logcheck unter security/logcheck:
# cd /usr/ports/security/logcheck && make install clean
Als erstes muss in der /usr/local/etc/logcheck/logcheck.conf eine E-Mail-Adresse angegeben werden, an welche die Mail gesendet werden soll:
SENDMAILTO="beat@chreutertee.ch"
Natürlich können in dieser Konfigurationsdatei noch weitere Anpassungen gemacht werden. Nun können alle Dateien die Überwacht werden sollen in der Datei /usr/local/etc/logcheck/logcheck.logfiles aufgeführt werden. Der Benutzer logcheck benötigt natürlich Leserechte auf diese Dateien:
# these files will be checked by logcheck
# This has been tuned towards a default syslog install
/var/log/messages
#/var/log/auth.log
Nun wird logcheck automatisch jede Stunde ausgeführt und neue Einträge werden per Mail versandt. Mehr Informationen zu logcheck findet man in der Manpage logcheck(8).
Mit Hilfe von sl lässt man eine Dampflokomotive quer durch das Terminal fahren. Im FreeBSD-Portbaum findet man sl unter games/sl:
# cd /usr/ports/games/sl && make install clean
Gibt man nun sl ins Terminal ein, kommt die Dampflokomotive angefahren:
# sl
( ) (@@) ( ) (@) () @@ O @ O @ O
(@@@)
( )
(@@@@)
( )
==== ________ ___________
_D _| |_______/ \__I_I_____===__|_________|
|(_)--- | H\________/ | | =|___ ___| _________________
/ | | H | | | | ||_| |_|| _| \_____A
| | | H |__--------------------| [___] | =| |
| ________|___H__/__|_____/[][]~\_______| | -| |
|/ | |-----------I_____I [][] [] D |=======|____|________________________|_
__/ =| o |=-O=====O=====O=====O \ ____Y___________|__|__________________________|_
|/-=|___|= || || || |_____/~\___/ |_D__D__D_| |_D__D__D_|
\_/ \__/ \__/ \__/ \__/ \_/ \_/ \_/ \_/ \_/
Nicht das sl irgend einen Nutzen hätte, es kann aber trotzdem ganz witzig sein, wenn ein Benutzer anstatt ls sl eingibt oder man selber nicht mehr weiss, dass man sl installiert hat und sich vertippt. Benutzt man sl mit der -a, -l oder -F Option so ändert sich das Aussehen oder die Fahrtrichtung des Zuges.
Mit Hilfe von mysqltuner lassen sich einige Informationen zu einer laufenden MySQL-Instanz auslesen. Im FreeBSD-Portbaum findet man mysqltuner unter databases/mysqltuner:
# cd /usr/ports/databases/mysqltuner && make install clean
Führt man das Skript aus, wird man nach einem MySQL-Benutzer und dessen Passwort gefragt und danach werden einige Tests durchgeführt. Im folgenden Beispiel sieht man zum Beispiel, dass drei MySQL-Benutzer kein Passwort zugewiesen haben und dass die MySQL-Instanz mehr Arbeitsspeicher konfiguriert hat, als auf dem System überhaupt vorhanden ist:
# mysqltuner.pl
>> MySQLTuner 1.2.0 - Major Hayden <major@mhtx.net>
>> Bug reports, feature requests, and downloads at http://mysqltuner.com/
>> Run with '--help' for additional options and output filtering
Please enter your MySQL administrative login: root
Please enter your MySQL administrative password:
-------- General Statistics --------------------------------------------------
[--] Skipped version check for MySQLTuner script
[OK] Currently running supported MySQL version 5.0.92-log
[!!] Switch to 64-bit OS - MySQL cannot currently use all of your RAM
-------- Storage Engine Statistics -------------------------------------------
[--] Status: -Archive -BDB -Federated +InnoDB -ISAM -NDBCluster
[--] Data in MyISAM tables: 18M (Tables: 6)
[--] Data in InnoDB tables: 29M (Tables: 45)
[OK] Total fragmented tables: 0
-------- Security Recommendations -------------------------------------------
[!!] User 'qat@localhost' has no password set.
[!!] User 'root@127.0.0.1' has no password set.
[!!] User 'tinderbox2@localhost' has no password set.
-------- Performance Metrics -------------------------------------------------
[--] Up for: 32d 20h 18m 43s (4M q [1.739 qps], 86K conn, TX: 2B, RX: 396M)
[--] Reads / Writes: 97% / 3%
[--] Total buffers: 458.0M global + 18.2M per thread (200 max threads)
[!!] Allocating > 2GB RAM on 32-bit systems can cause system instability
[!!] Maximum possible memory usage: 4.0G (104% of installed RAM)
[OK] Slow queries: 0% (0/4M)
[OK] Highest usage of available connections: 10% (21/200)
[OK] Key buffer size / total MyISAM indexes: 384.0M/979.0K
[OK] Key buffer hit rate: 99.5% (1M cached / 4K reads)
[!!] Query cache efficiency: 7.0% (91K cached / 1M selects)
[OK] Query cache prunes per day: 0
[OK] Sorts requiring temporary tables: 0% (0 temp sorts / 33K sorts)
[OK] Temporary tables created on disk: 6% (4K on disk / 68K total)
[OK] Thread cache hit rate: 99% (57 created / 86K connections)
[!!] Table cache hit rate: 3% (46 open / 1K opened)
[OK] Open file limit used: 0% (5/11K)
[OK] Table locks acquired immediately: 100% (2M immediate / 2M locks)
[!!] InnoDB data size / buffer pool: 29.9M/8.0M
-------- Recommendations -----------------------------------------------------
General recommendations:
Increase table_cache gradually to avoid file descriptor limits
Variables to adjust:
*** MySQL's maximum memory usage is dangerously high ***
*** Add RAM before increasing MySQL buffer variables ***
query_cache_limit (> 1M, or use smaller result sets)
table_cache (> 2048)
innodb_buffer_pool_size (>= 29M)
Weiter gibt mysqltuner einige Vorschläge an welchen Variablen noch Verbesserungen gemacht werden könnte, allerdings sollte man diese nur vornehmen, wenn man auch weiss was die Variable macht und was Änderung überhaupt bewirken wird. Alle Optionen von mysqltuner erhält man mit der --help Option.
Verwendet man find und möchte man zum Beispiel mehrere Dateien mit bunzip2 entpacken werden die bunzip2 Prozesse nacheinander gestartet:
# find . -name "firefox-8.0*" -exec bunzip2 {} \; &
# ps aww | grep zip
43739 1 R+ 0:02.14 bunzip2 ./firefox-8.0.1.source.tar.bz2
Verwendet man find und xargs, werden alle Dateinamen an einen bunzip2 Prozess übergeben, welche die Dateien auch nacheinander entpackt:
# find . -name "firefox-8.0*" | xargs bunzip2 &
# ps aww | grep zip
13729 1 R+ 0:01.88 bunzip2 ./firefox-8.0.1.source.tar.bz2 ./firefox-8.0b3.source.tar.bz2 ./firefox-8.0b1.source.tar.bz2 ./firefox-8.0.source.tar.bz2 ./firefox-8.0.1.tar.bz2 ./firefox-8.0b6.source.tar.bz2 ./firefox-8.0b4.source.tar.bz2
Mit der -P Option von xargs kann nun angegeben werden wieviele Prozesse parallel gestartet werden sollen. Durch die -n Option wird nun jedem bunzip2 Prozess nur ein Argument, in diesem Falle ein Dateinamen übergeben.
# find . -name "firefox-8.0*" | xargs -n1 -P4 bunzip2 &
# ps aww | grep zip
14688 1 R+ 0:01.66 bunzip2 ./firefox-8.0.1.source.tar.bz2
14796 1 R+ 0:01.67 bunzip2 ./firefox-8.0b3.source.tar.bz2
14882 1 D+ 0:01.63 bunzip2 ./firefox-8.0b1.source.tar.bz2
15165 1 R+ 0:01.62 bunzip2 ./firefox-8.0.source.tar.bz2
Auf FreeBSD ist xargs standardmässig im Basissystem vorhanden. Mehr Informationen zu Sargs findet man in der Manpage xargs(1).
Mit Hilfe von porttree können die Abhängigkeiten eines Portes graphisch als Baum dargestellt werden. Im FreeBSD-Portbaum findet man porttree unter ports-mgmt/porttree:
# cd /usr/ports/ports-mgmt/porttree && make install clean
Mit der -A Option werden alle Ports aufgelistet, welche für das Bauen und das Ausführen des angegebenen Portes benötigt werden. Mit der -R Option werden alle Ports aufgelistet, welchen den angegebenen Port als Abhängigkeit haben. Folgendes Beispiel zeigt alle Abhängigkeiten von Firefox:
# porttree -A -R www/firefox
/usr/ports/accessibility
/usr/ports/arabic
/usr/ports/archivers
/usr/ports/astro
[...]
/usr/ports/x11-toolkits
/usr/ports/x11-wm
Depending on
0 +www/firefox
1 ++accessibility/atk
2 |++devel/gettext
3 ||++converters/libiconv
4 |||`devel/libtool
||`devel/libtool -> 4
5 |++devel/gio-fam-backend
6 ||++devel/gamin
|||++devel/gettext -> 2
7 |||++devel/glib20
||||++devel/gettext -> 2
8 ||||++devel/gmake
|||||`+devel/gettext -> 2
||||+devel/libtool -> 4
9 ||||+devel/pcre
10 ||||++devel/pkg-config
|||||`+devel/gmake -> 8
11 ||||+lang/perl5.10
12 ||||`lang/python26
|||++devel/gmake -> 8
|||+devel/libtool -> 4
|||`+devel/pkg-config -> 10
||++devel/glib20 -> 7
||++devel/gmake -> 8
||`+devel/pkg-config -> 10
|++devel/glib20 -> 7
|++devel/gmake -> 8
13 |++devel/gobject-introspection
14 ||++devel/bison
|||++devel/gettext -> 2
15 |||`devel/m4
||++devel/gettext -> 2
||++devel/gio-fam-backend -> 5
||++devel/glib20 -> 7
||++devel/gmake -> 8
16 ||++devel/libffi
|||`+devel/pkg-config -> 10
||+devel/libtool -> 4
||++devel/pkg-config -> 10
17 ||++graphics/cairo
|||++devel/gio-fam-backend -> 5
|||++devel/glib20 -> 7
|||+devel/libtool -> 4
|||++devel/pkg-config -> 10
18 |||+graphics/png
19 |||++print/freetype2
||||++devel/gmake -> 8
||||+devel/libtool -> 4
||||`+devel/pkg-config -> 10
20 |||++x11-fonts/fontconfig
||||++devel/gmake -> 8
||||+devel/libtool -> 4
||||++devel/pkg-config -> 10
||||++print/freetype2 -> 19
21 ||||`textproc/expat2
22 |||++x11/libXrender
||||++devel/pkg-config -> 10
23 ||||++x11/libX11
|||||++devel/pkg-config -> 10
24 |||||+devel/xorg-macros
25 |||||+x11-fonts/xf86bigfontproto
26 |||||+x11/bigreqsproto
27 |||||+x11/inputproto
28 |||||+x11/kbproto
29 |||||++x11/libXau
||||||++devel/pkg-config -> 10
30 ||||||`+x11/xproto
|||||| `+devel/pkg-config -> 10
31 |||||++x11/libXdmcp
||||||++devel/pkg-config -> 10
||||||`+x11/xproto -> 30
32 |||||++x11/libxcb
||||||++devel/gmake -> 8
33 ||||||++devel/libcheck
|||||||`+devel/gmake -> 8
34 ||||||++devel/libpthread-stubs
|||||||++devel/gmake -> 8
|||||||`+devel/pkg-config -> 10
||||||+lang/python26 -> 12
35 ||||||++textproc/libxslt
|||||||++devel/gmake -> 8
|||||||++devel/pkg-config -> 10
36 |||||||++security/libgcrypt
||||||||+devel/libtool -> 4
37 ||||||||`+security/libgpg-error
|||||||| ++converters/libiconv -> 3
|||||||| ++devel/gettext -> 2
|||||||| `devel/libtool -> 4
38 |||||||`+textproc/libxml2
||||||| ++converters/libiconv -> 3
||||||| ++devel/gmake -> 8
||||||| `+devel/pkg-config -> 10
||||||++x11/libXau -> 29
||||||++x11/libXdmcp -> 31
39 ||||||`+x11/xcb-proto
|||||| +lang/python26 -> 12
|||||| `+textproc/libxml2 -> 38
40 |||||+x11/xcmiscproto
41 |||||+x11/xextproto
|||||++x11/xproto -> 30
42 |||||`+x11/xtrans
||||| `+devel/pkg-config -> 10
43 ||||+x11/renderproto
||||`+x11/xproto -> 30
44 |||++x11/pixman
||||+devel/libtool -> 4
||||++devel/pkg-config -> 10
||||`lang/perl5.10 -> 11
45 |||`+x11/xcb-util
||| ++devel/gmake -> 8
46 ||| +devel/gperf
||| +devel/libtool -> 4
||| ++x11/libXau -> 29
||| ++x11/libXdmcp -> 31
||| `+x11/libxcb -> 32
||`lang/python26 -> 12
|+devel/libtool -> 4
|`+devel/pkg-config -> 10
47 +archivers/unzip
48 ++archivers/zip
|`archivers/unzip -> 47
++converters/libiconv -> 3
49 ++devel/autoconf213
50 |+devel/autoconf-wrapper
|+devel/m4 -> 15
|`lang/perl5.10 -> 11
51 ++devel/dbus-glib
52 |++devel/dbus
||++devel/gmake -> 8
||+devel/libtool -> 4
||++devel/pkg-config -> 10
53 ||+sysutils/gnome_subr
||+textproc/expat2 -> 21
||++textproc/libxml2 -> 38
54 ||++x11/libICE
|||++devel/pkg-config -> 10
|||++x11/xproto -> 30
|||`+x11/xtrans -> 42
55 ||++x11/libSM
|||++devel/pkg-config -> 10
|||+devel/xorg-macros -> 24
|||++x11/libICE -> 54
|||++x11/xproto -> 30
|||`+x11/xtrans -> 42
||`+x11/libX11 -> 23
|++devel/gettext -> 2
|++devel/gio-fam-backend -> 5
|++devel/glib20 -> 7
|++devel/gmake -> 8
|+devel/libtool -> 4
|`+devel/pkg-config -> 10
56 ++devel/desktop-file-utils
|++devel/gettext -> 2
|++devel/gio-fam-backend -> 5
|++devel/glib20 -> 7
|++devel/gmake -> 8
|`+devel/pkg-config -> 10
++devel/gio-fam-backend -> 5
++devel/glib20 -> 7
++devel/gmake -> 8
57 ++devel/libIDL
|++devel/bison -> 14
|++devel/gettext -> 2
|++devel/gio-fam-backend -> 5
|++devel/glib20 -> 7
|++devel/gmake -> 8
|`+devel/pkg-config -> 10
58 +devel/libevent
59 +devel/libexecinfo
60 ++devel/libnotify
|++accessibility/atk -> 1
|++devel/gettext -> 2
|++devel/gio-fam-backend -> 5
|++devel/glib20 -> 7
|++devel/gmake -> 8
|++devel/gobject-introspection -> 13
|+devel/libtool -> 4
|++devel/pkg-config -> 10
61 |++textproc/intltool
||++converters/libiconv -> 3
||++devel/gmake -> 8
||+lang/perl5.10 -> 11
62 ||`+textproc/p5-XML-Parser
|| +lang/perl5.10 -> 11
|| `textproc/expat2 -> 21
63 |++x11-toolkits/gtk20
||++accessibility/atk -> 1
||++devel/gettext -> 2
||++devel/gio-fam-backend -> 5
||++devel/glib20 -> 7
||++devel/gmake -> 8
||++devel/gobject-introspection -> 13
||+devel/libtool -> 4
||++devel/pkg-config -> 10
64 ||++graphics/gdk-pixbuf2
|||++devel/gio-fam-backend -> 5
|||++devel/glib20 -> 7
|||++devel/gmake -> 8
|||++devel/gobject-introspection -> 13
|||+devel/libtool -> 4
|||++devel/pkg-config -> 10
65 |||++graphics/jasper
||||+archivers/unzip -> 47
||||+devel/libtool -> 4
66 ||||`+graphics/jpeg
|||| `devel/libtool -> 4
|||++graphics/jpeg -> 66
|||+graphics/png -> 18
67 |||++graphics/tiff
||||+devel/libtool -> 4
68 ||||+graphics/jbigkit
||||`+graphics/jpeg -> 66
69 |||++x11-toolkits/libXt
||||++devel/pkg-config -> 10
||||+x11/kbproto -> 28
||||++x11/libSM -> 55
||||++x11/libX11 -> 23
||||`+x11/xproto -> 30
|||++x11/libX11 -> 23
70 |||`+x11/libXi
||| ++devel/pkg-config -> 10
||| +x11/inputproto -> 27
||| ++x11/libX11 -> 23
71 ||| ++x11/libXext
||| |++devel/pkg-config -> 10
||| |++x11/libX11 -> 23
||| |++x11/libXau -> 29
||| |+x11/xextproto -> 41
||| |`+x11/xproto -> 30
||| +x11/xextproto -> 41
||| `+x11/xproto -> 30
72 ||++graphics/gtk-update-icon-cache
|||++accessibility/atk -> 1
|||++devel/gettext -> 2
|||++devel/gio-fam-backend -> 5
|||++devel/glib20 -> 7
|||++devel/gmake -> 8
|||++devel/gobject-introspection -> 13
|||+devel/libtool -> 4
|||++devel/pkg-config -> 10
|||++graphics/gdk-pixbuf2 -> 64
|||+lang/perl5.10 -> 11
73 |||+misc/hicolor-icon-theme
74 |||++misc/shared-mime-info
||||++devel/gettext -> 2
||||++devel/gio-fam-backend -> 5
||||++devel/glib20 -> 7
||||++devel/gmake -> 8
||||++devel/pkg-config -> 10
||||++textproc/intltool -> 61
||||`+textproc/libxml2 -> 38
75 |||++x11-toolkits/pango
||||++devel/gettext -> 2
||||++devel/gio-fam-backend -> 5
||||++devel/glib20 -> 7
||||++devel/gmake -> 8
||||++devel/gobject-introspection -> 13
||||+devel/libtool -> 4
||||++devel/pkg-config -> 10
||||++graphics/cairo -> 17
||||++print/freetype2 -> 19
76 ||||++x11-fonts/encodings
77 |||||++x11-fonts/bdftopcf
||||||++devel/pkg-config -> 10
78 ||||||`+x11-fonts/libXfont
|||||| ++devel/pkg-config -> 10
|||||| ++print/freetype2 -> 19
79 |||||| +x11-fonts/fontsproto
80 |||||| ++x11-fonts/libfontenc
|||||| |++devel/pkg-config -> 10
|||||| |`+x11/xproto -> 30
|||||| ++x11/xproto -> 30
|||||| `+x11/xtrans -> 42
81 |||||+x11-fonts/font-util
82 |||||`+x11-fonts/mkfontscale
||||| ++devel/pkg-config -> 10
||||| ++print/freetype2 -> 19
||||| ++x11-fonts/libfontenc -> 80
||||| `+x11/xproto -> 30
83 ||||++x11-fonts/libXft
|||||++devel/pkg-config -> 10
|||||++print/freetype2 -> 19
|||||++x11-fonts/fontconfig -> 20
|||||++x11/libXrender -> 22
|||||`+x11/xproto -> 30
84 ||||++x11-fonts/xorg-fonts-truetype
85 |||||++x11-fonts/bitstream-vera
||||||`+x11-fonts/fontconfig -> 20
|||||++x11-fonts/encodings -> 76
86 |||||++x11-fonts/font-bh-ttf
||||||++devel/pkg-config -> 10
||||||++x11-fonts/fontconfig -> 20
87 ||||||++x11-fonts/mkfontdir
|||||||++devel/pkg-config -> 10
|||||||`+x11-fonts/mkfontscale -> 82
||||||`+x11-fonts/mkfontscale -> 82
88 |||||++x11-fonts/font-misc-ethiopic
||||||++devel/pkg-config -> 10
||||||++x11-fonts/fontconfig -> 20
||||||++x11-fonts/mkfontdir -> 87
||||||`+x11-fonts/mkfontscale -> 82
89 |||||`+x11-fonts/font-misc-meltho
||||| ++devel/pkg-config -> 10
||||| ++x11-fonts/fontconfig -> 20
||||| ++x11-fonts/mkfontdir -> 87
||||| `+x11-fonts/mkfontscale -> 82
||||`+x11/libXrender -> 22
|||++x11/libX11 -> 23
90 |||++x11/libXcomposite
||||++devel/pkg-config -> 10
91 ||||+x11/compositeproto
92 ||||+x11/fixesproto
||||++x11/libX11 -> 23
||||++x11/libXext -> 71
93 ||||++x11/libXfixes
|||||++devel/pkg-config -> 10
|||||+x11/fixesproto -> 92
|||||++x11/libX11 -> 23
|||||+x11/xextproto -> 41
|||||`+x11/xproto -> 30
||||`+x11/xproto -> 30
94 |||++x11/libXcursor
||||++devel/pkg-config -> 10
||||+x11/fixesproto -> 92
||||++x11/libX11 -> 23
||||++x11/libXfixes -> 93
||||++x11/libXrender -> 22
||||+x11/xextproto -> 41
||||`+x11/xproto -> 30
95 |||++x11/libXdamage
||||++devel/pkg-config -> 10
96 ||||+x11/damageproto
||||+x11/fixesproto -> 92
||||++x11/libX11 -> 23
||||++x11/libXfixes -> 93
||||+x11/xextproto -> 41
||||`+x11/xproto -> 30
|||++x11/libXext -> 71
|||++x11/libXfixes -> 93
|||++x11/libXi -> 70
97 |||++x11/libXinerama
||||+devel/libtool -> 4
||||++devel/pkg-config -> 10
||||++x11/libX11 -> 23
||||++x11/libXext -> 71
||||+x11/xextproto -> 41
98 ||||`x11/xineramaproto
99 |||++x11/libXrandr
||||++devel/pkg-config -> 10
||||++x11/libX11 -> 23
||||++x11/libXext -> 71
||||++x11/libXrender -> 22
100 ||||+x11/randrproto
||||+x11/renderproto -> 43
||||+x11/xextproto -> 41
||||`+x11/xproto -> 30
|||`+x11/libXrender -> 22
||+lang/perl5.10 -> 11
||+misc/hicolor-icon-theme -> 73
||++misc/shared-mime-info -> 74
101 ||++print/cups-client
|||`+devel/gmake -> 8
||++x11-toolkits/pango -> 75
||++x11/libX11 -> 23
||++x11/libXcomposite -> 90
||++x11/libXcursor -> 94
||++x11/libXdamage -> 95
||++x11/libXext -> 71
||++x11/libXfixes -> 93
||++x11/libXi -> 70
||++x11/libXinerama -> 97
||++x11/libXrandr -> 99
||`+x11/libXrender -> 22
|`+x11-toolkits/pango -> 75
102 ++devel/nspr
|`+devel/gmake -> 8
++devel/pkg-config -> 10
103 ++devel/yasm
|++converters/libiconv -> 3
|`+devel/gettext -> 2
++graphics/cairo -> 17
104 ++graphics/libGL
|++devel/gmake -> 8
105 |++devel/makedepend
||++devel/pkg-config -> 10
||`+x11/xproto -> 30
106 |++graphics/libdrm
||`+devel/libpthread-stubs -> 34
|+textproc/expat2 -> 21
107 |+x11/dri2proto
108 |+x11/glproto
|++x11/libX11 -> 23
|++x11/libXdamage -> 95
|++x11/libXext -> 71
|++x11/libXfixes -> 93
109 |`+x11/libXxf86vm
| ++devel/pkg-config -> 10
| ++x11/libX11 -> 23
| ++x11/libXext -> 71
| +x11/xextproto -> 41
110 | +x11/xf86vidmodeproto
| `+x11/xproto -> 30
+lang/perl5.10 -> 11
++textproc/intltool -> 61
++x11-toolkits/gtk20 -> 63
++x11-toolkits/libXt -> 69
++x11-toolkits/pango -> 75
++x11/libICE -> 54
++x11/libSM -> 55
++x11/libX11 -> 23
++x11/libXext -> 71
++x11/libXi -> 70
++x11/libXinerama -> 97
111 +x11/printproto
`+x11/xproto -> 30
Required by:
0 +www/firefox
1 +german/bsdforen-firefox-searchplugin
2 +german/bsdgroup-firefox-searchplugin
3 `www/firefox-i18n
Auch können nur gewisse Abhängigkeiten abgefragt werden. Die -f Option zeigt nur die Abhängigkeiten welche zum Herunterladen des Quellcodes gebraucht werden, die -e Option jene die zum Auspacken des Quellcodes verwendet werden, die -p Option die Patch-Abhängigkeiten, die -b Option alle Ports die zum Bauen gebraucht werden, die -l Optionen alle Ports die aufgrund ihrer Libraries verwendet werden und mit der -r Option alle Ports die zum Ausführen benötigt werden.
Folgendes Beispiel zeigt alle Abhängigkeiten die zum Bauen von LLVM gebraucht werden:
# porttree -A -R -b devel/llvm
/usr/ports/accessibility
/usr/ports/arabic
[...]
/usr/ports/x11-themes
/usr/ports/x11-toolkits
/usr/ports/x11-wm
Depending on
0 +devel/llvm
1 +devel/gmake
2 `lang/perl5.10
Required by:
0 +devel/llvm
1 +graphics/opengtl
2 +lang/clang
3 +lang/ldc-devel
4 +lang/llvm-gcc4
5 `lang/pure
Mehr Informationen und alle Optionen von porttree findet man in der Manpage porttree(1).