Câu trả lời:
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": dpkg
và APT.
dpkg
là 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ừ .deb
cá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.
dpkg
thự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 dpkg
mộ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 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 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-get
tiện ích cài đặt gói chocolate-doom , 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ó và 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.
/var/cache/apt/archives
thư mục được sử dụngKhi 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/partial
và sau đó được chuyển đến /var/cache/apt/archives
khi hoàn tất.
Các tệp gói .deb vẫn được lưu trong bộ nhớ cache /var/cache/apt/archives
ngay 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 autoclean
hoặc xóa .deb
hoà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 autoclean
cá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 -s
cờ. 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 sudo
khi 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.)
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/list
thư 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-cache
cụ 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.
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 dpkg
chứ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 xapian
thư 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.
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-file
không được cài đặt theo mặc định trong Ubuntu, nhưng có thể được cài đặt từ gói apt-file .
apt-file
lư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 Contents
cá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-file
thư 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 đó.
apt-cache
hay / vàapt-file
cũng tải nhiều thứ? Nếu có, họ ở đâu?