2012-04-19 10 views
29

Mam plik spec. Potrzebuję% zdefiniować zmienną spec, która pobiera jej wartość z jednego pliku liniowego w systemie.Plik specyfikacji RPM - czy możliwe jest dynamiczne wypełnianie zmiennej pliku spec

Na przykład

%define path `cat /home/user/path_file` 

aw path_file jest jedna linia

/var/www/html/hosts 

Częściowo działa. Mówię, że zaczyna się w wyjściu RPM BUILD czasami wartość ${path} jest dosłownie moim poleceniem cat /home/user/path_file, a czasami wartość jest linią w pliku ścieżka_path (/ var/www/html/hosts), jak powinno być?

Odpowiedz

39

Można zdefiniować zmienne rpmbuild z %(cmd) u góry pliku spec. Zauważ, że polecenie znajduje się w nawiasach, a nie nawiasach klamrowych. Przykład:

%define whoami %(whoami) 

i gdzie indziej w pliku spec, takich jak skrypt lub kompilacji/zainstalować sekcje, użyć zmiennej jako normalne w nawiasy nawiasach jak to:

echo "The user that built this is %{whoami}" 

cmd puszka być cokolwiek, łącznie z dowództwem kota. Bądź ostrożny - gdy inny użytkownik odbuduje plik spec, może go nie znaleźć. Więc to będzie korzystne użycie}% {SourceDir makro tak:

%define path %(cat %{sourcedir}/path_file) 

I upewnij się, że path_file znajduje się w katalogu źródłowym i włączone jako źródła w pliku spec.

+1

WIELE WIELU DZIĘKI Corey !!! Szukałem odpowiedzi na to dla WEEEKS !!! Jeszcze raz dziękuję –

+0

Corey - jeśli chcę, aby/home/user/path_file było "wymagane" do uruchomienia rpm? Czy mogę ustawić go jako parametr PreReq lub Wymagany w moim pliku specyfikacji? Kiedy próbuję wymagać, oznacza to, że pliku nie ma i jest on tam całkowicie? –

+0

Opcje PreReq, etc zależą od plików instalowanych w systemie, faktycznie szukają w bazie danych rpm istniejącego pakietu, który jest właścicielem pliku. Nie sprawdza systemu plików pod względem istnienia pliku. –

Powiązane problemy