Verschiedene Komprimierungsmöglichkeiten
Auf Free- und OpenBSD gibt es verschiedene Komprimierungswerkzeuge.
compress
Nahezu auf jedem unixoiden Betriebssystem verfügbar. Mit compress(1) komprimierte Dateien tragen die Endung .Z.
Eine Datei wird wie folgt mit compress komprimiert und wieder entpackt:
# ls -aol test
-rw-r--r-- 1 beat wheel 3067 24 Jun 10:48 test
# compress test
# ls -aol test.Z
-rw-r--r-- 1 beat wheel 2117 24 Jun 10:48 test.Z
# uncompress test.Z
# ls -aol
-rw-r--r-- 1 beat wheel 3067 24 Jun 10:48 test
Mehrere Dateien müssen zuerst mit tar(1) zu einem Archiv gepackt werden, bevor sie mit compress komprimiert werden können.
compress ist sowohl auf Free- als auch auf OpenBSD im Basissystem verfügbar.
bzip2
Gute Kompressionsrate, dafür dauert das komprimieren länger. Mit bzip2(1) komprimierte Dateien tragen die Endung .bz2.
Eine Datei wird wie folgt mit bzip2 komprimiert und wieder entpackt:
# ls -aol test
-rw-r--r-- 1 beat wheel - 3067 24 Jun 10:48 test
# bzip2 test
# ls -aol test.bz2
-rw-r--r-- 1 beat wheel - 1689 24 Jun 10:48 test.bz2
# bunzip2 test.bz2
# ls -aol test
-rw-r--r-- 1 beat wheel - 3067 24 Jun 10:48 test
Mehrere Dateien müssen zuerst mit tar(1) zu einem Archiv gepackt werden, bevor sie mit bzip2 komprimiert werden können. Im folgenden Beispiel wird das Verzeichnis Verzeichnis zusammen mit dem ganzen Inhalt komprimiert und mit dem zweiten Befehl wieder entpackt.
# tar -cvpyf Verzeichnis.tar.bz2 Verzeichnis
# tar -xvyf test.tar.bz2
bzip2 ist auf FreeBSD bereits im Basissystem enthalten, auf OpenBSD findet man bzip2 im archivers/bzip2 Port.
gzip
Beliebtes Kompressionsprogramm. Mit gzip(1) komprimierte Dateien tragen die Endung .gz.
Eine Datei wird wie folgt mit gzip komprimiert und wieder entpackt:
# ls -aol test
-rw-r--r-- 1 beat wheel - 3067 24 Jun 10:48 test
#gzip test
#ls -aol test.gz
-rw-r--r-- 1 beat wheel - 1529 24 Jun 10:48 test.gz
#gunzip test
#ls -aol test
-rw-r--r-- 1 beat wheel - 3067 24 Jun 10:48 test
Mehrere Dateien müssen zuerst mit tar(1) zu einem Archiv gepackt werden, bevor sie mit gzip komprimiert werden können. Im folgenden Beispiel wird das Verzeichnis Verzeichnis zusammen mit dem ganzen Inhalt komprimiert und mit dem zweiten Befehl wieder entpackt.
# tar -cvpzf Verzeichnis.tar.gz Verzeichnis
# tar -xvzf test.tar.gz
gzip ist sowohl auf Free- als auch auf OpenBSD im Basissystem verfügbar.
zip
Um Daten mit Windowsbenutzern auszutauschen, empfiehlt sich zip(1). Mit zip komprimierte Dateien tragen die Endung .zip.
Eine Datei wird wie folgt mit zip komprimiert und wieder entpackt:
# ls -aol test
-rw-r--r-- 1 beat wheel - 3067 24 Jun 10:48 test
# zip test.zip test
adding: test (deflated 51%)
# ls -aol test.zip
-rw-r--r-- 1 beat wheel - 1646 24 Jun 11:34 test.zip
# unzip test.zip
Archive: test.zip
replace test? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
inflating: test
# ls -aol test
-rw-r--r-- 1 beat wheel - 3067 24 Jun 10:48 test
Mehrere Dateien lassen sich direkt mit zip komprimieren. Im folgenden Beispiel wird das Verzeichnis Verzeichnis zusammen mit dem ganzen Inhalt komprimiert:
# zip -r Verzeichnis.zip Verzeichnis
zip findet man auf Free- und OpenBSD im archivers/zip Port.
OpenBSD Packages aktualisieren
Seit OpenBSD 3.9 lassen sich installierte Packages einfach mit pkg_add(1) aktualisieren:
# pkg_add -ui -F update -F updatedepends
Dabei werden die installierten Packages mit denen verglichen, welche sich in einem Verzeichnis befinden, auf das die PKG_PATH Umgebungsvariable zeigt.
Wird folgende Meldung angezeigt, so wurde PKG_PATH nicht richtig gesetzt.
No packages available in the PKG_PATH
Mann kann PKG_PATH auch gleich beim Aufruf von pkg_add setzen:
# PKG_PATH=ftp://mirror.switch.ch/pub/OpenBSD/3.9/packages/i386 pkg_add -ui -F update -F updatedepends
Im nachfolgenden Beispiel wurden alle Packages auf Aktualisierungen überprüft und dank der -i Option kann der Benutzer entscheiden, ob und auf welche Version ein Package aktualisiert wird. Hier wird dovecot von 1.0-beta3 auf 1.0-beta8 aktualisiert:
# PKG_PATH=ftp://mirror.switch.ch/pub/OpenBSD/3.9/packages/i386 pkg_add -ui -F update -F updatedepends
Candidates for updating dovecot-1.0.beta3 - dovecot-1.0.beta3 dovecot-1.0.beta8
Ambiguous: dovecot-1.0.beta3 could be dovecot-1.0.beta3 dovecot-1.0.beta8
Choose one package
0:
1: dovecot-1.0.beta3
2: dovecot-1.0.beta8
Your choice: 2
Looking for updates: complete
Running the equivalent of pkg_add -r dovecot-1.0.beta8
dovecot-1.0.beta8 (extracting): complete
dovecot-1.0.beta3 (deleting): complete
dovecot-1.0.beta8 (installing): complete
Flashplugin 7 für Firefox auf FreeBSD 6.1
Da flashplugin6 wieder aus den Ports entfernt wurde, muss man das flashplugin7 installieren, wenn man nicht auf Flash verzichten möchte.
Folgendermassen hat die Installation auf FreeBSD 6.1 funktioniert:
# cd /usr/ports/www/firefox && make install clean
# cd /usr/ports/www/linuxpluginwrapper && make install clean
# cd /usr/ports/www/linux-flashplugin7 && make install clean
# cd /usr/src
# fetch http://people.FreeBSD.org/~nork/rtld_dlsym_hack.diff
# patch < rtld_dlsym_hack.diff
# cd libexec/rtld-elf
# make clean && make obj && make depend && make && make install
# cp /usr/local/share/examples/linuxpluginwrapper/libmap.conf-FreeBSD6 /etc/libmap.conf
# ln -s /usr/X11R6/lib/linux-flashplugin7/libflashplayer.so /usr/X11R6/lib/browser_plugins/libflashplayer.so
Quellen:
http://lists.freebsd.org/pipermail/freebsd-questions/2006-May/122903.html
http://lists.freebsd.org/pipermail/freebsd-questions/2006-May/122941.html
Update 04.09.2006
Scheinbar funktioniert obige Methode mit einem aktuellen Portbaum nicht mehr. Folgendermassen sollte die Installation nun wieder funktionieren:
# cd /usr/ports/www/firefox && make install clean
# cd /usr/ports/www/linuxpluginwrapper && make install clean
# cd /usr/ports/www/linux-flashplugin7 && make install clean
# cd /usr/src
# fetch http://people.FreeBSD.org/~nork/rtld_dlsym_hack.diff
# patch < rtld_dlsym_hack.diff
# cd libexec/rtld-elf
# make clean && make obj && make depend && make && make install
# cp /usr/local/share/examples/linuxpluginwrapper/libmap.conf-FreeBSD6 /etc/libmap.conf
# ln -s /usr/local/lib/npapi/linux-flashplugin/libflashplayer.so /usr/X11R6/lib/browser_plugins/libflashplayer.so
# ln -s /usr/local/lib/npapi/linux-flashplugin/flashplayer.xpt /usr/X11R6/lib/browser_plugins/flashplayer.xpt
Danach folgende Zeile in der /etc/libmap.conf
[/usr/X11R6/lib/linux-flashplugin7/libflashplayer.so]
in Folgende ändern:
[/usr/local/lib/npapi/linux-flashplugin/libflashplayer.so]
Portabhängigkeiten graphisch darstellen
Die Abhängigkeiten eines Ports lassen sich mit einem make all-depends-list im Portverzeichnis anzeigen:
# cd /usr/ports/devel/porttools && make all-depends-list
/usr/ports/devel/portlint
/usr/ports/textproc/cdiff
/usr/ports/security/sudo
/usr/ports/devel/newfile
/usr/ports/lang/perl5.8
/usr/ports/lang/ruby18
/usr/ports/security/openssl
Möchte man jetzt wissen, wie diese Ports voneinander abhängen, so kann man dies mit pkg_tree(7) anzeigen lassen.
# pkg_tree [-v] <Portname>
Benutzt man pkg_tree ohne Optionen, werden nur die Abhängigkeiten eines Ports angezeigt. Zum Beispiel:
# pkg_tree porttools
porttools-0.77
|\__ sudo-1.6.8.12_1
|\__ ruby-1.8.4_4,1
|\__ perl-5.8.8
|\__ portlint-2.9.0
|\__ openssl-0.9.8a
|\__ newfile-1.0.14_1
\__ cdiff-1.4_1
Benutzt man die -v Option, werden auch die Abhängigkeiten der Abhängigkeiten dargestellt:
# pkg_tree -v porttools
porttools-0.77
|\__ sudo-1.6.8.12_1
|\__ ruby-1.8.4_4,1
|\__ perl-5.8.8
|\__ portlint-2.9.0
| \__ perl-5.8.8
|\__ openssl-0.9.8a
|\__ newfile-1.0.14_1
| |\__ openssl-0.9.8a
| \__ ruby-1.8.4_4,1
\__ cdiff-1.4_1
\__ perl-5.8.8
pkg_tree kann einfach über den Portbaum installiert werden:
# cd /usr/ports/sysutils/pkg_tree && make install clean
UPDATE 05.02.2007:
pkg_tree wurde von sysutils in die neue Kategorie ports-mgmt verschoben. pkg_tree kann nun wie folgt installiert werden:
# cd /usr/ports/ports-mgmt/pkg_tree && make install clean
Mehrere WEP-verschlüsselte WLAN's mit DHCP nutzen
Arbeitet man mit einem Laptop nur in einem WEP-verschlüsselten WLAN, so kann man dieses einfach mit einer start_if Datei konfigurieren. Arbeitet man hingegen in mehreren WLAN's, so ist diese Variante nicht geeignet. Dies kann jedoch mit wpa_supplicant(8) gelöst werden. Zuerst muss die Datei /etc/wpa_supplicant.conf angelegt werden. Darin werden die verschiedenen WLAN's konfiguriert:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
network={
ssid="<SSID Netz 1>"
scan_ssid=1
key_mgmt=NONE
wep_tx_keyidx=0
wep_key0=<WEP Schlüssel Netz 1>
}
network={
ssid="<SSID Netz 2>"
scan_ssid=1
key_mgmt=NONE
wep_tx_keyidx=0
wep_key0=<WEP Schlüssel Netz 2>
}
Hier können nun beliebig viele WLAN Netze eingetragen werden und das jeweils verfügbare Netz wird dann genommen. Mit wpa_supplicant lassen sich auch WPA Netze konfigurieren. Alle Konfigurationsmöglichkeiten der wpa_supplicant.conf sind in der Manpage wpa_supplicant.conf(5) ausführlich beschrieben.
Danach muss die WLAN Karte nur noch in der /etc/rc.conf eingetragen werden:
ifconfig_<WLAN Karte>="DHCP wpa"
Um wpa_supplicant nutzen zu können, muss FreeBSD 6.0 oder neuer installiert sein.
Portspezifische Makevariablen setzen
Mit portconf ist es möglich, jedem Port gewisse Makevariablen zuzuweisen. portconf kann wie folgt installiert werden:
# cd /usr/ports/sysutils/portconf && make install
Dabei wird die /etc/make.conf um einige Zeilen erweitert, welche allerdings nicht editiert werden sollten. Danach können in /usr/local/etc/ports.conf die gewünschten Variablen gesetzt werden. Zum Beispiel:
editors/openoffice*: WITH_CCACHE|LOCALIZED_LANG=de
java/eclipse: WITH_MOZILLA=firefox
www/apache2*: WITH_SSL_MODULES=yes | WITH_DAV_MODULES=yes
www/firefox-i18n: WITHOUT_SWITCHER | FIREFOX_I18N=de en
x11/fakeport: CONFIGURE_ARGS=--with-modules="aaa bbb ccc"
Mehrere Optionen können mit Pipe getrennt werden. Die Konfigurationen, die mit portconf definiert werden, werden von portmaster, portupgrade, portmanager und make install berücksichtigt.
Da portconf erst seit dem 8 Juni 2006 in den Ports ist, muss evtl. vor dem Installieren der Portbaum auf den aktuellen Stand gebracht werden.
UPDATE 05.02.2007:
portconf wurde von sysutils in die neue Kategorie ports-mgmt verschoben. portconf kann nun wie folgt installiert werden:
# cd /usr/ports/ports-mgmt/portconf && make install clean
Rechnen auf der Kommandozeile
Auf der Kommandozeile kann man mit Hilfe von bc(1) auch Rechnen. Rechnet man mit Kommazahlen, sollte man die -l Option benutzen, so werden 20 Nachkommastellen angezeigt, ohne -l werden keine angezeigt. Ruft man bc auf, so kann man danach seine Rechnung eingeben und nach einem Enter wird das Ergebnis angezeigt. Danach kann eine weitere Rechnung eingebeben werden. bc kann mit quit, exit oder Ctrl + d beendet werden.
# bc -l
bc 1.06
Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
sqrt((3+2-1)*(9/3)-3)
3.00000000000000000000
9/4
2.25000000000000000000
10/3
3.33333333333333333333
exit
Die Operatoren + - * / sollten selbsterklärend sein, sqrt() ist die Quadratwurzel, ^ ist das Potenzzeichen, also 2^3 bedeutet 2 hoch 3:
# echo "2^3" | bc
8
Hier sieht man, wie man eine Rechnung mittels Pipe an bc übergeben kann.
Auch Modulo-Operationen lassen sich mit % machen. Dabei sollte man allerdings auf die -l Option verzichten:
# echo "9%5" | bc
4
Mit bc lässt sich noch viel mehr machen, dies ist ausführlich in bc(1) beschrieben.