2012-12-25 23 views
10

Potrzebuję określić wspólne atrybuty jednego z głównych katalogów w pakiecie i specjalne uprawnienia dla niektórych z tych podkatalogów. na przykładco zawiera ostrzeżenie rpmbuild "Plik wymieniony dwukrotnie" FAKULTATYCZNIE?

%files 
%attr(-, myuser, mygroup) /opt/myapp 
%attr(750, myuser, mygroup) /opt/myapp/bin # no exec permission to other 
/etc # this is the reason I can't use %defattr(-, myuser, mygroup) 

Otrzymuję ostrzeżenie "plik wymieniony dwukrotnie" na każdym pliku pod/opt/myapp/bin, naturalnie. Moje pytanie brzmi, co to właściwie oznacza? Co robi z tym rpmbuild? Nigdzie nie mogę znaleźć odpowiedzi. Czy mogę to zignorować? Co ma pierwszeństwo, pierwsze lub ostatnie zdarzenie?

Wolę nie wymieniać wszystkiego pod myapp jawnie, aby rozwiązać ten problem. czy jest jakiś inny sposób? Dzięki

Odpowiedz

4

Oznacza to, że - jest wyświetlana dwukrotnie. ;) Nigdy nie miałem z tym problemu, ale nie wiem, który wygra.

Na marginesie, prawdopodobnie nie powinieneś osobno wymienić /etc, ponieważ nie chcesz tego posiadać.

+1

dobry punkt ponownie/etc, thanks – davka

+1

Ta odpowiedź jest błędna. Jeśli podasz listę/etc, rpm będzie "właścicielem" wszystkich plików, które są w% {buildroot}/etc, nie w/etc. Tak więc lista/etc w sekcji% files jest powszechną praktyką i nie ma żadnej prawdziwej wady – Bruno9779

+0

Jeśli spróbujesz zainstalować dwa pakiety, które próbują posiadać '/ etc', RPM odmówi zainstalowania drugiej, która jest dlaczego należy go unikać. –

6

zmienić go na to:

%files 
%dir %attr(-, myuser, mygroup) /opt/myapp 
%attr(750, myuser, mygroup) /opt/myapp/bin 

Zawiadomienie %dir do katalogu. To powinno pozbyć się plików wymienionych dwukrotnie ostrzeżenie.

+3

Pamiętaj, że [użycie% dir spowoduje, że będzie to pusty katalog] (http://www.rpm.org/max- rpm/s1-rpm-inside-files-list-directives.html). Nie jest to więc użyteczne, jeśli musisz uwzględnić wszystko w/opt/myapp * i * dostosować konfigurację uprawnień tylko do podkatalogu bin. –

8

Zamieszczam tutaj, na wypadek gdyby ktoś miał ten sam problem i znalazł to stare pytanie.

Ostatnio (jak ostatnio zależy od dystrybucji) makro% wykluczenie zostało dodane do rpmbuild.

%files 
%attr(-, myuser, mygroup) /opt/myapp 
%exclude /opt/myapp/bin 
%attr(750, myuser, mygroup) /opt/myapp/bin # no exec permission to other 

Zaletą tutaj nie jest tak oczywiste, jak o zestaw plików lub folderów do wykluczenia:

%files 
%attr(-, myuser, mygroup) /opt/myapp 
%exclude /opt/myapp/[bin|data|whatever] 
%attr(750, myuser, mygroup) /opt/myapp/bin # no exec permission to other 
%attr(777, myuser, myothergroup) /opt/myapp/data 
%attr(640, myuser, myothergroup) /opt/myapp/whatever 

Dziwnie [a | b] Składnia współpracuje z% wykluczyć, ale nie z innych dyrektyw w% plików (np. mogę użyć wyrażenia regularnego, aby wykluczyć, ale nie uwzględnić, doh)

+0

dzięki, zadziałało. Więc mogę zrobić /home/oracle/scripts % wykluczyć /home/oracle/scripts/myconfig.config % config (noreplace) /home/oracle/scripts/myconfig.config bez ostrzeżenia o duplikat pliku – Saule

+0

Niestety w moim CentOS 5.5 dodanie '% exclude' nie pozwala mi na późniejsze dołączanie plików później. –

+0

Centos 5 osiągnął wartość EOL. Czas ją złomować ... – Bruno9779