12/08/2018, 15:15

[Become a SuperUser] Debian vs Redhat: Package Management System

Unix vs Linux. Nguồn gốc và sự khác biệt Debian vs Redhat: Package Management System Như trong bài viết trước, tôi đã đề cập đến khái niệm Linux Distribution, hay Linux Distro, với 2 nhánh chính mà các bạn nên biết, đó là Debian và Redhat . Có khá nhiều điểm khác biệt giữa hai nhánh ...

i-love-linux

  • Unix vs Linux. Nguồn gốc và sự khác biệt
  • Debian vs Redhat: Package Management System

Như trong bài viết trước, tôi đã đề cập đến khái niệm Linux Distribution, hay Linux Distro, với 2 nhánh chính mà các bạn nên biết, đó là DebianRedhat.

Có khá nhiều điểm khác biệt giữa hai nhánh này, và bài viết này sẽ tập trung vào một trong số đó. Một trong những điểm bạn sẽ dễ dàng nhận ra ngay khi tiếp xúc với các Distro thuộc Debian hay Redhat: đó chính là package management.

Chú ý: Trong bài viết này, khi đề cập đến Debian, ta sẽ hiểu là Debian và các distro được xây dựng dựa trên Debian (Ubuntu, Linux Mint, Kali Linux ...), còn khi đề cập đến Redhat, ta sẽ hiểu là các Distro được xây dựng dựa trên các thành phần mà Redhat cung cấp (như Ret Hat Enterprise Linux, Fedora, CentOS ...)

Trước đây, phần lớn các chương trình chạy trên Linux đều được phân phối dưới dạng source code, và người dùng sẽ cần phải tải chúng về, rồi build các file source code đó thành các chương trình, hay một số các chương trình cần thiết, với đầy đủ các trang documents, hay các configuration files ... Điều này đã gây ra ít nhiều khó khăn cho những người không quá quen thuộc với Linux.

Hiện tại thì hầu hết các nhà phát triển đều cung cấp các chương trình của mình dưới dạng prebuilt, với rất nhiều những config được thiết lập sẵn, và đã ở trạng thái sẵn sàng để có thể cài đặt trên Linux Distribution một cách dễ dàng, nhanh chóng. Những phần mềm (hay set các phần mềm), được cung cấp dưới dạng một file đóng gói duy nhất như vậy được gọi là package.

Package Management System hiểu đơn giản là một công cụ, hay hệ thống các công cụ, giúp người quản trị hệ thống có thể tìm kiếm, cài đặt, truy vấngỡ bỏ các packages một cách dễ dàng.

Các Distro Debian với các distro Redhat sử dụng các hệ thống package management khác biệt hoàn toàn với nhau. Nhìn chung thì những gì bạn có thể làm được với công cụ package manager trên Debian, thì bạn cũng có thể làm được với package manager trên Redhat. Tuy nhiên mỗi công cụ cũng có những đặc thù riêng, và không phải option nào cũng giống như nhau, sẽ trả ra kết quả như nhau.

Trên trang chủ của project Debian, có một đoạn miêu tả về package management như sau:

Much of why Debian is a strong Linux distribution comes from the core of Debian namely its package management. Everything in Debian – every application, every component – everything – is built into a package, and then that package is installed onto your system (either by the Installer, or by you).

Vâng, package management chính là thứ tạo nên sức mạnh của Debian (cũng như Redhat), là thứ khiến chúng trở nên phổ biến, và khiến vô vàn các distro khác chọn Debian (hay Redhat) làm nền tảng.

Hãy cùng tìm hiểu sâu về các hệ thống quản lý package, để thấy rõ hơn về sự khác biệt giữa DebianRedhat nhé.

Hệ thống package management trên Debian gồm một số câu lệnh, hay các tools khác nhau, mà bạn nên biết đến như sau:

  • dpkg
  • dpkg-reconfigure
  • apt-get
  • apt-cache
  • apt
  • aptitude

Tìm hiểu về dpkg

Hãy bắt đầu bằng một câu chuyện như thế này.

Bạn đang sử dụng máy bàn với hệ điểu hành là Ubuntu. Bạn cần cài đặt Chrome, và khi vào trang chủ của Chrome để tải file về cài đặt, bạn chọn "Download Chrome for Linux". Đây sẽ là hình ảnh bạn thấy:

chrome-for-linux

Vâng, để cài đặt cho Debian/Ubuntu bạn sẽ cần tải về một file. Còn để cài đặt cho Fedora/openSUSE, bạn cần một file khác. Lý do thì rất đơn giản thôi, mặc dù cùng là Linux, nhưng chúng sử dụng 2 hệ thống quản lý package khác nhau.

File dành cho Debian sẽ có phần mở rộng là .deb (có lẽ là viết tắt của chữ debian).

Còn file dành cho Redhat (Fedora) sẽ có phần mở rộng là .rpm (có lẽ là viết tắt của chữ Redhat Package Manager)

OK, đó là câu chuyện về cách phân biệt package cho Debian với Redhat. Còn giờ hãy quay trở lại với dpkg. Rốt cuộc thì dpkg là công cụ gì?

Hiểu một cách đơn giản là dpkg, theo mình đoán là viết tắt của debian package, là công cụ cho phép bạn quản lý (cài đặt, tìm kiếm, xem thông tin, xoá) các file packages (.deb) ở local.

Dưới đây là một số câu lệnh dpkg hay được sử dụng:

  • -i or –install : Cài đặt file .deb
  • -r or –remove : Gỡ bỏ (uninstall) một package, nhưng giữ lại các file configuration của package đó
  • -P or –purge : Gỡ bỏ package và các file configuration của nó
  • -I or –info : Truy vấn thông tin về một file .deb hay một package đã được cài đặt
  • -l or –list : Truy vấn danh sách các packages đã được cài đặt
  • -L or –listfiles : Truy vấn danh sách các files thuộc về các packages đã được cài đặt
  • -S or –search : Tìm package mà một file thuộc về
  • -s or --status : Hiện thị các thông tin về trạng thái của một package
  • --help : Xem thông tin về các câu lệnh khác :v

Ví dụ

~$ dpkg --version
Debian 'dpkg' package management program version 1.18.4 (amd64).
This is free software; see the GNU General Public License version 2 or
later for copying conditions. There is NO warranty.
~$ dpkg -L apache2
/.
/etc
/etc/logrotate.d
/etc/logrotate.d/apache2
/etc/apache2
/etc/apache2/sites-enabled
/etc/apache2/apache2.conf
/etc/apache2/mods-enabled
/etc/apache2/mods-available
/etc/apache2/mods-available/ssl.load
/etc/apache2/mods-available/ldap.load
/etc/apache2/mods-available/proxy_fcgi.load
/etc/apache2/mods-available/file_cache.load
... more ...
~$ dpkg -S /lib/systemd
colord, policykit-1, apache2, udev, systemd, uuid-runtime, rsync, plymouth, hdparm, friendly-recovery, ufw, rsyslog, ureadahead, cron, openssh-server, resolvconf, unattended-upgrades, php7.0-fpm, php-common, accountsservice, sudo, mysql-server-5.7, keyboard-configuration, console-setup-linux, ifupdown, dbus, apt: /lib/systemd
~$ dpkg -s apache2
Package: apache2
Status: install ok installed
Priority: optional
Section: httpd
Installed-Size: 488
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: amd64
Version: 2.4.18-2ubuntu3.1
Replaces: apache2.2-bin, apache2.2-common
Provides: httpd, httpd-cgi
Depends: lsb-base, procps, perl, mime-support, apache2-bin (= 2.4.18-2ubuntu3.1), apache2-utils (>= 2.4), apache2-data (= 2.4.18-2ubuntu3.1)
Pre-Depends: dpkg (>= 1.17.14)
Recommends: ssl-cert
... more ...
~$ dpkg -I composer_1.0.0~beta2-1_all.deb
 new debian package, version 2.0.
 size 282670 bytes: control archive=8741 bytes.
    1011 bytes,    17 lines      control
   23351 bytes,   260 lines      md5sums
 Package: composer
 Version: 1.0.0~beta2-1
 Architecture: all
 Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
 Original-Maintainer: Debian PHP PEAR Maintainers <pkg-php-pear@lists.alioth.debian.org>
 Installed-Size: 1618
 Depends: ca-certificates, php-symfony-console (>= 2.5), php-symfony-filesystem (>= 2.5), php-symfony-finder (>= 2.4), php-symfony-process (>= 2.4), php-cli, php-common, php-json-schema (>= 1.6), php-json-schema (<< 2~~), php-composer-spdx-licenses (>= 1.0), php-composer-spdx-licenses (<< 2~~), php-composer-semver (>= 1.0), php-composer-semver (<< 2~~), jsonlint (>= 1.4), jsonlint (<< 2~~), php-cli-prompt (>= 1.0), php-cli-prompt (<< 2~~)
 Recommends: git, mercurial
 Suggests: php-zip
 Section: php
 Priority: optional
 Homepage: https://getcomposer.org/
 Description: dependency manager for PHP
  Composer helps you declare, manage and install dependencies of PHP projects,
  ensuring you have the right stack everywhere.
  It behaves like Bundler (Ruby), npm (Node), etc.

Sau khi cài đặt xong một package bằng dpkg, chúng ta có thể dùng lệnh dpkg-reconfigure để thay đổi các tuỳ chọn đã thiết lập trong lúc cài đặt.

Tìm hiểu về apt

Như các bạn thấy, dpkg chính là công cụ để cài đặt package .deb, nhưng chắc hẳn bạn đang thắc mắc là trước nay có cần dùng đến câu lệnh đó đâu mà vẫn cài được phần mềm đó thôi.

Và câu trả lời là bạn đã sử dụng những phần mềm được xây dựng dựa trên dpkg để giúp cho công việc được dễ dàng hơn.

apt là một trong số đó.

apt is a commandline package manager and provides commands for searching and managing as well as querying information about packages. It provides the same functionality as the specialized APT tools, like apt-get and apt-cache, but enables options more suitable for interactive use by default.

Một số câu lệnh apt thường dùng

  • list Liệt kê danh sách các packages dựa trên tên package
  • search Tìm kiếm thông qua - search in package descriptions
  • show Hiển thị thông tin chi tiết về package
  • install Cài đặt package
  • remove Xoá bỏ package
  • autoremove Tự động xoá bỏ tất cả các package không được sử dụng
  • update Update package
  • upgrade Upgrade hệ thống bằng cách cài đặt, upgrade packages
  • full-upgrade Upgrade hệ thống bằng cách xoá bỏ, cài đặt, upgrade packages
  • edit-sources Chỉnh sửa file thông tin source

Chú ý: Hiện nay, ở các phiên bản Debian/Ubuntu mới, câu lệnh apt có thể được sử dụng thay thế cho apt-get, apt-cache, và nó ngày được ưa chuộng và sử dụng rộng rãi hơn. Bài viết này cũng sẽ đề cập đến apt là chính             </div>
            
            <div class=

0