gdebi vs dpkg: Làm thế nào để gdebi tự động bị thiếu phụ thuộc? Tôi có thể sử dụng gdebi cho tất cả các cài đặt khác của gói .deb không?


14

Gần đây, tôi tình cờ cài đặt lại Ubuntu của mình vào LubFi 15.04. Vì vậy, tôi đã tìm kiếm để cài đặt Skype và nhận được hướng dẫn tốt đẹp này .

Nó thật sự rất tuyệt Nó đã tải xuống gói chính thức của skype deb từ đây

Vì tôi chưa gdebicài đặt, tôi đã cài đặt bằngsudo su -c apt-get install gdebi

Sau đó cài đặt skype-ubuntu-precise_4.3.0.37-1_i386.debbằng cách sử dụng lệnh gdebisudo su -c gdebi skype-ubuntu*4*.deb

Wow, gdebi đã làm mọi thứ cho tôi, thật là một điều rắc rối miễn phí nếu không sử dụng bổ sung liên kết thủ công Apt PPA truyền thống, điều này có thể sẽ phá vỡ các bản cập nhật hệ thống / cài đặt phần mềm của tôi.

Nhưng nếu tôi cố gắng cài đặt nó bằng cách sử dụng dpkg -i

dpkg -i skype-ubuntu-precise_4.3.0.37-1_i386.deb
Selecting previously unselected package skype.
(Reading database ... 86449 files and directories currently installed.)
Preparing to unpack skype-ubuntu-precise_4.3.0.37-1_i386.deb ...
Unpacking skype (4.3.0.37-1) ...
dpkg: dependency problems prevent configuration of skype:
 skype depends on libc6 (>= 2.3.6-6~).
 skype depends on libc6 (>= 2.7).
 skype depends on libgcc1 (>= 1:4.1.1).
 skype depends on libqt4-dbus (>= 4:4.5.3).
 skype depends on libqt4-network (>= 4:4.8.0).
 skype depends on libqt4-xml (>= 4:4.5.3).
 skype depends on libqtcore4 (>= 4:4.7.0~beta1).
 skype depends on libqtgui4 (>= 4:4.8.0).
 skype depends on libqtwebkit4 (>= 2.2~2011week36).
 skype depends on libstdc++6 (>= 4.2.1).
 skype depends on libx11-6.
 skype depends on libxext6.
 skype depends on libxss1.
 skype depends on libxv1.
 skype depends on libssl1.0.0.
 skype depends on libpulse0.
 skype depends on libasound2-plugins.

dpkg: error processing package skype (--install):
 dependency problems - leaving unconfigured
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for mime-support (3.55ubuntu1.1) ...
Processing triggers for desktop-file-utils (0.22-1ubuntu2) ...
Processing triggers for dbus (1.8.8-1ubuntu2.1) ...
Errors were encountered while processing:
 skype

Rất nhiều vấn đề phụ thuộc. Oh tôi vừa googled GDebi và wikipedia có

GDebi là một công cụ APT có thể được sử dụng trong dòng lệnh và trên GUI. [44] GDebi có thể cài đặt tệp .deb cục bộ thông qua dòng lệnh như lệnh dpkg, nhưng có quyền truy cập vào kho để giải quyết phụ thuộc

Tôi tự hỏi là

(1) Làm thế nào để gdebi cài đặt các gói .deb có phụ thuộc mà không sử dụng các liên kết Apt PPA được thêm thủ công trong các tệp cấu hình?

(2) Tôi có thể sử dụng cùng một lệnh gdebi ( sudo su -c gdebi my.deb) để cài đặt tất cả các gói .deb khác mà không cần thêm Apt PPA hay tôi phải thay đổi định dạng như vậy: sudo su -c my*n*.debn là phiên bản của phần mềm, v.v.?

Hãy giải thích bằng thuật ngữ cư sĩ để tôi có thể có được nó.

Câu trả lời:


9

Trên thực tế gdebichỉ là một mặt trước dpkgvới chức năng được thêm vào mà nó có thể kiểm tra các gói phụ thuộc trong kho và có thể cài đặt chúng trong một thao tác, trong khi dpkg -iyêu cầu hai thao tác thủ công (sau này apt-get -f install).

Câu hỏi 1:

1) Làm thế nào gdebi làm điều này? cài đặt gói .deb có phụ thuộc mà không sử dụng liên kết Apt PPA được thêm thủ công trong tệp cấu hình?

Là một dpkgfront-end, nó có thể sử dụng tất cả các chức năng của dpkg. Vì mọi .debtệp gói chứa (với điều kiện là chúng không bị hỏng) siêu dữ liệu về tệp gỡ lỗi đó (như tên gói, người bảo trì, phụ thuộc, v.v.), nên nó có thể dễ dàng kiểm tra sự phụ thuộc của tệp này.

Ví dụ: bạn có thể kiểm tra siêu dữ liệu của tệp .deb bằng cách sử dụng dpkg --info package-name.deb

Và sau đó, nó sử dụng những thông tin này để xây dựng bản đồ phụ thuộc và đánh dấu các tệp .deb có sẵn cục bộ là đã tải xuống và tải xuống các .debtệp khác từ Internet.

Xin lưu ý rằng, các gói bổ sung cần thiết phải có sẵn (với phiên bản phù hợp) trong ít nhất một trong các kho được cấu hình trong hệ thống.

Sau đó, nó tiến hành như một cài đặt apt bình thường. Sự khác biệt là nó không tải lại tệp .deb chính

Câu hỏi 2:

(2) Tôi có thể sử dụng cùng lệnh gdebi ( sudo su -c gdebi my.deb) để cài đặt tất cả các gói gỡ lỗi khác mà không cần thêm PPA không? hoặc tôi phải thay đổi định dạng sudo su -c myn.debtrong đó n là phiên bản của phần mềm, v.v.?

Các PPA tồn tại vì một lý do. Lý do chính là họ cung cấp các phiên bản mới nhất của các gói. Và các gói phiên bản cao hơn này thường phụ thuộc vào các phiên bản cao hơn của các gói phụ, thường cũng được phục vụ từ PPA, không phải từ kho lưu trữ Ubuntu tiêu chuẩn.

Kịch bản ví dụ:

Giả sử, Một gói có tên mẹ gói có phiên bản cao nhất 2.0trong kho Chuẩn Ubuntu, và điều này mẹ gói phụ thuộc vào một gói có tên trẻ em gói của phiên bản 2. Giả sử, một số PPA cung cấp mẹ gói của phiên bản 3.0đòi hỏi trên child-packagecủa 3.0, cả hai đều có sẵn thông qua kho PPA đó.

Vấn đề là, nếu bây giờ bạn tải xuống gói mẹ-3.0.deb từ trang kho lưu trữ và thử cài đặt nó gdebi, bạn sẽ (hoặc gdebi) thất bại.

Bởi vì, kiểm tra tệp mẹ-gói-3.0.deb , gdebibiết rằng gói mẹ này cần gói con của phiên bản 3.0hoặc cao hơn, nhưng Nó chỉ biết vị trí của phiên bản 2.0. Nó không biết lấy phiên bản 3.0của gói con từ đâu. Điều này được mong đợi bởi vì, Bạn đã không nói với hệ thống nơi bạn nhận gói mẹ mới nhất này . Nói cách khác, Bạn đã không cấu hình danh sách kho lưu trữ để bao gồm PPA đó.

Vì vậy, câu trả lời rõ ràng là của câu hỏi này là Nó phụ thuộc . Nếu các phụ thuộc cần thiết có thể được tìm thấy trong kho đã được cấu hình, quá trình cài đặt sẽ thành công . Nhưng nếu không, thì nó sẽ thất bại trong việc cài đặt gói phiên bản cao cấp này. Đó là lý do tại sao bạn vẫn cần PPA và đó là cách dễ nhất mà không cần thực hiện thủ công tất cả những thứ này.

Phần thứ hai của câu hỏi thứ hai không có ý nghĩa với tôi .


5

Tôi gặp vấn đề tương tự với một vài ứng dụng, với skype là một trong số chúng, những ứng dụng này phụ thuộc vào các gói bên ngoài hoặc tệp thư viện cần được cài đặt thủ công.

Để khắc phục sự cố tôi đã sử dụng:

sudo dpkg -i skype.deb

Và sau khi được nhắc về các thư viện bên ngoài như bạn có trong đầu ra của mình, tôi đã gõ vào:

sudo apt-get install -f

Điều này đã tải xuống các gói cần thiết và tự cài đặt skype.


2

Trong mỗi gói .deb có một danh sách các phụ thuộc (với số phiên bản tương thích).

Tôi không phải là người đọc Python nhưng mã nguồn dường như thực hiện cuộc gọi aptđể lấy danh sách đó. Rõ ràng là phải xuống theo cách đệ quy để tìm ra sự phụ thuộc của các phụ thuộc nhưng aptrõ ràng cũng có thể làm điều đó.

Khi tất cả các phụ thuộc được xử lý và đặt theo đúng thứ tự (một số phụ thuộc cần được cài đặt trước khi các phụ thuộc khác có thể được cài đặt), aptchỉ cần yêu cầu cài đặt các phụ thuộc. Sau đó, gói được đưa ra làm đối số cho Gdebi được cài đặt.

Các phụ thuộc và gói mục tiêu được cài đặt trong hai hoạt động vì hai lý do. Đầu tiên định dạng của một cuộc gọi apt để cài đặt một .deb cục bộ khác với một cuộc gọi apt để cài đặt các phụ thuộc từ một kho lưu trữ. Thứ hai, tách các cuộc gọi đảm bảo tất cả các phụ thuộc được cài đặt trước gói đích.

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.