Tìm hiểu cấu trúc Ubuntu/Debian Repository cơ bản

Tìm hiểu cấu trúc Ubuntu/Debian Repository | Bạn thường sử dụng lệnh ‘apt‘ để tiến hành cài đặt thư viện, chương trình,… trên OS Ubuntu/Debian phải không nào ?! Và chắc chắn nhiều lần bạn phải tiến hành khai báo thông tin Debian Repository trong ‘source.list‘ để nhận diện nguồn tải chương trình hỗ trợ bởi ‘apt‘. Vậy Debian Repository đó là gì ? trông cơ bản ra sao thì bạn đã biết sơ qua chưa ?! Nếu chưa thì cùng đọc bài viết nhé.

cấu trúc repository cơ bản

Có thể bạn quan tâm chủ đề khác
Unix time là gì ? 
Remote Desktop là gì ? 
Giám sát log server Linux với log.io
NTP Server là gì ?

Đầu tiên mình cần các bạn lưu ý đó là OS Ubuntu được xây dựng trên kiến trúc của Debian nên hầu như về kiến trúc hệ thống, kernel, chương trình repository ,.. đều theo chuẩn Debian. Vì vậy trong bài viết này khi mình dùng khái niệm ‘Debian Repository‘ tức là áp dụng kiến thức cách gọi chung cho cả DebianUbuntu OS nhé.

Debian Repository là gì?

Debian repository là một máy chủ dịch vụ có chức năng lưu trữ các chương trình cài đặt . Qua đó hỗ trợ cho phép chương trình apt trên OS Debian/Ubuntu tự động lấy thông tin cũng như tự động cài đặt chương trình trên OS. Bạn có thể lấy được các thông tin về máy chủ Debian Repository được khai báo trên OS như sau . Ví dụ Ubuntu 16.04 :

# cat /etc/apt/source.list

deb http://us.archive.ubuntu.com/ubuntu/ xenial main restricted

deb http://us.archive.ubuntu.com/ubuntu/ xenial-updates main restricted

deb http://us.archive.ubuntu.com/ubuntu/ xenial universe
deb http://us.archive.ubuntu.com/ubuntu/ xenial-updates universe

deb http://us.archive.ubuntu.com/ubuntu/ xenial multiverse
deb http://us.archive.ubuntu.com/ubuntu/ xenial-updates multiverse

deb http://us.archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse


deb http://security.ubuntu.com/ubuntu xenial-security main restricted
deb http://security.ubuntu.com/ubuntu xenial-security universe
deb http://security.ubuntu.com/ubuntu xenial-security multiverse

Vậy hôm nay chúng ta sẽ cùng tìm hiểu cơ bản về cấu trúc khai báo của cấu hình ‘source.list‘ dành cho Debian Repository trên Ubuntu/Debian. Cũng như tìm hiểu trên web server Debian Repository sẽ được phân cấp thư mục ra sao nhé.

Cú pháp khai báo cấu hình apt Debian Repository

Dưới đây là cú pháp khai báo nguồn lưu trữ Debian Repository trong file ‘/etc/apt/source.list‘ .

deb uri distribution [component1] [component2] [...]
deb-src distribution [component1] [component2] [...]

Ví dụ :

deb http://us.archive.ubuntu.com/ubuntu/ xenial main restricted
# deb-src http://us.archive.ubuntu.com/ubuntu/ xenial main restricted

Ngoài ra trong OS Ubuntu/Debian chương trình apt có hỗ trợ lấy dữ liệu chương trình từ Repository thông qua các giao thức như : ftp, http, smb, nfs,.. Nhưng trong bài viết này ta sẽ sử dụng cách gọi Web Server vì là hình thức phổ biến nhất ở các server Repository Debian.

1. deb và deb-src

Nguồn web server lưu trữ Debian Repository có thể lưu trữ cả binary và cả source của chương trình.

  • Keyword ‘deb‘ là chỉ nguồn địa chỉ web chỉ để download chương trình binary.
  • Keyword ‘deb-src‘ là dùng cho khai báo nguồn download source của chương trình.

2. uri

Keyword ‘uri‘ ở đây là thông tin khai báo địa chỉ của web server Debian Repository đang lưu trữ chương trình của OS tương ứng. Bạn có thể khai báo domain hoặc địa chỉ IP đều được, chỉ cần từ OS Ubuntu/Debian có thể truy cập đến web server Debian Repository là ok.

Thông thường ở các web server Debian Repository sẽ phân cấp thư mục folder OS tương ứng để dễ quản lý và phân loại.

+ Ubuntu : http://domain.com/ubuntu/
+ Debian : http://domain.com/debian/

3. distribution

Ở phần keyword ‘distribution‘ kế tiếp khi khai báo thông tin nguồn Debian Repository, đó là bạn cần khai báo codename của OS Ubuntu/Debian cùng tên repository nếu có, mà bạn cần download chương trình cài đặt tự động. Lưu ý là codename chứ không phải số phiên bản version nha.

Ví dụ :

  • Ubuntu 16.04 : xenial
  • Ubuntu 14.04 : trusty
  • Ubuntu 12.04 : precise
  • Debian 9 : stretch
  • Debian 8 : jessie

Ví dụ tên repository (tuỳ thuộc từng dòng Distro Ubuntu hoặc Debian)

  • xenial : repo chứa chương trình dành cho việc nâng cấp phiên bản chương trình cũ hoặc hệ thống.
  • xenial-updates : repo chứa các chương trình dành cho việc nâng cấp fix lỗi chương trình cũ hoặc hệ thống.
  • xenial-security : chứa các chương trình dành cho bảo mật hệ thống.
  • xenial-backports : chương trình từ phân loại backport chứa các chương trình đã phát triển , bao gồm các phiên bản mới,.. nhưng không được kiểm tra bởi đội Ubuntu bảo mật nhóm.

Làm sao ta có thể kiểm tra được thông tin codename ngay trên OS Ubuntu/Debian. Bạn chỉ cần gõ lệnh sau :

# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04
Release: 16.04
Codename: xenial

+ Cấu trúc ‘disitrubtion’ trên web server

Cấu trúc của keyword ‘distribution‘ trên web server Debian Repository sẽ tương ứng tên folder nằm trong thư mục cha là $ARCHIVE_ROOT/dists/ . Đây mới là phần giúp khai báo giúp apt biết được thư mục nào trên server Repository hỗ trợ chương trình cho dòng OS phiên bản codename repository nào.

4 Bốn phân loại của một Debian Repository

Có bốn phân loại dành cho Repository của một $distribution bao gồm :
main : chương trình miễn phí và mã nguồn mở từ công ty cha của Ubuntu Canonical.
universe : chương trình miễn phí và mã nguồn mở từ cộng đồng duy trì.
restricted : cung cấp driver cho thiết bị.
mutiverse : một số chương trình được giới hạn bởi ván đề bản quyền.

# tree -a -L 2 ./dists/xenial/
./dists/xenial/
├── Contents-amd64.gz
├── main
│   ├── binary-amd64
│   ├── debian-installer
│   └── i18n
├── multiverse
│   ├── binary-amd64
│   ├── debian-installer
│   └── i18n
├── Release
├── Release.gpg
├── restricted
│   ├── binary-amd64
│   ├── debian-installer
│   └── i18n
└── universe
├── binary-amd64
├── debian-installer
└── i18n

5. Một số file cần lưu ý

Một số file thông tin về các package lưu trữ trên hệ thống Debian Repository bạn cần lưu ý:

– File ‘Relase‘ (Ví dụ: http://us.archive.ubuntu.com/ubuntu/dists/xenial-updates/Release) : file chứa thông tin index và chuỗi hash của các file khác chứa thông tin dữ liệu thứ cấp nằm trong thư mục $distribution ($ARCHIVE_ROOT/dists/$DISTRIBUTION) .

Thông thường chương trình apt sẽ tiến hành request để lấy file này về và đọc nó. Sau đó đọc các thông tin file thứ cấp để truy xuất dữ liệu cần thiết.

6. Thư mục pool

Thư mục pool nằm cấp dưới của thư mục domain : uri . Cùng cấp thư mục ‘dists‘.

Thư mục này sẽ chứa toàn bộ file cài đặt , chương trình .deb, thư viện, driver,… theo cấp tên thư mục aphabet.

# tree -a -L 2 ./pool/
./pool/
├── main
│   ├── a
│   ├── b
│   ├── c
│   ├── d
│   ├── e
│   ├── f
│   ├── g
│   ├── h
│   ├── i
│   ├── j
│   ├── k
│   ├── l
...

Sau khi apt đọc thông tin từ Repository, thì chương trình apt sẽ tìm đến thư mục pool để tiến hành download chương trình cần thiết về OS để cài đặt.

Tổng kết

Vậy là bạn đã tìm hiểu xong cấu trúc cơ bản của Ubuntu/Debian Repository. Bạn có thể tham khảo chi tiết nội dung tại dây:
https://wiki.debian.org/DebianRepository/Format
https://help.ubuntu.com/community/Repositories/Ubuntu

Nguồn: https://cuongquach.com/

Previous articleUnix Time là gì ? Tìm hiểu về Unix Time – Epoch Time
Next articleEbook Nhập Môn Lập Trình Không Code (PDF)
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !