asg
push it, don´t hype
Als Ersatz für Xfree86 gibt es in den Ports xorg welches vielen mittlerweile wegen der Lizenzänderung bei Xfree86 sympatischer ist.
Die Umstellung ist weit weniger schwierig als sich die meisten eventuell denken, daher dieses kleine Howto.
System:
FreeBSD 4.10-STABLE mit Xfree86 installiert (ebenso wie blackbox, OO.org,...)
(1) Deinstallation von Xfree86 und imake-4:
Zuerst müssen alle installierten Xfree86 Ports deinstalliert werden. Hierzu nimmt man am besten ?pkg_deinstall? (aus der Sammlung von portupgrade) und den Schalter ?-f? (der die deinstallation trotz bestehender Abhähngigkeiten durchführt).
Wer danach versucht ein "portversion" (in der Sammlung von portupgrade) aufzurufen, wird sehen das den entsprechenden Programmen die Abhängigkeiten zu Xfree86 fehlt.
Die Deinstallation von imake ist nötig da xorg ein eigenes imake nutzt, imake-6.
(2) Installation von xorg und imake-6:
Für "xorg" gibt es einen sogenannten "Meta-Port" der alle nötigen xorg Ports gleich mitinstalliert:
Über "portinstall" (aus der Sammlung von portupgrade) lässt sich der Port einfach installieren:
Bei der Installation von "imake" wählt man "imake-6" aus welches das richtige für xorg ist.
Installiert sind danach die folgenden Ports:
xorg-6.7.0
xorg-clients-6.7.0
xorg-fonts-100dpi-6.7.0
xorg-fonts-75dpi-6.7.0
xorg-fonts-cyrillic-6.7.0
xorg-fonts-encodings-6.7.0
xorg-fonts-miscbitmaps-6.7.0
xorg-fonts-truetype-6.7.0
xorg-fonts-type1-6.7.0
xorg-fontserver-6.7.0
xorg-libraries-6.7.0
xorg-printserver-6.7.0
xorg-server-6.7.0_5
xorg-vfbserver-6.7.0
imake-6.7.0
(3) Die Abhängigkeiten reparieren:
Vielen installierten Ports fehlen die Abhängigkeiten zu Xfree86 die durch xorg ersetzt werden müssen und die zu imake-4 welches nun imake-6 ist.
Hier verlangt der schon installierte Port die Xfree86 library die aber nicht mehr auf dem System installiert ist. Es ist also nötig das Programm "pkgdb" (in der Sammlung von portupgrade) mit dem Schalter "-F" aufzurufen:
Es werden eine Menge installierte Ports vorgeschlagen die als neue Abhängigkeit genutzt werden könnten (aber nicht wirklich sinnvoll wären).
Daher drückt man hinter "New dependency (? to help):" einfach die "TAB" Taste, danach werden alle installierten Ports aufgelistet, darunter auch der Ersatz für die Xfree86 Library:
Diese kann dann angegeben werden:
Sind noch weitere Ports davon betroffen das diesen die "Xfree86-libraries" fehlen, so wird dies von portupgrade erkannt und es wird sofort "xorg-libraries-6.7.0" als Abhängigkeit vorgeschlagen:
Hier muss nur noch "Return" gedrückt werden da das "yes" schon vorgegeben ist.
Gleiches gilt in diesem Fall natürlich auch für "imake-6".
(4) Auf was zu achten ist:
Bei jeder weiteren Installation eines Ports der X benötigt muss danach ein "pkgdb -F" ausgeführt werden um die Abhähngigkeiten manuell auf die von xorg zu setzen!
Ok, weiter unten, beim "Tip" (Nummer 6) gibt es eine Möglichkeit auch dies zu umgehen und es noch eleganter zu lösen (ich würde sagen, das wäre dann DIE Lösung).
Ich gehe davon aus das "bbdate" noch nicht installiert war nachdem xorg installiert wurde:
Keine Sorge, der Port "Free86-libraries-4.3.0_7" wird NICHT installiert (siehe dazu Punkt (5)).
Wie man sieht muss danach ein "pkgdb -F" ausgeführt werden, und die Abhängigkeit muss, wie oben beschrieben, gefixt werden.
(5) Wissenswertes:
Der Bau eines Ports klappt auch ohne installiertem Xfre86 da der zu installierende Port gegen "libX11.so.6" gelinkt wird.
Und diese Datei findet sich unter /usr/X11R6/lib wieder und wurde von xorg installiert:
Da "make" nach dieser Datei sucht, diese auch findet, funktioniert der build eines Ports ohne Probleme.
Was "make" nicht macht ist, die Abhängigkeiten zu überprüfen die in der /usr/ports/Mk/bsd.port.mk schon angegeben sind und auf die "Xfree86-libraries" ziegen. Daher muss nach einem erfolgten build eines Ports der auf X aufsetzt, "pkgdb -F" aufgerufen werden.
(6) Tip: Auch ohne pkgdb -F geht es (und so soll es auch sein!):
Wie eben beschrieben ist die Datei "usr/ports/Mk/bsd.port.mk" daran Schuld das man nach jeder installation eines Ports "pkgdb -F" aufrufen muss.
Muss man das wirklich?
Nein.
Man tausche in der Datei /usr/ports/Mk/bsd.port.mk die Angabe von "Xfree86-4-libraries" mit der von "xorg-libraries" aus:
Gleiches gilt auch hier für imake:
Ok, wenn man nun einen Port baut kommt:
Ja. so soll es sein, der Port baut direkt mit der Abhängigkeit auf "xorg-libraries". Ein portversion meckert danach auch nicht mehr, sondern läuft ohne Probleme durch.
Kleiner Schönheitsfehler, nach einem cvsup kann es sein das die Datei "/usr/ports/Mk/bsd.port.mk" wieder auf dem alten Stand ist, daher muss diese danach wieder bearbeitet werden.
Es mag evtl. noch andere Wege geben auf xorg zu switchen, ich selbst habe diesen durchgeführt und keine Probleme gehabt.
Die alte XF86Config kann beibehalten werden und blackbox startete ohne Probleme, ebenso OO.org und weitere Programme.
Ich möchte meine Hand nicht dafür ins Feuer legen das umgehend alle schon davor installierten Programme reibungslos funktionieren. Evtl. kann es vorkommen das man ein Programm nochmals neu bauen muss (portupgrade -f $Portname).
Die Umstellung ist weit weniger schwierig als sich die meisten eventuell denken, daher dieses kleine Howto.
System:
FreeBSD 4.10-STABLE mit Xfree86 installiert (ebenso wie blackbox, OO.org,...)
(1) Deinstallation von Xfree86 und imake-4:
Zuerst müssen alle installierten Xfree86 Ports deinstalliert werden. Hierzu nimmt man am besten ?pkg_deinstall? (aus der Sammlung von portupgrade) und den Schalter ?-f? (der die deinstallation trotz bestehender Abhähngigkeiten durchführt).
Code:
pkg_deinstall -f $Xfree86-Port
pkg_deinstall -f imake
Die Deinstallation von imake ist nötig da xorg ein eigenes imake nutzt, imake-6.
(2) Installation von xorg und imake-6:
Für "xorg" gibt es einen sogenannten "Meta-Port" der alle nötigen xorg Ports gleich mitinstalliert:
Code:
/usr/ports/x11/xorg# cat pkg-descr
This is a metaport for all the X.Org packages available in the ports tree.
Code:
portinstall imake
portinstall xorg
Installiert sind danach die folgenden Ports:
xorg-6.7.0
xorg-clients-6.7.0
xorg-fonts-100dpi-6.7.0
xorg-fonts-75dpi-6.7.0
xorg-fonts-cyrillic-6.7.0
xorg-fonts-encodings-6.7.0
xorg-fonts-miscbitmaps-6.7.0
xorg-fonts-truetype-6.7.0
xorg-fonts-type1-6.7.0
xorg-fontserver-6.7.0
xorg-libraries-6.7.0
xorg-printserver-6.7.0
xorg-server-6.7.0_5
xorg-vfbserver-6.7.0
imake-6.7.0
(3) Die Abhängigkeiten reparieren:
Vielen installierten Ports fehlen die Abhängigkeiten zu Xfree86 die durch xorg ersetzt werden müssen und die zu imake-4 welches nun imake-6 ist.
Code:
/usr/ports/x11-clocks# portversion -v
[Updating the pkgdb <format:bdb1_btree> in /var/db/pkg ... - 95 packages found (-0 +1) . done]
Stale dependency: bbdate-0.2.4 --> XFree86-libraries-4.3.0_7 -- manually run 'pkgdb -F' to fix, or specify -O to force.
Code:
/usr/ports/x11-clocks# pkgdb -F
---> Updating the pkgdb
---> Checking the package registry database
Stale dependency: bbdate-0.2.4 -> XFree86-libraries-4.3.0_7 (x11/XFree86-4-libraries):
New dependency? (? to help): help
Please choose one of these:
ORBit-0.5.17_2 atk-1.6.1 autoconf-2.13.000227_5 autoconf-2.53_1 automake-1.5,1 bbconf-1.8 bbdate-0.2.4 bbkeys-0.8.5 bbpager-0.3.1 bbrb-0.4.1_1 bitstream-vera-1.10 blackbox-0.65.0 boxtools-0.65.0 cpuburn-1.4 cups-1.1.20.0 cups-base-1.1.20.0 cups-lpr-1.1.20.0 cups-pstoraster-7.07_1 curl-7.12.0 cvsup-without-gui-16.1h ...
New dependency? (? to help):
Daher drückt man hinter "New dependency (? to help):" einfach die "TAB" Taste, danach werden alle installierten Ports aufgelistet, darunter auch der Ersatz für die Xfree86 Library:
Code:
[...]
xorg-libraries-6.7.0
[...]
Code:
New dependency? (? to help): xorg-libraries-6.7.0
Fixed. (-> xorg-libraries-6.7.0)
Code:
Stale dependency: libxfce4mcs-4.0.5 -> XFree86-libraries-4.3.0_7 (x11/XFree86-4-libraries):
xorg-libraries-6.7.0 ? ([y]es/[n]o/[a]ll) [yes]
Fixed. (-> xorg-libraries-6.7.0)
Stale dependency: libxfce4util-4.0.5 -> XFree86-libraries-4.3.0_7 (x11/XFree86-4-libraries):
xorg-libraries-6.7.0 ? ([y]es/[n]o/[a]ll) [yes]
Gleiches gilt in diesem Fall natürlich auch für "imake-6".
(4) Auf was zu achten ist:
Bei jeder weiteren Installation eines Ports der X benötigt muss danach ein "pkgdb -F" ausgeführt werden um die Abhähngigkeiten manuell auf die von xorg zu setzen!
Ok, weiter unten, beim "Tip" (Nummer 6) gibt es eine Möglichkeit auch dies zu umgehen und es noch eleganter zu lösen (ich würde sagen, das wäre dann DIE Lösung).
Ich gehe davon aus das "bbdate" noch nicht installiert war nachdem xorg installiert wurde:
Code:
/usr/ports/x11-clocks# portinstall bbdate
---> Installing 'bbdate-0.2.4' from a port (x11-clocks/bbdate)
---> Building '/usr/ports/x11-clocks/bbdate'
===> Cleaning for libiconv-1.9.1_3
===> Cleaning for gettext-0.13.1_1
===> Cleaning for gmake-3.80_2
===> Cleaning for imake-4.3.0_2
===> Cleaning for libtool-1.3.5_2
===> Cleaning for pkgconfig-0.15.0_1
===> Cleaning for freetype2-2.1.7_3
===> Cleaning for expat-1.95.7
===> Cleaning for fontconfig-2.2.2,1
===> Cleaning for XFree86-libraries-4.3.0_7
===> Cleaning for bbdate-0.2.4
Code:
portversion -v
[Updating the pkgdb <format:bdb1_btree> in /var/db/pkg ... - 95 packages found (-0 +1) . done]
Stale dependency: bbdate-0.2.4 --> XFree86-libraries-4.3.0_7 -- manually run 'pkgdb -F' to fix, or specify -O to force.
(5) Wissenswertes:
Der Bau eines Ports klappt auch ohne installiertem Xfre86 da der zu installierende Port gegen "libX11.so.6" gelinkt wird.
Code:
#less /usr/ports/Mk/bsd.port.mk
[...]
LIB_DEPENDS+= X11.6:${PORTSDIR}/x11/XFree86-4-libraries
[...]
Code:
/usr/ports/x11/xorg# pkg_info -W /usr/X11R6/lib/libX11.so.6
/usr/X11R6/lib/libX11.so.6 was installed by package xorg-libraries-6.7.0
Was "make" nicht macht ist, die Abhängigkeiten zu überprüfen die in der /usr/ports/Mk/bsd.port.mk schon angegeben sind und auf die "Xfree86-libraries" ziegen. Daher muss nach einem erfolgten build eines Ports der auf X aufsetzt, "pkgdb -F" aufgerufen werden.
(6) Tip: Auch ohne pkgdb -F geht es (und so soll es auch sein!):
Wie eben beschrieben ist die Datei "usr/ports/Mk/bsd.port.mk" daran Schuld das man nach jeder installation eines Ports "pkgdb -F" aufrufen muss.
Muss man das wirklich?
Nein.
Man tausche in der Datei /usr/ports/Mk/bsd.port.mk die Angabe von "Xfree86-4-libraries" mit der von "xorg-libraries" aus:
Code:
[...]
LIB_DEPENDS+= X11.6:${PORTSDIR}/x11/xorg-libraries
[...]
Code:
[...]
.if defined(USE_IMAKE)
BUILD_DEPENDS+= ${X11BASE}/lib/X11/config/date.def:${PORTSDIR}/devel/imake-6
RUN_DEPENDS+= mkhtmlindex:${PORTSDIR}/devel/imake-6
[...]
Code:
/usr/ports/x11-clocks# portinstall xtimer
---> Installing 'xtimer-0.8089' from a port (x11-clocks/xtimer)
---> Building '/usr/ports/x11-clocks/xtimer'
===> Cleaning for libiconv-1.9.1_3
===> Cleaning for gettext-0.13.1_1
===> Cleaning for gmake-3.80_2
[b]===> Cleaning for imake-6.7.0[/b]
===> Cleaning for libtool-1.3.5_2
===> Cleaning for pkgconfig-0.15.0_1
===> Cleaning for freetype2-2.1.7_3
===> Cleaning for expat-1.95.7
===> Cleaning for fontconfig-2.2.2,1
[b]===> Cleaning for xorg-libraries-6.7.0[/b]
===> Cleaning for xtimer-0.8089
Kleiner Schönheitsfehler, nach einem cvsup kann es sein das die Datei "/usr/ports/Mk/bsd.port.mk" wieder auf dem alten Stand ist, daher muss diese danach wieder bearbeitet werden.
Es mag evtl. noch andere Wege geben auf xorg zu switchen, ich selbst habe diesen durchgeführt und keine Probleme gehabt.
Die alte XF86Config kann beibehalten werden und blackbox startete ohne Probleme, ebenso OO.org und weitere Programme.
Ich möchte meine Hand nicht dafür ins Feuer legen das umgehend alle schon davor installierten Programme reibungslos funktionieren. Evtl. kann es vorkommen das man ein Programm nochmals neu bauen muss (portupgrade -f $Portname).