Biến CD/DVD/ISO thành kho chứa yum trên Fedora/RHEL/CentOS 5.x


Mặc định, yum sẽ chỉ tìm kiếm và tải về các gói nằm trong các kho chứa (repository) là các server trên Internet. Vì vậy, việc cài đặt phần mềm với yum yêu cầu bạn cần phải có kết nối Internet tốc độ cao để việc tải gói về được nhanh chóng.

Nhưng, chỉ với CDs/DVD/ISO image có sẵn chứa bộ cài Fedora/RHEL/CentOS và làm theo hướng dẫn trong bài viết này là bạn hoàn toàn có thể cài đặt phần mềm với yum sử dụng CDs/DVD/ISO làm kho chứa.

Giới thiệu

  • yum là một công cụ quản lý các gói phần mềm trên các phiên bản Linux như Red Hat, CentOS, Fedora…
  • yum giúp việc truy vấn thông tin, tải về, cài đặt, cập nhật, gỡ bỏ, giải quyết gói phụ thuộc (dependency)… các gói trở nên đơn giản và an toàn hơn.

Chú thích về dependency:

Giả dụ bạn đang cần cài gói A. Gói A này yêu cầu trên máy phải cài đặt sẵn 2 gói B, C. Nếu máy chưa có 2 gói B, C này thì khi cài đặt gói A bạn sẽ nhận được thông báo lỗi và việc cài đặt gói A thất bại. Trong trường hợp này, B và C được gọi là dependency của A.

Điểm mạnh của yum so với chương trình rpm là: yum sẽ tự động kiểm tra và nhận biết được các dependency nào cần thiết dành cho chương trình mà bạn đang muốn cài.

Cách làm

1. Mount CDs/DVD/ISO image

* Đối với DVD

# mkdir /mnt/dvd/
# mount /dev/cdrom /mnt/dvd/

* Đối với file ISO (giả sử tên file là centos-5.5.iso)

# mkdir /mnt/dvd/
# mount -o loop /root/centos-5.5.iso /mnt/dvd

* Đối với bộ cài bao gồm nhiều CD

# mkdir -p /mnt/{1,2,3,4,5}
# mount -o loop centos-5.5-disc1.iso /mnt/1
# mount -o loop centos-5.5-disc2.iso /mnt/2
# mount -o loop centos-5.5-disc3.iso /mnt/3
# mount -o loop centos-5.5-disc4.iso /mnt/4
# mount -o loop centos-5.5-disc5.iso /mnt/5
 

2. Cài đặt gói cần thiết

Công cụ createrepo giúp tạo thông tin dạng  metadata về các gói rpm. Trong bộ cài RHEL/CentOS/Fedora đã có sẵn gói createrepo này, để cài đặt nó bạn sử dụng lệnh sau:

# rpm –ivh <đường dẫn tới thư mục chứa gói này>/createrepo*.rpm

3. Tạo metadata

# createrepo /mnt/

Thời gian khởi tạo tùy thuộc vào số lượng gói có trong kho.

4. Định nghĩa cho kho chứa mới

Bạn tạo file text /etc/yum.repos.d/local.repo có cấu trúc như sau:

[Chuỗi-Tùy-Ý]
name=Tên-Tùy-Ý
baseurl=file:///mnt/
enabled=1
gpgcheck=0

Giải thích

  • Dòng 3: đường dẫn tới thư mục chứa bộ cài.
  • Dòng 4: 1= kích hoạt kho này
    0= không sử dụng kho này.
  • Dòng 5: 0= bỏ qua kiểm tra tính toàn vẹn của gói
    1= cho phép kiểm tra xem gói có bị lỗi hay không.

5. Kiểm tra

# yum clean all
# yum list

Nếu lệnh yum list liệt kê danh sách các gói có trong CDs/DVD/ISO thì việc tạo kho chứa yum đã hoàn tất!

–manthang.

10 comments

  1. Không biết manthang đã test thử trên đĩa CD/DVD RHEL 5.5 chưa, cấu trúc repository của nó khác với CentOS đó, làm như trên sẽ không yum không hết group cần cài đặt đâu

  2. @thaygiaoth: manthang mới chỉ test thử và thành công với DVD CentOS 5.5, với RHEL 5.5 thì manthang chưa có trong tay DVD này nên chưa test được. manthang sẽ tìm hiểu thêm về cách tạo yum repo với RHEL 5.5 và sẽ cập nhật lại cho bài viết thông tin mới nhất.

  3. Thắng cho một ví dụ cụ thể ở phần tạo kho chứa được không. Viết như vậy thì không ai hiểu nổi là gì đâu!

    1. Thắng nghĩ viết như vậy là khá chi tiết rồi :)

      Thể theo yêu cầu của Thành, Thắng xin cắt nghĩa thêm như sau:

      a) Tạo metadata (siêu dữ liệu): lấy thông tin về các gói như có trong DVD/ISO như: tên gói, phiên bản, ngày phát hành, tác giả, kiến trúc hỗ trợ, các dependency (nếu có)…

      b) Mỗi file text nằm trong thư mục /etc/yum.repos.d định nghĩa cho 1 kho chứa. Bạn đặt tên cho các file này là gì cũng được nhưng bắt buộc phải có đuôi là .repo, nếu là đuôi khác thì yum sẽ bỏ qua, không kiểm tra kho chứa do file đó định nghĩa.

      Ví dụ:
      Trong thư mục /etc/yum.repos.d , mình tạo 1 file text có tên đầy đủ dvd.repo chẳng hạn. Sau đó, mình chỉnh sửa file này có nội dung như sau:

      [DVDRepo]
      name=DVD-CentOS-5.5
      baseurl=file:///mnt/
      enabled=1
      gpgcheck=0

      Theo đó thì:

      – Dòng 1: Bên trong 2 dấu ngoặc vuông [ ] bạn thích đặt là chuỗi gì cũng được.
      – Dòng 2: Đằng sau name= thích đặt là chuỗi gì là tùy ý bạn.
      – Dòng 3: Đằng sau baseurl=file:// (lưu ý có 2 dấu gạch chéo // ở đây) là đường dẫn tới thư mục chứa mount point dành cho CDs/DVD/ISO
      – Dòng 4: Đằng sau enable= sẽ là 2 giá trị 0 hoặc 1 (ý nghĩa như mình đã giải thích trong bài viết).
      – Dòng 5: Đằng sau gpgcheck= sẽ là 2 giá trị 0 hoặc 1 (ý nghĩa như mình đã giải thích trong bài viết).

      Cuối cùng, nếu bạn chỉ muốn cài đặt từ kho chứa là CDs/DVD/ISO vừa tạo mà bỏ qua các kho chứa khác (nằm trên Internet, mạng LAN…) thì bạn có 2 cách:

      – Đổi phần đuôi trong tên của các file của các kho chứa mà bạn muốn bỏ qua, sao cho phần đuôi k phải là .repo
      – Mở các file dành cho cho các kho chứa mà bạn muốn bỏ qua, mục enable= bạn gán là 0

  4. manthang đã test thử thành công cách tạo kho chứa yum từ DVD RHEL 6. Hiện tại, manthang vẫn chưa test trên RHEL 5.5. Hy vọng sớm có bài viết từ a thaygiaoth cho bản RHEL 5.5 này :D

  5. @manthang: Hi bác. bác tạo kho chứa yum từ dvd của rhel 6 kiểu j vậy chỉ cho vs đc ko ạ. thanks bác nhiều.

    1. Chào bạn!

      – Với RHEL 6 bạn cứ làm theo các bước như trong bài viết là được. Bạn đọc thêm phần comment của mình ở trên để hiểu rõ hơn các bước thực hiện.

      – Gói createrepo nằm ở thư mục Packages của đĩa DVD RHEL 6

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s