2012-04-01 11 views
11

Wenn ich diese Zeile in den% Dateien haben:Wie setze ich Besitzer für das Verzeichnis in den% Dateien?

%attr(0555, myuser, myuser) /opt/myapp/lib/my.jar 

Dann wird my.jar myuser als Eigentümer, aber Verzeichnis/opt/myapp/lib Besitzer von root sein wird. Ich will nicht

%attr(0555, myuser, myuser) /opt/myapp/lib/ 

schreiben, wie ich will nicht alle Dateien in/opt/myapp/lib/einbezogen werden.

Wie kann ich Besitzer für/opt/myapp/lib/Verzeichnis festlegen?

Danke.

Antwort

17

Ich bin kein Experte RPM .. aber soweit ich weiß, könnten Sie die% dir Richtlinie wie folgt verwenden:

%files 
%dir %attr(0555, myuser, myuser) /opt/myapp/lib 
%attr(0555, myuser, myuser) /opt/myapp/lib/my.jar 

oder, noch einfacher:

%files 
%defattr(555,myuser,myuser,555) 
%dir /opt/myapp/lib 
/opt/myapp/lib/my.jar 

Die Mit der Anweisung% dir können Sie das Verzeichnis, aber nicht dessen Inhalt hinzufügen.

+1

Der Zweck von% dir ist es, ein leeres Verzeichnis (wie logs dir) auf dem Zielrechner zu erstellen. –

+3

Nein, das ist nicht wahr. (Siehe Dokumentation: http://www.rpm.org/max-rpm-snapshot/s1-rpm-specref-files-list-directives.html): Die Anweisung% dir wird verwendet, um RPM anzuweisen, nur das Verzeichnis selbst zu packen , unabhängig davon, welche Dateien sich zum Zeitpunkt der Erstellung des Pakets im Verzeichnis befinden. – Javaguru

+0

@Javaguru Der Link gibt eine 404 – sebix

2

wie die anderen "super-hilfreich" Leute sagen ...% dir ist für etwas anderes. Die Lösung besteht darin,% attr zu verwenden, um den Benutzer und den Gruppenbesitzer Ihres Verzeichnisses festzulegen ... da ich meine Verzeichnisse mit% defattr bereits auf 755 gesetzt habe, verwende ich einen einzigen Gedankenstrich - in der% attr-Zeile wie es ist.

%files 
#%attr(<mode>, <user>, <group>) file 
#%defattr(file perms, user, group, dir perms) 
%defattr(644,apache,apache,755) 
%attr(-,apache,apache) /var/www/coolapp 
%attr(-,apache,apache) /var/www/coolapp/users 
%attr(-,apache,apache) /var/www/coolapp/static 
/var/www/coolapp/myDB.sqlite 
/var/www/coolapp/__init__.py 
/var/www/coolapp/settings.py 
/var/www/coolapp/urls.py 
/var/www/coolapp/wsgi.py