Re: Skype på FreeBSD 5.3 -- Interaktiv troubleshooting af en Linux port

From: Phil Regnauld (none@regnauld--x0.dk.lh.bsd-dk.dk)
Date: Sat 19 Mar 2005 - 21:13:53 CET


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