Cách cài đặt hai gói ghi cùng một tệp


14

Tôi có hai gói mà mỗi gói tạo / usr / bin / ffprobe. Một trong số đó là ffmpeg từ kho lưu trữ đa phương tiện Deb, trong khi cái còn lại là ffmbc 0.7-RC5 được xây dựng từ nguồn. Cái được cuộn bằng tay là rất quan trọng trong kinh doanh và chúng tôi thường chỉ cài đặt nó từ nguồn bất cứ khi nào cần thiết. Tôi chỉ có thể giả sử nó sẽ ghi đè tập tin ffmpeg, và không bao giờ có bất kỳ hiệu ứng xấu nào.

Về lý thuyết, gói ffmbc của chúng tôi có thể được ghi đè lên tệp từ gói ffmpeg. Hạn chế là có một bản cập nhật cho ffmpeg sẽ ghi đè lên tệp nhị phân ffmbc. Có cách nào dễ dàng để hòa giải điều này?

Câu trả lời:


12

Trên các hệ thống dựa trên Debian, có DPKG (bên dưới apt) có thể thiết lập chuyển hướng bằng cách sử dụng lệnh dpkg-redirect

dpkg-redirect là tiện ích được sử dụng để thiết lập và cập nhật danh sách chuyển hướng.

Chuyển hướng tệp là một cách buộc dpkg (1) không cài đặt tệp vào vị trí của nó, mà đến một vị trí chuyển hướng. ... Quản trị viên hệ thống cũng có thể sử dụng nó để ghi đè tệp cấu hình của một số gói hoặc bất cứ khi nào một số tệp (không được đánh dấu là 'conffiles') cần được bảo vệ bởi dpkg, khi cài đặt phiên bản mới hơn của gói chứa các tệp đó .

Vì vậy, đối với trường hợp của bạn, bạn có thể sử dụng một lệnh như thế này để thiết lập chuyển hướng. (Tôi chưa kiểm tra, kiểm tra trang người đàn ông và xác minh rằng điều này có vẻ đúng.)

dpkg-divert --local --divert /usr/bin/ffprobe.ffmpeg --rename /usr/bin/ffprobe

8

Một giải pháp khác tôi tìm thấy là thay đổi cách tôi xây dựng gói ffmbc. Nói chung, có thể vượt qua tiền tố thay thế cho mục đích thay đổi đường dẫn cuối cùng của các tệp đã cài đặt:

./configure --prefix=/usr/local

Đối với các gói Debian, tệp này có trong tệp $ {gói} / debian / quy tắc như sau:

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

Bằng cách đặt các tệp ffmbc vào /usr/local, tôi có thể giữ các tệp ffmpeg /usrvà cho phép mỗi gói cập nhật độc lập.


3
Các gói không nên cài đặt bất cứ thứ gì /usr/local- đó là vi phạm chính sách. Toàn bộ quan điểm của /usr/localnó để giữ các tệp dưới sự quản lý gói và các tệp được cài đặt thủ công. Xem các cuộc thảo luận liên quan đến FHS sau đây: unix.stackexchange.com/questions/30/ trên
Onlyjob

-1

Các gói cung cấp cùng một tệp sẽ xung đột với nhau - chúng không phải là lỗi (vui lòng xem xét báo cáo các trường hợp đó). Nếu bạn xây dựng phần mềm từ các nguồn và cài đặt bằng cách sử dụng make install(hoặc tương tự), hãy đảm bảo rằng phần mềm /usr/localsẽ tránh xung đột với quản lý gói.

Xin lưu ý rằng deb-multidia.org không được lưu trữ trong kho lưu trữ không chính thức khét tiếng vì gây ra xung đột với các gói chính thức.

Nếu phần mềm bạn cần không được đóng gói cho Debian thì bạn có thể gửi yêu cầu đóng gói RFP nhưng trước tiên vui lòng kiểm tra các yêu cầu hiện có .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.