Date: Sat, 19 Mar 2005 21:13:53 +0100 From: Phil Regnauld <none@regnauld--x0.dk.lh.bsd-dk.dk> To: bsd-dk@bsd-dk.dk Subject: Re: Skype på FreeBSD 5.3 -- Interaktiv troubleshooting af en Linux port
On Sat, Mar 19, 2005 at 10:36:24AM -0800, Joachim Bondo wrote:
>
> Det var ganske simpelt, og Dr. Phil vil på et tidspunkt fortælle til
> listen her, hvordan han gjorde...
Background
FreeBSD's port af linux-skype kører ikke (brok om manglende shared libs),
det har vi set på listen.
Setup
For at kunne løse problemet på en "interaktiv" måde så Joachim også kunne
få noget ud af det, blev vi enige om at bruge Skype igennem processen. Han
havde allerede en Mac på hans side. Jeg havde aldrig før prøvet Skype,
men det var en god lelighed til at prøve: Joachim bor i Vancouver p.t.,
det er nok lidt dyrt via Tele Aardvark.
På min side: jeg gik bare ind under /usr/ports/net/skype,
og en make;make install senere kørte skype på min FreeBSD (det var
først gamg :). Provokerende, ik' ?
For at gøre det endnu mere interaktivt, fik jeg en VNC server op
at køre på en maskine der kunne nås fra nettet af.
Så kunne vi begge to køre "vncviewer -shared thehost:1" fra hver
vores side, og se hvad den anden laver.
(der var også noget i at selv Joachim's bærbar lå bag ved en firewall,
så lært han også ved lejlighed at "ssh -R" er meget praktisk for at
bore huller i en pakke filter).
Processen
Hele sessionen blev optaget med "script" kommandoen.
1. Opgrade af linux_base
Den nuværende linux-base er en redhat 7.3
(/usr/ports/emulators/linux_base).
Jeg anbefalede først at vi fik slettet den (pkg_delete -f)
den nuværende linux_base, og fik den opgraderet til linux_base-rh-9.
pkg_delete -f tvinger en deinstallation uanset om der er afhængigheder
eller ej.
Debian_base var også en mulighed, men jeg havde haft dårlig erfaring
med den (alle mine shared libs i /usr/X11R6/lib var
blevet til Linux versioner!).
Da linux_base endelig var helt fjernet, forsøgte jeg at installere
linux_base-rh-9:
cd /usr/ports/emulators/linux_base-rh-9
make
Der ramte vi først problem:
=> glibc-2.3.2-27.9.7.i386.rpm doesn't seem to exist in /usr/ports/distfiles/rpm
/i386/rh9.
=> Attempting to fetch from http://mirrors.usc.edu/pub/linux/distributions/redha
t/redhat/linux/updates/9/en/os/i386/.
... og så ikke mere.
Det vidste sig at usc.edu havde ramt loftet med antal brugere.
Det hjalp ikke med at sætte "MASTER_SITE_OVERRIDE" da de RPMs ikke findes
på FreeBSD mirrors.
I stedet for, måtte jeg rette i /usr/ports/Mk/bsd.sites.mk og kommentere
mirrors.usc.edu under sektionen "MASTER_SITE_REDHAT_LINUX"
Det hjalp, og RPMer blev hentet fra www.gtlib.cc.gatech.edu i stedet for.
Til sidst lavede jeg en make install, og så var den ny linux_base
installerede.
2. Ret afhængighedsproblemer der opstod pga. af pkg_delete -f
portupgrade (/usr/ports/sysutils/portupgrade) var installeret -- det
kan kun anbefales for dem der ikke gør det endnu. hint, hint.
Det tog ikke mere end "pkgdb -F" for at lave en "dependency fix", så
de installerede pakker der var afhængige af linux_base-7.3 (herunder:
skype og linux-sun-jdk) kom nu til at pege på linux_base-rh-9.
3. Test af skype, stadigvæk problemer
Vi prøvet at køre skype: no go, den brokker sig om at der mangler
libXrender.so.1...
Mærkeligt nok, på min installation, findes der en libXrender.so.1 under
Linux's usr/X11R6/lib.
pkg_info -W /compat/linux/usr/X11R6/lib/libXrender.so.1 siger:
... was installed by package linux-XFree86-libs-4.3.99.902_2
Weird, der findes en linux-XFree86-libs-4.3.99.902_2 --
måske var der "leftovers" fra linux_base-7.3 som linux_base-rh-9 ikke
rørt ved, eller noget der blev pillet ved i hånden.
For at være 100% sikker, pkg_delete -f linux-XFree86-libs-4.3.99.902_2,
og reinstall af den (/usr/ports/x11/linux-XFree86-libs/).
4. Test igen
Skype brokker sig stadigvæk om at den mangler libXrender, og libX11.so.6.
Men den gang ER de installeret...
ldd viser de manglende shared libs:
% ldd /usr/X11R6/bin/skype_bin
/usr/X11R6/bin/skype_bin:
libXrender.so.1 => not found
libXft.so.1 => not found
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x289fc000)
libSM.so.6 => not found
libICE.so.6 => not found
libdl.so.2 => /lib/libdl.so.2 (0x28a4e000)
libXext.so.6 => not found
libX11.so.6 => not found
libpthread.so.0 => /lib/libpthread.so.0 (0x28a51000)
libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x28aa2000)
libm.so.6 => /lib/libm.so.6 (0x28b55000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x28b77000)
libc.so.6 => /lib/libc.so.6 (0x28b7f000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x289e6000)
Aha. Ser ud som om at ld.so.conf er ikke konfigureret korrekt.
Jeg tager en kig på /compat/linux/etc/ld.so.conf: 0 bytes...
Ok -- jeg fylder ind det nødvendig:
/lib
/usr/lib (disse to burde ikke være nødvendige, men...)
/usr/X11R6/lib
Linux's shared lib cache skal efter ændringer til ld.so.conf, kompileres
manuelt vha. /compat/linux/sbin/ldconfig)
Nu ser det meget bedre ud:
% ldd /usr/X11R6/bin/skype_bin
/usr/X11R6/bin/skype_bin:
libXrender.so.1 => /usr/X11R6/lib/libXrender.so.1 (0x289fd000)
libXft.so.1 => /usr/X11R6/lib/libXft.so.1 (0x28a05000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x28a13000)
libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x28a64000)
libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x28a6d000)
libdl.so.2 => /lib/libdl.so.2 (0x28a86000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x28a89000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x28a98000)
libpthread.so.0 => /lib/libpthread.so.0 (0x28b94000)
libstdc++.so.5 => /usr/lib/libstdc++.so.5 (0x28be5000)
libm.so.6 => /lib/libm.so.6 (0x28c98000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x28cba000)
libc.so.6 => /lib/libc.so.6 (0x28cc2000)
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x28de9000)
libexpat.so.0 => /usr/lib/libexpat.so.0 (0x28e0e000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x289e6000
Tada!
5. Så kører skype
5 minutter senere, kunne vi fortsætte vores skypefonisk samtale, med
FreeBSD på begge ender.
Kommentarer
Det kan betale sig at starte med at installere den linux_base som
man ønsker før man installerer andre Linux ports/applikationer,
i stedet for at lade en port (f.eks. skype) der afhænger
af det "tage beslutning" og ende med noget så gammelt som redhat-7.3.
Det havde nok smartere at kalde "skype" port for "linux-skype" som
der ellers plejer at gøres for andre Linux ports. Skal nok sende
en PR om det.
This archive was generated by hypermail 2b30 : Wed 15 Nov 2006 - 18:24:49 CET