Skocz do zawartości

Jak Rozwiązać Konflikt Pakietów


MarekZ

Rekomendowane odpowiedzi

Nie bardzo wyobrażam sobie taką sytuację. Albo rybka albo akwarium.

Próbowałbym ewentualnie wrzucić biblioteki do jakiegoś osobnego drzewka pakietu i stworzyłbym skrypt startowy wskazujący na tę strukturę a nie na domyślną, systemową. Ale w praktyce przy bardziej skomplikowanych zależnościach mogłoby to oznaczać zrobienie niemal drugiego "roota".

Z ciekawości zapytam po co Ci to? Nie możesz znaleźć pakietu na nowszą lub starszą wersję biblioteki? Jakie programy się konfliktują przez tę bibliotekę?

 

[EDIT]

Jak masz dużo RAM, wielordzeniowy procesor, to przychodzi mi jeszcze do głowy jakaś minimalna maszyna wirtualna uruchamiana w seamless mode. Ale to żre RAM i zabiera moc obliczeniową z podstawowego systemu a i wydajność oraz czas uruchamiania nie musi być zadowalający. Wszystko w sumie zależy od aplikacji.

Odnośnik do komentarza
Udostępnij na innych stronach

Najprościej przebudować pakiet, by używał nowszej wersji.

Na siłę można także skorzystać z opcji instalacyjnych pakietu rpm.
Przykładowo potrzebujesz starszej "innej" wersji biblioteki niż dostępna w systemie:

# rpm -i --relocate /usr/lib=/usr/local/lib inna_wersja_pakietu

Uruchomienie programu zależnego od innej wersji lib:

$ LD_PRELOAD=/usr/local/lib/alternatywny_lib PROGRAM
$ PROGRAM

 

***

 

Dla odinstalowania alternatywnej wersji biblioteki, lub w razie problemów z "update systemu" w przyszłości:

 

# rpm -e --nodeps alternatywny_pakiet-wersja

# update systemu

# rpm -i --relocate /usr/lib=/usr/local/lib inna_wersja_pakietu

Odnośnik do komentarza
Udostępnij na innych stronach

Nie bardzo wyobrażam sobie taką sytuację. Albo rybka albo akwarium.

Próbowałbym ewentualnie wrzucić biblioteki do jakiegoś osobnego drzewka pakietu i stworzyłbym skrypt startowy wskazujący na tę strukturę a nie na domyślną, systemową. Ale w praktyce przy bardziej skomplikowanych zależnościach mogłoby to oznaczać zrobienie niemal drugiego "roota".

Z ciekawości zapytam po co Ci to? Nie możesz znaleźć pakietu na nowszą lub starszą wersję biblioteki? Jakie programy się konfliktują przez tę bibliotekę?

 

[EDIT]

Jak masz dużo RAM, wielordzeniowy procesor, to przychodzi mi jeszcze do głowy jakaś minimalna maszyna wirtualna uruchamiana w seamless mode. Ale to żre RAM i zabiera moc obliczeniową z podstawowego systemu a i wydajność oraz czas uruchamiania nie musi być zadowalający. Wszystko w sumie zależy od aplikacji.

Było by super gdyby tak było można.

Generalnie pytanie o te biblioteki było spowodowane dwoma sytuacjami potrzebą kompilacji ze źródeł oprogramowania (brak rpm lub bardzo długi czas oczekiwania na najnowszą wersję)

a druga sytuacja to wtyczka w programie która do instalacji potrzebuje bibliotek tyle że z najnowszymi nie działa.

Odnośnik do komentarza
Udostępnij na innych stronach

Najprościej przebudować pakiet, by używał nowszej wersji.

 

Na siłę można także skorzystać z opcji instalacyjnych pakietu rpm.

Przykładowo potrzebujesz starszej "innej" wersji biblioteki niż dostępna w systemie:

 

# rpm -i --relocate /usr/lib=/usr/local/lib inna_wersja_pakietu

 

Uruchomienie programu zależnego od innej wersji lib:

 

$ LD_PRELOAD=/usr/local/lib/alternatywny_lib PROGRAM

$ PROGRAM

 

***

 

Dla odinstalowania alternatywnej wersji biblioteki, lub w razie problemów z "update systemu" w przyszłości:

 

# rpm -e --nodeps alternatywny_pakiet-wersja

# update systemu

# rpm -i --relocate /usr/lib=/usr/local/lib inna_wersja_pakietu

ta opcja z przebudową pakietów by była bardzo dobra. Znasz może jakiś dobry poradnik na ten temat i na temat budowy pakietów, taki dla osub które jeszcze nigdy tego nie robiły?

Odnośnik do komentarza
Udostępnij na innych stronach

Podstawowe informacje:

https://fedoraproject.org/wiki/How_to_create_an_RPM_package

 

Paczki dla siebie możesz budować tak:

 

Zależności:

# dnf install @development-tools

# dnf install fedora-packager

# dnf install rpmdevtools

 

z konta użytkownika:

$ rpmdev-setuptree

 

stworzy wymaganą strukturę katalogów na koncie użytkownika i to prawie wszystko ;)

 

Potrzebujesz pakiet src.rpm z fedory, instalujesz go na koncie użytkownika

$ rpm -ivh pakiet.src.rpm

 

budowanie paczek z pliku spec pakietu bez budowania pakietu źródłowego:

$ rpmbuild -bb --define 'dist .Twoje_oznaczenie_pakietu' --clean --target $(uname -m) $(rpm --eval %{_specdir})/xx.spec

 

lub z budowaniem pakietu srpm

$ rpmbuild -ba --define 'dist .Twoje_oznaczenie_pakietu' --clean --target $(uname -m) $(rpm --eval %{_specdir})/xx.spec

 

xx - nazwa pliku spec budowanego pakietu, znajdziesz go w ~/rpmbuild/SPEC/xx.spec

 

Jeżeli w pliku spec występuje fraza

Release: 1%{?dist}

to 'dist .Twoje_oznaczenie_pakietu' pojawi się w nazwie zbudowanego pakietu.

 

Gdy nie będziesz miał odpowiednich zależności do budowania pakietu, rpmbuild wypisze co musisz doinstalować.

 

Po pomyślnym budowaniu pakiety znajdziesz w ~/rpmbuild/RPMS/

 

***

 

Można także bez ingerencji w plik spec przebudować bezpośrednio sam pakiet src.rpm, przykład:

$ rpmbuild --rebuild --target $(uname -m) pakiet.src.rpm

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...