2011-12-12 33 views
10

Tôi muốn tạo một gói debian đơn giản để cài đặt một công cụ đơn giản phụ thuộc vào các lib Qt4.làm thế nào để làm cho gói phụ thuộc cài đặt debian

Trong tệp điều khiển, tôi đã xác định rằng nó phụ thuộc vào lib Qt4 tuy nhiên, vào lúc tôi kiểm tra gói, nó nói rằng phụ thuộc không thể đáp ứng được.

Câu hỏi:

Làm cách nào để kích hoạt trình cài đặt Debian cũng cài đặt phụ thuộc?

Không thể tìm thấy tài liệu đó tuy nhiên tôi biết rằng apt-get thực hiện điều đó.

+0

Bạn có phụ thuộc vào các lib Qt4 bình thường được gửi cùng với bản phân phối của bạn không? Bạn có thể vui lòng đăng các chi tiết chính xác, tức là thông số "Phụ thuộc" và cuộc gọi apt-get có lỗi không? – thiton

+0

Nghe có vẻ giống như gói của bạn là chính xác, nhưng sự phụ thuộc không tồn tại trong (các) mirror bạn đang sử dụng. Vui lòng đăng thông báo lỗi hoàn chỉnh của bạn. – Flimzy

+0

'dpkg' là công cụ cấp thấp và không tính đến các phụ thuộc. Carlos có ý tưởng thích hợp để sử dụng gdebi, vì nó kéo các phụ thuộc khi bạn chạy nó mà không cần phải sử dụng 'apt', mà bạn cũng có thể sử dụng như Thomas đã chỉ ra. – NuclearPeon

Trả lời

1

Một cách để tạo kho lưu trữ gói cục bộ trên máy tính của bạn và thêm nó vào /etc/apt/sources.list. Sau đó, bạn có thể cài đặt gói từ kho lưu trữ cục bộ của mình với apt-get và tự động giải quyết các phụ thuộc.

Có lẽ một cách dễ dàng hơn để làm điều đó, nhưng tôi không biết đó là gì.

12

Nếu bạn cài đặt thông qua dpkg nó sẽ không hoạt động vì dkpg không biết nơi tìm phụ thuộc bổ sung. Bạn có thể làm điều đó thông qua apt-get nếu bạn xây dựng repo của riêng bạn, nhưng nó là loại tốn thời gian lần đầu tiên (nó không khó, chỉ cần một cái gì đó "mới" lần đầu tiên cần một thời gian để được học).

Mặt khác, và giải pháp bạn có thể đang tìm kiếm là gdebi (bạn có thể cần phải cài đặt nó: apt-get install gdebi-core). Đó là một công cụ kiểm tra các gói phụ thuộc cho gói và gọi apt-get để tìm nạp và cài đặt chúng, sau đó gọi dpkg để cài đặt gói của bạn.

+0

Hummm. Tôi hiểu ... Cái này là. Tôi cần phải làm một trình cài đặt. Ví dụ. Khi bạn tải xuống Skype, nó xuất hiện dưới dạng .deb. Liệu nó mang lại tất cả các libs nó cần? Tôi có nên bao gồm tất cả các libs tôi cần? Tôi nên dựa vào apt để tìm nạp các phụ thuộc như thế nào? Vấn đề đóng gói những người phụ thuộc là họ có thể gây rối với hệ thống đích. Đề xuất của bạn về đại diện địa phương có hợp lệ cho phân phối hay không. Ý tưởng: Tôi có thể tạo đại diện địa phương đó khi tôi chạy .deb và sau đó gọi apt-get khi đăng bài cài đặt ... nhưng đây không phải là giải pháp hợp lệ ... –

+0

Trong quá trình cài đặt, hãy cài đặt gdebi từ repo apt và sau đó thực thi 'gdebi your-package.deb'. Nó sẽ lấy tất cả các phụ thuộc từ các kho lưu trữ apt đã được cấu hình trong máy đó (nếu chúng có sẵn tại repo). Hoặc có bất kỳ vấn đề nào khác mà tôi không hiểu? –

+0

Liệu gdebi có đánh dấu các gói đã cài đặt là phụ thuộc cho gói tôi muốn cài đặt không? – Trismegistos

5

Nếu bạn đang tạo gói Debian, bạn chỉ định phụ thuộc của nó trong tệp kiểm soát thư mục debian/; Tôi tin rằng debian/control mất Depends: chỉ thị cho mục đích đó.

Tôi không biết chi tiết quá rõ ràng, bản thân mình, nhưng có hướng dẫn tại http://www.debian.org/doc/manuals/maint-guide/; đặc biệt, http://www.debian.org/doc/manuals/maint-guide/dreq.en.html#control có vẻ là nơi thích hợp để bắt đầu tìm kiếm.

+0

Xin chào, tôi nghĩ 'Phụ thuộc: ' sẽ chỉ kiểm tra xem phụ thuộc có được cài đặt hay không và sẽ ngừng cài đặt gói deb cho phù hợp. Giải pháp mà tôi đang tìm kiếm là cài đặt các phụ thuộc đó một cách tự động như một phần của deb isntallation. Bạn vui lòng xem câu hỏi này: http://stackoverflow.com/questions/22907113/how-to-install-dependencies-while-creating-a-deb-installer – Sangram

17

Nếu bạn muốn tránh tạo ra một kho lưu trữ APT địa phương, bạn có thể làm:

dpkg -i mypackage.deb 
apt-get install --fix-missing 

Nếu bạn muốn tạo một kho lưu trữ địa phương, bạn có thể sử dụng reprepro cho việc này.

+4

# apt-get install -f --fix -missing – kellogs

+0

Tôi có nên chạy lại 'sudo dpkg -i mypackage.deb' không? –

0

mỗi @textshell trong this answer:

bắt đầu với apt 1.1 (có sẵn trong Xenial (16,04), căng) apt install cũng cho phép tập tin địa phương:

sudo apt install ./foo-1.2.3.deb 

đơn giản hơn rất nhiều và sạch hơn.

Xem release announcment

này cũng sẽ cài đặt phụ thuộc, giống như một bình thường apt install hoặc apt-get install.

Các vấn đề liên quan