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
FreeBSD automatisch herunterfahren, wenn Batterie leer ist
Nachdem mir zweimal der Laptop abgestellt ist, ohne sauber herunterzufahren, da die Batterie leer war, habe ich mich auf die Suchen nach einer Lösung gemacht, jedoch nur Lösungen mit Shellscripts/Cron gefunden, die ich nicht so schön fand. Also habe ich einen Patch für powerd(8) geschrieben. Es stellte sich aber heraus, dass dies mit devd(8) schon möglich ist. Also noch devd in die Googlesuche miteinbezogen und siehe da, das gibt es schon.
Einfach Folgendes mit root-Rechten ausführen:
# fetch -o /etc/rc.d/battery http://www.lestinsky.de/michael/scripts/battery.sh && chmod +x /etc/rc.d/battery
Danach folgende Zeilen in der /etc/devd.conf einfügen:
# Warnings and emergency shutdown if battery is running low.
notify 10 {
match "system" "ACPI";
match "subsystem" "CMBAT";
action "/etc/rc.d/battery";
};
Falls dies noch nicht der Fall ist, muss devd noch in der /etc/rc.conf eingetragen werden:
devd_enable="YES"
Ist der Batteriestand niedrig, wird eine Warnung an die Benutzer mittels wall(1) gesendet und wenn man darauf nicht reagiert, bzw. den Laptop an den Strom hängt, wird das System automatisch heruntergefahren.
Da jedoch mein IBM T42 den ACPI Batteriestatus nicht korrekt zurückmeldet, habe ich oben genanntes Skript angepasst, dass es bei 5% Batteriestand eine Warnung ausgibt, 60 Sekunden wartet und falls dann der Akku nicht wieder geladen wird, das System herunterfährt. Das angepasste devd-Skript ist hier verfügbar.
make targets für den FreeBSD Portbaum
Für den FreeBSD Portbaum bestehen verschiedene make targets. Diese können im Verzeichnis eines Ports angewendet werden, zum Beispiel /usr/ports/www/fluxcms, oder wo sich der Portbaum auch immer befindet.
Die meist gebrauchten targets sind vermutlich make install und make deinstall, wobei bei einem make deinstall Vorsicht geboten ist, da es nicht auf Abhängigkeiten achtet. Es gibt aber noch viele andere targets, die zum Teil nicht so oft gebraucht werden, jedoch manchmal sehr nützlich sind.
Möchte man nur die Quelldateien des Ports herunterladen, kann man dies wie folgt tun:
# make fetch
Will man die Quelldateien des Ports und die seiner Abhängigkeiten herunterladen, nimmt man folgendes target:
# make fetch-recursive
Zum Herausfinden, welche Dateien heruntergeladen werden würden, sie jedoch noch nicht herunterladen will, kann man eine der folgenden targets nehmen, je nachdem ob man die Dateien der Abhängigkeiten auch anzeigen lassen will:
# make fetch-list
# make fetch-recursive-list
Die Abhängigkeiten eines Ports lassen sich mit folgendem target herausfinden:
# make all-depends-list
Will man nur die Abhängigkeiten sehen, die der Port zum Laufen braucht, das heisst ohne die Abhängigkeiten die es braucht um den Port zu bauen, so kann man dies wie folgt tun:
# make run-depends-list
Einige Ports lassen sich mit einem dialog(1) konfigurieren. Der Dialog lässt sich durch folgende targets für nur den einen Port oder auch für alle Abhängigkeiten aufrufen:
# make config
# make config-recursive
Um die aktuelle Konfiguration anzusehen, kann man folgende targets benutzen:
# make showconfig
# make showconfig-recursive
Um die Konfigurationen zu löschen, stehen diese targets zur Verfügung:
# make rmconfig
# make rmconfig-recursive
Ein Portverzeichnis lässt sich wie folgt von temporären Daten säubern, die zum Bauen eines Ports benötigt werden:
# make clean
Will man auch noch die Quelldateien löschen, kann man das wie folgt tun:
# make distclean
Zum Säubern des Portverzeichnisses sollte man sich auch portsclean(1) anschauen.
Sucht man nach einem Port, kann man entweder portsearch oder make search in /usr/ports benutzen.
# cd /usr/ports/ && make search
The search target requires a keyword parameter or name parameter,
e.g.: "make search key=somekeyword"
or "make search name=somekeyword"
Für mehr Informationen zum Portbaum empfiehlt sich das Kapitel 4 des FreeBSD Handbuches.
Alle make targes sind in ports(7) beschrieben.
Flux CMS nun in den FreeBSD Ports
Seit heute ist das Flux CMS in den FreeBSD Ports:
http://www.freshports.org/www/fluxcms/
Für die Installation muss zuerst der Portbaum auf den aktuellen Stand gebracht und danach kann das Flux CMS wie folgt installiert werden:
# cd /usr/ports/www/fluxcms && make install clean
Quellcode mit csup anstatt CVSup aktualisieren
Seit kurzem gibt es eine unter der BSD-Lizenz stehende Alternative zu CVSup mit der man zum Beispiel den Portbaum oder den System-Quellcode aktualisiernen kann: csup
Da csup in C geschrieben ist und deshalb keine zusätzlichen Abhängigkeiten in den Ports hat, gleich CVSup und das zum Bauen von CVSup benötigte ezm3 deinstallieren und csup installieren:
# pkg_deinstall -d -v cvsup-without-gui-16.1h_2
# pkg_deinstall -d -v ezm3-1.2
# cd /usr/ports/net/csup/ && make install clean
Die Sup-Dateien von CVSup können auch mit csup verwendet werden. Das Aktualisieren ist ähnlich wie bei CVSup:
# csup -L 2 <Pfad zur Sup-Datei>
Mehr Informationen und alle Optionen von csup findet man in der Manpage csup(1).
Hostnamen einer Jail ändern
Muss der Hostname einer Jail geändert werden, so schlägt dies normalerweise mit folgender Fehlermeldung fehl:
jail# hostname <hostname>.<domain>.<tld>
hostname: sethostname: Operation not permitted
Dies liegt daran, dass im Hostsystem die security.jail.set_hostname_allowed Systemvariable standardmässig auf 0 ist:
host# sysctl -a | grep set_hostname
security.jail.set_hostname_allowed: 0
Möchte man nun den Hostnamen einer Jail ändern, muss zuerst im Hostsystem die Systemvariable geändert werden:
host# sysctl security.jail.set_hostname_allowed=1
security.jail.set_hostname_allowed: 0 -> 1
Danach den Hostnamen in der Jail mit hostname(1) ändern:
jail# hostname <hostname>.<domain>.<tld>
Danach die Systemvariable im Hostsystem wieder zurücksetzen:
host# sysctl security.jail.set_hostname_allowed=0
security.jail.set_hostname_allowed: 1 -> 0