[linux-baslangic] Re: SRPM ve i386

---------

From: Devrim GUNDUZ (devrim@gunduz.org)
Date: Thu 04 Mar 2004 - 03:05:37 EST

  • Next message: Serdar Aydemir: "[linux-baslangic] linux acilmiyor :(((((("

    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1

    Merhaba,

    Biraz uzun bir ileti olacak ama bu konuda bildiklerimi vaktim oldugu
    olcude yazmak istedim:

    On Thu, 4 Mar 2004, emrekadioglu wrote:

    > Fedora Core 1 kullaniyorum
    > Yansilardaki iso imagelarindan SRPM olanlar ile i386 olanlar
    > arasinda ne kadarlik bir performans farki oluyor ya da ne fark oluyor

    Onemli bir başarım farki var; zira SRPM'ler iX86'lar gibi bir binary degil
    ;)

    Olay su: SRPM, icinde bir spec dosyasi ve yazilimin kaynak kodu (ve
    gerekiyorsa yamalar) içerir. Siz onu kurduğunuz zaman,
    /usr/src/redhat/SPECS dizini altina, paket_adi.spec diye bir dosya ve
    /usr/src/redhat/SOURCES altina da kaynak kodlarini yerlestirir:

    Örnek:
    =====
    [root@devrim srpms]# uname -a
    Linux devrim 2.4.22-1.2115.nptl #1 Wed Oct 29 15:42:51 EST 2003 i686 i686
    i386 GNU/Linux
    [root@devrim srpms]# rpm -ivh sim-0.8.3-1.rh.src.rpm
       1:sim ###########################################
    [100%]
    [root@devrim srpms]# cd /usr/src/redhat/SPECS/
    [root@devrim SPECS]# ls
    sim-0.8.3-1.rh.spec
    [root@devrim SPECS]# cd ../SOURCES/
    [root@devrim SOURCES]# ls
    sim-0.8.3-symbol.patch sim-0.8.3.tar.gz
    [root@devrim SOURCES]#

    =====

    Gordugunuz gibi, sources icinde bir yama da var.

    Bu spec dosyasi, kendiniz icin ozellestirebileceginiz bir paket yapmaniza
    yardimci olur. Hani birileri der ya, "ben XXX dagitiminda istedigim
    sekilde derlerim yazilimi", bu SRPM ile daha da derli toplu yapilir: Paket
    yoneticisinin tum artilarini kullanirsiniz ustune.

    Ornek bir spec dosyasi (tamam hepsini yazmayacagim buraya :)) )

    ===============================
    Name: sim
    Version: 0.8.3
    Release: 1.rh%{releas
    ...
    %prep
    export QTDIR=/usr/lib/qt-3.1
                                                                                                                                 
    %setup
    %patch0 -p0
                                                                                                                                 
    make -f admin/Makefile.common
    CFLAGS="$RPM_OPT_FLAGS" CXXFLAGS="$RPM_OPT_FLAGS" ./configure $LOCALFLAGS
                                                                                                                                 
    %build
    # Setup for parallel builds
    numprocs=`egrep -c ^cpu[0-9]+ /proc/stat || :`
    if [ "$numprocs" = "0" ]; then
      numprocs=1
    fi
                                                                                                                                 
    make -j $numprocs
                                                                                                                                 
    %install
    make install-strip DESTDIR=$RPM_BUILD_ROOT
    ===========

    Bakin, bu dosyayi duzenleyerek istediginiz sekilde paketi
    derleyebilirsiniz. Isterseniz kendi yamalarinizi ekler (patch0 -p0 gibi),
    isterseniz configure betigine istediginiz parametreleri eklersiniz.

    Spec dosyasini duzenledikten sonra,

    rpmbuild -b{a,b} --target {iX86,noarch...} /usr/src/redhat/SPECS/paket_adi.spec

    ile de kendi paketinizi yaratabilirsiniz.

    - -ba : Build All anlamina gelir. -ba ile, hem binary paket yaparsiniz, hem
    de yaptiginiz degisiklikleri de iceren spec dosyasini barindiran yeni bir
    SRPM yaparsiniz. Bu degisiklikleri baska sistemlerde de yapmaniza gerek
    kalmaz boylece; olusturdugunuz SRPM'i bir de yeni sisteminizde
    derlersiniz, ayni sekilde.

    Bu sekilde yapilan SRPM'ler /usr/src/redhat/SRPMS dizini altina atilir.

    - -bb : Build Binary anlamina gelir. Sadece binary paketler yaratilir. UStte
    anlattigim SRPM'e gereksinmeniz yoksa bunu kullaniniz. Paketler,
    /usr/src/redhat/RPMS/{target'tan sonra yazdiginiz mimari} dizinine atilir.
    Ornek: --target i686 demisseniz, /usr/src/redhat/RPMS/i686 dizini altina
    atilir RPM(ler).

    Bu arada kucuk bir not: Eger spec dosyasi icinde sadece belirli bir target
    belirtilmisse, sizin verdiginiz -target parametresinin bir gecerliligi
    olmaz. O target icin build edilir paket.

    Eger siz spec dosyasini duzenlemeden direk olarak rpm yapmak isterseniz, o
    zaman da

    rpmbuild --rebuild --target {iX86,noarch...} paket_Adi....src.rpm

    demeniz yeterlidir. Bu durumda, ustteki -bb kisminda anlatilanlar
    gecerlidir. Paketler belirtilen dizinde olacaktir.

    Yine onemli bir not: Eger siz target belirtmezseniz, tum paketler i386
    icin derlenir.

    Bu arada, bazi yazilimlar kaynak kodlari ile birlikte bir spec dosyasini
    barindirabilirler. SIkIstIrIlmıs dosyadan bahsediyorum. Eger boyle bir
    spec dosyasi varsa, siz direk olarak rpm yapabilirsiniz:

    rpmbuild -t{a,b} --target {iX86,noarch...} yazilim...tar.gz

    - -ta ve -tb, ustteki -ba ve -bb ile ayni sonuclari dogurur.

    RPM paket yoneticisi ile ilgili bir sunuma,
    http://seminer.linux.org.tr/seminer-notlari/rpm.sxi
    adresinden ulasabilirsiniz.

    Umarim yardimci olmustur bu bilgiler. (Enver, bunu SSS'e
    (http://sss.linux.org.tr) koysak iyi olacak)

    Saygilar.
    - --
    Devrim GUNDUZ
    devrim@gunduz.org devrim.gunduz@linux.org.tr
                            http://www.TDMSoft.com
                            http://www.gunduz.org

    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.2.1 (GNU/Linux)

    iD8DBQFARuNTtl86P3SPfQ4RAgmbAJ9XQlEI4KUcqEHameaL0OvnPUEvWwCcCbbd
    okOaxt1H820rGtRJqtqRnLE=
    =Dty6
    -----END PGP SIGNATURE-----

    ---
    linux-baslangic listesinden cikmak  ve tum listeci islemleri icin
    http://liste.linux.org.tr/   adresini kullanabilirisniz.
    Bu listeden cikmak icin
    <a href="mailto:linux-baslangic-request@liste.linux.org.tr?Subject=unsubscribe"> tiklayiniz</a>
    

  • Next message: Serdar Aydemir: "[linux-baslangic] linux acilmiyor :(((((("

    ---------

    Bu arsiv hypermail 2.1.6 tarafindan uretilmistir.