הרודפב GNU Hello World לש RPM תליבח רוציל דציכ


.ץבוק טמרופ אוה .rpm -ו תוליבחה להנמ תינכותל סחייתמ RPM םשהש ןייצל בושח .OpenSuse -ו CentOS, Fedora ןוגכ תובר סקוניל תוצפהב שמשמ אוה תעכ ,Red Hat Linux -ב שומישל רוקמב רצונ

.םניחב חותפ דוק תנכות תיינב ךילהת םעו ,שארמ ונכוהש RPM תוליבח יבגל תיסיסב הנבה ךל שיש םיחינמ ונא .סקוניל הרודפ לש הצפהב GNU לש "RPM "Hello World תליבח לשמל ,תויראניב הנכות תוליבחו טושפ רוק

הרודפב חותיפ ילכ ןקתה

.RPM תיינבל םישורדה םילכה תנקתהל האבה הדוקפה תלעפה ידי לע סקוניל הרודפב חותיפה תביבס תרדגהב ליחתנ

$ sudo dnf install fedora-packager @development-tools

.יקנ chroot -ב היינבה ךילה תא קודבל ךל רשפאי הז .(לעופב ךלש שמתשמה םשב tecmint תא ףלחה) אבה ןפואב 'המודמ' תצובקל השרומ-אלה ךנובשח תא ףסוה ,ןכמ רחאל

$ sudo usermod -a -G mock tecmint

.תויראניב תוליבחו RPM לש הרוצת יצבק ,טקיורפל רוקמ דוק הליכמה הנשמ תוירפס לש המישר גיצת איה .תואבה תודוקפה תועצמאב build -ה תא תמאו ךלש ~/rpmbuild תיירפסב RPM הנבמ רוצ ,תעכ

$ rpmdev-setuptree
$ tree ~/rpmbuild/

:תדעוימ הירפס לכ ןלהל

    "םלוע םולש" ד"לס תיינב

    .האבה wget הדוקפה םע rpmbuild/SOURCE/~ תיירפסל ,תוזירא ונאש Hello World טקיורפ לש ("הלעמב" רוקמכ םג עודיה) רוקמה דוק תא דירוהל םכילע הז בלשב

    $ cd ~/rpmbuild/SOURCES
    $ wget http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz -P ~/rpmbuild/SOURCES
    

    .ןותיע תינכות -rpmdev תועצמאב ,rpmbuild/SPECS/~ היירפסב (הז הרקמב hello.spec ול ארקנ ואוב) .spec ץבוק תועצמאב RPM תליבח תא רידגהל ואוב ,ןכמ רחאל

    $ cd ~/rpmbuild/SPECS
    $ rpmdev-newspec hello
    $ ls
    

    .ךילע ףדעומה ךרועה תועצמאב hello.spec ץבוקה תא חתפ זאו

    $ vim hello.spec
    

    :ךכ תואריהל הכירצ לדחמה תרירב תינבת

    Name:           hello
    Version:
    Release:        1%{?dist}
    Summary:
    
    License:
    URL:
    Source0:
    
    BuildRequires:
    Requires:
    
    %description
    
    %prep
    %autosetup
    
    %build
    %configure
    %make_build
    
    %install
    rm -rf $RPM_BUILD_ROOT
    %make_install
    
    %files
    %license add-license-file-here
    %doc add-docs-here
    
    %changelog
    * Tue May 28 2019 Aaron Kili
    

    : .spec ץבוקב לדחמה תרירב ירטמרפ תא הרצקב ריבסנ

      .גצומש יפכ םייוניש עצבו ךלש .spec -ה ץבוק תא ךורע תעכ

      Name:           hello
      Version:        2.10
      Release:        1%{?dist}
      Summary:        The "Hello World" program from GNU
      
      License:        GPLv3+
      URL:            http://ftp.gnu.org/gnu/%{name}
      Source0:        http://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.gz
      
      BuildRequires: gettext
            
      Requires(post): info
      Requires(preun): info
      
      %description 
      The "Hello World" program package 
      
      %prep
      %autosetup
      
      %build
      %configure
      make %{make_build}
      
      %install
      %make_install
      %find_lang %{name}
      rm -f %{buildroot}/%{_infodir}/dir
      
      %post
      /sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir || :
      
      %preun
      if [ $1 = 0 ] ; then
      /sbin/install-info --delete %{_infodir}/%{name}.info %{_infodir}/dir || :
      fi
      
      %files -f %{name}.lang
      %{_mandir}/man1/hello.1.*
      %{_infodir}/hello.info.*
      %{_bindir}/hello
      
      %doc AUTHORS ChangeLog NEWS README THANKS TODO
      %license COPYING
      
      %changelog
      * Tue May 28 2019 Aaron Kili
      

      .תויבקע ךרוצל ורקאמ תודוקפ םתואב שמתשהל אלא ,טרפמ יצבקב הלא םיביתנ לש השק דודיק עצבל אלש ףידע ללכ ךרדב ,ןכל .תוליבחל הנקתה יביתנ רידגהל ידכ RPM ידי לע ורדגוהש תכרעמ תואירק תיינבל תושמשמה ,

      :םהלש לדחמה תרירב יכרעו תורדגה םע דחי תוירפסו RPM תונבל ורקאמ ןלהל

        .RPM Macros :הזיראה תויחנהב ןייע וא usr/lib/rpm/platform/*/macros/ב הלא ורקאמ תודוקפ רובע םיכרעה תא אוצמל לוכי התאש בל םיש

        ד"לסה תליבח תיינב

        .האבה rpmbuild הדוקפה תא לעפה ,םיגאב יופינהו יראניבה ,רוקמה תליבח תא תונבל ידכ

        $ rpmbuild -ba hello.spec
        

        :RPM בוציע יללכל םימאות ורצונש RPM יצבקו טרפמה ץבוקש חיטבהלו קודבל ידכ rpmlint תינכותב שמתשהל לוכי התא .המאתהב ../RPMS/ ../SRPMS/ תוירפסב ורצוויי יראניב RP

        $ rpmlint hello.spec ../SRPMS/hello* ../RPMS/*/hello*
        

        .ךישמהל לכותש ינפל ןתוא ןקת ,הלעמלש ךסמה םולצתב גצומש יפכ תואיגש שי םא

        .הרודפ לש תלבגומה היינבה תביבסב חילצת תוליבחה תיינבש קודבל ידכ mock תינכותב ושמתשה ,ביבח ןורחא

        $ mock --verbose ../SRPMS/hello-2.10-1.fc29.src.rpm
        

        .RPM תוליבח תריצי :הרודפ לש דועיתב ןייע ,ףסונ עדימל

        .הרעה וא הלאש לכל ונילא עיגהל ידכ הטמלש בושמה ספוטב שמתשה .GUN Hello Word לש RPM תליבח רוציל דציכ םג וניארה .תיראניב הנכות תליבחו טושפ רוקמ תריציל ךלש הרודפה תכרעמ תא ריבגהל דציכ ונרבסה ,ה