Sử dụng dpkg để cài đặt các gói nâng cấp và nâng cấp xa


9

Vì vậy, tôi đang chơi xung quanh với cài đặt gói ngoại tuyến trên Máy chủ 12.04, đã tải xuống các gói bằng cách truy xuất và lấy các URI của chúng bằng cách sử dụng các hướng dẫn tại đây: http://www.webupd8.org/2009/11/get-list-of-packages- và phụ thuộc.html

Tôi đã làm điều này với apt-get upgradeapt-get dist-upgradesau đó đi cài đặt các gói đã tải xuống bằng cách sử dụng dpkg -i. Vì vậy, quá trình này trông giống như vậy:

  1. Nhận URI
  2. wgetcác gói đến một thư mục ( upgradecác gói để / nâng cấp và dist-upgradecác gói để / nâng cấp)
  3. chạy dpkg -i /upgrade/*.debvà sau đódpkg -i /dist-upgrade/*.deb

Câu hỏi của tôi là: phương pháp cài đặt thủ công các gói cập nhật này có được cập nhật chính xác mọi thứ, cho kết quả giống như khi tôi chỉ chạy apt-get upgradeapt-get dist-upgradebình thường không? Hoặc có điều gì đó mà các apt-getlệnh thông thường làm sẽ không được thực hiện theo cách này?

Câu trả lời:


15

Thay vì sử dụng dpkg, một trình quản lý gói cấp thấp, bạn nên sử dụng apt. Để cài đặt các tệp .deb bằng cách sử dụng apt, sao chép chúng vào bộ đệm apt

sudo cp *.deb /var/cache/apt/archives/

và sau đó chỉ cần thực hiện nâng cấp thông thường:

apt-get upgrade

Các aptlệnh sẽ sử dụng các tập tin trong bộ nhớ cache của nó chứ không phải tải về nó ra khỏi lưới, do đó khá nhiều phục vụ mục đích của bạn.


Cảm ơn, điều đó làm việc tuyệt vời. Mặc dù tôi vẫn tò mò về chính xác những gì aptkhác biệt dpkgtrong trường hợp này, ban đầu tôi đã sử dụng aptđể có được các URI của tất cả các gói, bao gồm cả các phụ thuộc của chúng? Khi nói đến hành động cài đặt thực tế, có vẻ như aptchỉ sử dụng dpkgđể thực hiện việc giải nén và cài đặt các gói, sự khác biệt duy nhất là aptkiểm tra các phụ thuộc trước đó (nhưng điều đó đã được đề cập vì tôi đã sử dụng aptđể tải xuống các gói, bao gồm phụ thuộc, ở nơi đầu tiên). Trừ khi tôi thiếu một cái gì đó?
R4mzy

Ngoài ra, một phần lý do tôi hỏi là tôi lo ngại về apt'shành vi có thể xảy ra nếu, giả sử, các gói đã tải xuống được sao chép vào hệ thống có quyền truy cập Internet và sau đó aptthấy rằng một số hoặc tất cả các gói đã tải xuống không phải là mới nhất (nhưng mới hơn những gì hiện đang được cài đặt) và sau đó nó cố gắng lấy các phiên bản cập nhật của các gói cụ thể đó (tôi muốn nó chỉ cài đặt các gói / phiên bản cụ thể mà tôi đã tải xuống). Về cơ bản, có aptưu tiên cho phiên bản trực tuyến mới nhất hay nó sẽ ưu tiên cho phiên bản địa phương, mới hơn nhưng không phải là mới nhất?
R4mzy

1
@ R4mzy Bạn đã có một điểm hợp lệ ở đó. aptsẽ cố gắng để có được gói mới nhất từ ​​internet, ngay cả khi có các gói cũ hơn có sẵn tại địa phương. Bạn có thể cần phải thay đổi /etc/apt/sources.listđể đảm bảo nó cài đặt các gói cục bộ.
sayantankhan

@sayantankhan bạn có thể cho thấy những gì sẽ trông như thế nào trong câu trả lời của bạn? Tôi đang hỏi vì tôi đã sao chép tệp .deb của mình vào /var/cache/apt/archives/nhưng sudo apt-get update && sudo apt-get upgradekhông thấy nó hoặc cập nhật / nâng cấp gói tôi cần. Tôi cảm thấy cần phải cập nhật danh sách nhưng không biết làm thế nào.
Todd

1
@Todd Tôi chưa tự mình làm điều đó, nhưng đây là cách ai đó vượt qua mức ưu tiên của gói apt.
sayantankhan
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.