Yum Linux là gì

Bài gốc: //qiita.com/sksmnagisa/items/05a6f8a707010b8bea56

Bối cảnh Dự định up svn 1.6 lên 1.8 trong môi trường CentOS6.5 Trong hoàn cảnh đó, tôi đã từng thêm repository của rpmforge bằng command rpm, cho nên cũng lấy rpm dùng cho svn từ WANdisco như thế rồi thêm vào bằng rpm- Uvh.

Tôi đã thử lệnh yum update subversion nhưng vẫn ở 1.6 .

Khi đó tôi xem thử /etc/yum.repos.d/ rồi, nhưng vẫn khác với khi rpmfroge và chưa có tăng thêm file repo

Tuy nhiên, tôi hoàn toàn không hiểu tại sao với rpm -qa | grep subversion, thì hiển thị là subversion-1.8.9 và không ổn ở chỗ nào.

Tuy biết là rpm là thứ dùng để thêm repository, nhưng mà khi thử qua rồi thì tôi vẫn chưa giải thích rõ được mục đích của nó.

Tôi muốn hiểu rõ tất cả nên đã học lại từ đầu. Và bài viết này sẽ nêu ra các khái niệm mà tôi đã học đuọc

Package Khái quát

Có vẻ như rpm command sẽ install/ uninstall package của RPM Vậy Package là gì?

Chẳng hạn như bạn muốn dùng application nào đó. Vì ngày xưa chỉ được cung cấp source code thôi, cho nên cần compile. Tuy nhiên, chỉ như thế thì không đủ, nên cần phải cung cấp cả code binary đã compile lại và nhóm những file liên quan.

Chúng ta gọi nhóm file đã tập hợp lại là Package.

Sẽ thật không tốt nếu chúng ta nghĩ package là thứ gì đó giống như zip. Chúng taa không giải nén package rồi tự mình bố trí nó. Chúng ta có thể tiến hành install/ uninstall package bằng application có thể xử lý nó

Trong CentOS thì chúng ta xử lý package bằng command là rpm.

RPM Package Hình thức của package sẽ khác nhau dựa trên distribution của Linux

Dựa theo Wikipedia:

RPM : Nhóm Red Hat [CentOS chẳng hạn] deb : Dùng cho Debian [Có cả Ubuntu ] ports : FreeDSB pkg : Solaris

Như pkg thì installer của Mac sẽ nhận thấy đây là pkg nhưng có phải là cùng 1 thứ không thì không phán đoán rõ ràng được.

Cho nên nói về RMP package thì tạm thời chỉ nói về cái mà tôi đang dùng là CentOS nên sẽ là Package dành cho CentOS Đuôi là [.rpm] [ là chuỗi kí tự tùy ý]

Ngoài ra, package có quy tắc đặt tên. Có vẻ là [ Tên OS - CPU - số bit ]

Package của format source code ?

Như đã nói ở trên, rpm là file binary của applicaation và các loại file cần cho việc chạy file binary đó.

Cho nên tôi cũng không hiểu rõ ý nghĩa của cụm từ [ package của hình thức source code] nhưng khi đọc giải thích về nó thì tôi thấy khái niệm [SPRM[Source package]] trong phần giải thích đó.

Extension là 「*.src.rpm」

Chúng ta có thể hiểu cái này là 1 khái niệm khác so với RPM package. SPRM tức là source dùng cho việc tạo RPM package, thông qua việc build SPRM mà có thể tạo RPM package.

Tóm lại

・Package là file gồm binary của application và những thứ cần để chạy nó ・Package của Linux thuộc nhóm Red Hat thì chủ yếu là được bố trí như là [RPM Package] ・RPM Package thì có thể install/ uninstall bằng rpm command ・SRPM là source code để chế tạo RPM package

Về quản lý package Khái quát Tiếp theo tôi sẽ giải thích về package mà Linux Distribution thuộc nhóm Red Hat. Tôi cũng sẽ tổng hợp về command rpm dùng để xử lý RPM package

rpm là viết tắt của RedHat Package Manager。

「Quản lý package」tức là sao?

command rpm sẽ quản lý cái package đã install

Và quản lý như thế nào?

Giữa các package có mối quan hệ phụ thuộc vào nhau. Ví nhữ như có 2 package là Package A và Package B

Để dùng Package A thì cần Package B

Khi dùng Command rpm để install [Package A] mà package B ko tồn tại thì sẽ ko install đc.

Ngược lại, khi cả A và B đã được install đã được install, nếu dùng command rpm để uninstall B, thì theo quan hệ phụ thuộc package A cũng sẽ ko chạy được. Khi uninstall sẽ có error [Package A đang sử dụng nên ko uninstall được]

Việc quản lý mối quan hệ phụ thuộc tức là quản lý những thông tin nhằm tiến hành những thao tác như trên. Thông tin về quan hệ phụ thuộc của những package mà rpm đã install thì có lưu trong database của RPM nên khi uninstall sẽ xác nhận.

yum Khái quát

Tôi có cảm giác là khi nói về install hay uninstall thì yum là phổ biến nhất. yum cũng là 1 command quản lý package, có chung mục đích với rpm.

Vấn đề của rpm

Ví dụ như install 1 package nào đó cần đến 10 package khác. Rồi thì mỗi package lại cần 10 package khác nữa [tóm lại là có khoản 100 cái package cần install]

Rồi 100 cái package đó lại cần thêm một số lượng package khác.

Khi đó thì rpm không thể giải quyết được

yum có thể giải quyết vấn đề của rpm

Điểm tuyệt vời của yum là nó sẽ tự động giải quyết vấn đề của rpm đã ghi ở trên. Với yum thì khi bạn install 1 package nào đó, nó sẽ tự động download package liên quan, và tra cứu quan hệ phụ thuộc để install cho chính xác.

yum có xung đột với rpm không? Tôi lo lắng về việc yum và rpm xung đột với nhau, tuy nhiên yum sử dụng rpm nên là ko vấn đề gì cả.

Cho nên dùng cả 2 lệnh này để install thì cũng không gây hỏng database quan hệ phụ thuộc.

Repository

Khi install application mà yum đã chỉ định, sẽ tự động download những package cần thiết. Tóm lại là có 1 địa chỉ để download. Và địa chỉ này chính là repository.

Repository mà yum tham chiếu là : /etc/yum.repos.d/

Khi install thì thường là sẽ nhìn vào CentOS-Base.repo, thứ mà đã tồn tại sẵn rồi

Dựa trên đặc tả này, yum sẽ [không lấy xuống những pacakage không phụ thuộc có trong repository]

Tưc là [Nếu trong repository ko có package bản mới nhất thì sẽ không thể install được]

Khi tham chiếu repository khác.

Ví dụ như trong ngày mà tôi viết bài, khi tôi nhìn vào repository default và install subversion thì có 1.6. Tuy nhiên, bản mới nhất của subversion là 1.8.9. Thực ra tôi muốn dùng cái này. Nhưng trong repository lại ko có nên ko install đc.

Khi đó có 2 cách 1 cách là lấy package RPM bản mới nhất ở site chính thức, rồi trực tiếp install bằng rpm command. Còn 1 cách là thêm repository có package của svn bản mới nhất [1.8.9]

Thực tế thì ở repository dùng cho yum thì có nhiều thứ khác nhau.

Cho đến nay tôi chỉ mới dùng epel, remi, rpmforge.

Cái nào tốt thì phải phân tích từng case một, nhưng tôi muốn nói ở đây là việc có thể ADD thêm repository để yum tham chiếu. Sau đó mới đến việc repository có nhiều thứ hay ho trong đó.

Ngoài ra, khi tham chiếu nhiều repository thì có vẻ như sẽ xảy ra nhiều vấn đề. Tuy nhiên về việc này thì xin trình bày trong bài khác.

Đối ứng với vấn đề đã nêu ra trong phần[Bối cảnh]

Khi tôi thu thập các thông tin để viết bài này tôi đã tìm ra cách giải quyết vấn đề

Khi muốn update từ svn1.6 -> 1.8 thì không tồn tại ở yum. Tôi cảm thấy rằng việc thêm một repository có chứa package svn1.8 là hơi quá mức.

Cho nên tôi download RPM package từ official site của subversion

$ rpm -i subversion-1.8

Khi làm thử thì đã thành công.

Yum là công cụ cài đặt thông dụng trong CentOS, là một lệnh thường dùng trong CentOs để cài đặt, gỡ bỏ, update…. các phần mềm. Ưu điểm nổi bật của Yum là tính tự động cao. Đây là một lệnh rất hữu ích và tiện dụng. Bài viết sẽ liệt kê một số  lệnh cơ bản để sử dụng YUM 1 cách hiệu quả.

# yum search tên-gói ví dụ: # yum search java
  • Liệt kê tất cả các gói phần mềm đã được cài đặt trên máy: # rpm -qa # yum list installed
  • Hiển thị danh sách các gói phần mềm đã có bản update: # yum list updates
  • Thực hiện nâng cấp tất cả các gói phần mềm:
# yum update
  • Liệt kê các gói phần mềm với bộ lọc: [vd: vsftp] # rpm -qa | grep vsftpd* # yum list installed vsftpd
  • Kiểm tra xem một gói phần mềm cụ thể đã có bản update mới chưa: # yum update package-name VD: # yum update samba
  • Tìm kiếm một gói phần mềm lọc theo tên: # yum list package-name # yum list regex
Ví dụ: samba, có thể dùng dấu * để thay thế cho các kí tự chưa xác định # yum list samba # yum list java*
  • Cài đặt gói phần mềm cụ thể: # yum install tên-gói-1 tên-gói-2 # yum install samba vnc-viewer
  • Gỡ bỏ gói phần mềm cụ thể: # yum remove tên-gói-1 tên-gói-2 # yum remove samba  vnc-viewer
  • Hiển thị danh sách các gói đang kích hoạt: # yum list all
  • Hiển thị các gói phần mềm theo nhóm: # yum grouplist
  • Cài đặt tất cả các gói phần mềm có trong nhóm: # yum groupinstall “Development Tools”
  • Update tất cả các gói phần mềm có trong nhóm: # yum groupupdate “Development Tools”
  • Gỡ bỏ tất cả các gói phần mềm có trong nhóm: # yum groupremove “Development Tools”
  • Hiển thị các gói phần mềm ko thể cài đặt: # yum list extras
  • Hiển thị thông tin về gói phần mềm của một file cụ thể: # yum whatprovides /etc/passwd
  • Xem trợ giúp thêm về lệnh Yum: # man yum

Hi vọng qua bài viết trên sẽ giúp các bạn sử dụng YUM 1 cách hiểu quả.

Nguyễn Hoàng Anh – AdminVietnam.org

Trong bài này chúng ta sẽ tìm hiểu về lệnh Yum trong Linux, đây là lệnh được dùng để install, update, remove, và quản lý các package trong Linux, được phát triển bởi RedHat.

Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Các ví dụ trong bài này được thử nghiệm trên máy chủ Linux CentOS 6.3, nếu bạn đang sử dụng một phiên bản khác thì có thể sử dụng nội dung của bài này để thử nghiệm, đương nhiên về cú pháp và ý nghĩa các lệnh con của nó đều không thay đổi.

Nhắc một tí về tool quản lý package, ngoài Yum ra thì trong Linux có rất nhiều công cụ khác như: [apt], [apt-get], [apt-cache]. Vì vậy bạn có thể đọc thêm những bài đó để có thêm sự lựa chọn.

I. Yum là gì?

YUM [Yellowdog Updater Modified] là một mã nguồn mở command-line, được dùng để quản lý các package trên Linux dựa trên RPM [RedHat Package Manager]. Nó giúp người quản trị Linux dễ dàng cài đặt, gỡ bỏ, cập nhật các phiên bản của các phần mềm trên hệ thống.

Bài viết này được đăng tại [free tuts .net]

YUM được phát triển và phát hành bởi Seth Vidal theo GPL [General Public License] dưới dạng [mã nguồn mở] [open source], có nghĩa là bất kỳ ai cũng có thể tải mã nguồn xuống và thay đổi mã code bên trong để tạo ra một phiên bản nâng cấp khác. YUM sử dụng kho lưu trữ [repo] của bên thứ ba để tự động cài đặt các package cách bằng xử lý những phụ thuộc [dependencies] của chúng.

Hiện nay người ta đang phát triển phiên bản Yum sử dụng giao diện đồ họa Graphic, nhưng nhiều người dùng linux vẫn thích sử dụng dạng command line hơn, bởi việc gõ dòng lệnh giúp họ trở nên chuyên nghiệp.

II. Một số lệnh quan trọng của Yum

Sau đây mình sẽ liệt kê một số lệnh quan trọng của Yum, sau đó chúng ta sẽ đi vào những ví dụ ở phần III.

  • yum install: Dùng để cài đặt package
  • yum update: Dùng để cập nhật package
  • yum check update: Dùng để kiểm tra package đang có bản update nào hay không
  • yum upgrade: Có công dụng giống lệnh update, nhưng nó có thêm cờ obsoletes.
  • yum remove, yum erase: Xóa package ra khỏi hệ thống, xóa luôn những phần mềm phụ thuộc.
  • yum list: Hiển thị thông tin chi tiết các package
  • yum search: Tìm kiếm một package theo tên
  • yum install: Cài đặt lại các package
  • ...

Vẫn còn rất nhiều lệnh khác, bạn có thể tham khảo thêm tại đây.

III. Các ví dụ về Yum trong Linux

Sau đây là tổng hợp một số ví dụ về cách sử dụng thư viện Yum trong Linux, tất cả đều sử dụng command line.

1. Yum Install - Cài đặt package

Để download và cài đặt một package với Yum thì ta sử dụng lệnh yum install, nó sẽ tự động cài đặt tất cả những gói phụ thuộc liên quan đến package đó.

Ví dụ dưới đây là mình cài đặt phần mềm FireFox trên Linux.

Lệnh này sẽ hỏi nhắc bạn một lần là có chắc chắn muốn cài đặt hay không và bạn hãy đồng ý hoặc từ chối. Nếu bạn muốn không cần lời nhắc này thì sử dụng thêm tùy chọn -y.

2. Yum Remove - Xóa một package

Để xóa một package trong Linux bằng Yum thì ta sử dnụg lệnh remove như sau:

Tương tự, hệ thống vẫn sẽ hỏi bạn là có chắc chắn muốn gỡ bỏ phần này hay không. Nếu bạn muốn bỏ qua lời nhắc này thì hãy sử dụng thêm tham số -y.

3. Yum Update - Cập nhật package

Giả sử bạn đang sử dụng hệ quản trị MySQL nhưng nó đã quá củ, bây giờ bạn muốn update lên version mới nhất thì sử dụng lệnh yum update như sau.

Nếu muốn cập nhật toàn bộ package trên hệ thống thì chạy lệnh sau.

4. Yum List - Lấy danh sách package

Sử dụng yum list để tìm kiếm các package. Như ví dụ dưới đây là mình tìm package có tên là openssh.

Nếu bạn muốn tìm phiên bản chính xác thì sử dụng thêm version ở phía sau tên gói.

Tìm các package có sãn trên repo.

Xem tất cả package đã cài trên hệ thống.

Xem tất cả các package có trên repo và đã cài đặt.

5. Yum Search - Tìm kiếm package

Dùng để tìm kiếm một package theo tên và mô tả của mọt package nào đó.

Ví dụ dưới đây sẽ tìm những package mà name description của package đó có từ samba.

6. Yum Info - Xem thông tin của package

Lệnh yum info dùng để xem tất cả thông tin của một package.

Ví dụ này mình muốn xem thông tin của package tên là vsftpd.

7. Yum Provides - Tìm package theo thông tin cung cấp

Thông tin cung cấp ở đây có thể là tên file, tên các file nằm trong package, hoặc package đó chứa một command nào đó.

Trong ví dụ này sẽ tìm tất cả packages trong đó có lênh top.

# yum provides “*bin/top”

Tìm tất cả packages có file README.top.

8. Yum Check-update - Kiểm tra phiên bản mới

Kiểm tra xem có bao nhiêu packages đã cài đặt trên server có phiên bản update mới trên kho [repo].

9. Yum Grouplist - Hiển thị tất cả Group Packages

Trong Linux thì số lượng các package sẽ được đưa vào một nhóm cụ thể. Ví dụ nhóm Installed Group sẽ chứa những package đã cài đặt, nhóm Available Groups sẽ chứa những package có sẵn để cài đặt.

Lệnh sau sẽ hiển thị những nhóm đó.

Giả sử bạn cần cài đặt tất cả những package nằm trong nhóm Available Group thì chạy lệnh sau.

# yum groupinstall 'Available Group'

Bạn muốn update các package nằm trong nhóm đó thì chạy lệnh.

# yum groupupdate 'Available Group'

Bạn muốn xóa tất cả package trong group thì chạy lệnh.

# yum groupremove 'Available Group'

10. Yum Repolist - Liệt kê repo có sẵn

Để xem tất cả những kho repo nào có sẵn trong hệ thống thì bạn chạy lệnh sau.

Nếu bạn muốn liệt kê luôn cả những repo bị disable thì thêm tham số all.

11. yum --enablerepo=epel install - Cài đặt package ở repo bị disabled

Để cài đặt một package nằm trong repo nào đó thì bạn có thể sử dụng lệnh này. Như ví dụ dưới đây mình cần cài đặt package tên là phpmyadmin nằm trong repo epel.

# yum --enablerepo=epel install phpmyadmin

12. Yum Shell - Tương tác với Shell

Yum cung cấp custom shell, nơi bạn có thể thực thi nhiều lệnh.

Trên là tổng hợp tất cả những ví dụ về lệnh Yum trong Linux. Đây là thư viện quản lý các package trong Linux rất hay và nhiều người vẫn thích sử dụng nó. Bài này mình kết thúc tại đây nhé, hẹn gặp lại bạn ở bài tiếp theo.

phpmyadmin

Video liên quan

Chủ Đề