Meniu

Impachetarea unui program pentru Fedora - Gnocky

Gnocky este o aplicatie grafica libera integrata bine in GNOME, cu care poti trimite SMS de pe calculator. In spate, Gnocky foloseste biblioteca libera gnokii.

Pe Fedora poti testa ultima versiune de Gnocky, de acum 2 ani (decembrie 2008), doar compiland sursele, ceea ce nu este prea comod. Pentru Debian/Ubuntu, exista deja un pachet deb, asa ca m-am gandit sa-l impachetez si pentru Fedora.

Cartea de bucate RPM este, fara indoiala, pagina wiki de pe FedoraProject.org, How to create an RPM package. Iti recomand sa o citesti pe diagonala si sa revii la ea ori de cate ori te afli in incurcatura. Eu in continuare iti ofer minimul de informatii ca sa faci un pachet, daca esti in graba. Si folosesc ca exemplu impachetarea lui Gnocky.

  1. Compileaza programul din surse, ca sa vezi ce dependente are (./configure ti le va spune) si daca merge. Noteaza aceste dependente undeva, preferabil pe o pagina wiki dedicata, ca sa stie si alti voinici. :-P
    $ wget http://www.gnokii.org/download/gnocky/gnocky-0.0.7.tar.gz
    $ tar xzvf gnocky-0.0.7.tar.gz
    $ cd gnocky-0.0.7
    $ ./configure # ce zice el ca nu ai instalat, instalezi cu yum
    $ sudo yum groupinstall "Development Tools"
    $ sudo yum install gtk2-devel glib2-devel libglade2-devel gnokii-devel gettext-devel
    $ make
    $ ./src/gnocky
    
  2. Creeaza un utilizator pe care sa-l folosesti doar pentru impachetare, ca sa-ti pastezi setarile personale in siguranta.
    $ sudo useradd makerpm
    
  3. Autentifica-te ca noul utilizator si creeza structura de directoare pentru impachetare.
    $ sudo su makerpm
    $ rpmdev-setuptree
    
  4. Intra in directorul de specificatii si creeaza fisierul gnocky.spec (in cazul lui Gnocky). Emacs si vim iti vor insera automat un sablon.
    $ cd ~/rpmbuild/SPECS
    $ emacs gnocky.spec
    
  5. Primul camp e cel mai simplu. Completeaza-l cu numele programului. :-)
    Name:           gnocky
    
  6. Vezi ce versiune au sursele pe care le-ai tras. De regula este inclusa in numele arhivei (gnocky-0.0.7), dar o poti gasi si in directorul radacina, intr-un fisier README.
    Version:        0.0.7
    
  7. In continuare, scrie versiunea pachetului (porneste de la 1).
    Release:        1%{?dist}
    
  8. „Fura” o scurta descriere a programului de pe saitul oficial si eventual adapteaz-o.
    Summary:        GLib2/GTK+2 front-end for Gnokii using Glade
    
  9. Vezi unde s-ar incadra in meniul de aplicatii din GNOME. Eu am gasit un RPM pentru Mandriva care zicea ca s-ar incadra la comunicatii. +1 :-D
    Group:          Applications/Communications
    

    Daca programul tau e in ceata, fii tu primul care-l incadreaza! In cartea de bucate scrie ca poti afla toate grupurile standard cu:

    $ less /usr/share/doc/rpm-*/GROUPS
    
  10. Completeaza acum licenta (o gasesti de regula in COPYING), legaturile la proiect si la arhiva cu sursele.
    License:        GPLv2
    URL:            http://wiki.gnokii.org/index.php/Gnocky
    Source0:        http://www.gnokii.org/download/gnocky/gnocky-0.0.7.tar.gz
    
  11. Nu-ti bate capul cu urmatorul camp, este formatul standard pentru directorul unde programul va fi compilat automat.
    BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
    
  12. Revezi acum dependentele de cand l-ai compilat manual si completeaza campul dedicat:
    BuildRequires:  gnokii-devel, libglade2-devel, gtk2-devel, glib2-devel, gettext-devel
    
  13. Taie -devel din coada si completeaza campul dependentelor pentru rularea programului deja compilat - utilizatorii pachetului nu vor avea nevoie de antetele pentru dezvoltare:
    Requires:  gnokii, libglade2, gtk2, glib2, gettext
    
  14. „Fura” sau compune o descriere a programului pentru urmatoarea sectiune. Nu trebuie sa fie lunga.
    %description
    Set logos, send SMS and manage address book for your mobile phone.
    
  15. Urmatoarele doua sectiuni (%prep si %build) raman neatinse:
    %prep
    %setup -q -n %{name}-%{version}
    
    %build
    %configure
    make %{?_smp_mflags}
    
  16. La sectiunea de instalare adauga %find_lang daca programul este internationalizat.
    %install
    rm -rf %{buildroot}
    make install DESTDIR=%{buildroot}
    %find_lang %{name}
    
  17. Sectiunea de curatenie ramane la fel:
    %clean
    rm -rf %{buildroot}
    
  18. La sectiunea de fisiere, arata-i ca are fisiere de localizare.
    %files -f %{name}.lang
    

    Insira-i fisierele de documentatie (cele cu litere mari).

    %doc README TODO COPYING ChangeLog INSTALL AUTHORS BUGS ABOUT-NLS
    

    Lasa neschimbate:

    %defattr(-,root,root,-)
    %{_bindir}/*
    

    si adauga fisierele de date.

    %{_datadir}/applications/%{name}.desktop
    %{_datadir}/%{name}/
    
  19. Insemneaza modificarile facute de tine la pachet.
    %changelog
    * Sat Nov 20 2010 Tibi Turbureanu  0.0.7-13
    - Package for Gnocky 0.0.7
    
  20. Impacheteaza programul (RPM cu binarele si RPM cu sursele):
     $ rpmbuild -ba gnocky.spec
    
  21. Testeaza cu rpmlint cele doua pachete create. Rezolva erorile si eventual avertismentele semnalate.
    $ rpmlint gnocky.spec RPMS/*/gnocky*.rpm SRPMS/gnocky*.rpm
    

In final, fisierul de specificatie pentru Gnocky arata ca mai jos. Descarca pachetul RPM Gnocky pentru a-l testa si tu! ;-)

Name:           gnocky
Version:        0.0.7
Release:        1%{?dist}
Summary:        GLib2/GTK+2 front-end for Gnokii using Glade

Group:          Applications/Communications
License:        GPLv2
URL:            http://wiki.gnokii.org/index.php/Gnocky
Source0:        http://www.gnokii.org/download/gnocky/gnocky-0.0.7.tar.gz
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

BuildRequires:  gnokii-devel, libglade2-devel, gtk2-devel, glib2-devel, gettext-devel
Requires:  gnokii, libglade2, gtk2, glib2, gettext

%description
Set logos, send SMS and manage address book for your mobile phone.

%prep
%setup -q -n %{name}-%{version}

%build
%configure
make %{?_smp_mflags}

%install
rm -rf %{buildroot}
make install DESTDIR=%{buildroot}
%find_lang %{name}

%clean
rm -rf %{buildroot}


%files -f %{name}.lang
%defattr(-,root,root,-)
%doc README TODO COPYING ChangeLog INSTALL AUTHORS BUGS ABOUT-NLS
%{_bindir}/*
%{_datadir}/applications/%{name}.desktop
%{_datadir}/%{name}/

%changelog
* Sat Nov 20 2010 Tibi Turbureanu  0.0.7-13
- Package for Gnocky 0.0.

Nota: Articolul este preluat sub licentele libere GNU GFDL 1.3+ si CC-BY-SA 3.0

Andreea

"Rome wasn't built in a day" !
  • | 120 articole

Nici un comentariu inca. Fii primul!
  • powered by Verysign