• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

rpm erstellen %files

catweasel

Hacker
Hi,

kann mir jemand sagen, wie hier der Pfad zu den Dateien auszuschauen hat?

Code:
...
%description
Perl extension to interface GSM phones / modems
%prep
%setup
./configure --prefix=/usr/local
%build
make
%install
make install-strip
%files
/usr/local/?...?

Code:
mm@linux1:~> ls -R1 /usr/lib/perl5/site_perl/5.10.0/Device/Gsm/
/usr/lib/perl5/site_perl/5.10.0/Device/Gsm/:
Charset.pm
Networks.pm
Pdu.pm
Sms
Sms.pm

/usr/lib/perl5/site_perl/5.10.0/Device/Gsm/Sms:
Structure.pm
Token
Token.pm

/usr/lib/perl5/site_perl/5.10.0/Device/Gsm/Sms/Token:
DA.pm
DCS.pm
MR.pm
OA.pm
PDUTYPE.pm
PID.pm
SCA.pm
SCTS.pm
UD.pm
VP.pm
 

Appleonkel

Hacker
Code:
%files
%perl_sitelib/Device/GSM/*
Kann sein, das die Version noch mit rein muss.
In der %setup section würde ich auch %configure aufrufen und nicht ./configure --prefix=/usr/local/

Appleonkel
 
OP
C

catweasel

Hacker
Habe ich das so richtig verstanden?

Code:
...
%description
Perl extension to interface GSM phones / modems
%prep
%setup
%configure
%build
make
%install
make install-strip
%files
%perl_sitelib/Device/GSM/Charset.pm
%perl_sitelib/Device/GSM/Networks.pm
...
%perl_sitelib/Device/GSM/Sms/Structure.pm
...
 

Appleonkel

Hacker
Ja, so meine ich sollte es gehen, ohne irgendwas überprüft zu haben, am besten ist es, wenn du dir mal das Specfile eines anderen Perl-Paketes anschaust. Daraus wird man meistens schlauern ;)

Edit: Hier mal für GeoIP
 
OP
C

catweasel

Hacker
Habe mir die Perl-Specfile von openSUSE.org kopiert
http://de.opensuse.org/SUSE_Paketbauanleitung
und versucht, sie anzupassen.

Code:
Name:         perl-Device-Gsm
Version:      1.49
Release:      1
# define the name from CPAN
#%define cpan_name Curses
%define cpan_name Device-Gsm
# do this package was known as "perl_cur" in old times. So we do need to Provide and Obsolete
# this package. YaST will install this package during update instead of the old one in this way.
Provides:     %cpan_name
# we better require the exact perl version, which was used to create this package
Requires:     perl = %{perl_version}
Group:        Development/Libraries/Perl
License:      Artistic License, Other License(s), see package
URL:          http://cpan.org/modules/by-module/Device/
Summary:      Perl extension to interface GSM phones / modems
Source:       %cpan_name-%{version}.tar.gz
BuildRoot:    %{_tmppath}/%{name}-%{version}-build

%description
Perl extension to interface GSM phones / modems

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

%build
perl Makefile.PL OPTIMIZE="$RPM_OPT_FLAGS -Wall"
make
make test

%install
%perl_make_install
%perl_process_packlist

%clean
# clean up the hard disc after build
rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root)
%doc Artistic Copying README
%doc %{_mandir}/man3/*
#%{perl_vendorarch}/%cpan_name.pm
%{perl_vendorarch}/Gsm.pm
%{perl_vendorarch}/Gsm/Charset.pm
%{perl_vendorarch}/Gsm/Networks.pm
%{perl_vendorarch}/Gsm/Pdu.pm
%{perl_vendorarch}/Gsm/Sms.pm
%{perl_vendorarch}/Gsm/Sms/Structure.pm
%{perl_vendorarch}/Gsm/Sms/Token.pm
%{perl_vendorarch}/Gsm/Sms/Token/DA.pm
%{perl_vendorarch}/Gsm/Sms/Token/DCS.pm
%{perl_vendorarch}/Gsm/Sms/Token/MR.pm
%{perl_vendorarch}/Gsm/Sms/Token/OA.pm
%{perl_vendorarch}/Gsm/Sms/Token/PDUTYPE.pm
%{perl_vendorarch}/Gsm/Sms/Token/PID.pm
%{perl_vendorarch}/Gsm/Sms/Token/SCA.pm
%{perl_vendorarch}/Gsm/Sms/Token/SCTS.pm
%{perl_vendorarch}/Gsm/Sms/Token/UD.pm
%{perl_vendorarch}/Gsm/Sms/Token/VP.pm
%{perl_vendorarch}/auto/%cpan_name  ### ?
/var/adm/perl-modules/%{name}

Gibt man "%define cpan_name" immer an, oder wurde das in der Beispieldatei nur wegen den "old times" gemacht?
"%doc %{_mandir}/man3/*": genügt das so, oder sind hier die doc-files alle anzugeben?
Was macht die "%{perl_vendorarch}/auto/%cpan_name"-Zeile; kann ich die so lassen, oder ist sie anzupassen?
 

Appleonkel

Hacker
catweasel schrieb:
Gibt man "%define cpan_name" immer an, oder wurde das in der Beispieldatei nur wegen den "old times" gemacht?
Man könnte auch %define my_internal_name angeben, oder in deinem Fall alles gegen den Namen austauschen. In einer Bash wäre es MYNAME=Name_meiner_Software.
catweasel schrieb:
"%doc %{_mandir}/man3/*": genügt das so, oder sind hier die doc-files alle anzugeben?
Das sollte genügen, sauberer wäre es wenn man alles angibt, um zu sehen, welche Datein zwischen den Versionen entfernt wurden oder neu hinzugekommen sind.
catweasel schrieb:
Was macht die "%{perl_vendorarch}/auto/%cpan_name"-Zeile; kann ich die so lassen, oder ist sie anzupassen?
Hinter %{perl_vendorarch} verbirgt sich %(eval "`%{__perl} -V:installvendorarch`"; echo $installvendorarch), also es ist bloss ein RPM-Makro welches den genauen Pfad für die Perl-Installation auf verschieden Architekturen und Versionen/Distributionen setzt. Bei mir ist es z.B. /usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/ darin der Ordner Auto und dann der Name des Paketes (%cpan_name) als Ordner.
Wenn ich dein Paket installieren würde, sehe es so aus: /usr/lib/perl5/5.10.0/x86_64-linux-thread-multi/auto/Device-Gsm/

Ich hoffe, dass hilft dir weiter
apple_wink.gif


P.S: Ist es möglich, mit Perl-Device-Gsm, SMS zu schreiben und zu empfangen?
 
OP
C

catweasel

Hacker
Zum Testen fehlt mir noch das Knowhow von build root.

So wie es aussieht kann ich mit meinem Handy ( Nokia 6120 c ) damit nur SMS versenden. Aber grundsätzlich kann man damit auch SMS lesen.
 
OP
C

catweasel

Hacker
Mein erstes rpm ist fertig. 8)

Code:
linux1:/home/mm # cd build_root/manip/
linux1:/home/mm/build_root/manip # ls
Date-Manip-5.54.tar.gz  Date-Manip.spec
linux1:/home/mm/build_root/manip # cat Date-Manip.spec
Name:           perl-Date-Manip
Version:        5.54
Release:        1
%define         cpan_name Date-Manip
Requires:       perl = %{perl_version}
Group:          Development/Libraries/Perl
License:        Artistic License, Other License(s), see package
URL:            http://cpan.org/modules/by-module/Date/
Summary:        date manipulation routines
Source:         %cpan_name-%{version}.tar.gz
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
%description
date manipulation routines

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

%build
perl Makefile.PL OPTIMIZE="$RPM_OPT_FLAGS -Wall"
make
make test

%install
%perl_make_install
%perl_process_packlist

%clean
rm -rf $RPM_BUILD_ROOT

%files
%defattr(-,root,root)
%doc README
%doc %{_mandir}/man3/Date::Manip.3pm.gz
#%doc %{_mandir}/man3/*
/usr/lib/perl5/vendor_perl/5.10.0/Date/Manip.pm
/usr/lib/perl5/vendor_perl/5.10.0/Date/Manip.pod
#/usr/lib/perl5/vendor_perl/5.10.0/Date/
/usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/auto/Date/Manip/.pac                                 klist
#/usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi/auto/Date/Manip/
/var/adm/perl-modules/%{name}
linux1:/home/mm/build_root/manip # mount /home/mm/iso/openSUSE_110.iso /media/dvd/ -o loop
linux1:/home/mm/build_root/manip # build Date-Manip.spec
...
exit 0


%dir bezeichnet ein Verzeichnis in einer Dateiliste, welches komplett mit zum Paket gehört. Normalerweise wird ein Verzeichnis, das OHNE ein %dir Makro aufgeführt wird, zusammen mit seinem KOMPLETTEN Inhalt in die Dateiliste aufgenommen und später mit dem Paket zusammen installiert.
http://www.linuxhaven.de/dlhp/HOWTO/DE-RPM-HOWTO-7.html

was ist der Unterschied zwischen "komplett zum Paket gehören" und "mit dem kompletten Inhalt in die Dateiliste aufgenommen"?
 
Oben