Jak zainstalować dwa pakiety, które zapisują ten sam plik

14

Mam dwa pakiety, z których każdy tworzy / usr / bin / ffprobe. Jeden z nich to ffmpeg z repozytorium Deb Multimedia, a drugi to ffmbc 0.7-rc5 zbudowany ze źródła. Ręcznie zwinięty ma kluczowe znaczenie dla biznesu, a my po prostu instalowaliśmy go ze źródła tam, gdzie był potrzebny. Mogę tylko założyć, że spowodowałoby to zatkanie pliku ffmpeg i nigdy nie wystąpiły żadne złe efekty.

Teoretycznie powinno być dopuszczalne, aby nasz pakiet ffmbc nadpisał plik z pakietu ffmpeg. Wadą jest to, że aktualizacja ffmpeg zastąpi plik binarny ffmbc. Czy jest jakiś prosty sposób na pogodzenie tego?

Joel E. Salas
źródło

Odpowiedzi:

12

W systemach opartych Debian nie jest dpkg (poniżej apt) mogą mieć Diversions konfigurację za pomocą polecenia dpkg-przekierowywanie

dpkg-divert to narzędzie używane do konfigurowania i aktualizowania listy zmian.

Zróżnicowanie plików jest sposobem na zmuszenie dpkg (1) nie do instalowania pliku w jego lokalizacji, ale w lokalizacji przekierowanej. ... Administratorzy systemu mogą go również użyć do zastąpienia pliku konfiguracyjnego pakietu lub gdy niektóre pliki (które nie są oznaczone jako „conffiles”) muszą zostać zachowane przez dpkg, podczas instalowania nowszej wersji pakietu zawierającego te pliki .

Więc w twoim przypadku możesz użyć takiego polecenia, aby ustawić dywersje. (Nie testowałem, sprawdź stronę podręcznika i sprawdź, czy wydaje się to prawidłowe).

dpkg-divert --local --divert /usr/bin/ffprobe.ffmpeg --rename /usr/bin/ffprobe
Zoredache
źródło
8

Innym rozwiązaniem, które znalazłem, było zmiana sposobu, w jaki zbudowałem pakiet ffmbc. Zasadniczo można przekazać alternatywny prefiks w celu zmiany końcowych ścieżek zainstalowanych plików:

./configure --prefix=/usr/local

W przypadku pakietów Debian jest to zawarte w pliku $ {package} / debian / rules w następujący sposób:

override_dh_auto_configure:
    ./configure --enable-gpl --prefix=/usr/local

Wkładając pliki ffmbc /usr/local, mogę zachować pliki ffmpeg /usri pozwolić każdemu pakietowi na aktualizację niezależnie.

Joel E. Salas
źródło
3
Pakiety nie powinny niczego instalować /usr/local- jest to naruszenie zasad. Chodzi o /usr/localto, aby pliki były w zarządzaniu pakietami i pliki instalowane ręcznie oddzielnie. Zobacz następującą dyskusję związaną z FHS: unix.stackexchange.com/questions/30/…
Onlyjob
-1

Pakiety zawierające te same pliki powinny kolidować ze sobą - jeśli nie są to błędy (prosimy rozważyć zgłoszenie takich przypadków). Jeśli tworzysz oprogramowanie ze źródeł i instalujesz przy użyciu make install(lub podobnego), upewnij się, że pozwoli /usr/localto uniknąć konfliktów z zarządzaniem pakietami.

Należy pamiętać, że deb-multimedia.org jest przestarzałe, nieoficjalne repozytorium znane z powodowania konfliktów z oficjalnymi pakietami.

Jeśli oprogramowanie nie musisz pakowany jest dla Debiana następnie można przesłać żądanie opakowaniowych RFP ale proszę sprawdzić istniejących wniosków pierwszy.

Onlyjob
źródło