Gnocky este o aplicație grafică liberă integrată bine în GNOME, cu care poți trimite SMS de pe calculator. În spate, Gnocky folosește biblioteca liberă gnokii
.
Dacă poza de mai jos te convinge să încerci Gnocky, poți afla dintr-un articol anterior cum îl poți configura.
Pe Fedora poți testa ultima versiune de Gnocky, de acum 2 ani (decembrie 2008), doar compilând sursele, ceea ce nu este prea comod. Pentru Debian/Ubuntu, există deja un pachet deb, așa că m-am gândit să-l împachetez și pentru Fedora.
Cartea de bucate RPM este, fără îndoială, pagina wiki de pe FedoraProject.org, How to create an RPM package. Îți recomand să o citești pe diagonală și să revii la ea ori de câte ori te afli în încurcătură. Eu în continuare îți ofer minimul de informații ca să faci un pachet, dacă ești în grabă. Și folosesc ca exemplu împachetarea lui Gnocky.
./configure
ți le va spune) și dacă merge. Notează aceste dependențe undeva, preferabil pe o pagină wiki dedicată, ca să știe și alți 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 că 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
$ sudo useradd makerpm
$ sudo su makerpm $ rpmdev-setuptree
gnocky.spec
(în cazul lui Gnocky). Emacs și vim îți vor insera automat un șablon.$ cd ~/rpmbuild/SPECS $ emacs gnocky.spec
Name: gnocky
gnocky-0.0.7
), dar o poți găsi și în directorul rădăcină, într-un fișier README
.Version: 0.0.7
Release: 1%{?dist}
Summary: GLib2/GTK+2 front-end for Gnokii using Glade
Group: Applications/Communications
Dacă programul tău e în ceață, fii tu primul care-l încadrează! În cartea de bucate scrie că poți afla toate grupurile standard cu:
$ less /usr/share/doc/rpm-*/GROUPS
COPYING
), legăturile la proiect și 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
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: gnokii-devel, libglade2-devel, gtk2-devel, glib2-devel, gettext-devel
-devel
din coadă și completează câmpul dependențelor pentru rularea programului deja compilat - utilizatorii pachetului nu vor avea nevoie de antetele pentru dezvoltare:Requires: gnokii, libglade2, gtk2, glib2, gettext
%description Set logos, send SMS and manage address book for your mobile phone.
%prep
și %build
) rămân neatinse:%prep %setup -q -n %{name}-%{version} %build %configure make %{?_smp_mflags}
%find_lang
dacă programul este internaționalizat.%install rm -rf %{buildroot} make install DESTDIR=%{buildroot} %find_lang %{name}
%clean rm -rf %{buildroot}
%files -f %{name}.lang
Înșiră-i fișierele de documentație (cele cu litere mari).
%doc README TODO COPYING ChangeLog INSTALL AUTHORS BUGS ABOUT-NLS
Lasă neschimbate:
%defattr(-,root,root,-) %{_bindir}/*
și adaugă fișierele de date.
%{_datadir}/applications/%{name}.desktop %{_datadir}/%{name}/
%changelog * Sat Nov 20 2010 Tibi Turbureanu 0.0.7-13 - Package for Gnocky 0.0.7
$ rpmbuild -ba gnocky.spec
rpmlint
cele două pachete create. Rezolvă erorile și eventual avertismentele semnalate.$ rpmlint gnocky.spec ../RPMS/*/gnocky*.rpm ../SRPMS/gnocky*.rpm
În final, fișierul de specificație pentru Gnocky arată ca mai jos. Descarcă pachetul RPM Gnocky pentru a-l testa și 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.
Notă: Articolul este preluat sub licențele libere GNU GFDL 1.3+ și CC-BY-SA 3.0 din jurnalul lui Tibi.
Comentarii
Anonymous (neverificat)
Marţi, 14 Decembrie 2010
Link permanent
greseli
Există două câmpuri: BuildRequires și Requires. Văd că n-ai scris nimic despre Requires, iar BuildRequires este greșit. Nu trebuie tăiat sufixul -devel de la pachetele din BuildRequires pentru că astea sunt chiar pachetele pe care le-ai folosit atunci când ai construit gnocky. BuildRequires sunt dependendențele de care ai nevoie pentru a construi programul. Requires sunt dependențele de care ai nevoie pentru a rula programul. Deci într-adevăr la câmpul de Requires probabil n-ai avea nevoie de pachetele -devel, dar la cel de BuildRequires da.
Câmpul de release nu se folosește pentru release-ul distribuției gazdă. Este un contor care pornește de la 1 și e incrementat de fiecare dată când se lansează un nou pachet cu aceeași versiune a pachetului original. Package manager-ul îl va folosi ca să-și dea seama care este pachetul mai nou și să-l instaleze. Deci în cazul tău ar fi trebuit să fie 1, acum dacă vei schimba fișierul SPEC pentru a integra sugestia de mai sus va trebui făcut 14 pentru ca pachetul să poată fi instalat în locul celui cu release: 13.
Sursa cuprinzătoare cu informații despre cum se fac pachetel este: https://fedoraproject.org/wiki/Packaging:Guidelines . Majoritatea regulilor de acolo sunt aplicabile și în cadrul altor distribuții (e.g. *SUSE)
tct
Vineri, 17 Decembrie 2010
Link permanent
re: greșeli
Mulțumesc pentru observații! Am rectificat. :-) Numărul versiunii a rămas 1 pentru că nu am trimis pachetul la fedoraproject.org.