Giải ngố Kali Linux – Phần 3: Quản lý package và vấn đề Kali Linux update với Advanced Package Tool – apt

Tiếp theo nội dung Phần 2: Cấu hình SSH, PostgreSQL trên Kali Linux, kỳ này tôi sẽ nhảy vô phần quản lý package trên Kali Linux với các tool đặc thù. Nội dung chính sẽ tập trung vào việc cài đặt/ gỡ cài đặt/ cập nhật package với thằng apt nhưng tôi cũng sẽ làm rõ thêm một số vấn đề liên quan khác như apt-get, apt package indexdpkg.

#1 apt và vấn đề Kali Linux update

apt hay Advanced Pakage Tool (tôi để vầy xài luôn không dịch ra tiếng Việt vì thấy việt hóa cái tên này cũng không có lợi ích gì) là bộ công cụ command-line phổ biến hỗ trợ quản lý package/application trên các hệ thống Debian (tức là bao gồm Kali Linux). Do vậy, trên Kali Linux, bạn có thể sử dụng apt để cài đặt, gỡ cài đặt hay cập nhật từng package/application hay thậm chí quất nguyên cục Kali Linux update (tức là cập nhật toàn bộ package/application trong hệ thống Kali Linux) luôn cũng được.

Điểm hay ho của apt là nó có thể xử lý tự động các vấn đề requirements/dependencies trong quá trình cài đặt/ gỡ cài đặt để giúp bạn né được nhiều sự cố mà bạn có thể phải vò đầu bứt tóc để xử lý.

#2 Vậy còn apt-get là cái gì?

Nếu bạn đã vọc vạch với Linux một thời gian thì khả năng bạn cũng từng thấy một thằng anh em kết nghĩa của aptapt-get (thật ra apt phải gọi apt-get là cụ nếu tính theo thâm niên công tác). Nhìn chung chức năng của nó gần như tương đồng. Để hình dung rõ hơn, bạn xem bảng minh họa các chức năng chính như sau:

apt apt-get/apt-cache Chức năng
apt install apt-get install Cài package
apt update apt-get update Cập nhật tất cả thông tin của repository
apt upgrade apt-get upgrade Cập nhật tất cả package đã cài đặt
apt autoremove apt-get autoremove Gỡ bỏ hết đám package không cần thiết
apt remove apt-get remove Gỡ bỏ một package cụ thể đã cài đặt
apt purge apt-get purge Gỡ bỏ 1 package đã cài đặt và xóa các file cấu hình
apt search apt-cache search Tìm pakage trong repository
apt show apt-cache show Hiển thị chi tiết của pakage

Thế thì vấn đề bây giờ là sao không dùng apt-get cho rồi mà còn đẻ ra thêm apt mần chi? Chuyện gì cũng có lí do của nó. Lí do ở đây là aptapt-get có một số điểm khác biệt quan trọng về mục đích sử dụng như sau:

  • apt là dạng interative command-line tool, tức là dạng command-line cần tương tác hướng đến Linux user (ví dụ có progress bar hiển thị trong quá trình xử lý để bạn nắm tình hình không sốt ruột mà bấm bậy) được đầu tư cập nhật khá nhiều. Do vậy bạn sẽ không xài apt được với non-interactive scripts mà phải chuyển xuống chơi thằng apt-get bên dưới;
  • apt-get hướng đến dạng sử dụng cho hệ thống (cần hoạt động ổn định nên apt-get hạn chế thay đổi cập nhật) và ít thân thiện với người dùng hơn. Tuy nhiên apt-get có một số đặc điểm đáng giá như tính ổn định và khả năng duy trì backward compatible (tương thích với đám đồ cổ) nên sẽ là lựa chọn tin cậy khi cần xử lý với system function hoặc sử dụng với script.

#3 apt package index và Kali Linux Repository

apt package index về cơ bản là database chứa thông tin về các package hiện hữu trong các Kali Linux Repository. Repository (gọi tắt là Repo) được hiểu đại khái là kho chứa tất cả mã nguồn của một project (ví dụ Kali Linux project) thường được quản lý với Git (Git là gì thì để tôi bàn thêm trong nội dung khác, chứ cứ chạy theo mạch phát triển của câu chuyện để làm rõ mấy vấn đề phát sinh thì chắc lát tôi quên mịa đang nói về cái gì!). Với Kali Linux, mấy cái repo này thường được quy định trong /etc/apt/sources.list. Do vậy, nếu vì lí do gì đó mà package bạn cần không có trong repo hay tự nhiên phọt ra mấy sự cố từ trên trời rơi xuống dẫn đến mấy thông báo lỗi kiểu như Unable to locate the package, bạn cần kiểm tra nội dung của với etc/apt/sources.list với command:

nano /etc/apt/sources.list

Nếu bạn cài Kali Linux như kiểu tôi làm trong nội dung Giải ngố Virtualization – Phần 3: Hướng dẫn cài đặt Kali Linux trên VMware Workstation chi tiết nhất Thái Dương hệ và không chọc ngoáy gì thêm, bạn sẽ thấy thông tin mặc định như sau:

sources.list
sources.list

Lúc này, để xử lý mấy lỗi kiểu như nói trên, bạn có thể bổ sung thêm 2 dòng sau vô /etc/apt/sources.list

deb http://http.kali.org/kali kali-rolling main non-free contrib

deb-src http://http.kali.org/kali kali-rolling main non-free contrib

updated sources.list
updated sources.list

Lưu ý:

  • Thao tác với đám editor như vi/vim/nano tôi nhai đi nhai lại nhiều lần quá rồi nên không nói lại nữa;
  • Sau khi thi cập nhật list bạn sẽ cần chạy apt updateapt upgrade như tôi đề cập ngay bên dưới

#4 Quản lý package và chạy Kali Linux update với apt

Như nói trên, khi đã giải quyết êm đẹp mọi chuyện với Kali Linux Repository, bạn nên triển 2 thằng apt updateapt upgrade để chạy Kali Linux update.

apt update được dùng để cập nhật lại danh sách package hay apt package index (kèm thông tin phiên bản, mô tả) của apt. Đây là là việc làm cần thiết trước khi thực hiện bạn các thao tác cài cắm/ cập nhật.

apt update
apt update

Lưu ý: Để tăng tốc xử lý, thông tin apt packages thường sẽ được lưu cục bộ trong hệ thống của bạn dưới dạng apt package index như giới thiệu ở Mục 2.

Thao tác apt update mới chỉ cập nhật apt package index thôi, để thực sự triển việc nâng cấp các package đã cài đặt (cũng như phần cơ bản của hệ thống), bạn cần sử dụng command:

apt upgrade

apt upgrade
apt upgrade

Lưu ý: Do tôi demo minh họa nhanh nên bạn sẽ thấy toàn báo “up to date”, “0 upgraded, …”. Tùy thuộc vào hiện trạng hệ thống của bạn (và tốc độ đường truyền), 2 command apt updateapt upgrade có thể mất nhiều thời gian để hoàn thành vì cái này tương ứng với việc bạn cập nhật nguyên cục cho cả hệ thống Kali Linux đấy.

Trường hợp bạn chỉ quan tâm đến một package cụ thể, ví dụ metasploit-framework bạn có thể nâng cấp mỗi mình nó với command:

apt upgrade metasploit-framework

apt upgrade metasploit-framework
apt upgrade metasploit-framework

Trong một diễn biến khác, sẽ lúc bạn cần cài đặt một package nhưng không rõ cái package database lưu cục bộ trong hệ thống đã có thông tin cần thiết chưa. Đây là lúc mà command apt-cache search sẽ phát huy tác dụng. Ví dụ bạn đang cần cài thằng pure-ftpd với apt. Thế thì việc đầu tiên bạn cần làm là kiểm tra xem hiện package database của bạn đã có thông tin cần thiết chưa bằng command:

apt-cache search pure-ftpd

apt-cache search pure-ftpd
apt-cache search pure-ftpd

Sau khi thu được thông tin sơ bộ với thằng trên, bạn có thể tiếp tục kiểm tra chi tiết hơn với apt show. Ví dụ:

apt show resource-agents

apt show resource-agents
apt show resource-agents

Kết thúc quá trình đào bới, nghiên cứu, giờ bạn có thể tiến hành cài đặt package với apt install như ví dụ sau:

apt install pure-ftpd

apt install pure-ftpd
apt install pure-ftpd

Nếu bạn thuộc dạng não cá vàng không nhớ cái package đang cần đã cài hay chưa thì bạn có thể kiểm tra với

apt list --installed

Cái này nó sẽ phọt ra một danh sách dài ngoằng nên đôi bạn có thể sử dụng một giải pháp nhẹ nhàng tình cảm hơn là:

which pure-ftpd

which pure-ftpd
which pure-ftpd

Trường hợp bạn lỡ tay bấm bậy dẫn đến cài cắm nhầm thì có thể sửa chữa sai lầm bằng cách gỡ cài đặt với:

apt remove --purge pure-ftpd

apt remove --purge pure-ftpd
apt remove –purge pure-ftpd

Lưu ý: Option –purge là để bảo đảm bạn không để sót file cấu hình nào trong quá trình dỡ cài đặt.

Sau đó, nạn có thể kiểm tra nhanh lại sau khi dỡ cài đặt với:

which pure-ftpd

which pure-ftpd (2nd)
which pure-ftpd (2nd)

Lúc này hệ thống chỉ phản hồi lại bằng một thái độ im lặng lạnh lùng đến đáng sợ (nó sẽ chẳng hiển thị thông tin gì cả).

Quá trình cài cắm của apt (hay apt-get) có liên quan mật thiết đến một nhân vật có tên là dpkg. dpkg hay package manager for Debian là công cụ “bậc thấp” (tức là gần gũi với máy móc hơn con người) để quản lý pakage trên Debian. Thằng apt nói trên về cơ bản sau khi xử lý vấn đề requirements/dependencies cũng sẽ trông cậy vô dpkg để cài đặt package. Tóm lại:

  • dpkg là công cụ cho phép cài cắm offline chuẩn cmn mực hoạt động được trong cả những ngày u tối bạn mất kết nối internet (nhưng với điều kiện pakage cần cài đã có trong máy nhé)
  • dpkg sẽ không xử lý vấn đề package requirements/dependencies giùm bạn giống như apt (cái này chơi offline mà, bạn đâu thể đòi hỏi quá nhiều được)

Để cài đặt với dpkg bạn dùng cú pháp:

dpkg -i path_to_deb-pakage

Lưu ý:

  • -i tương ứng với –install
  • path_to_deb-pakage hàm ý là bạn đã có lấy cái pakage cần cài về và biết đường dẫn lưu trữ chính xác luôn rồi

Như tôi nói ở đầu bài vấn đề package requirements/dependencies đôi khi rất hại não nên nếu có thể, bạn cứ triển với thằng apt/ apt-get cho chắc. dpkg chỉ nên được sử dụng khi bạn hiểu rõ và biết cách xử lý các vấn đề package requirements/dependencies phát sinh.

2 thoughts on “Giải ngố Kali Linux – Phần 3: Quản lý package và vấn đề Kali Linux update với Advanced Package Tool – apt”

Leave a Reply

Your email address will not be published. Required fields are marked *