3.2. Speciális dolgok

Képzelheted milyen problémákat okozhat, ha eltávolítod az alap-programkönyvtárat, amire egy csomó program épül.

Nálam minden rendben ment, amíg ki nem adtam a make install parancsot. Körülbelül a telepítés felénél hibaüzenetet kaptam, miszerint az rm nem tudott lefutni, aztán észrevettem, hogy még az olyan alapparancsok sem működnek, mint a cp, ls, mv, ln, tar stb. Mind azt írta ki, hogy nem találják a szükséges programkönyvtáruk egy részét.

Viszont erre is van megoldás. Programfordításkor a fordítót (compiler) rá lehet kényszeríteni, hogy a programkönyvtárakból használt függvényeket belefordítsák a programba, így azoknak már nem kell ezeket megkeresni a programkönyvtárból.

Ezért ebben a fejezetben a telepítéshez szükséges segédprogramok statikus változatát készítjük el.

3.2.1. Amikre mindenképpen szükséged lesz

3.2.1.1. A GNU-Binutils

  1. A legújabbat az ftp.gnu.org/gnu/binutils webhelyről töltheted le; a dokumentum íráskor ez a 2.14-es változat volt

  2. Csomagold ki a forrást:
    tar xIvf binutils-2.14.tar.bz2

  3. Lépj be a könyvtárba:
    cd binutils-2.14

  4. Állítsd be a makefile-okat:
    ./configure

  5. Fordítsd le a forrásokat:
    make

  6. Telepítsd:
    make install

Ha a fordítás során valamilyen gettextel kapcsolatos problémába ütköznél (mint például: "undeclared reference to lib_intl" vagy valami hasonló), akkor szedd le és telepítsd a legújabb változatot az ftp.gnu.org/gnu/gettext webhelyről.

Ha ez nem segít, akkor próbáld meg kikapcsolni az anyanyelvi támogatást a következőképpen:
./configure --no-nls

A binutils statikus változatát nem muszáj elkészíteni, de nem árt, mert sok régi változatút használó rendszerrel találkoztam, amelyekkel majdnem mindig valamilyen hiba volt, ezért szerintem jó ötlet itt megemlíteni ezeket.

3.2.1.2. GNU make

A make parancs a felelős a források lefordításáért, a gcc és más, a fordításához szükséges programok hívásáért. Ha valami baj történik az új glibc-vel, szükséged lehet valamit lefordítani, ezért nem árt, ha van egy statikus változatod, másként nem menne.

  1. Töltsd le a forrást az ftp.gnu.org/gnu/make/ webhelyről; a dokumentum írásakor a legújabb a 3.80 változat volt

  2. Csomagold ki:
    tar xIvf make-3.80.tar.bz2

  3. Lépj be a létrehozott könyvtárba:
    cd make-3.80

  4. Ügyelj rá, hogy a binárisokat statikusra fordítsd le:
    export CFLAGS="-static -O2 -g"

  5. Futtasd a beállító szkriptet:
    ./configure

  6. Fordítsd le:
    make

  7. Telepítsd a binárisokat :
    make install

  8. Ellenőrizz:
    make -v
    Az újonnan telepített változatot kell látnod. Ha nem, keresd meg a régi binárisokat, és cseréld ki őket egy szimbolikus hivatkozással (link) az új változatra.

Gratulálok! Ismét elkészítetted egy program statikus változatát.

3.2.1.3. A GNU core-utils

A core-utils a cp, rm, ln, mv stb alapparancsokból áll. Ha valami hiba történik a telepítés során, ezekre mindenképp szükség van a hiba helyrehozatalához, tehát itt a statikus változat igazán fontos.

  1. Megint csak töltsd le a forrást az ftp.gnu.org/gnu/coreutils/ webhelyről; a dokumentum íráskor a legújabb az 5.0 változat volt.

  2. Csomagold ki:
    tar xIvf coreutils-5.0.tar.bz2

  3. Lépj be a könyvtárba:
    cd coreutils-5.0

  4. Ügyelj rá, hogy a binárisokat statikusra fordítsd:
    export CFLAGS="-static -O2 -g"

  5. Futtasd a beállító szkriptet:
    ./configure

  6. Fordítsd le:
    make

  7. És telepítsd:
    make install

  8. Ellenőrizd, hogy az új változat-e az aktuális:
    cp --version
    Az új változat számát kell látnod, ha nem, akkor cseréld ki az összes régit egy szimbolikus hivatkozással az új változatra.

Most, hogy ezeknek az alapcsomagoknak a statikus változatát használod, biztos lehetsz benne, hogy minden körülmény közt működni fognak.

3.2.1.4. A GNU tar

Már használtad a GNU tar programot, amikor kicsomagoltad és telepítetted a programokat. De talán szükséged lehet majd újabb programokat fordítani, ha az új glibc miatt a rendszer összeomlik, tehát nem árt, ha ebből is van egy statikus változat (ezt személyesen tapasztaltam). Szükséged lesz a tar mellett a bz2 tömörítési algoritmusra, amely nincs benne a tar hivatalos forrásában.

  1. Töltsd le a tar forrását az ftp.gnu.org/gnu/tar webhelyről; a dokumentum írásakor a legújabb az 1.13 változat volt.

  2. Mivel sok forrás bz2 algoritmussal van tömörítve, szükséged lesz a beépített támogatásra, mert jobb mint csövekkel (pipe) dolgozni. Tehát töltsd le a foltot az ftp://infogroep.be/pub/linux/lfs/lfs-packages/4.1/tar-1.13.patch webhelyről.

  3. Csomagold ki:
    tar xzvf tar-1.13.tar.gz

  4. Másold át a foltot a tar forráskönyvtárába:
    cp tar-1.13.patch tar-1.13/

  5. Foltozd a forráskódot:
    patch -Np1 -i tar-1.13.patch

  6. Állítsd be a fordító kapcsolóit a statikus fordításhoz:
    export CFLAGS="-static -O2 -g"

  7. Most már beállíthod:
    ./configure

  8. Fordítsd le:
    make

  9. Végül telepítsd a csomagot:
    make install

  10. Egy gyors ellenőrzés, hogy feltelepült-e az új változat:
    tar --version
    Az új változatnak kell megjelennie, ellenkező esetben keresd meg a régieket és cseréld ki az újra mutató szimbolikus hivatkozásokkal.

Ha valami hibát észlelsz a make futtatásakor, próbáld meg kikapcsolni az anyanyelvi támogatást (nls). Ezt a következő kapcsolókkal érheted el:
--disable-nls

Megjegyzés: A tar ezen új változatában a -j kapcsolót kell használnod a .bzip2 fájlok kicsomagoláshoz, tehát a következő helyett:
tar xIvf anyfile.tar.bz2
így kell:
tar xjvf anyfile.tar.bz2
Nem tudom, hogy ez miért változott meg, mindenesetre így szépen működik.

3.2.1.5. A Bash shell

Én a Bash shell-t részesítem előnyben, ha másikat használsz, ügyelj arra, hogy a statikus változatát telepítsd, a glibc telepítése előtt.

  1. Töltsd le a Bash forrástt az ftp.gnu.org/gnu/bash/ webhelyről; a dokumentum írásakor a legújabb a 2.05b változat volt.

  2. Csomagold ki:
    tar xzvf bash-2.05b.tar.gz
    amely egy bash-2.05b könyvtárat hoz létre, benne a forrásokkal.

  3. Lépj be a könyvtárba:
    cd bash-2.05a

  4. Állíts be mindent a statikus programkészítéshez:
    export CFLAGS="-static -O2 -g"

  5. Állítsd be a makefile-okat:
    ./configure
    Ha valami extrát szeretnél a Bash-hoz, nézd meg a súgót:
    ./configure --help
    az összes kapcsolóról.

  6. Fordítsd le:
    make

  7. Telepítsd fel a binárisokat:
    make install
    Ez az /usr/local/bin/könyvtárba másolja a binárisokat.

  8. Ügyelj arra, hogy ne legyen más változat elérhető (mint a SuSE Linuxnál a /bin/ könyvtárban). Egyszerűen másold a binárist a /bin/ könyvtárba is:
    cp /usr/local/bin/bash /bin/
    Itt nem használunk szimbolikus hivatkozásokat, mivel a rendszerbetöltésnél és a bash indításakor ebből problémák adódhatnak.

Már van egy telepített statikus változatú Bash a rendszeren, ami így ugyan nagy, de legalább minden körülmény közt működik.

Ha másik shell-t szeretsz, használhatod azt is, csak ügyelj arra, hogy statikusan fordított változatot használj. Nyugodtan írd meg hogyan készítetted az általad használt shell statikus változatát, valószínűleg a HOGYAN következő változatában már szerepelni is fog.

3.2.2. Szoftverek, amelyek jól jöhetnek