Τι θέλω και μπλέκω με rpm?? Ας όψεται η ανάγκη...

luckyb | Τετ, 03/11/2009 - 22:12 | 3' | 14

Εισαγωγικά
Πραγματικά έχω δει όλα τα αποτελέσματα του google με search string: "standard-dir-owned-by-package".

Μετά από μέρες (και νύχτες) άκαρπων προσπαθειών, αποφάσισα να γράψω αυτό το ποστ, ζητώντας απεγνωσμένα βοήθεια.

Σκοπός
Να φτιάξω πακέτο rpm για γνωστή εφαρμογή που κυκλοφορεί (...τι ποια ??) το οποίο θα τηρεί τα standards που προβλέπονται

Εργαλείο ελέγχου
rpmlint

Το πρόβλημα

$ rpmlint luckybackup-0.2.1-2.i386.rpm
luckybackup.i386: E: standard-dir-owned-by-package /usr/bin
luckybackup.i386: E: standard-dir-owned-by-package /usr/share/applications
luckybackup.i386: E: standard-dir-owned-by-package /usr/share/pixmaps
luckybackup.i386: E: standard-dir-owned-by-package /usr/share/man/man8
luckybackup.i386: E: standard-dir-owned-by-package /usr/share/man
luckybackup.i386: E: standard-dir-owned-by-package /usr/share
luckybackup.i386: E: standard-dir-owned-by-package /usr/share/doc

Αυτό σε Fedora 10.
Σε suse 11.1 βγάζει μερικά ακόμα (πχ /usr/share/pixmaps)

Συνειδητοποίηση
Ωραία, κάτι παίζει με τον owner των υποκαταλόγων που βρίσκονται μέσα στο rpm πακέτο.
Προφανώς δεν είναι αυτός που πρέπει να είναι και αν κάποιος κάνει εγκατάσταση πιθανόν να του αλλάξει δικαιώματα σε υποκαταλόγους του /usr/ σε κάτι που δεν πρέπει

Μάλλον κάτι παίζει με το spec file και τα attributes που δίνει στα αρχεία/υποκαταλόγους.
Απλό φαίνεται !!

Δεδομένα
Το τμήμα %files του spec file περιλαμβάνει:

%files -f ../file.list.%{name}
%defattr(-,root,root,-)

Όπου "../file.list.%{name}" είναι ένα αρχείο που περιέχει όλους τους υποκαταλόγους & αρχεία για εγκατάσταση το οποίο περιέχει γραμμές σαν τις κατωτέρω:

%attr(-,root,root) %dir /usr/bin
%attr(-,root,root) %dir /usr/share
%attr(-,root,root) /usr/bin/luckybackup
%attr(-,root,root) /usr/share/man/man8/luckybackup.8.gz
...

Δοκιμές
1. Αλλαγή του defattr σε

%defattr(-,root,root,0755)

2. Αλλαγή του defattr σε

%defattr(-,root,root,0777)

3. Αλλαγή του αρχείου που περιέχει τη λίστα με τους υποκταλόγους & αρχεία ώστε αντί για πχ /usr/bin κτλ να έχει τα τυπικά rpm όπως %{_bindir}

%attr(-,root,root) %dir %{_bindir}
%attr(-,root,root) %dir %{_datadir}
%attr(-,root,root) %{_bindir}/luckybackup
%attr(-,root,root) %{_mandir}/man8/luckybackup.8.gz
...

4. Χρήση κανονικού %files (και όχι %files -f filename) στο spec

%files
%defattr(-,root,root,-)
%attr(-,root,root) %dir %{_bindir}
%attr(-,root,root) %dir %{_datadir}
%attr(-,root,root) %{_bindir}/luckybackup
%attr(-,root,root) %{_mandir}/man8/luckybackup.8.gz
...

5++. κάτι χιλιάδες build που δεν θυμάμαι κι εγώ τι παραμέτρους προσπαθούσα ν'αλλάξω

Τελικά ή είναι κάτι πολύ απλό που μου διαφεύγει
ή ...

Δώσε αστέρια!

MO: (ψήφοι: 0)

Σχόλια

Aνεβασε καπου αυτο το rpm, να το παρουμε. Κατι δε μου παει καλα με τους καταλογους.
Με ποιο εργαλειο το εκανες? Η το μετετρεψες απο deb σε rpm πρωτα & απο εκει το δουλεψες??
Η κατι αλλο???
Για ανεβασε το & στειλτο, ενδιαφερον προβλημα.
& ελαααα, δε φταινε (& τοσο) τα rpm.
Ειχα "κτισει"παληα rpm πακετακια & ηταν ιδιαιτερα ενδιαφερον & αρκετα καλο & το εργαλειο rpm build (η καπως ετσι, δε το θυμαμαι τωρα) :P

luckyb μαι μπόι λίγο έλειψα και έφτασες μέχρι στα rpm... Γουέλ γουέλ, λετ μι σι (σορυ μιστερ κονσταντινος, γουειτ α μινιτ φορ δε φορουμ!).

To defattr είναι σωστό.

%defattr(-,root,root)

Στη θέση σου, θα τσέκαρα μήπως κάτι μέσα στους source υποκαταλόγους είναι με άλλα δικαιώματα. Αυτό διορθώνεται με κάτι σαν κι αυτό:

 

%prep
%setup
chmod -R a-x+X COPYING ChangeLog INSTALL NEWS README TODO manual man nets src
....

 

Ποια είναι η δομή του αρχικού tarball;

 

-- "Είναι μια χώρα που με διώχνει μακριά με κλοτσάει με τα σκυλιά και τους λεπρούς της και χτίζει γύρω μου τείχη και κελιά για να πετάει τους νόθους γιους της." (ΔΚ)

Το φτιάχνω με rpmbuild -bb specfile

Μέσα στο spec file περιλαμβάνονται διαδικασίες qmake, make & make install.

Που μπορεί να ανεβάσει κάποιος κάτι
???

dimitriiiiiiss
τι κάνεις φίλε ??

Καλά αποτελέσματα εύχομαι.

~~~~~~~~~~~~~~~~~~~~

αντί για %setup, έχω %setup -q

Το tarball είναι ένα κανονικό source tarball (?) το οποίο με το make install βάζει όλα τα απαραίτητα αρχεία στον υποκατάλογο $RPM_BUILD_ROOT (δηλ τον .../BUILDROOT)
Ο τελευταίος έχει owner εμένα (όχι root) με rwxr-xr-x

Τα ίδια με την chmod (άλλαξα τους υποκαταλόγους με τους συγκεκριμένους του tarball), με ή χωρίς -q στο %setup
:(

Για κάνε

ls -l [untarred source tarball folder]

και μετά

ls -l .../BUILDROOT

και δώσε τα αποτελέσματα εδώ;

 

 

btw,  παρατηρήσεις για τον νέο μας FCKeditor?

 

-- "Είναι μια χώρα που με διώχνει μακριά με κλοτσάει με τα σκυλιά και τους λεπρούς της και χτίζει γύρω μου τείχη και κελιά για να πετάει τους νόθους γιους της." (ΔΚ)

 $ ls -la SOURCES/

drwxrwxr-x. 3 luckyb luckyb 4096 2009-03-10 20:59 .
drwxrwxr-x. 8 luckyb luckyb 4096 2009-03-09 21:25 ..
-rw-rw-r--. 1 luckyb luckyb 2101173 2009-03-09 21:25 luckybackup-0.2.1-2.tar.gz

$  ls -la BUILDROOT/

drwxr-xr-x. 2 luckyb luckyb 4096 2009-03-11 23:11 .

drwxrwxr-x. 8 luckyb luckyb 4096 2009-03-09 21:25 ..

(λείπει ο υποκατάλογος luckybackup-0.2.1-2, ο οποίος περιέχει τον usr/ με όλα τα παρλεκόμενα, αλλά είναι ίδιο με αυτό που είπα: πριν με owner luckyb. Έκανα ένα τελευταίο build και σβήστηκε με το clean. Λέω να μην ξανακάνω boot σε Fedora...)

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Ο editor φαίνεται καλός (πάνω που είχα συνηθίσει σε plain text :-p)

Επιτέλους έχουμε κι άλλα smilies 

Δεν κατάφερα να βρω κουμπί για κώδικα !!

Επίσης η opera δεν μ'αφήνει να κάνω copy-paste (σε plain text μια χαρά)

Τέλος, μερικές φορές που πατάω "Δοκιμή εμφάνισης" δεν μου βγάζει καθόλου το παράθυρο edit. Μ'ενα back κι ένα front του browser φτιάχνει

 

 

Εννοούσα τα περιεχόμενα αυτού του tarball:

luckybackup-0.2.1-2.tar.gz

 

Για τον editor και το φόρουμ, πάμε εδώ (γιατί θα έχει ψωμί....:()

http://www.linuxinsider.gr/forum/τα-παιξε-p-λύθηκε&page=1#comment-24366

 

-- "Είναι μια χώρα που με διώχνει μακριά με κλοτσάει με τα σκυλιά και τους λεπρούς της και χτίζει γύρω μου τείχη και κελιά για να πετάει τους νόθους γιους της." (ΔΚ)

 ...και το πες:: "UNTARRED"

επειδή είναι μακρινάρι δίνω μόνο 2 γραμμές που είναι ίδιες για κάθε υποκατάλογο και κάθε αρχείο:

drwxr-xr-x. 2 luckyb luckyb 4096 2009-03-09 21:25 directory

-rw-r--r--. 1 luckyb luckyb 1758 2009-03-09 21:25 file

 

luckyb]

 ...και το πες:: "UNTARRED"

επειδή είναι μακρινάρι δίνω μόνο 2 γραμμές που είναι ίδιες για κάθε υποκατάλογο και κάθε αρχείο:

 
drwxr-xr-x. 2 luckyb luckyb 4096 2009-03-09 21:25 directory
 
-rw-r--r--. 1 luckyb luckyb 1758 2009-03-09 21:25 file
 

χμ... .Στείλε μου το rpm να το αντιπαραβάλλω με ένα δικό μου να δούμε τι πάει στραβά ( dimitris dot kalamaras sto  gmail com ).

 

-- "Είναι μια χώρα που με διώχνει μακριά με κλοτσάει με τα σκυλιά και τους λεπρούς της και χτίζει γύρω μου τείχη και κελιά για να πετάει τους νόθους γιους της." (ΔΚ)

Λοιπόν, επειδή δεν ξέρω πότε θα έχω χρόνο για να σε βοηθήσω, δες τα δικά μου scripts. Για παράδειγμα, αυτό εδώ το create-fedora-package.sh παράγει fedora rpm για το SocNetV...και τα ανεβάζει αυτόματα στο sourceforge.net. Με λίγες αλλαγές θα το προσαρμόσεις στο luckybackup. Στο SVΝ του SocNetV έχω scripts που παράγουν πακέτα για όλες τις μεγάλες διανομές.

Δες και το .spec του SocNetV από το SVN, προσάρμοσέ το για σένα και μετά πάνε στο BuildService της openSUSE (να' ναι καλά η Novell) να φτιάξεις αυτόματα πακέτα για τις τρεις βασικές RPM διανομές...Το .spec θέλει περισσότερο ...διάβασμα  αλλά θα σε ανταμείψει, believe me. Στείλε mail αν μπορώ θα βοηθήσω.

 

-- "Είναι μια χώρα που με διώχνει μακριά με κλοτσάει με τα σκυλιά και τους λεπρούς της και χτίζει γύρω μου τείχη και κελιά για να πετάει τους νόθους γιους της." (ΔΚ)

ΘΡΙΑΜΒΟΣ !!

Επιτέλους, είχα αρχίσει ν'απογοητεύομα

dimitris, το spec βοήθησε πάρα πολύ.

Τελικά τροποποίησα το %files ως εξής:

%files
%defattr(-,root,root)
%{_bindir}/%{name}
%{_datadir}/applications/%{name}.desktop
%{_datadir}/applications/%{name}-gnome-su.desktop
%{_datadir}/applications/%{name}-kde-su.desktop
%{_datadir}/%{name}/licence/*
%{_datadir}/%{name}/translations/*
%{_datadir}/pixmaps/%{name}.xpm
%{_mandir}/man8/*
%{_defaultdocdir}/%{name}/*

Οποιοςδήποτε άλλος συνδυασμός δεν δούλεψε !!
 

Είμαι πολύ χαρούμενος

Καιρός να γράψεις εκείνο το tutorial που λέγαμε...

 

-- "Είναι μια χώρα που με διώχνει μακριά με κλοτσάει με τα σκυλιά και τους λεπρούς της και χτίζει γύρω μου τείχη και κελιά για να πετάει τους νόθους γιους της." (ΔΚ)

δινοντας rpmbuild -bi file.spec κανει build το rpm μεχρι εκει που εγκαθιστα τα αρχεια .

ετσι μπορεις να ελεγξεις ποια αρχεια πρεπει να βαλεις στο section files%

αφου ειναι οκ και χωρις σφαλματα εγω χρησιμοποιω rpmbuild -ba file.spec για την τελικη δημιουργια του rpm