2011-01-28 23 views
6

muszę utworzyć następujące dowiązania symboliczne do pliku RPMCentOS 5.5 - symboliczny tworzenie łącza do RPM specyfikacji pliku

/bin/ln -sf libcrypto.so.0.9.8e /lib/libcrypto.so.0.9.8 
/bin/ln -sf libssl.so.0.9.8e /lib/libssl.so.0.9.8 

W moim RPM pliku spec:

%files 
%defattr(-,root,root) 
/lib/libcrypto.so.0.9.8 
/lib/libssl.so.0.9.8 
<other files...> 

%install 
/bin/ln -sf libcrypto.so.0.9.8e /lib/libcrypto.so.0.9.8 
/bin/ln -sf libssl.so.0.9.8e /lib/libssl.so.0.9.8 

/lib/libcrypto. istnieje so.0.9.8e i /lib/libssl.so.0.9.8e są na moim komputerze, ale gdy próbuję zainstalować mój RPM, mam błąd:

libcrypto.so.0.9.8 is needed by my-test-rpm-1.el5.i686 
libssl.so.0.9.8 is needed by my-test-rpm-1.el5.i686 

Co WRON sol? Co muszę zrobić, aby utworzyć dowiązania symboliczne w ramach instalacji RPM?

Dzięki

Odpowiedz

2

Jak obejść Wyłączyłem automatyczne przetwarzanie zależnościach dodając:

AutoReqProv: no 

do mojego pliku spec. Wciąż szukam prawdziwego rozwiązania.

1

Musisz uruchomić ldconfig w części% post pliku spec:

%post 
umask 007 
/sbin/ldconfig > /dev/null 2>&1 


%postun 
umask 007 
/sbin/ldconfig > /dev/null 2>&1 

powinno wystarczyć.

+0

Próbowałem, problem nadal jest ... – Dima

+0

Wygląda na to, że /lib/libcrypto.so.0.9.8e i /lib/libssl.so.0.9.8e nie znajdują się na liście% plików. Również twoje wywołanie "ln" nie odnosi się do nich w ten sposób albo jak "/ bin/ln -sf /lib/libcrypto.so.0.9.8e /lib/libcrypto.so.0.9.8". – ldav1s

+0

/lib/libcrypto.so.0.9.8e i /lib/libssl.so.0.9.8e są częścią RPM openssl. – Dima

1

1) Tylko dla dowiązań symbolicznych nie trzeba wywoływać ldconfig na etapie pocztowym.

2) Jak już wspomniano przez ldav1s: Upewnij się, że twoje pliki są wymienione w sekcji% files.

3) Po raz kolejny: Należy upewnić się, że pliki zostały wymienione - szczególnie jeśli używasz coś

%define _unpackaged_files_terminate_build 0 

RHEL rpmbuild kończy się błędem, jeśli pliki znajdują się w buildroot które nie są wymienione w% sekcja plików. Dzięki tej definicji możesz wyłączyć zachowanie/błąd, ale powinieneś dokładnie wiedzieć, co właściwie robisz. Jeśli użyjesz tej linii, powinieneś usunąć ją ze swojego pliku spec.

4) Nie buduj pakietu rpm jako root użytkownika. Jeśli zapomnisz użyć rpm_build_root, nie zniszczisz swojego systemu live. Twój przykład wygląda tak, jakby został pobrany z pliku specyfikacji Red Hat 4.2 z 1997 roku. Od Red Hat 5 (nie RHEL 5!) W 1997 roku polecenie rpm/rpmbuild zna definicję RPM_BUILD_ROOT. Domyślam się, że to jest twój problem: Nie używasz buildroota, ale instalujesz go bezpośrednio w głównym FS i uruchamiasz rpmbuild jako root użytkownika.

Biorąc swój przykład powinno być zmienione na:

%install 
/bin/ln -sf libcrypto.so.0.9.8e $RPM_BUILD_ROOT/lib/libcrypto.so.0.9.8 
/bin/ln -sf libssl.so.0.9.8e $RPM_BUILD_ROOT/lib/libssl.so.0.9.8 

Korzystanie buildroot opisaną w RPM docs.

0

Najlepszym sposobem na to jest poprzez zapobieganie dowiązania symboliczne utworzone ze skanowania przez automatyczny zależy & wymaga generatorów:

%filter_provides_in libcrypto.so.0.9.8e 
%filter_provides_in libssl.so.0.9.8e 
%filter_requires_in libcrypto.so.0.9.8e 
%filter_requires_in libssl.so.0.9.8e 
%filter_setup 

Więcej informacji na uzależniona/wymaga filtrowania here.