Nếu bạn sử dụng Ubuntu hoặc bất kỳ bản phân phối Linux dựa trên Debian nào khác, chắc chắn bạn đã từng gặp phải hướng dẫn cài đặt yêu cầu bạn sử dụng lệnh APT, trong khi một số hướng dẫn khác yêu cầu bạn sử dụng dpkg.
Vậy có gì khác biệt nếu bạn cài đặt các gói trên hệ thống Linux của mình với một trong hai trình quản lý gói này? Hôm nay chúng tôi sẽ giải quyết câu hỏi đó để bạn biết cách cài đặt các gói trên Ubuntu một cách tốt nhất.
1. APT vs dpkg: Hai trình cài đặt gói quan trọng

APT và dpkg đều là giao diện quản lý gói trên dòng lệnh (command line) mà bạn có thể sử dụng trong terminal trên Ubuntu và các hệ thống dựa trên Debian khác. Chúng có thể cài đặt tệp DEB, liệt kê các gói đã cài đặt và thực hiện nhiều chức năng khác.
Nhưng bạn có thể tự hỏi nếu chúng giống nhau như vậy, tại sao bạn cần cả APT và dpkg?
Trên thực tế, hai giao diện này hoạt động cùng nhau, với APT hoạt động giống như một công cụ quản lý gói hoàn chỉnh thông qua việc sử dụng dpkg.
Hơi khó hiểu phải không? Hãy phân tích những điểm khác biệt chính.
1.1 APT sử dụng dpkg để cài đặt gói
Khi APT (hoặc người ‘họ hàng’ của nó, Apt-get) cài đặt một gói, nó thực sự sử dụng dpkg trên back-end để thực hiện điều đó. Theo cách đó, dpkg hoạt động nhiều hơn như một công cụ “ẩn” bên dưới giao diện người dùng thân thiện hơn của APT.
1.2 APT có thể tải xuống các gói
Với APT, bạn có thể lấy một tệp từ kho lưu trữ (repository) từ xa và cài đặt nó, tất cả trong cùng một lệnh. Điều này giúp bạn đỡ mất công tìm kiếm và tải xuống gói theo cách thủ công trước khi cài đặt.
Với dpkg, bạn chỉ có thể cài đặt các tệp cục bộ mà bạn đã tự tải xuống. Nó không thể tìm kiếm hoặc lấy các gói từ các kho lưu trữ từ xa.
1.3 Dpkg sẽ không cài đặt gói phụ thuộc
Khi bạn cài đặt một gói với dpkg, hệ thống sẽ chỉ cài đặt gói đó. Tuy nhiên, một số gói cần phần mềm bổ sung được gọi là gói phụ thuộc (dependency) để hoạt động. Trong trường hợp này, dpkg có thể cảnh báo bạn bằng một thông báo lỗi.

Tuy nhiên, APT sẽ tự động kiểm tra và tải xuống các phần phụ thuộc có liên quan để đảm bảo rằng ứng dụng bạn đang cố gắng cài đặt vận hành một cách chính xác. Đó là lý do tại sao chúng tôi khuyên bạn rằng, sau khi cài đặt gói có dpkg, bạn vẫn nên sử dụng lệnh đặc biệt của APT để khôi phục các phần phụ thuộc.
sudo apt install -f
1.4 Dpkg chỉ Index (lập chỉ mục) gói cục bộ
Nếu bạn đang cố gắng tìm hiểu về các gói được cài đặt trên hệ thống của mình, thì so với APT, hàm –list trong dpkg có thể phục vụ bạn tốt hơn. Đó là bởi vì, giống như cách nó không thể tìm và tải xuống các gói từ xa, dpkg cũng không thể liệt kê bất kỳ gói nào không ở sẵn trên thiết bị.
dpkg --list
Lệnh list của APT sẽ liệt kê mọi gói mà nó biết, cục bộ hoặc không.
apt list
Để chỉ xem các gói đã cài đặt, bạn phải thêm tùy chọn –installed hoặc -i .
apt list --installed
2. Dpkg so với Apt: Cái nào tốt hơn?
Nếu bạn muốn cài đặt các gói cục bộ với dpkg, bạn có thể làm như vậy mà không gặp phải bất kỳ vấn đề nào. Tuy nhiên, bạn nên sử dụng APT hoặc Apt-get nếu thường xuyên tìm kiếm các gói trên kho phần mềm từ xa.
APT sẽ thực hiện công việc tìm và tải xuống gói bạn muốn và nó sẽ đảm bảo tải cả tất cả các phần phụ thuộc cần thiết. Bạn vẫn có thể sử dụng dpkg, nhưng APT sẽ thực hiện chức năng tương tự trong khi đảm bảo phần mềm của bạn hoạt động theo cách bạn cần. Ngoài ra, APT là lựa chọn lý tưởng để gỡ cài đặt các gói đúng cách và xóa chúng khỏi hệ thống của bạn.
Dịch từ: https://www.makeuseof.com/apt-vs-dpkg/
>>> Nếu bạn đang có nhu cầu học lập trình trực tuyến, tìm hiểu ngay tại đây:
>>> Xem thêm các chủ đề hữu ích:
- Tất cả những điều bạn cần biết về khóa học lập trình tại FUNiX FPT
- 5 Điểm đáng chú ý tại khóa học lập trình trực tuyến FPT – FUNiX
- Từ A-Z chương trình học FUNiX – Mô hình đào tạo lập trình trực tuyến số 1 Việt Nam
- Lý do phổ biến khiến học viên nước ngoài chọn FUNiX
- Lưu ý để học blockchain trực tuyến hiệu quả cao tại FUNiX
- Lý do nữ giới nên chọn FUNiX để học chuyển nghề IT
- FUNiX trở thành đối tác của Liên minh Blockchain Việt Nam
- 3 lý do bạn trẻ nên học blockchain trực tuyến ở FUNiX
Vân Nguyễn









Bình luận (0
)