Thứ hai, 03/11/2014 | 00:00 GMT+7

Cơ bản về quản lý gói Ubuntu và Debian

Quản lý gói là một trong những lợi thế cơ bản mà hệ thống Linux cung cấp. Định dạng đóng gói và các công cụ quản lý gói khác nhau giữa các phân phối, nhưng hai họ chung đã nổi lên là phổ biến nhất.

Đối với các bản phân phối dựa trên RHEL, định dạng đóng gói RPM và các công cụ đóng gói như rpmyum là phổ biến. Họ chính khác, được sử dụng bởi Debian, Ubuntu và các bản phân phối liên quan, sử dụng định dạng đóng gói .deb và các công cụ như aptdpkg . Group thứ hai này là họ mà ta sẽ thảo luận trong hướng dẫn này.

Trong hướng dẫn kiểu ghi chú này, ta sẽ trình bày một số công cụ quản lý gói phổ biến nhất mà administrator hệ thống sử dụng trên hệ thống Debian và Ubuntu. Đây được dùng làm tài liệu tham khảo nhanh khi bạn cần biết cách hoàn thành nhiệm vụ quản lý gói trong các hệ thống này.

Cách sử dụng Hướng dẫn này

Hướng dẫn này sẽ đề cập đến các công cụ quản lý gói cấp user thường được sử dụng trên hệ thống Debian và Ubuntu. Ta sẽ không đề cập đến các công cụ cần thiết để tạo gói do quan điểm khác nhau về policy giữa các bản phân phối khác nhau và sự phức tạp liên quan với các ví dụ không tầm thường.

Ta sẽ thảo luận riêng từng công cụ chung trong Tổng quan về Công cụ Quản lý Gói Debian, nhưng phần lớn hướng dẫn này sẽ được sắp xếp theo chức năng hơn là công cụ. Tổ chức này có ý nghĩa hơn vì hướng dẫn này được khái niệm hóa như một tài liệu tham khảo chức năng.

Để tận dụng tối đa hướng dẫn này, hãy ghi nhớ những điểm sau:

  • Đọc phần Tổng quan về Công cụ Quản lý Gói Debian bên dưới nếu bạn chưa quen với dòng công cụ quản lý gói Debian. Điều này sẽ cung cấp cho bạn một cái nhìn tổng quan sơ bộ về mục đích của mỗi công cụ là gì và chúng có liên quan như thế nào.
  • Sử dụng từng phần của hướng dẫn này nếu cần để tạo ra ảnh hưởng mong muốn. Đây không phải là thủ tục, vì vậy hãy thoải mái chuyển sang bất cứ điều gì phù hợp nhất với bạn vào lúc này.
  • Sử dụng menu Nội dung ở phía bên trái của trang này (ở độ rộng trang rộng) hoặc chức năng tìm kiếm của trình duyệt của bạn để tìm các phần bạn cần.
  • Copy paste các ví dụ dòng lệnh đã cho, thay thế các giá trị red bằng các giá trị của bạn .

Tổng quan về Công cụ Quản lý Gói Debian

Hệ sinh thái Debian / Ubuntu sử dụng khá nhiều công cụ quản lý gói khác nhau để quản lý phần mềm trên hệ thống.

Hầu hết các công cụ này đều có liên quan với nhau và hoạt động trên cùng một database gói. Một số công cụ này cố gắng cung cấp các giao diện cấp cao cho trình cài đặt gói , trong khi các tiện ích khác tập trung vào việc cung cấp chức năng cấp thấp.

Apt-get

Lệnh apt-get có lẽ là thành viên thường được sử dụng nhất trong bộ công cụ đóng gói apt . Mục đích chính của nó là giao tiếp với các repository từ xa được duy trì bởi group đóng gói của nhà phân phối và thực hiện các hành động trên các gói có sẵn.

Bộ apt nói chung hoạt động bằng cách kéo thông tin từ các repository từ xa vào một bộ nhớ cache được duy trì trên hệ thống local . Lệnh apt-get được sử dụng để làm mới cache local . Nó cũng được sử dụng để sửa đổi trạng thái gói, nghĩa là cài đặt hoặc xóa một gói khỏi hệ thống.

Nói chung, apt-get sẽ được sử dụng để cập nhật cache local và thực hiện các sửa đổi đối với hệ thống đang hoạt động.

Apt-cache

Một thành viên quan trọng khác của bộ aptapt-cache . Tiện ích này sử dụng cache ẩn local để truy vấn thông tin về các gói có sẵn và thuộc tính của chúng.

Ví dụ: bất kỳ lúc nào bạn muốn tìm kiếm một gói cụ thể hoặc một công cụ sẽ thực hiện một chức năng nhất định, apt-cache là một nơi tốt để tham khảo . Nó cũng có thể cung cấp thông tin về version gói chính xác nào sẽ được nhắm đến bởi một quy trình. Thông tin phụ thuộc và phụ thuộc ngược lại là một lĩnh vực khác mà apt-cache rất hữu ích.

Năng khiếu

Lệnh aptitude kết hợp nhiều chức năng của hai lệnh trên. Nó có ưu điểm là hoạt động như một công cụ dòng lệnh, kết hợp chức năng của hai công cụ trên và cũng có thể hoạt động bằng giao diện menued dựa trên văn bản ncurses.

Khi hoạt động từ dòng lệnh, hầu hết các lệnh đều phản ánh chính xác khả năng của apt-getapt-cache . Do sự trùng lặp này, ta sẽ không thảo luận nhiều về aptitude trong hướng dẫn này. Bạn thường có thể sử dụng aptitude thay cho apt-get hoặc apt-cache nếu bạn thích công cụ này.

Dpkg

Mặc dù các công cụ trước đây tập trung vào việc quản lý các gói được duy trì trong repository lưu trữ, lệnh dpkg cũng được dùng để hoạt động trên các .deb riêng lẻ. Công cụ dpkg thực sự chịu trách nhiệm cho hầu hết các công việc mức thấp của các lệnh trên.

Không giống như các lệnh apt-* , dpkg không có khả năng tự động giải quyết các phần phụ thuộc. Tính năng chính của nó là khả năng dễ dàng làm việc trực tiếp với .deb gói .deb và khả năng phân tích một gói và tìm hiểu thêm về cấu trúc của nó. Mặc dù nó có thể thu thập một số thông tin về các gói được cài đặt trên hệ thống, nhưng mục đích chính của nó là ở cấp độ gói riêng lẻ.

Tasksel

Chương tasksel là một loại công cụ khác để quản lý phần mềm. Thay vì quản lý các gói riêng lẻ hoặc thậm chí các ứng dụng, tasksel tập trung vào việc group các phần mềm lại với nhau cần thiết để hoàn thành các “nhiệm vụ” cụ thể.

Các việc được tổ chức có thể được chọn bằng giao diện dựa trên văn bản hoặc chúng có thể được nhắm đến giống như bạn nhắm đến các gói trong các công cụ đóng gói thông thường. Mặc dù không phải là cách tiếp cận phẫu thuật nhất, nhưng nó có thể rất hữu ích để đứng dậy và chạy nhanh chóng.

Khác

Có nhiều công cụ quản lý gói khác có sẵn cung cấp các chức năng khác nhau hoặc trình bày thông tin theo những cách khác nhau. Ta sẽ chỉ đề cập đến những điều này khi cần thiết, nhưng chúng có thể rất hữu ích trong một số tình huống nhất định.

Một số công cụ rơi vào danh mục này là apt-file , dselectgdebi .

Cập nhật bộ nhớ đệm gói và hệ thống

Các công cụ quản lý gói Debian và Ubuntu cung cấp một cách tốt để cập nhật danh sách các gói sẵn có của hệ thống. Nó cũng cung cấp các phương pháp đơn giản để cập nhật các gói bạn hiện đã cài đặt trên server của bạn .

Cập nhật bộ nhớ cache gói local

Các repository từ xa mà các công cụ đóng gói của bạn dựa vào để biết thông tin về gói hàng luôn được cập nhật. Tuy nhiên, phần lớn các công cụ quản lý gói hoạt động với bộ nhớ cache local của thông tin này.

Thông thường, bạn nên cập nhật cache ẩn gói local của bạn mỗi phiên trước khi thực hiện các lệnh gói khác. Điều này sẽ đảm bảo bạn đang sử dụng thông tin cập nhật nhất về phần mềm có sẵn. Hơn nữa, một số lệnh cài đặt sẽ không thành công nếu bạn đang thao tác với thông tin gói cũ.

Để cập nhật cache local , hãy sử dụng apt-get với lệnh phụ update :

sudo apt-get update 

Thao tác này sẽ kéo xuống danh sách cập nhật các gói có sẵn trong repository bạn đang theo dõi.

Cập nhật gói mà không cần xóa gói

Bộ đóng gói apt làm cho việc cập nhật tất cả phần mềm được cài đặt trên server của bạn trở nên đơn giản.

Lệnh apt phân biệt giữa hai thủ tục cập nhật khác nhau. Quy trình cập nhật đầu tiên (được đề cập trong phần này) được dùng để nâng cấp bất kỳ thành phần nào không yêu cầu loại bỏ thành phần. Để tìm hiểu cách cập nhật và cho phép apt xóa và swap các thành phần khi cần thiết, hãy xem phần bên dưới.

Điều này có thể rất quan trọng khi bạn không muốn xóa bất kỳ gói nào đã cài đặt trong bất kỳ trường hợp nào. Tuy nhiên, một số bản cập nhật liên quan đến việc thay thế các thành phần hệ thống hoặc xóa các file xung đột. Quy trình này sẽ bỏ qua bất kỳ bản cập nhật nào yêu cầu loại bỏ gói:

sudo apt-get upgrade 

Sau khi định dạng trước hành động này, mọi bản cập nhật không liên quan đến việc xóa thành phần sẽ được áp dụng.

Cập nhật các gói và loại bỏ khi cần thiết

Bộ đóng gói apt làm cho việc cập nhật tất cả phần mềm được cài đặt trên server của bạn trở nên đơn giản.

Lệnh apt phân biệt giữa hai thủ tục cập nhật khác nhau. Quy trình cập nhật đầu tiên bỏ qua bất kỳ bản cập nhật nào yêu cầu loại bỏ gói. Điều này được đề cập trong phần trên.

Quy trình thứ hai (được đề cập trong phần này) sẽ cập nhật tất cả các gói, ngay cả những gói yêu cầu loại bỏ gói. Điều này thường cần thiết khi các gói phụ thuộc thay đổi.

Thông thường, các gói bị xóa sẽ được thay thế bằng các gói tương đương chức năng trong quá trình nâng cấp, vì vậy điều này nói chung là an toàn. Tuy nhiên, bạn nên để ý đến các gói cần loại bỏ, đề phòng một số thành phần thiết yếu được đánh dấu để loại bỏ. Để định dạng trước hành động này, hãy nhập:

sudo apt-get dist-upgrade 

Điều này sẽ cập nhật tất cả các gói trên hệ thống. Đây là một quy trình nâng cấp hoàn chỉnh hơn so với lần nâng cấp cuối cùng.

Download và Cài đặt Gói

Một trong những chức năng chính của các công cụ quản lý gói là hỗ trợ download và cài đặt gói vào hệ thống.

Tìm kiếm các Gói

Bước đầu tiên khi download và cài đặt các gói thường là tìm kiếm các repository của bản phân phối của bạn cho các gói bạn đang tìm kiếm.

Phần lớn các apt hoạt động chủ yếu trên bộ nhớ cache của thông tin gói được duy trì trên máy local . Điều này cho phép thực thi nhanh hơn và ít lưu lượng mạng hơn.

Tìm kiếm gói là một hoạt động nhắm đến vào bộ nhớ cache của gói để lấy thông tin. Lệnh phụ apt-cache search là công cụ cần thiết để tìm kiếm các gói có sẵn. Lưu ý bạn nên đảm bảo bộ nhớ cache local của bạn sudo apt-get update bằng cách sử dụng sudo apt-get update trước khi tìm kiếm các gói:

apt-cache search package 

Vì thủ tục này chỉ truy vấn thông tin nên nó không yêu cầu quyền sudo . Bất kỳ tìm kiếm nào được định dạng trước sẽ xem xét tên gói, cũng như mô tả đầy đủ cho các gói.

Ví dụ: nếu bạn tìm kiếm htop , bạn sẽ thấy các kết quả như sau:

apt-cache search htop 
aha - ANSI color to HTML converter htop - interactive processes viewer libauthen-oath-perl - Perl module for OATH One Time Passwords 

Như bạn thấy , ta có một gói tên là htop , nhưng ta cũng thấy hai chương trình khác, mỗi chương trình đều đề cập đến htop trong trường mô tả đầy đủ của gói (mô tả bên cạnh kết quả chỉ là một bản tóm tắt ngắn).

Cài đặt một Gói từ Repos

Để cài đặt một gói từ repository , cũng như tất cả các phụ thuộc cần thiết, ta có thể sử dụng apt-get với lệnh con install .

Các đối số cho lệnh này phải là tên gói hoặc tên vì chúng được gắn nhãn trong repository lưu trữ:

sudo apt-get install package 

Bạn có thể cài đặt nhiều gói cùng một lúc, được phân tách bằng dấu cách:

sudo apt-get install package1 package2 

Nếu gói yêu cầu của bạn yêu cầu các phụ thuộc bổ sung, chúng sẽ được in ra chuẩn và bạn cần xác nhận quy trình. Nó trông giống như sau :

sudo apt-get install apache2 
Reading package lists... Done Building dependency tree        Reading state information... Done The following extra packages will be installed:   apache2-data Suggested packages:   apache2-doc apache2-suexec-pristine apache2-suexec-custom   apache2-utils The following NEW packages will be installed:   apache2 apache2-data 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 236 kB of archives. After this operation, 1,163 kB of additional disk space will be used. Do you want to continue [Y/n]? 

Như bạn thấy , mặc dù mục tiêu cài đặt của ta là gói apache2 , gói apache2-data vẫn cần thiết như một gói phụ thuộc. Trong trường hợp này, bạn có thể tiếp tục bằng cách nhấn ENTER hoặc “y” hoặc hủy thao tác bằng lệnh “n”.

Cài đặt một version gói cụ thể từ Repos

Nếu bạn cần cài đặt một version cụ thể của một gói, bạn có thể cung cấp version bạn muốn nhắm đến bằng một dấu bằng, như sau:

sudo apt-get install package=version 

Phiên bản trong trường hợp này phải trùng với một trong các số version gói có sẵn trong repository lưu trữ. Điều này nghĩa là sử dụng schemas lập version mà bản phân phối của bạn sử dụng. Bạn có thể tìm thấy các version có sẵn bằng lệnh apt-cache policy package .

Cấu hình lại các gói

Nhiều gói bao gồm các tập lệnh cấu hình sau cài đặt được chạy sau khi cài đặt xong. Chúng thường bao gồm các dấu nhắc để administrator thực hiện các lựa chọn cấu hình.

Nếu bạn cần chạy qua các bước cấu hình này (và các bước bổ sung) sau đó, bạn có thể sử dụng dpkg-reconfigure . Lệnh này xem xét gói được chuyển đến nó và chạy lại bất kỳ lệnh hậu cấu hình nào có trong đặc tả gói:

sudo dpkg-reconfigure package 

Điều này sẽ cho phép bạn truy cập vào các dấu nhắc tương tự (và thường xuyên hơn) mà bạn đã chạy khi cài đặt.

Thực hiện một loạt các hành động gói

Nhiều lần, bạn cần xem các tác dụng phụ của một thủ tục trước đó mà không thực sự commit thực hiện lệnh. May mắn là apt cho phép bạn thêm cờ -s để "mô phỏng" một thủ tục.

Ví dụ, để xem những gì sẽ được thực hiện nếu bạn chọn cài đặt một gói, có thể chạy lệnh:

apt-get install -s package 

Điều này sẽ cho phép bạn thấy tất cả các phụ thuộc và các thay đổi đối với hệ thống của bạn sẽ diễn ra nếu bạn xóa cờ -s . Một lợi ích của việc này là bạn có thể xem kết quả của một quá trình thường yêu cầu quyền root mà không cần sử dụng sudo .

Ví dụ: nếu ta muốn đánh giá những gì sẽ được cài đặt với gói apache2 , ta có thể nhập:

apt-get install -s apache2 
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 The following extra packages will be installed:   apache2-data Suggested packages:   apache2-doc apache2-suexec-pristine apache2-suexec-custom   apache2-utils The following NEW packages will be installed:   apache2 apache2-data 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Inst apache2-data (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [all]) Inst apache2 (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [amd64]) Conf apache2-data (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [all]) Conf apache2 (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [amd64]) 

Ta nhận được tất cả thông tin về các gói và version sẽ được cài đặt mà không cần phải hoàn thành quá trình thực tế.

Điều này cũng hoạt động với các thủ tục khác, như nâng cấp hệ thống:

apt-get -s dist-upgrade 

Không được yêu cầu nhở phê duyệt với các Hành động trọn gói

Theo mặc định, apt sẽ nhắc user xác nhận cho nhiều quá trình. Điều này bao gồm các cài đặt yêu cầu phụ thuộc bổ sung và nâng cấp gói.

Để bỏ qua các nâng cấp này và mặc định chấp nhận bất kỳ dấu nhắc nào trong số này, bạn có thể chuyển cờ -y khi thực hiện các thao tác sau:

sudo apt-get install -y package 

Thao tác này sẽ cài đặt gói và bất kỳ phần phụ thuộc nào mà không cần user nhắc thêm. Điều này cũng được dùng cho các thủ tục nâng cấp:

sudo apt-get dist-upgrade -y 

Sửa các gói và gói phụ thuộc bị hỏng

Đôi khi quá trình cài đặt có thể không kết thúc thành công do phụ thuộc hoặc các vấn đề khác. Một tình huống phổ biến mà điều này có thể xảy ra là khi cài đặt .deb với dpkg , gói này không giải quyết được các phần phụ thuộc.

Lệnh apt-get có thể cố gắng giải quyết tình huống này bằng cách chuyển cho nó lệnh -f .

sudo apt-get install -f 

Thao tác này sẽ tìm kiếm bất kỳ phụ thuộc nào không được thỏa mãn và cố gắng cài đặt chúng để sửa cây phụ thuộc. Nếu quá trình cài đặt của bạn phàn nàn về vấn đề phụ thuộc, đây phải là bước đầu tiên bạn cố gắng giải quyết vấn đề đó.

Download Gói từ Repos

Có những trường hợp chính trong đó có thể hữu ích khi download một gói từ repository mà không thực sự cài đặt nó. Bạn có thể thực hiện việc này bằng lệnh phụ download của apt-get .

Vì đây chỉ là download một file và không ảnh hưởng đến hệ thống thực tế, không cần có quyền sudo :

apt-get download package 

Thao tác này sẽ download (các) gói được chỉ định vào folder hiện tại.

Download Nguồn gói từ Kho

Mặc dù apt chủ yếu xử lý các .deb , bạn cũng có thể lấy các file nguồn cho các gói, miễn là danh sách nguồn apt của bạn được cấu hình với thông tin đó.

Để download nguồn của một gói, bạn phải có một dòng deb-src tương ứng trong file source.list cho apt . Bạn có thể xem cách thực hiện việc này trong phần thêm repository apt.

Khi bạn đã cấu hình repository nguồn, bạn có thể download nguồn của gói bằng lệnh :

sudo apt-get source package 

Thao tác này sẽ download các file gói vào folder hiện tại. Thông thường, điều này bao gồm một folder gói, một file mô tả dsc và gói tarred và nén:

ls -F 
sublime-text-2.0.2/                 sublime-text_2.0.2-1~webupd8~3.tar.gz sublime-text_2.0.2-1~webupd8~3.dsc 

Điều này được dùng nếu bạn muốn sử dụng gói của một bản phân phối làm cơ sở cho các sửa đổi thêm.

Cài đặt gói .deb

Mặc dù hầu hết các bản phân phối khuyên bạn nên cài đặt phần mềm từ repository được duy trì của họ, nhưng một số nhà cung cấp cung cấp .deb file .deb thô mà bạn có thể cài đặt trên hệ thống của bạn .

Để làm điều này, ta sử dụng một công cụ gọi là dpkg . Công cụ dpkg chủ yếu được sử dụng để làm việc với các gói riêng lẻ. Nó không cố gắng thực hiện cài đặt từ repository và thay vào đó tìm kiếm .deb gói .deb trong folder hiện tại hoặc đường dẫn được cung cấp:

sudo dpkg --install debfile.deb 

Điều quan trọng cần lưu ý là công cụ dpkg không thực hiện bất kỳ xử lý phụ thuộc nào. Điều này nghĩa là nếu có bất kỳ phụ thuộc nào chưa được đáp ứng, quá trình cài đặt sẽ không thành công. May mắn là nó đánh dấu các phụ thuộc cần thiết, vì vậy nếu tất cả các phụ thuộc đều có sẵn trong repository , bạn có thể thỏa mãn chúng một cách dễ dàng bằng lệnh sau:

sudo apt-get install -f 

Điều này sẽ cài đặt bất kỳ phụ thuộc nào chưa được đáp ứng, bao gồm cả những phụ thuộc được đánh dấu bằng dpkg .

Cài đặt phần mềm “Tasks” với Tasksel

Có thể cài đặt một bộ lớn các phần mềm liên quan thông qua việc sử dụng các “tác vụ”. Nhiệm vụ chỉ đơn giản là các group gói cài đặt một môi trường nhất định khi được cài đặt cùng nhau. Ví dụ về các việc bao gồm server LAMP, môi trường máy tính để bàn và server ứng dụng.

Một số hệ thống có thể không có tasksel gói cài đặt theo mặc định. Để lấy nó, bạn có thể gõ:

sudo apt-get update sudo apt-get install tasksel 

Bạn có thể tương tác chọn các group gói nhiệm vụ khác nhau bằng lệnh :

sudo tasksel 

Thao tác này sẽ hiển thị một giao diện cho phép bạn chọn các group gói khác nhau và áp dụng các thay đổi.

Bạn cũng có thể in ra danh sách các việc khả dụng và trạng thái cài đặt của chúng bằng lệnh :

tasksel --list-task 

Sau đó, bạn có thể chọn cài đặt các việc từ dòng lệnh bằng lệnh :

sudo tasksel install task_name 

Xóa gói và xóa file

Các thao tác nghịch đảo để cài đặt và download gói cũng có thể thực hiện được với trình quản lý gói. Phần này sẽ thảo luận về cách gỡ cài đặt các gói và dọn dẹp các file có thể bị bỏ lại bởi các hoạt động của gói.

Gỡ gói cài đặt

Để loại bỏ một gói đã cài đặt, lệnh con remove có thể được cấp cho apt-get . Thao tác này sẽ xóa hầu hết các file mà gói đã cài đặt vào hệ thống, với một ngoại lệ đáng chú ý.

Lệnh này để lại các file cấu hình tại chỗ để cấu hình của bạn sẽ khả dụng nếu bạn cần cài đặt lại ứng dụng vào một ngày sau đó. Điều này hữu ích vì nó nghĩa là các file cấu hình mà bạn đã tùy chỉnh sẽ không bị xóa nếu bạn vô tình loại bỏ một gói.

Để hoàn thành thao tác này, bạn chỉ cần cung cấp tên của gói bạn muốn gỡ cài đặt:

sudo apt-get remove package 

Gói sẽ được gỡ cài đặt ngoại trừ các file cấu hình của bạn.

Gỡ cài đặt một gói và tất cả các file cấu hình được liên kết

Nếu bạn muốn loại bỏ một gói và tất cả các file liên quan đến từ hệ thống của bạn, bao gồm các file cấu hình, bạn có thể sử dụng purge tiểu lệnh của apt-get .

Không giống như lệnh remove được đề cập ở trên, lệnh purge loại bỏ mọi thứ. Điều này hữu ích nếu bạn không muốn lưu các file cấu hình hoặc nếu bạn đang gặp sự cố và muốn bắt đầu từ một phương tiện chặn sạch.

Lưu ý sau khi các file cấu hình của bạn bị xóa, bạn sẽ không thể lấy lại chúng:

sudo apt-get purge package 

Bây giờ, nếu bạn cần cài đặt lại gói đó, cấu hình mặc định sẽ được sử dụng.

Xóa bất kỳ phụ thuộc tự động nào không còn cần thiết

Khi xóa các gói khỏi hệ thống của bạn bằng cách apt-get remove apt-get purge hoặc apt-get purge , mục tiêu gói sẽ bị xóa. Tuy nhiên, bất kỳ phần phụ thuộc nào đã được cài đặt tự động để đáp ứng các yêu cầu cài đặt sẽ vẫn ở phía sau.

Để tự động loại bỏ bất kỳ gói nào đã được cài đặt dưới dạng phụ thuộc không còn được yêu cầu bởi bất kỳ gói nào, bạn có thể sử dụng lệnh autoremove :

sudo apt-get autoremove 

Nếu bạn muốn xóa tất cả các file cấu hình được liên kết khỏi các phần phụ thuộc đang bị xóa, bạn cần thêm tùy chọn --purge vào lệnh autoremove . Thao tác này cũng sẽ xóa các file cấu hình, giống như lệnh purge thực hiện để xóa mục tiêu:

sudo apt-get --purge autoremove 

Dọn dẹp các file gói đã download lỗi thời

Khi các gói được thêm và xóa khỏi kho bởi những người bảo trì gói của phân phối, một số gói sẽ trở nên lỗi thời.

Công cụ apt-get có thể xóa các file gói nào trên hệ thống local được liên kết với các gói không còn khả dụng từ repository bằng cách sử dụng lệnh autoclean .

Điều này sẽ giải phóng dung lượng trên server của bạn và cho phép bộ nhớ cache trên hệ thống local của bạn được cập nhật mà không gặp phải rắc rối do lưu giữ thông tin vô ích.

sudo apt-get autoclean 

Nhận thông tin về các gói

Mỗi gói chứa một lượng lớn metadata có thể được truy cập bằng các công cụ quản lý gói. Phần này sẽ trình bày một số cách phổ biến để lấy thông tin về các gói có sẵn và đã cài đặt.

Hiển thị thông tin về một gói

Để hiển thị thông tin chi tiết về một gói trong repositories của bản phân phối của bạn, bạn có thể sử dụng lệnh con show của apt-cache . Mục tiêu của lệnh này là một tên gói trong repositories lưu trữ:

apt-cache show package 

Điều này sẽ thông tin về bất kỳ thành phần cài đặt nào cho gói được đề cập. Mỗi thành phần sẽ có thông tin về các phụ thuộc của nó, version , kiến trúc, xung đột, tên file gói thực tế, kích thước của gói và cài đặt cũng như mô tả chi tiết trong số những thứ khác.

Để hiển thị thông tin bổ sung về từng thành phần , bao gồm danh sách đầy đủ các gói phụ thuộc ngược lại (danh sách các gói phụ thuộc vào gói được truy vấn), hãy sử dụng lệnh showpkg thay thế. Điều này sẽ bao gồm nhiều thông tin về mối quan hệ của gói này với các gói khác:

apt-cache showpkg package 

Hiển thị Thông tin về Gói .deb

Để hiển thị chi tiết về file .deb , bạn có thể sử dụng cờ --info bằng lệnh dpkg . Đích của lệnh này phải là đường dẫn đến file .deb :

dpkg --info debfile.deb 

Điều này sẽ hiển thị cho bạn một số metadata về gói được đề cập. Điều này bao gồm tên gói và version , kiến trúc mà nó được xây dựng, kích thước và các yếu tố phụ thuộc được yêu cầu, mô tả và xung đột.

Hiển thị phụ thuộc và phụ thuộc ngược

Để liệt kê cụ thể các phần phụ thuộc (gói mà gói này dựa vào) và các phần phụ thuộc ngược lại (các gói dựa vào gói này), bạn có thể sử dụng trình apt-cache .

Đối với thông tin phụ thuộc thông thường, bạn có thể sử dụng lệnh depends :

apt-cache depends package 

Điều này sẽ hiển thị thông tin về mọi gói được liệt kê dưới dạng phụ thuộc cứng, đề xuất, khuyến nghị hoặc xung đột.

Nếu bạn cần tìm ra gói nào phụ thuộc vào một gói nhất định, bạn có thể chuyển gói đó đến lệnh con rdepends :

apt-cache rdepends package 

Hiển thị các version gói có sẵn và đã cài đặt

Thông thường, có nhiều version của một gói trong repositories lưu trữ, với một gói mặc định duy nhất. Để xem các version có sẵn của một gói, bạn có thể sử dụng lệnh con policy tới apt-cache :

apt-cache policy package 

Điều này sẽ hiển thị cho bạn version nào được cài đặt (nếu có), thành phần sẽ được cài đặt theo mặc định nếu bạn không chỉ định version bằng lệnh cài đặt và bảng các version gói, hoàn chỉnh với trọng số cho biết mức độ ưu tiên của từng version .

Điều này được dùng để xác định version nào sẽ được cài đặt và những lựa chọn thay thế nào có sẵn. Bởi vì điều này cũng liệt kê các repository mà mỗi version được đặt, điều này được dùng để xác định xem có bất kỳ repository bổ sung hoặc PPA nào đang thay thế các gói từ repository mặc định hay không.

Hiển thị các Gói đã Cài đặt với dpkg -l

Để hiển thị các gói được cài đặt trên hệ thống của bạn, bạn có một số tùy chọn riêng biệt, tùy thuộc vào định dạng và độ chi tiết của kết quả mà bạn muốn.

Phương pháp đầu tiên liên quan đến việc sử dụng dpkg hoặc dpkg-query với -l . Đầu ra từ cả hai lệnh này là giống hệt nhau. Không có đối số, nó cung cấp danh sách mọi gói được cài đặt hoặc cài đặt một phần trên hệ thống. Đầu ra sẽ như thế này:

dpkg -l 
Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name                                        Version                                 Architecture Description +++-===========================================-=======================================-============-===================================================================================================================== ii  account-plugin-generic-oauth                0.10bzr13.03.26-0ubuntu1.1              amd64        GNOME Control Center account plugin for single signon - generic OAuth ii  accountsservice                             0.6.34-0ubuntu6                         amd64        query and manipulate user account information ii  acl                                         2.2.52-1                                amd64        Access control list utilities ii  acpi-support                                0.142                                   amd64        scripts for handling many ACPI events ii  acpid                                       1:2.0.18-1ubuntu2                       amd64        Advanced Configuration and Power Interface event daemon . . . 

Đầu ra tiếp tục cho mọi gói trên hệ thống. Ở đầu kết quả , bạn có thể thấy ý nghĩa của ba ký tự đầu tiên trên mỗi dòng. Ký tự đầu tiên cho biết trạng thái mong muốn của gói. Nó có thể:

  • u : Không xác định
  • i : Đã cài đặt
  • r : Đã xóa
  • p : Đã thanh lọc
  • h : Phiên bản được tổ chức

Ký tự thứ hai cho biết trạng thái thực tế của gói hàng mà trình cài đặt gói đã biết. Đây có thể là:

  • n : Chưa cài đặt
  • i : Đã cài đặt
  • c : Tệp cấu hình hiện có, nhưng ứng dụng được gỡ cài đặt.
  • u : Đã extract . Các file đã được extract , nhưng chưa được cấu hình .
  • f : Gói được cài đặt một nửa, nghĩa là đã xảy ra lỗi một phần trong quá trình cài đặt khiến hoạt động tạm dừng.
  • w : Gói đang chờ kích hoạt từ một gói riêng biệt
  • p : Gói đã được kích hoạt bởi một gói khác.

Ký tự thứ ba, chỉ đơn giản là khoảng trống cho hầu hết các gói, chỉ có một tùy chọn tiềm năng khác:

  • r : Điều này cho biết rằng cần phải cài đặt lại. Điều này thường nghĩa là gói bị hỏng và ở trạng thái không hoạt động.

Phần còn lại của các cột chứa tên gói, version , kiến trúc và mô tả.

Hiển thị Cài đặt Trạng thái Gói được Lọc

Nếu bạn thêm một mẫu tìm kiếm sau mẫu -l , dpkg sẽ liệt kê tất cả các gói (dù đã cài đặt hay chưa) có chứa mẫu đó. Ví dụ: ta có thể tìm kiếm các thư viện xử lý YAML tại đây:

dpkg -l libyaml* 
Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name            Version      Architecture Description +++-===============-============-============-=================================== ii  libyaml-0-2:amd 0.1.4-2ubunt amd64        Fast YAML 1.1 parser and emitter li ii  libyaml-dev:amd 0.1.4-2ubunt amd64        Fast YAML 1.1 parser and emitter li un  libyaml-perl    <none>                    (no description available) un  libyaml-syck-pe <none>                    (no description available) ii  libyaml-tiny-pe 1.51-2       all          Perl module for reading and writing 

Như bạn thấy từ cột đầu tiên, kết quả thứ ba và thứ tư không được cài đặt. Điều này cung cấp cho bạn mọi gói phù hợp với mẫu, cũng như trạng thái hiện tại và mong muốn của nó.

Hiển thị các Gói đã Cài đặt với các lựa chọn dpkg –get-select

Một cách thay thế để hiển thị các gói đã được cài đặt trên hệ thống của bạn là gắn cờ --get-selections với dpkg .

Điều này cung cấp danh sách tất cả các gói được cài đặt hoặc gỡ bỏ nhưng chưa bị xóa:

dpkg --get-selections 

Để phân biệt giữa hai trạng thái này, bạn có thể sử dụng awk để lọc theo trạng thái. Để chỉ xem các gói đã cài đặt, hãy nhập:

dpkg --get-selections | awk '$2 ~ /^install/' 

Để nhận danh sách các gói đã xóa chưa xóa file cấu hình, có thể chạy lệnh:

dpkg --get-selections | awk '$2 !~ /^install/' 

Tìm kiếm các gói đã cài đặt

Để tìm kiếm cơ sở gói đã cài đặt của bạn cho một gói cụ thể, bạn có thể thêm một chuỗi bộ lọc gói sau tùy chọn --get-selections . Điều này có thể sử dụng các ký tự đại diện để đối sánh. , điều này sẽ hiển thị bất kỳ gói nào đã được cài đặt hoặc vẫn có file cấu hình trên hệ thống:

dpkg --get-selections libz* 

Bạn có thể, , lọc bằng cách sử dụng các biểu thức awk từ phần cuối cùng.

Liệt kê các file được cài đặt bởi một gói

Để tìm ra file mà gói chịu trách nhiệm, bạn có thể sử dụng cờ -L với lệnh dpkg :

dpkg -L package 

Thao tác này sẽ in ra đường dẫn tuyệt đối của mỗi file được kiểm soát bởi gói. Điều này sẽ không bao gồm các file cấu hình nào được tạo bởi các quy trình trong gói.

Tìm kiếm Gói nào cài đặt đến một vị trí

Để tìm ra gói nào chịu trách nhiệm cho một file nhất định trong hệ thống file của bạn, bạn có thể chuyển đường dẫn tuyệt đối đến lệnh dpkg bằng cờ -S .

Thao tác này sẽ in ra gói đã cài đặt file được đề cập:

dpkg -S /path/to/file 

Lưu ý các file nào được chuyển vào vị trí của các lệnh cài đặt sau khi đăng không thể bị ràng buộc trở lại gói bằng kỹ thuật này.

Tìm gói nào cung cấp file mà không cần cài đặt

Sử dụng dpkg , thật đơn giản để tìm ra gói nào sở hữu file bằng tùy chọn -S . Tuy nhiên, đôi khi bạn có thể cần biết gói nào cung cấp file hoặc lệnh, ngay cả khi bạn có thể chưa cài đặt gói liên quan.

Để làm như vậy, bạn cần cài đặt một tiện ích có tên là apt-file . Điều này duy trì database thông tin của riêng nó, bao gồm đường dẫn cài đặt của mọi file được kiểm soát bởi một gói trong database .

Cài đặt tiện ích bằng lệnh :

sudo apt-get update sudo apt-get install apt-file 

Bây giờ, hãy cập nhật database của công cụ và tìm kiếm file bằng lệnh :

sudo apt-file update sudo apt-file search /path/to/file 

Điều này sẽ chỉ hoạt động cho các vị trí file được cài đặt trực tiếp bởi một gói. Các file nào được tạo thông qua các tập lệnh sau cài đặt sẽ không được tìm thấy.

Chuyển danh sách gói giữa các hệ thống

Nhiều lần, bạn có thể cần backup danh sách các gói đã cài đặt từ một hệ thống và sử dụng nó để cài đặt một tập hợp các gói giống hệt nhau trên một hệ thống khác. Điều này cũng hữu ích cho các mục đích backup . Phần này sẽ trình bày cách xuất và nhập danh sách gói.

Xuất danh sách gói hàng

Nếu bạn cần sao chép tập hợp các gói được cài đặt trên hệ thống này sang hệ thống khác, trước tiên bạn cần xuất danh sách gói của bạn .

Bạn có thể xuất danh sách các gói đã cài đặt thành một file ở định dạng cần thiết để nhập chúng sau này bằng cách chuyển kết quả của dpkg --get-selections :

dpkg --get-selections > ~/packagelist.txt 

Sau đó, danh sách này có thể được sao chép sang máy thứ hai và nhập.

Bạn cũng có thể cần backup danh sách nguồn và danh sách khóa tin cậy của bạn . Bạn có thể backup các nguồn của bạn bằng cách tạo một folder với các file cần thiết và sao chép chúng qua:

mkdir ~/sources cp -R /etc/apt/sources.list* ~/sources 

Các phím tin cậy có thể được backup bằng lệnh :

apt-key exportall > ~/trusted_keys.txt 

Bây giờ, bạn có thể chuyển file packagelist.txt , folder sources và file tin trusted_keys.txt sang một máy tính khác để nhập.

Nhập danh sách gói

Nếu bạn đã tạo danh sách gói bằng cách sử dụng dpkg --get-selections như đã trình bày ở trên, bạn cũng có thể nhập các gói trên máy tính khác bằng lệnh dpkg .

Đầu tiên, bạn cần thêm các khóa tin cậy và triển khai danh sách nguồn mà bạn đã sao chép từ máy tính đầu tiên. Giả sử rằng tất cả dữ liệu bạn backup đã được sao chép vào folder chính của máy tính mới, có thể chạy lệnh:

sudo apt-key add ~/trusted_keys.txt sudo cp -R ~sources/* /etc/apt/ 

Tiếp theo, xóa trạng thái của tất cả các gói không cần thiết khỏi máy tính mới. Điều này sẽ đảm bảo bạn đang áp dụng các thay đổi cho một phương tiện chặn sạch. Điều này phải được thực hiện với account root hoặc các quyền sudo :

sudo dpkg --clear-selections 

Điều này sẽ đánh dấu tất cả các gói không cần thiết để gỡ cài đặt. Ta nên cập nhật danh sách gói local để cài đặt của ta sẽ có các bản ghi cho tất cả phần mềm ta muốn cài đặt. Quy trình cài đặt và nâng cấp thực tế sẽ được xử lý bởi một công cụ gọi là dselect .

Ta nên đảm bảo công cụ dselect được cài đặt. Công cụ này duy trì database của riêng nó, vì vậy ta cũng cần cập nhật trước khi có thể tiếp tục:

sudo apt-get update sudo apt-get install dselect sudo dselect update 

Tiếp theo, ta có thể áp dụng danh sách gói ở đầu danh sách hiện tại để cấu hình gói nào nên được giữ lại hoặc download :

sudo dpkg --set-selections < packagelist.txt 

Điều này đặt các trạng thái gói mà ta muốn. Để áp dụng các thay đổi, ta sẽ thực hiện dselect-upgrade , là apt-get phụ apt-get :

sudo apt-get dselect-upgrade 

Thao tác này sẽ download và cài đặt bất kỳ gói nào cần thiết. Nó cũng sẽ loại bỏ bất kỳ gói nào được đánh dấu để bỏ chọn. Cuối cùng, danh sách gói của bạn phải trùng với danh sách của máy tính trước đó, mặc dù các file cấu hình vẫn cần được sao chép hoặc sửa đổi.

Thêm repository và PPA

Mặc dù tập hợp repository mặc định được cung cấp bởi hầu hết các bản phân phối chứa đủ gói cho hầu hết user , nhưng đôi khi các nguồn bổ sung có thể hữu ích. Trong phần này, ta sẽ thảo luận về cách cấu hình các công cụ đóng gói của bạn để tham khảo các nguồn bổ sung.

Thêm PPA

Một giải pháp thay thế cho các repository truyền thống là PPA, hoặc các repository cá nhân. Tại thời điểm viết bài này, PPA chỉ có sẵn cho hệ thống Ubuntu. Thông thường, PPA có phạm vi nhỏ hơn repository và chứa các tập hợp ứng dụng tập trung do chủ sở hữu PPA duy trì.

Thêm PPA vào hệ thống của bạn cho phép bạn quản lý các gói chứa chúng bằng các công cụ quản lý gói thông thường của bạn. Điều này được dùng để cung cấp gói cập nhật hơn hoặc các gói không có trong repository của phân phối. Hãy lưu ý bạn chỉ thêm các PPA mà bạn tin tưởng, vì bạn sẽ cho phép người bảo trì không chuẩn xây dựng các gói cho hệ thống của bạn.

Để thêm PPA, bạn có thể sử dụng lệnh add-apt-repository . Mục tiêu phải bao gồm nhãn ppa: theo sau là tên của chủ sở hữu PPA trên Launchpad , dấu gạch chéo và tên PPA:

sudo add-apt-repository ppa:owner_name/ppa_name 

Bạn có thể được yêu cầu chấp nhận khóa của người đóng gói. Sau đó, PPA sẽ được thêm vào hệ thống của bạn, cho phép bạn cài đặt các gói bằng các lệnh apt thông thường. Trước khi tìm kiếm hoặc cài đặt các gói, hãy đảm bảo cập nhật bộ nhớ cache local của bạn với thông tin về PPA mới của bạn:

sudo apt-get update 

Thêm kho

Để thêm các kho bổ sung vào hệ thống Ubuntu hoặc Debian, bạn có thể thực hiện hai cách tiếp cận khác nhau.

Đầu tiên là chỉnh sửa danh sách nguồn trực tiếp. Bạn có thể chỉnh sửa file /etc/apt/sources.list hoặc đặt một danh sách mới trong folder /etc/apt/sources.list.d . Nếu bạn đi theo con đường thứ hai này, tên file bạn tạo phải kết thúc bằng .list :

sudo nano /etc/apt/sources.list.d/new_repo.list 

Bên trong file , bạn có thể thêm vị trí của repository mới bằng cách sử dụng định dạng sau:

deb_or_deb-src url_of_repo release_code_name_or_suite component_names 

Các phần khác nhau của đặc tả repository là:

  • deb hoặc deb-src : Điều này xác định loại repository . Các repository thông thường được đánh dấu bằng deb , trong khi các kho nguồn bắt đầu bằng deb-src .
  • url : URL chính của repository . Đây phải là vị trí có thể tìm thấy repository .
  • tên mã hoặc bộ phát hành : Đây thường là tên mã của bản phát hành của bản phân phối của bạn, nhưng nó có thể là bất kỳ tên nào được sử dụng để xác định một bộ gói cụ thể được tạo cho version phân phối của bạn.
  • tên thành phần : Các nhãn để lựa chọn các gói bạn muốn có sẵn. Đây thường là sự phân biệt được cung cấp bởi người bảo trì repository để thể hiện điều gì đó về độ tin cậy hoặc các hạn chế cấp phép của phần mềm mà nó chứa.

Bạn có thể thêm những dòng này trong file . Hầu hết các kho sẽ chứa thông tin về định dạng chính xác nên được sử dụng.

Cách thứ hai để thực hiện điều này là sử dụng lệnh add-apt-repository . Điều này thường được bao gồm theo mặc định trên Ubuntu và đối với Debian, nó có thể được cài đặt bằng gói software-properties-common :

sudo apt-get update sudo apt-get install software-properties-common 

Sau đó, bạn có thể cung cấp các dòng bạn muốn thêm vào lệnh add-apt-repository . Chúng phải có cùng định dạng như bạn sẽ sử dụng để bổ sung thủ công:

sudo add-apt-repository 'deb url release component' 

Đảm bảo rằng bạn cập nhật cache ẩn gói local của bạn sau khi áp dụng bất kỳ bản cập nhật repository nào để hệ thống của bạn biết các gói mới có sẵn:

sudo apt-get update 

Kết luận

Có nhiều hoạt động quản lý gói khác mà bạn có thể thực hiện, nhưng ta đã cố gắng đề cập đến các quy trình phổ biến nhất ở đây. Nếu bạn có mục yêu thích nào khác, hãy sử dụng phần comment bên dưới để cho ta biết.


Tags:

Các tin liên quan

Cách quản lý cụm của bạn với Chef và Knife trên Ubuntu
2014-10-31
Cách cài đặt Zentyal trên Ubuntu 14.04
2014-10-29
Cách cài đặt và cấu hình VNC trên Ubuntu 14.04
2014-10-23
Cách tạo module puppet để tự động cài đặt WordPress trên Ubuntu 14.04
2014-10-22
Cách thiết lập Mirror Director với MirrorBrain trên Ubuntu 14.04
2014-10-06
Cách cấu hình một cụm Mesosphere sẵn sàng sản xuất trên Ubuntu 14.04
2014-09-25
Cách thiết lập DNSSEC trên server tên NSD trên Ubuntu 14.04
2014-09-25
Cách triển khai ứng dụng Meteor.js trên Ubuntu 14.04 với Nginx
2014-09-22
Cách cài đặt Drupal trên server Ubuntu 14.04 với Apache
2014-09-19
Cách sử dụng Reprepro cho Kho lưu trữ Gói Bảo mật trên Ubuntu 14.04
2014-09-10