Day 4: Package Management
Quản lý các Package và Repo phần mềm trên Linux
4.1. Giới thiệu chung về Hệ thống Quản lý Package
Các khái niệm cơ bản
Package (Gói phần mềm)
Package trong Linux là một tập hợp các file đóng gói được thiết kế để cài đặt một phần mềm cụ thể. Nó giống như một "hộp đóng gói" chứa:
Trong Ubuntu/Debian, package có định dạng .deb (tương tự như .rpm trong CentOS/Fedora). Một package .deb là một file lưu trữ đặc biệt có thể được giải nén và cài đặt bởi hệ thống quản lý package.
Ví dụ: nginx_1.18.0-0ubuntu1_amd64.deb là một package chứa web server Nginx, phiên bản 1.18.0, đóng gói cho Ubuntu, dành cho kiến trúc amd64.
Repository (Kho lưu trữ)
Repository (thường được gọi tắt là "repo") là một kho lưu trữ online chứa nhiều package. Nó giống như một "siêu thị" package, nơi hệ thống APT của bạn có thể:
Một repository chứa:
Các loại repository trong Ubuntu
Mối quan hệ giữa Package và Repository
Mối quan hệ giữa package và repository tương tự như:
Khi bạn chạy apt update, hệ thống sẽ:
Khi bạn chạy apt install nginx:
Việc hiểu rõ khái niệm package và repository sẽ giúp em quản lý hệ thống Linux hiệu quả hơn, đặc biệt khi cần cài đặt phần mềm mới hoặc cập nhật hệ thống.
Giới thiệu APT
APT (Advanced Package Tool) là hệ thống quản lý package mạnh mẽ của Debian/Ubuntu. Nó hoạt động theo nguyên tắc:
Các công cụ APT
Ubuntu/Debian có nhiều lệnh liên quan đến APT:
APT hiện là công cụ được khuyến nghị sử dụng vì nó kết hợp các tính năng của apt-get và apt-cache với giao diện thân thiện hơn.
Cấu trúc file và directory của APT
4.2. Cài đặt và quản lý package
Cập nhật danh sách package
Lệnh này cập nhật thông tin về các package có sẵn từ tất cả các repository được cấu hình, nhưng không cài đặt hay upgrade bất kỳ package nào.
Tìm kiếm package
Cài đặt package
Upgrade package
Remove package
Dọn dẹp hệ thống
Danh sách package
4.3. Quản lý Repository và PPA
Cấu trúc của sources.list
Mỗi dòng trong file /etc/apt/sources.list có định dạng:
Ví dụ:
Thêm PPA (Personal Package Archives)
PPA là repository do cá nhân duy trì, thường cung cấp version mới hơn hoặc package không có trong repository chính thức.
Thêm repository thủ công
Disable repository
GPG keys và security
GPG keys đóng vai trò thiết yếu trong bảo mật của hệ thống quản lý package.
GPG Keys là gì?
GPG (GNU Privacy Guard) keys là cặp khóa mật mã bao gồm:
Trong context của APT, GPG keys được sử dụng để:
Tại sao cần GPG Keys?
Khi bạn cài đặt package từ repositories, bạn đang thực thi code từ nguồn bên ngoài trên hệ thống của mình. Điều này tiềm ẩn rủi ro bảo mật:
GPG keys giúp ngăn chặn các cuộc tấn công này bằng cách đảm bảo rằng chỉ package từ nguồn tin cậy mới được cài đặt.
Cách hoạt động của GPG Keys trong APT
Khi nào cần thêm GPG Keys?
Bạn cần thêm GPG keys trong các trường hợp sau:
Ví dụ thực tế: Thêm repository Docker
Các lệnh quản lý GPG Keys
Việc hiểu và quản lý GPG keys là một phần quan trọng của bảo mật hệ thống. Nó đảm bảo rằng phần mềm bạn cài đặt đến từ nguồn đáng tin cậy và không bị sửa đổi.
4.4. Kỹ thuật nâng cao và troubleshooting
Sự khác nhau giữa apt update và apt upgrade
apt update
apt upgrade
Ví dụ thực tế
Nếu bạn muốn upgrade toàn diện hơn, có thể sử dụng:
Lệnh này không chỉ upgrade các package hiện có mà còn có thể thêm package mới hoặc xóa package cũ để giải quyết dependencies.
Hiểu rõ sự khác biệt giữa update và upgrade là nền tảng quan trọng khi quản lý package trên Ubuntu/Debian!
Cài đặt từ file .deb
Fix broken dependencies
Hold package version
Để ngăn một package được upgrade:
Để bỏ hold:
Xem history cài đặt
Tìm package chứa một file cụ thể
Cài đặt non-interactive
Thực hành
Update hệ thống:
Tìm và cài đặt một web server:
Kiểm tra status service:
Thêm một PPA và cài đặt package từ đó:
Remove một package:
Clean up hệ thống:
