Làm thế nào để giả mạo một phiên bản gói được cài đặt?


23

Là người chấp nhận sớm và sử dụng 11.04 bản dựng hàng ngày, đôi khi tôi gặp một tình huống khi một số gói yêu cầu các phiên bản khác của các gói khác so với các gói tôi đã cài đặt. Thông thường các phiên bản mới hơn (nhưng bị từ chối) của các gói cần thiết cung cấp tất cả chức năng của các phiên bản cũ hơn.

Nếu tôi sử dụng dpkg -i --force-depends-versionđể cài đặt các gói phụ thuộc thì mọi thứ đều hoạt động tốt, tôi chưa bao giờ thấy sự cố.

Thay vì tải xuống và cài đặt thủ công mọi gói, tôi có thể làm cho hệ thống giả vờ có phiên bản gói cụ thể được cài đặt khi có bản mới hơn không? Hoặc có một --force-depends-versionchìa khóa tương đương cho apt-get?

Câu trả lời:


16

Bạn có thể sử dụng gói Equivs Cài đặt đẳng để tạo gói giả để giả mạo gói đã cho đang được cài đặt. Một số hướng dẫn ở đây .


Trong khi điều này là đủ. Nhưng liên kết có thể bị hỏng sớm hay muộn. Tốt hơn là có ít nhất tiếp tục hướng dẫn trong câu trả lời. Câu trả lời của tôi có thể giúp ở đây Askubfox.com/a/1181415/26246 . Vì vậy, chúng ta có thể tham khảo câu hỏi này có số phiếu cao hơn liên quan đến đẳng thức.
user.dz

23

Mặc dù câu trả lời đã được chấp nhận, nhưng nội dung được chấp nhận tốt hơn sẽ chuyển tải quá trình:

  1. Có một gói Debian được gọi equivslà có thể tạo các gói giả. Cài đặt nó bằng cách chạysudo apt-get install -y equivs

  2. Sau khi cài đặt, bạn tạo tệp "điều khiển" mẫu bằng lệnh sau: equivs-control postfix(thay thế postfixbằng tên gói của bạn). Trong trường hợp của tôi, tôi có thể sử dụng tên gói thay thế, ví dụ postfix-customhoặc bất cứ điều gì nhưng có gói tùy chỉnh của tôi được thực hiện hoặc Providesphụ thuộc cài đặt postfix(một lần nữa thay thế postfixcho bất kỳ gói nào bạn muốn.

  3. Khi tệp điều khiển mẫu được tạo, tôi thường sẽ loại bỏ rất nhiều câu lệnh được nhận xét (câu lệnh bắt đầu bằng #). Một điều tôi muốn giữ cụ thể là Provides:tuyên bố mà tôi có thể nói rằng gói của tôi cung cấp khả năng được cung cấp bởi gói khác mà tôi đang cố gắng giả mạo, ví dụ như Provides: postfixnói với cơ chế giải quyết phụ thuộc Debian / Ubuntu rằng gói của tôi có tên bất kỳ cung cấp các khả năng tương tự của gói mục tiêu, một lần nữa postfixhoặc bất cứ điều gì. Điều này cho phép tôi đặt tên gói của mình một cách độc lập với gói mục tiêu để tránh nhầm lẫn. Erlang Factory thực hiện điều này với công cụ của họ, ví dụ esl-erlangcung cấp erlang.

  4. Cuối cùng, khi tệp điều khiển mẫu được tạo, bạn sử dụng equivs-buildđể tạo gói giả, vd equivs-build /path/to/generated/control/file.

  5. Phải mất vài giây để xây dựng gói và sau đó bạn có thể chạy sudo dpkg -i my_package_name*.deb

Đối với người dùng nâng cao, nếu tệp kiểm soát mẫu của bạn có Requires:dòng phụ thuộc, bạn có thể muốn sử dụng một công cụ như gdebiđể cài đặt gói của mình cũng như các gói khác nhau mà nó tuyên bố là phụ thuộ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.