Tại sao có tệp deb trong / var / cache / apt / archives /?


Câu trả lời:


21

Thông tin lai lịch

Có hai điều trong Ubuntu (và trong Debian, dựa trên Ubuntu) thường được gọi là "trình quản lý gói": dpkgvà APT.

dpkglà một chương trình cài đặt và loại bỏ các gói và duy trì cơ sở dữ liệu về các gói được cài đặt, ở phiên bản nào. Khi nó cài đặt các gói, nó sẽ làm như vậy từ .debcác tập tin lưu trữ. Những tài liệu lưu trữ là cách các gói được phân phối.

dpkgthực hiện nhiều hơn sao chép (hoặc xóa) tệp và cập nhật cơ sở dữ liệu của nó - nó cũng sẽ chạy các tập lệnh cài đặt và loại bỏ tập lệnh. Nó có thể được coi là khá tinh vi. Nhưng những gì nó sẽ không làm là tìm và tải xuống các gói.

APT tìm và tải các gói và chạy dpkgmột cách thích hợp để cài đặt, nâng cấp và gỡ bỏ chúng. APT không thực sự là một phần mềm đơn lẻ nào, mặc dù có một gói aptCài đặt apt cung cấp các phần thiết yếu của nó.

APT bao gồm một thư viện ( libapt-pkg ) cung cấp chức năng cốt lõi, được truy cập bởi các công cụ khác nhau. Một số công cụ như vậy apt-get, cũng được cung cấp bởi gói aptCài đặt apt . Các công cụ khác được cài đặt riêng. APT cũng cung cấp các tệp cấu hình khác nhau để kiểm soát cách thư viện lõi của nó và các chương trình sử dụng nó hoạt động.

Hơn thế nữa, APT là một hệ thống lưu trữ và truy xuất dữ liệu về nguồn phần mềm nào cung cấp gói nào trong phiên bản nào và để thực hiện các dữ liệu đó để tự động thực hiện các tác vụ quản lý gói như cài đặt và nâng cấp gói. Điều này bao gồm theo dõi những gói nào cần thiết cho các gói khác hoạt động, và tự động chọn và cài đặt các gói phù hợp để đáp ứng các phụ thuộc này.

Ví dụ, khi tôi nói với apt-gettiện ích cài đặt gói chocolate-doomCài đặt sô cô la , nó chỉ ra những gói khác phải được cài đặt để nó hoạt động, và cũng sẽ tự động truy xuất và cài đặt chúng:

$ sudo apt-get install chocolate-doom
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  doom-wad-shareware libmikmod3 libsdl-mixer1.2 libsdl-net1.2 libsdl1.2debian
Recommended packages:
  doom-engine
The following NEW packages will be installed:
  chocolate-doom doom-wad-shareware libmikmod3 libsdl-mixer1.2 libsdl-net1.2
  libsdl1.2debian
0 upgraded, 6 newly installed, 0 to remove and 1 not upgraded.
Need to get 0 B/2,846 kB of archives.
After this operation, 8,626 kB of additional disk space will be used.

Các công cụ đồ họa như Trung tâm phần mềm, Trình cập nhật phần mềm / Trình quản lý cập nhật và Synaptic thực hiện các chức năng tương tự apt-get. Họ cũng sử dụng hệ thống APT - thông qua sự kết hợp giữa việc tuân thủ các quy tắc của nósử dụng chức năng được cung cấp bởi các thư viện cốt lõi - để thay đổi các gói được cài đặt, để cung cấp cho người dùng những gì họ thường muốn, theo cách mà mọi thứ (thường) tiếp tục làm việc.

Làm thế nào và khi /var/cache/apt/archivesthư mục được sử dụng

Khi apt-get, aptitude, Trung tâm phần mềm , Synaptic , Software Updater Update Manager / hoặc bất kỳ tải tiện ích quản lý gói các gói khác (và các gói khác chúng phụ thuộc vào) từ cấu hình nguồn phần mềm và cài đặt chúng, các gói tải về (ví dụ, các tập tin lưu trữ .deb từ đó chúng được cài đặt) được lưu trữ trong /var/cache/apt/archives.

Nếu bạn có tệp .deb trên đĩa và bạn cài đặt nó dpkg, điều đó không gây ra một bản sao của nó /var/cache/apt/archives. Nhưng khi một chương trình sử dụng hoặc thực hiện hệ thống APT về độ phân giải phụ thuộc tự động và các gói tải xuống gói tải xuống, đó là nơi lưu trữ chúng.

Mặc dù các tệp .deb cho các gói được tải xuống tự động được lưu trữ và cài đặt từ đó /var/cache/apt/archives, nhưng chúng không thực sự được tải xuống trực tiếp đến vị trí đó. Thay vào đó, tải xuống tệp .deb không đầy đủ (nghĩa là đang tiến hành) tồn tại /var/cache/apt/archives/partialvà sau đó được chuyển đến /var/cache/apt/archiveskhi hoàn tất.

Các tệp gói .deb vẫn được lưu trong bộ nhớ cache /var/cache/apt/archivesngay cả sau khi cài đặt thành công trong trường hợp chúng cần để sử dụng trong tương lai. Nhưng bạn có thể xóa các tệp .deb một cách an toàn, chúng không còn cần thiết nữa sudo apt-get autocleanhoặc xóa .debhoàn toàn các tệp được lưu trong bộ nhớ cache sudo apt-get clean. Xem man apt-getđể biết thêm thông tin.

Để minh họa chức năng của sudo apt-get autocleancác lệnh tương tự, cũng như để xác định xem bạn có muốn chạy chúng không, bạn có thể mô phỏng hành động của chúng bằng cách chạy sau đó với -scờ. Tốt nhất là để vượt qua lá cờ này trước sự autoclean(hoặc bất cứ điều gì khác) động từ hành động. Thông thường không cần thiết phải chạy tiện ích với quyền root sudokhi sử dụng -s, vì không có thay đổi thực tế nào được thực hiện.

Ví dụ: trên hệ thống của tôi:

$ apt-get -s autoclean
NOTE: This is only a simulation!
      apt-get needs root privileges for real execution.
      Keep also in mind that locking is deactivated,
      so don't depend on the relevance to the real current situation!
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Del libubsan0 4.9.1-15ubuntu1 [83.7 kB]
Del cups-server-common 1.7.5-3 [519 kB]
Del python2.7 2.7.8-9 [205 kB]
Del g++-4.9 4.9.1-15ubuntu1 [17.4 MB]
Del libstdc++-4.9-dev 4.9.1-15ubuntu1 [1,121 kB]
    ....

Các gói được liệt kê sẽ không được gỡ cài đặt ; thay vào đó, chỉ các tệp .deb được lưu trong bộ nhớ cache sẽ bị xóa. (Trong thực tế không xảy ra khi tôi chạy lệnh đó, vì nó chỉ là một mô phỏng.)

Các tập tin tải xuống khác

Phần mềm được cài đặt qua dpkg(thông qua APT hoặc cách khác) không thực sự chạy từ tệp .deb cung cấp phần mềm. Như đã lưu ý trong phần Thông tin nền , các tệp .deb được trích xuất. Đây là lý do tại sao chúng có thể được gỡ bỏ và gói cài đặt tiếp tục hoạt động.

Các tệp trên toàn hệ thống được cài đặt từ các gói .deb không được tải xuống vị trí hiện tại của chúng - thay vào đó, chúng được trích xuất từ ​​các tệp .deb cung cấp chúng (hoặc có thể được tạo đặc biệt trong quá trình cài đặt hoặc sau đó, như trường hợp đối với một số tập tin cấu hình).

Nhưng các tệp .deb không phải là các tệp duy nhất được tải xuống bởi các tiện ích quản lý gói. Thông thường các tệp khác được tải xuống cung cấp thông tin về nơi các gói tồn tại.

Ví dụ: khi tôi chạy sudo apt-get update, đầu ra bao gồm các dòng như:

Get:13 http://us.archive.ubuntu.com utopic/main i386 Packages [1,341 kB]

Điều này có nghĩa là một tệp như http://us.archive.ubfox.com/ubfox/dists/utopic/main/binary-amd64/Packages.bz2 đã được tải xuống và kiểm tra để giúp cập nhật cơ sở dữ liệu APT với thông tin về các gói có sẵn ( và trong các phiên bản) từ nguồn phần mềm cụ thể đó. Bạn có thể tìm thấy các gói Gói và các tệp khác như vậy trong /var/lib/apt/listthư mục. Các bản sao được lưu trữ ở đó được đặt tên phân biệt như us.archive.ubuntu.com_ubuntu_dists_utopic_main_binary-amd64_Packages, vì có thể có nhiều tệp như vậy.

Bạn hỏi về apt-cachecụ thể. Nó truy vấn cơ sở dữ liệu gói, nhưng nó không thực hiện bất kỳ thay đổi nào đối với hệ thống hoặc tải xuống bất kỳ tệp nào.

Các tệp đã tải xuống dành riêng cho Trung tâm phần mềm

Khi Trung tâm phần mềm Ubuntu tải xuống dữ liệu để sử dụng riêng, cụ thể cho dữ liệu đó và không liên quan đến dpkgchức năng APT (hoặc ) chung, nó sẽ lưu trữ chúng vào /var/cache/software-center.

Ví dụ: trên hệ thống của tôi (và trên hầu hết các hệ thống), thư mục đó chứa xapianthư mục con:

ek@Ilex:/var/cache/software-center/xapian$ ls
flintlock       postlist.baseB  record.baseB    spelling.baseB  termlist.baseB
iamchert        postlist.DB     record.DB       spelling.DB     termlist.DB
postlist.baseA  record.baseA    spelling.baseA  termlist.baseA

Trung tâm phần mềm sử dụng Xapian để lập chỉ mục thông tin để tìm kiếm nhanh.

Tải xuống các tệp cho các tiện ích liên quan khác

Một số tiện ích bổ sung hoạt động với hệ thống APT tải xuống và lưu trữ tệp như một phần hoạt động của chúng. apt-filekhông được cài đặt theo mặc định trong Ubuntu, nhưng có thể được cài đặt từ gói apt-fileCài đặt tập tin apt .

apt-filelưu trữ thông tin về những tập tin được cung cấp bởi những gói nào (ngay cả đối với những gói không được cài đặt cục bộ). Nó có được thông tin này về nội dung của các gói bằng cách tải xuống Contentscác tệp nén :

$ sudo apt-file update
Downloading complete file http://us.archive.ubuntu.com/ubuntu/dists/utopic/Contents-amd64.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 29.6M  100 29.6M    0     0   856k      0  0:00:35  0:00:35 --:--:--  832k

Khi apt-file updateđược chạy dưới quyền root (như trên), các tệp này được tải xuống /var/cache/apt/apt-filethư mục. Để khám phá điều này, tôi đã chạy:

$ sudo updatedb
$ locate Contents-amd64
/var/cache/apt/apt-file/us.archive.ubuntu.com_ubuntu_dists_utopic-proposed_Contents-amd64.gz
/var/cache/apt/apt-file/us.archive.ubuntu.com_ubuntu_dists_utopic_Contents-amd64.gz

Lưu ý rằng thông tin được cung cấp trong bài đăng này cung cấp một số ví dụ về các tệp dữ liệu được tải xuống và lưu trữ bởi các tiện ích quản lý gói trên Ubuntu, nhưng không nên được coi là danh sách đầy đủ các trường hợp sử dụng và lưu trữ các tệp đó.


Cảm ơn. Làm apt-cache hay / và apt-filecũng tải nhiều thứ? Nếu có, họ ở đâu?
Tim

"Nhưng khi một chương trình sử dụng hoặc thực hiện hệ thống APT có độ phân giải phụ thuộc tự động và các gói tải xuống gói, thì đó là nơi lưu trữ chúng." nghĩa là?
Tim

@Tim Tôi đã mở rộng câu trả lời của mình một cách đáng kể, theo cách mà tôi hy vọng sẽ trả lời đúng những câu hỏi đó (và hơn thế nữa). Như mọi khi phản hồi của bạn được chào đón nhất - đặc biệt là nếu bất cứ điều gì không rõ ràng.
Eliah Kagan

Cảm ơn "apt-cache truy vấn cơ sở dữ liệu gói", cơ sở dữ liệu trực tuyến hoặc trên máy tính cục bộ? Có phải apt-cache cần truy cập internet?
Tim

1
@Orian (Tôi rất vui vì câu trả lời này đã có ích!) Bạn có thể nhấp vào ngôi sao trong câu hỏi. Nó ngay dưới điểm số của câu hỏi và bỏ phiếu. Sau đó, câu hỏi xuất hiện trong tab yêu thích của hồ sơ của bạn . Chỉ có câu hỏi có thể được ưa thích. Trong trường hợp của câu trả lời này, hiện tại nó là người duy nhất trong câu hỏi. Những người khác có thể được đăng - mặc dù bạn cũng có thể muốn xem xét những điều đó, vì đôi khi câu trả lời mới có thông tin về những phát triển mới trong một chủ đề. Bạn có thể sử dụng dấu trang của trình duyệt, hoạt động ngay cả để trả lời. Sử dụng liên kết chia sẻ dưới câu trả lời để mở trang tại một câu trả lời cụ thể.
Eliah Kagan
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.