1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu tìm hiểu và xây dựng hệ thống quản lý phân phối phần mềm phân tán kết hợp P2P xây dựng mô hình và triển khai trên các hệ điều hành nguồn mở

98 32 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 98
Dung lượng 2,41 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nghiên cứu tìm hiểu và xây dựng hệ thống quản lý phân phối phần mềm phân tán kết hợp P2P xây dựng mô hình và triển khai trên các hệ điều hành nguồn mở Nghiên cứu tìm hiểu và xây dựng hệ thống quản lý phân phối phần mềm phân tán kết hợp P2P xây dựng mô hình và triển khai trên các hệ điều hành nguồn mở luận văn tốt nghiệp thạc sĩ

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

*********♦*********

PHẠM XUÂN LÂM

NGHIÊN CỨU TÌM HIỂU VÀ XÂY DỰNG HỆ THỐNG QUẢN LÝ PHÂN PHỐI PHẦN MỀM PHÂN TÁN KẾT HỢP P2P, XÂY DỰNG MÔ HÌNH VÀ TRIỂN KHAI

TRÊN CÁC HỆ ĐIỀU HÀNH NGUỒN MỞ

LUẬN VĂN THẠC SĨ NGHÀNH : CÔNG NGHỆ THÔNG TIN

NGƯỜI HƯỚNG DẪN KHOA HỌC

TS HÀ QU ỐC TRUNG

HÀ NỘI 2009

Trang 2

-1-

BẢN CAM ĐOAN

Tôi là Phạm Xuân Lâm, học viên cao học lớp Công nghệ thông tin khóa 2007 –

2009 thực hiện luận văn tốt nghiệp do TS Hà Quốc Trung hướng dẫn

Tôi xin cam đoan toàn bộ nội dung được trình bày trong bản luận văn nay là kết quả tìm hiểu và nghiên cứu của riêng tôi dưới sự hướng dẫn của TS Hà Quốc Trung,

trong quá trình nghiên cứu đề tài “Nghiên cứu tìm hiểu và xây dựng hệ thống quản lý phân phối phần mềm phân tán kết hợp P2P, xây dựng mô hình và triển khai trên các hệ điều hành nguồn mở” Các kết quả và dữ liệu được nêu trong

luận văn là hoàn toàn trung thực và rõ ràng Mọi thông tin trích dẫn đều được tuân theo luật sở hữu trí tuệ, liệt kê rõ ràng các tài liệu tham khảo Tôi xin chịu hoàn toàn trách nhiệm với những nội dung được viết trong luận văn này

Hà nội, ngày 31 tháng 10 năm 2009

TÁC GIẢ

PHẠM XUÂN LÂM

Trang 3

-2-

MỤC LỤC

BẢN CAM ĐOAN 1

MỤC LỤC 2

DANH MỤC HÌNH VẼ 4

DANH MỤC BẢNG 6

DANH MỤC TỪ VIẾT TẮT 7

LỜI MỞ ĐẦU 8

CHƯƠNG 1 CÁC VẤN ĐỀ VỀ HỆ THỐNG PHÂN PHỐI PHẦN MỀM PHÂN TÁN 10

1.1 Các khái niệm cơ bản về phần mềm 10

1.1.1 Định nghĩa 10

1.1.2 Hoạt động của phần mềm ứng dụng trong một hệ thống máy tính 10

1.1.3 Các hình thức và quy trình cung cấp phần mềm 11

1.2 Tổng quan về hệ thống phân phối phần mềm phân tán 11

1.2.1 Khái niệm và yêu cầu của hệ thống phân phối phần mềm phân tán 11

1.2.2 Nguyên tắc hoạt động cơ bản của một hệ thống phân tán phần mềm 12 1.2.3 Cách thức quản lý phần mềm trên hệ điều hành nguôn mở 13

1.2.4 Vai trò của người quản trị trên hệ thống phân tán phần mềm 13

1.3 Trao đổi giữa các thành phần trong một hệ thống phân tán 14

1.3.1 Giao tiếp giữa Client và Server 14

1.3.2 Giao dịch phân tán 14

1.3.3 Khôi phục và chịu lỗi 15

1.3.4 Bảo mật 16

CHƯƠNG 2 PHÂN PHỐI PHẦN MỀM TRÊN CÁC HỆ ĐIỀU HÀNH NGUỒN MỞ 20

2.1 Quản lý và phân phối phần mềm trên Redhat sử dụng RPM 20

2.1.1 Cấu trúc gói RPM 20

2.1.2 Phân phối gói phần mềm RPM trên máy chủ 22

2.1.3 Quá trình khai thác gói phần mềm RPM trên máy trạm 32

2.1.4 Các công cụ quản lý và phân phối gói phần mềm RPM phổ biến 43

2.2 Quản lý và phân phối phần mềm trên Debian 46

2.2.1 Phân phối phần mềm trên hệ điều hành Debian 47

Trang 4

-3-

2.2.2 Gói phần mềm trên hệ điều hành Debian 48

2.2.3 Các công cụ quản lý và phân phối gói phần mềm deb phổ biến 54

2.2.4 So sánh đánh giá cách đóng gói phần mềm dùng RPM và DPKG 59

2.3 Mạng ngang hàng (Peer to Peer – P2P) 62

2.3.1 Các kiến trúc sử dụng để phân tán 62

2.3.2 Mạng ngang hàng 64

2.3.3 Kiến trúc trong mạng ngang hàng 66

2.3.4 So sánh P2P với mô hình Client-Server 70

2.3.5 Phát triển các ứng dụng trên mạng ngang hàng 70

CHƯƠNG 3 XÂY DỰNG HỆ THỐNG PHÂN PHỐI PHẦN MỀM PHÂN TÁN KẾT HỢP P2P 71

3.1 Yêu cầu đối với mô hình phân phối phần mềm phân tán 71

3.2 Xây dựng mô hình phân phối phần mềm phân tán 72

3.2.1 Mô hình tổng thể và cơ chế làm việc 72

3.2.2 Mô hình trên mỗi điểm phân tán 74

3.2.3 Mô hình trên máy trạm 75

3.2.4 Mô hình mạng tổng thể cả hệ thống 75

3.3 Cơ chế hoạt động giải pháp trên từng thành phần của hệ thống 76

3.3.1 Trên Server 76

3.3.2 Trên máy trạm 81

3.4 Triển khai xây dựng hệ thống trên các hệ điều hành nguồn mở 87

3.4.1 Đề xuất hệ thống 87

3.4.2 Triển khai hệ thống 88

3.5 Đánh giá hệ thống 89

3.5.1 Các thao tác cơ bản của hệ thống 89

3.5.2 Độ phức tạp của từng thao tác 90

3.5.3 Phân tích đánh giá về sự phức tạp của hệ thống 93

KẾT LUẬN 95

TÀI LIỆU THAM KHẢO 97

Trang 5

-4-

DANH MỤC HÌNH VẼ

Hình 2-1: Cấu trúc gói RPM 21

Hình 2-2: Phần thông tin gói RPM 22

Hình 2-3: Thông tin trên mỗi tệp trong gói RPM 22

Hình 2-4: Quy trình đóng gói một tệp RPM 23

Hình 2-5: Cấu trúc cây thư mục để tạo tệp RPM 23

Hình 2-6: Cấu trúc file spec 24

Hình 2-7: Quá trình đóng gói RPM 28

Hình 2-8: Các bước trong quá trình cài đặt gói RPM trực tuyến 30

Hình 2-9: Mô hình phân phối gói RPM 31

Hình 2-10: Các bước thực hiện trên máy trạm khi cài đặt gói RPM 32

Hình 2-11: Các bước để xóa một gói RPM đã cài đặt 34

Hình 2-12: Công cụ quản lý gói YAST 46

Hình 2-13: Tiến trình cài đặt một gói Deb nhị phân 51

Hình 2-14: Tiến trình hủy bỏ một gói deb nhị phân 51

Hình 2-15: Định dạng một gói nguồn 52

Hình 2-16: Tổng quan về quá trình đóng gói trong debian 52

Hình 2-17: Các thao tác trong tạo gói nguồn và gói nhị phân 53

Hình 2-18: Quản lý gói sử dụng Synaptic 57

Hình 2-19: Kiểm tra cấu hình một gói bằng công cụ Synaptic 58

Hình 2-20: Remote access model 63

Hình 2-21: Kiến trúc phân lớp NFS 64

Hình 2-22: So sánh mô hình Client Server và mô hình P2P 65

Hình 2-23: Phân loại các kiến trúc mạng ngang hàng 65

Hình 2-24: Mô hình chia sẻ tập trung 66

Hình 2-25: Mô hình chia sẻ thuần túy 67

Hình 2-26:Mô hình chia sẻ sử dụng mạng lai (Hybrid) 68

Hình 3-1: Mô hình chung hệ thống phân phối phần mềm phân tán 73

Hình 3-2: Mô hình các khối trên điểm phân tán phần mềm 75

Hình 3-3: Các module trên máy trạm 75

Trang 6

-5-

Hình 3-4: Mô hình mạng tổng thể toàn bộ hệ thống 76

Hình 3-5: Quá trình đóng gói phần mềm 77

Hình 3-6: Khối các dịch vụ 80

Hình 3-7: Sơ đồ cài đặt và nâng cấp phần mềm 83

Hình 3-8: Các bước khi cài đặt phần mềm offline 85

Hình 3-9: Các bước thực hiện gỡ bỏ phần mềm 86

Hình 3-10: Triển khai hệ thống lưu trữ 88

Hinh 3-11: Mô hình đơn giản một mạng phân tán phần mềm 88

Trang 7

-6-

DANH MỤC BẢNG

Bảng 2-1: Các tham số khi biên dịch gói RPM bằng câu lệnh rpmbuild 29

Bảng 2-2: Bảng tham số khi cài đặt gói RPM sử dụng câu lệnh RPM -i 34

Bảng 2-3: Bảng tham số khi gỡ bỏ gói RPM sử dụng câu lệnh RPM -e 35

Bảng 2-4: Bảng tham số khi nâng cấp gói RPM sử dụng câu lệnh RPM -u 36

Bảng 2-5: Cú pháp khi cài đặt gói deb sử dụng dpkg 55

Bảng 2-6: Cú pháp khi cài đặt gói deb sử dụng apt-get 56

Bảng 2-7: So sánh tính bảo mật và xác thực 59

Bảng 2-8: So sánh khả năng sử dụng bởi các công cụ của linux 60

Bảng 2-9: So sánh về khả năng mô tả dữ liệu 60

Bảng 2-10: So sánh khả năng hỗ trợ tệp đặc biệt 61

Bảng 2-11: So sánh về khả năng đóng gói 61

Bảng 2-12: So sánh về khả năng mở rộng 62

Bảng 2-13: so sánh ưu nhược điểm của P2P với Client/Server 70

Bảng 3-1: Các thao tác cơ bản của hệ thống phân phối phần mềm phân tán 90

Trang 8

-7-

DANH MỤC TỪ VIẾT TẮT

Từ viết tắt Từ viết đầy đủ

APT Advanced Package Tool

DPKG Dibian Package Management

HĐH Hệ Điều Hành

LAN Local Area Connection

MD5 Message Digest Algorithm 5

NAS Network-attached storage

P2P Peer to Peer

RPM Redhat Package Management

SWP Software Processor

YaST Yet another Setup Tool

YUM Yellow dog Updater Modified

Trang 9

-8-

LỜI MỞ ĐẦU

Ngày nay công nghệ thông tin và truyền thông phát triển một cách mạnh mẽ, các mạng máy tính và Internet đã đến được với hầu nơi trên trái đất, từ đó nhu cầu trao đổi, phát triển và chia sẻ phần mềm cũng phát triển không ngừng vì vậy đòi hỏi các

cơ chế quản lý và phân phối phần mềm ngày càng phải linh hoạt, thuận tiện và tri ển khai trên phạm vi rộng hơn

Các máy tính nối mạng hiện nay chủ yếu dùng hai hệ điều hành: mã nguồn mở tiêu biểu là các hệ điều hành UNIX và hệ điều hành mã nguồn đóng mà điển hình là hệ điều hành Windows Những hệ điều hành này đều có các cơ chế để phân phối các phần mềm từ mọi nơi trên mạng theo các phương thức khác nhau Trên UNIX do

mã nguồn được công khai vì vậy việc lấy mã nguồn để đóng gói và phân phối rất thuận lợi, các cơ chế quản lý và phân phối phần mềm khá tốt và linh hoạt như RPM, DPKG, YUM, APT…đã giúp người dùng dễ tiếp cận với kho tài nguyên phần mềm phong phú và thường xuyên phát triển của cộng đồng thông qua Internet Tuy nhiên trong điều kiện thực tế hiện nay, trên các hệ thống UNIX, đôi khi người

sử dụng vẫn gặp khó khăn khi tìm kiếm, cài đặt và quản lý phần mềm, cách thức sử dụng hệ thống UNIX khá phức tạp đồng thời chưa có một hệ thống kho chứa với cơ

sở dữ liệu đầy đủ và cập nhật thường xuyên để người dùng tìm kiếm và tải các phần mềm mà họ cần, các nhà sản xuất phần mềm cũng gặp khó khăn trong việc phân

phối phần mềm Vì vậy, tôi đã lựa chọn đề tài “Nghiên cứu tìm hiểu và xây dựng

hệ thống quản lý phân phối phần mềm phân tán kết hợp P2P, xây dựng mô hình

và triển khai trên các hệ điều hành nguồn mở” nhằm mục đích tạo cho người sử

dụng hệ điều hành nguồn mở dễ dàng tìm kiếm, tiếp cận được với các phần mềm thường xuyên cập nhật mà họ cần

Trong luận văn này, được trình bày làm ba phần lớn:

Chương 1: Các vấn đề về hệ thống phân phối phần mềm phân tán

Chương 2: Nghiên cứu các cơ chế quản lý và phân phối phần mềm phân tán

hiện có như: RPM, DPKG trên HĐH nguồn mở, tổng quan nghiên cứu về công nghệ chia sẻ ngang hàng P2P

Trang 10

-9-

Chương 3: Đề xuất một giải pháp quản lý và phân phối phần mềm phân tán

chạy trên hệ điều hành nguồn mở cho phép người sử dụng quản lý, tìm kiếm cập nhật trực tuyến các phần mềm thương mại và phần mềm mã nguồn mở một cách linh hoạt và trực quan hơn

Trong quá trình thực hiện luận văn không tránh khỏi thiếu sót Rất mong được tiếp nhận sự đóng góp ý kiến của các thầy, các cô, các bạn và tất cả mọi người để cho luận văn được hoàn thiện hơn

Trang 11

-10-

CHƯƠNG 1 CÁC VẤN ĐỀ VỀ HỆ THỐNG PHÂN PHỐI

PHẦN MỀM PHÂN TÁN 1.1 Các khái niệm cơ bản về phần mềm

1.1.1 Định nghĩa

Phần mềm là tập hợp các câu lệnh, được viết bằng một hay nhiều ngôn ngữ lập

trình theo một trật tự xác định, nhằm thực hiện một hay nhiều các công việc cụ thể

Về cơ bản, phần mềm được chia thành các loại như sau:

Phần mềm hệ thống: là những phần mềm giúp chạy phần cứng và hệ thống

máy tính Nhiệm vụ chính của phần mềm hệ thống là tích hợp, điều khiển và

quản lý các phần cứng riêng biệt của hệ thống máy tính

Phần mềm ứng dụng: là một loại chương trình có khả năng làm cho máy tính

thực hiện trực tiếp một công việc nào đó người dùng muốn thực hiện

Phần mềm lập trình: có nhiệm vụ cung cấp các công cụ hỗ trợ cho người lập

trình viết các chương trình máy tính, mà cụ thể là các phần mềm, bao gồm cả

Điều khiển: Điều khiển các phần mềm ứng dụng trong việc chia sẻ tài nguyên

máy tính, đảm bảo các phần mềm trong hệ thống có thể hoạt động đồng thời

Thư viện: Bao gồm các thư viện lập trình nhằm hỗ trợ các phần mềm ứng dụng

trong việc giao tiếp vào ra, các thư viện tính toán, các thư viện đồ họa v.v…

Trang 12

-11-

Cơ sở dữ liệu: cung cấp kho chứa thông tin, hỗ trợ phần mềm ứng dụng trong

việc kết nối với với cơ sở dữ liệu

Ngoài ra một phần mềm ứng dụng trong một hệ thống máy tính sẽ sử dụng các tài nguyên trên hệ thống máy tính đó, bao gồm các tài nguyên cục bộ và các tài nguyên trực tuyến Hệ thống sẽ hỗ trợ các phần mềm ứng dụng trong việc kết nối với các tài nguyên này thông qua các thư viện lập trình

1.1.3 Các hình thức và quy trình cung cấp phần mềm

Các phần mềm được sử dụng trên máy được tạo ra bởi các cá nhân hay các nhà sản xuất, đứng trên phương diện về chi phí thì có thể phân chia phần mềm ra thành hai loại là phần mềm miễn phí và phần mềm thương mại Đối với phần mềm thương mại, khách hàng phải trả tiền khi mua sản phẩm, hoặc trả tiền trong quá trình sử dụng Cả phần mềm thương mại và phần mềm miễn phí đều được cung cấp dưới hai hình thức:

Cung cấp thông thường: Nhà sản xuất đóng gói sản phẩm, in sao lên các thiết

bị lưu trữ như CD, DVD v.v… hoặc đi kèm với sản phẩm mua như máy xách tay, máy để bàn v.v… từ đó chuyển tới người sử dụng

Cung cấp trực tuyến: Các sản phẩm được đưa lên mạng, và người sử dụng có

thể truy cập vào các Website của hãng để tải các phiên bản phần mềm, việc cung cấp trực tuyến rất thuận lợi cho việc cập nhật các phiên bản mới của sản phẩm, hay các bản sữa lỗi, cập nhật bảo mật v.v… Việc cung cấp trực tuyến có lợi cho các doanh nghiệp, các nhà sản xuất phần mềm cung cấp các phần mềm tới tay người sử dụng thông qua Internet, không bị trở ngại bởi khoảng cách địa lý Tuy nhiên việc cung cấp trực tuyến đôi khi gặp khó khăn về vấn đề bản quyền, tính

chất pháp lý và vấn đề thanh toán trực tuyến v.v…

1.2 Tổng quan về hệ thống phân phối phần mềm phân tán 1.2.1 Khái niệm và yêu cầu của hệ thống phân phối phần mềm phân tán

Hệ thống phân phối phần mềm phân tán được định nghĩa là một hệ thống trong

đó, các máy tính được nối với nhau tạo thành một mạng, trong mạng này các máy

Trang 13

-12-

sử dụng nhiều máy chủ, cung cấp và phân tán các phần mềm trên đó cho các máy trạm trong hệ thống Các máy trạm trong hệ thống sử dụng phần mềm phân tán để tải các phần mềm từ máy chủ

Một hệ thống phân phối phần mềm phân tán cần đảm bảo:

• Hệ thống đáp ứng được các yêu cầu từ máy trạm, số lượng yêu cầu phụ thuộc vào số lượng máy trạm trong hệ thống, số lượng máy trạm có thể mở rộng được

• Hệ thống phải đảm báo tính trong suốt để người sử dụng giao tiếp với hệ thống như một hệ thống thống nhất toàn vẹn

• Hệ thống phải có tính an toàn, bảo mật cao

• Hệ thống cho phép các dịch vụ khác bổ sung vào mà không gây xung đột với

Đóng gói phần mềm: Quá trình đóng gói phần mềm nhằm tạo thuận tiện cho

việc phân tán từ người nhà phân phối, đồng thời cũng tạo thuận lợi cho quá, hiện nay trên các hệ thống máy UNIX phổ biến với hình thức đóng gói RPM và DEB, trên Windows các phần mềm thường được đóng gói dưới dạng file cài đặt EXE Từ phiên bản Windows 2000, Microsoft cung cấp chuẩn đóng gói MSI mới

Phân tán phần mềm: Chỉ xét quá trình phân tán phần mềm trực tuyến, hiện nay

trên Windows phổ biến là hình thức người sử dụng tải các bản phần mềm trên mạng sau đó cài đặt trên máy Trên các máy UNIX người sử dụng cũng có thể tải các gói phần mềm về sau đó tiến hành cài đặt bằng cách sử dụng câu lệnh

hay phần mềm hỗ trợ

Trang 14

-13-

Bảo trì và nâng cấp phần mềm: bảo trì và nâng cấp phần mềm là trong những

giai đoạn quan trọng trong quá trình phân tán phần mềm Hầu hết các phần mềm được tạo ra đều được các nhà sản xuất nâng cấp và cập nhật các phiên bản, nhiệm vụ của một hệ thống phân tán phần mềm không chỉ dừng lại ở quá trình phân tán phần mềm mà còn phải cung cấp các giao thức cho quá trình nâng cấp

và cập nhật các phiên bản phần mềm sau này

1.2.3 Cách thức quản lý phần mềm trên hệ điều hành nguôn mở

Trên hệ điều hành nguồn mở, các phần mềm được quản lý dưới dạng các gói phần

mềm, các gói phổ biến hay gặp nhất là gói Debian, gói RPM và gói Tarball Gói

Debian là định dạng phổ biến nhất sẽ gặp khi cài đặt phần mềm trong Ubuntu Đây

là định dạng gói phần mềm chuẩn sử dụng bởi Debian và các nhánh con của Debian Tất cả phần mềm trong kho của Ubuntu là được đóng gói với định dạng này Tarballs là một tập hợp rất nhiều tệp được nén lại trong một tệp tài liệu đơn Một tarball là rất giống với một tệp zip trong Windows hoặc một tệp hqx ở Macs Trình quản lý gói của Redhat hoặc định dạng RPM là được thiết kế đặc biệt để dễ dàng cài đặt và quản lý gói phần mềm Định dạng này cho phép bạn tự động cài đặt, nâng cấp và gỡ bỏ các gói phần mềm Nó tìm vết các phụ thuộc và sẽ không cài đặt phần mềm nếu những phụ thuộc của nó trong các gói khác chưa được cài đặt

1.2.4 Vai trò của người quản trị trên hệ thống phân tán phần mềm

Trong một hệ thống phân tán phần mềm, người quản trị có vai trò rất quan trọng, việc cấu hình, bổ sung, cập nhật thông tin cho các gói phần mềm v.v đều được thực hiện bởi người quản trị hệ thống

Trên máy chủ, nhiệm vụ của người quản trị hệ thống bao gồm:

• Cấu hình hệ thống, cập nhật hệ điều hành tối ưu hóa hệ thống

• Cài đặt tường lửa, kiểm tra sửa lỗi bảo mật

• Bổ sung, cập nhật các gói phần mềm

Trang 15

đều phụ thuộc vào Server, do đó để đảm bảo khả năng chia sẻ dữ liệu, Server cần phải đảm bảo:

• Có khả năng điều khiển tương tranh

• Có khả năng điều phối giao dịch phân tán

• Có khả năng phục hồi và chịu lỗi

• Có khả năng bảo mật cao

Trong một số trường hợp, Client gửi yêu cầu đến Server và kết quả trả về là khá lớn, khi đó, thay vì nhận toàn bộ dữ liệu trong một lần, Client và Server có thể trao đổi dữ liệu thành nhiều lần Như vậy, cả Client và Server đều có thời gian thực hiện các việc khác trong khi vẫn trao đổi dữ liệu, đồng thời có khả năng xử lý ngay dữ liệu vừa nhận để đưa ra các quyết định về thao tác tiếp theo

1.3.2 Giao dịch phân tán

Giao dịch phân tán là giao dịch bao gồm một tập các thao tác giữa hai hoặc nhiều

máy tính Thông thường, trong một giao dịch phân tán, một số máy tính cung cấp tài nguyên cho giao dịch (tức là đối tượng giao dịch), máy quản lý việc giao dịch (tức quản lý vào thao tác trên tài nguyên được cung cấp), và máy yêu cầu giao dịch

Trang 16

-15-

(gửi yêu cầu tới máy quản lý giao dịch) Những máy này có thể là một hoặc khác nhau, tuỳ theo cấu trúc của hệ thống Có hai cách giao dịch phân tán có thể thực hiện: giao dịch đơn giản và giao dịch cấu trúc lồng

Trong g iao dịch đơn giản Client gửi yêu cầu đến nhiều hơn một Server, nhưng mỗi

Server thực hiện yêu cầu của Client mà không liên quan đến các thao tác trên các Server khác Một giao dịch Client đơn giản hoàn thành các yêu cầu của nó trước khi tiếp tục chuyển sang giao dịch tiếp theo Do đó, mỗi giao dịch truy cập đến các phần

tử dữ liệu một cách tuần tự Khi các Server sử dụng trạng thái khoá, một giao dịch

có thể chỉ bị khoá đối với một phần tử dữ liệu ở một thời điểm

Trong một số trường hợp, thao tác trên Server này có thể liên quan đến thao tác trên các Server khác Để giải quyết điều này, mỗi giao dịch Client sẽ được định cấu trúc như là một tập các giao dịch có cấu trúc lồng (một giao dịch bao gồm một phân

cấp các giao dịch lồng) Các giao dịch lồng ở cùng một mức có thể thực hiện đồng thời Giao dịch có cấu trúc sẽ đạt được hiệu năng cao hơn so với giao dịch đơn giản bởi vì các yêu cầu có thể thực hiện song song, trong khi với một giao dịch đơn giản, tất cả các yêu cầu phải được thực hiện một cách tuần tự

1.3.3 Khôi phục và chịu lỗi

Server cung cấp các giao dịch bao gồm một trình quản trị khôi phục mà mối quan tâm của nó là đảm bảo rằng hiệu năng của các cuộc giao dịch trên Server có thể được khôi phục khi Server bị khởi động lại sau khi gặp lỗi, trình khôi phục cất giữ các thành phần dữ liệu trong một bộ chứa thường trực cùng với một danh sách các ý định và tình trạng thông tin của mỗi giao dịch

Các phiên giao dịch không phải luôn thích hợp cho mọi ứng dụng, các ứng dụng yêu cầu thời gian thực và các ứng dụng cần chạy đúng trên các phần cứng lỗi cần phải có các cách giải quyết khác cho khả năng chịu lỗi và khôi phục

Khả năng chịu lỗi có hai khía cạnh – miêu tả các đặc tính của các lỗi và khả năng che, lọc lỗi Rất nhiều loại lỗi có thể xuất hiện trong hệ phân tán Nó bao gồm các lỗi ‘fail-stop’ và các lỗi ‘Byzantine failure’

Có hai cách tiếp cân để thực hiện che phủ lỗi mà trong phần này chúng ta sẽ đề cập đến đó là che phủ lỗi phân cấp và che phủ lỗi nhóm

Trang 17

-16-

Mặc dù các dịch vụ giao dịch rất thích hợp để giải quyết các vấn đề về duy trì giữ liệu được chia sẽ trong một thời gian dài nhưng trên thực tế không phải các dịch vụ này luôn thích hợp cho mọi ứng dụng phân tán Một dịch vụ giao dịch lưu trữ các thành phần dữ liệu của mình trong một tệp khôi phục trong các hoạt động thông thường của nó Vì thế khi xảy ra lỗi nó có thể thực hiện khôi phục các thành phần

dữ liệu này từ tệp khôi phục nói trên

Khôi phục một dịch vụ bằng cách khởi động lại và phục hồi các thành phần dữ liệu của chúng từ tệp phục hồi có thể rất chậm đối với một vài ứng dụng Việc sử dụng các bản sao dịch vụ chạy trên các máy tính khác nhau có thể làm cho khả năng phục hồi nhanh hơn nhiều Nếu các bản sao này luôn được cập nhật thì việc khôi phục một lỗi đơn có thể được thực hiện ngay lập tức

Phần đầu tiên trong chương này chúng ta đề cập tới khôi phục các phiên giao dịch phân tán Phần còn lại ta đề cập tới một cách tiếp cân với khả năng chịu lỗi mà chi tiết là bản thiết kế các dịch vụ với yêu cầu thời gian thực, giới thiệu các loại lỗi khác nhau có thể làm ánh hưởng tới các Server, mạng, các tệp hệ thống …Các loại lỗi này bao gồm lỗi dừng-“fail-stop” và lỗi Byzantine “Byzantine-failure” cuối cùng ta xem xét làm cách nào các dịch vụ có thể thực hiên che lỗi

ví dụ như giữa Client và Server)

Tính mở của hệ thống phân tán đã để lộ ra nhiều lỗ hổng bảo mật ở nhiều ngữ cảnh khác nhau đe dọa đến sự an toàn của mạng và sự toàn vẹn của cá thông tin Các phương thức để tìm ra những sự đe dọa đó được nhận ra(còn gọi là xác định tội phạm) dựa trên sự can thiệp trái phép vào hệ thống Những sự can thiệp trái phép

Trang 18

hệ thống đó

Những cơ chế được sử dụng để thực hiện bảo mật phải phù hợp với một chuẩn nào

đó, ví dụ bảo vệ các giao thức thông tin và phần mềm cần được xác thực đối với các thông báo Quá trình chứng minh phải thực hiện đúng theo chuẩn

1.3.4.1 Những yêu cầu về bảo mật cho hệ thống

Client-Server

Để bảo vệ hệ thống khỏi những vi phạm về tính mật đã nêu ở trên chúng ta phải:

• Bảo đảm an toàn cho các kênh thông tin, tránh việc nghe trộm

• Thiết kế hệ thống sao cho Client và Server có thể theo dõi được những nghi ngờ thường nhật và đưa ra những thay đổi thông báo thích hợp (các giao thức xác thực) để đạt đến các trạng thái sau:

o Server phải biết rằng Client đang hoạt động nhân danh những người yêu cầu chúng

o Client cần được biết rằng Server cung cấp một phần dịch vụ cho nó chính là Server đã được xác thực cho những dịch vụ đó

• Chắc chắn việc truyền thông là trong suốt để tránh những vi phạm bảo mật nhờ phát lại những thông báo

Các cơ chế bảo mật của hệ thống phân tán thường dựa trên ba kỹ thuật: mã hóa, xác thực và điều khiển truy cập Những yêu cầu về tính trong suốt sẽ được đề cập đến ở phần xác thực

1.3.4.2 Các cơ chế xác thực

Trong hệ thống đa người dùng tập trung, các cơ chế xác thực có thể thực hiện rất đơn giản Một người sử dụng có thể được xác thực bởi username và password ngay

Trang 19

-18-

từ khi họ bắt đầu phiên làm việc và phiên làm việc đó hoạt động dưới sự điều khiển của người sử dụng đó Vấn đề này dựa trên việc quản lý tập trung các tài nguyên của hệ thống Hạt nhân của hệ điều hành sẽ ngăn chặn tất cả những hành động cố gắng tạo ra những phiên làm việc mới giả danh những người dùng khác

Trong hệ phân tán, xác thực là cơ chế đảm bảo tính tin cậy của Server và Client Cơ chế để thực hiện quá trình xác thực dựa trên quyền sở hữu khóa mã xuất phát từ một thực tế là người chủ thực sự sở hữu một khóa bí mật riêng và chỉ có người đó và chỉ

có người đó mới được sử dụng khóa ấy

1.3.4.3 Quản lý truy cập

Cơ chế quản lý truy cập có liên quan đến việc đảm bảo việc truy cập đến các tài nguyên thông tin (như tệp, các tiến trình hoặc các cổng thông tin…) và các tài nguyên phần cứng (như bộ dò đường, công cụ thăm dò…) là hợp lệ đối với một số người sử dụng có quyền quản lý và sử dụng chúng

Các cơ chế quản lý truy cập diễn ra trong những hệ điều hành đa người dùng không phân tán Trong hệ thống Unix và các hệ thống đa người dùng khác, tệp là nguồn tài nguyên quan trọng nhất có thể chia sẻ và một cơ chế điều khiển truy cập được cung cấp cho phép người sử dụng lưa trữ một vài tệp của riêng và chia sẻ cho người khác theo một cách nào đó

Trong ba cơ chế đảm bảo an ninh trên, thì cơ chế mã hóa là rất quan trọng trong vấn

đề chia sẻ tài nguyên Đây là cơ chế để đảm bảo tính toàn vẹn của thông tin trong môi trường phân tán

Mã hóa: mã hóa thông tin là chuyển thông tin thành một dạng khác sao cho không

ai hiểu được nó trừ người có được khóa giải mã

Chuyển mã và khóa: một thông báo được mã hóa bởi người gửi theo một phương pháp mã hóa nào đó là chuyển từ một bản rõ sang bản mã Người nhận phải biết qui tắc ngược lại để chuyển từ bản mã về bản rõ ban đầu Những người sử dụng khác không thể giải mã được văn bản đó trừ khi họ biết được qui tắc giải mã Việc chuyển đổi được thực hiện theo qui tắc mã hóa lại các phần tử dữ liệu hoặc đổi chỗ các phần tử dữ liệu từ vị trí này sang vị trí khác Điều này ta có thể thực hiện được, tuy nhiên chúng khá cứng nhắc Người gửi và người nhận phải biết được cặp khóa

Trang 20

-19-

biến đổi ấy Nếu người gửi muốn gửi đồng thời cho nhiều người nhận cùng một lúc,

để tránh việc nghe trộm thì các cặp khóa này phải là khác nhau đối với từng người nhận

Để tránh việc tạo ra nhiều khóa mới không cần thiết, quá trình biến đổi giữa mã hóa

và giải mã được chia thành hai phần: hàm mã hóa và khóa Hàm mã hóa xác định một giải thuật mã hóa dùng để biến đổi dữ liệu từ bản rõ sang bản mã bằng cách kết hợp chúng với khóa biến đổi chúng theo các thao tác mà kết quả trả về là sự phụ thuộc của các giá trị vào khóa

Xét một văn bản mã M với một hàm mã hóa xác định và một khóa K [M]K Hiệu quả của bất kỳ phương thức mã hóa thông tin nào phụ thuộc vào việc sử dụng các hàm biến đổi bởi rõ ràng một hình thức tấn công bất kỳ đều tìm cách khôi phục M nếu biết hoặc tìm K từ một thông báo M bất kỳ và

Lược đồ cơ bản của khóa này phụ thuộc vào quá trình bảo đảm an toàn trong việc lưu trữ và phân phối khóa Trong hệ phân tán, quá trình sản xuất và phân phối khóa thường được thực hiện bởi một dịch vụ đặc biệt: dịch vụ phân phối khóa

Trang 21

Được thành lập năm 1993, Redhat là nhà cung cấp Linux và giải pháp mã nguồn

mở hàng đầu trên thế giới Được xếp hạng đánh giá cao trong những nhà cung cấp hàng đầu được bình chọn bởi tạp chí CIO Insight Magazine trong hai năm liên tiếp, Redhat vẫn giữ vững các giá trị và độ tin cậy cao đối với khách hàng, và được biết đến nhiều nhất với giải pháp mã nguồn mở hàng đầu trên thế giới Redhat sử dụng

RPM (Redhat Package Management) để quản lý các gói phần mềm

2.1.1 Cấu trúc gói RPM

Để thuận tiện trong việc cài đặt và quản lý, các gói này được gán nhãn, với khả năng định danh cao Cách đặt tên tệp của một gói như sau:

name-version-release.architecture.RPM

Trang 22

-21-

Thông thường name là tên ứng dụng hoặc tên gói khi nó được cài đặt trên hệ thống Trường version định nghĩa số phiên bản của phần mềm chứa trong gói, trường

release lưu giữ ngày phát hành phiên bản phần mềm mà chứa gói tệp Trường cuối

cùng architecture xác định là kiểu kiến trúc, định danh các loại hệ thống và tệp đó

tương thích

Có hai loại gói RPM chính là RPM nhị phân (RPM binary) và RPM nguồn (RPM

source) Một gói RPM nhị phân được biên dịch riêng cho một kiến trúc đặc biệt

Phần lớn những gói RPM nhị phân chứa đựng các ứng dụng hoàn chỉnh, số còn lại

cung cấp các thư viện RPM cung cấp các thư viện cho phép nhiều ứng dụng chia sẻ các thư viện dùng chung

Trong khi đó, các gói RPM nguồn (thông thường tên tệp có phần mở rộng là

.src.RPM Các gói RPM nguồn chứa mã nguồn của chương trình và các scripts cần thiết để tạo lại các gói RPM nhị phân

Ngoài ra RPM còn có các định dạng khác như ppc.rpm (dành cho Pocket PC), và noarch.rpm (là những gói cài đặt không phụ thuộc vào kiến trúc - no architect) Tất cả các gói RPM đều có chung một cấu trúc như sau:

Hình 2-1: Cấu trúc gói RPM

2.1.1.1 Định danh gói

Phần định danh cũng được gọi là phần lead (hay rpmlead) chứa các thông tin sau:

• Magic number: Việc đầu tiên khi đọc tệp này hệ thống sẽ đọc số này và tìm

kiếm trong cơ sở dữ liệu (chứa trong /usr/share/magic hoặc /etc/magic), từ đó hệ thống sẽ phát hiện ra đây là một gói RPM

• Type Flag: Cờ này giúp hệ thống có thể xác định kiểu của gói RPM (là RPM

nhị phân hay RPM nguồn)

• Architecture flag: Cờ này sẽ được sử dụng để kiểm tra lại rằng gói RPM có theo một kiến trúc hay không

Trang 23

-22-

2.1.1.2 Phần chữ ký

Phần chữ ký là phần tiếp theo của phần định danh gói Chữ ký RPM được sử dụng

để xác nhận tính toàn vẹn của một gói, nó không kiểm tra lỗi trong các ứng dụng phần mềm mà thay vào đó nó đảm bảo rằng người sử dụng đã tải về một gói RPM hợp lệ Ở đây gói RPM sử dụng một hàm toán học để tạo, thông thường là một PGP

(Pretty Good Privacy), hay một chuỗi mã hóa MD5

phần này được nén theo chuẩn định dạng GNU gzip.Trong một tệp chứa các thông

tin về tên, quyền, mã kiểm tra, nội dung tệp v.v

Hình 2-3: Thông tin trên mỗi tệp trong gói RPM

2.1.2 Phân phối gói phần mềm RPM trên máy chủ

Trang 24

mã nguồn

Tạo cấu trúc thư mục

Hình 2-5: Cấu trúc cây thư mục để tạo tệp RPM

Trong đó:

o /usr/src/redhat/SOURCE: Chứa các tệp mã nguồn source code, các tệp patch, các tệp icon Nếu ta cài đặt một gói mã nguồn, sẽ đặt các tệp mã nguồn vào thư mục này

o /usr/src/redhat/SPECS: Chứa các tệp spec điều khiển quá trình tạo gói Khi cài một gói mã nguồn, tệp spec của gói binary cũng được sao chép vào đây

Trang 25

-24-

o /usr/src/redhat/BUILD: Thư mục diễn ra quá trình xây dựng gói

o /usr/src/redhat/RPMS: Thư mục mà các gói nhị phân được tạo ra sau quá

trình xây dựng Trong thư mục này còn có các thư mục cấp nhỏ hơn là i386, i686, noarch chứa gói ứng với từng hệ thống, kiến trúc cụ thể

o /usr/src/redhat/SRPMS: Thư mục mà các gói mã nguồn được tạo ra đặt ở đây

Tạo tệp cấu hình spec

Ðể đóng gói được một phần mềm, rpm cần đến một tệp mô tả tất cả các quá trình nó cần tiến hành, tất cả các thông tin liên quan đến phần mềm đó, tệp spec là một tệp text thông thường (tệp spec gần giống với Makefile)

Hình 2-6: Cấu trúc file spec

Trang 26

-25-

mkdir -p $RPM_BUILD_ROOT/usr/bin

mkdir -p $RPM_BUILD_ROOT/usr/man/man1

install -s -m 755 eject $RPM_BUILD_ROOT/usr/bin/eject

install -m 644 eject.1 $RPM_BUILD_ROOT/usr/man/man1/eject.1

- Sun Mar 21 1999 Cristian Gafton

- auto rebuild in the new build environment (release 3)

- Wed Feb 24 1999 Preston Brown

- Injected new description and group

Cụ thể các phần trong file spec như sau:

Copyright: Thông tin về bản quyền

Source: Là thư mục chứa mã nguồn hoặc nơi chứa mã nguồn, ở đây cũng có thể mô

tả nhiều nơi chứa mã nguồn như sau:

Source0: blah-0.tar.gz

Source1: blah-1.tar.gz

Source2: fooblah.tar.gz

Patch: nơi mô tả các gói vá (patch), các gói này phải có tên tệp chính xác sẽ được

sử dụng sau này trong quá trình vá:

Patch0: blah-0.patch

Patch1: blah-1.patch

Patch2: fooblah.patch

Các tệp này phải nằm trong thư mục mã nguồn (thư mục SOURCES)

Group: Là nhóm mà gói phần mềm thuộc trong đó

Trang 27

Macros đầu tiên là %setup nếu không có tham số thì nó đơn giản là giải nén mã nguồn và chuyển (cd) đến thư mục chứa mã nguồn %setup có một số tham số sau: Ngoài các macro này ra cũng có thể thực hiện bất kỳ lệnh nào dạng shell (sh) cho đến mục %build

o Phần install

Ở đây không có macro nhưng có thể thực hiện bất kỳ lệnh nào dạng shell để cài đặt, thường dùng lệnh make install để thực hiện phần cài đặt Cần lưu ý rằng thư mục

hiện thời phải là thư mục mã nguồn

Biến RPM_BUILD_ROOT cũng được sử dụng để quy định về thưc mục trong phần tiêu đề Buildroot

o Phần clean

Thông thường trước khi biên dịch tạo gói nên xoá bỏ các tệp xuất hiện trong quá

trình biên dịch, và macro %clean sẽ giúp thực hiện điều đó Nó cũng chứa một số

script dành cho trước và sau khi cài đặt

Trang 28

-27-

Chúng ta có thể thực hiện một số scripts trước và sau khi cài đặt hoặc gỡ bỏ các gói

nhị phân Mục đích chính là có thể chạy ldconfig sau khi cài đặt hoặc gỡ bỏ các gói

dùng các thư viện chi sẻ Bao gồm các macro sau:

%pre là macro thực hiện trước khi cài đặt (pre-install scripts)

%post là macro thực hiện sau khi cài đặt (post-install scripts)

%preun là macro thực hiện trước khi gỡ bỏ (pre-uninstall scripts)

%postun là macro thực hiện sau khi gỡ bỏ (post-uninstall scripts)

Nội dung các macro này là các lệnh shell nhưng không cần dòng #!/bin/sh ở đầu

o Phần files

Mục này liệt kê các danh sách tệp và thư mục cho gói nhị phân Thường danh sách này có thể xem ở trong phần make install Ở đây cũng có một số macro để phục vụ cho một số mục đích nào đó:

o Phần Changelog

Changelog ghi lại những cập nhật và thay đổi của gói

Định dạng khá là đơn giản, mỗi mục bắt đầu bằng một dòng có dấu '*' sau đó là ngày tháng, tên người cập nhật, địa chỉ email, theo định dạng sau:

date +"%a %b %d %Y"

Phần còn lại là text theo một trình tự nhất định nào đó, thường là các dòng có gạch đầu dòng ở đầu

• Quá trình b iên dịch

Để biên dịch gói RPM ta sử dụng câu lệnh rpmbuild, cấu trúc câu lệnh như sau:

rpmbuild -bBuildStage spec_file

Trang 29

-28-

Sau khi chạy lệnh trên, tệp mã nguồn sẽ được giải nén vào thư mục /usr/src/redhat/BUILD, với thư mục con là jikes-1.17 Tiếp tục tạo một danh sách các thư mục và các tệp đã được khai báo, và các lệnh trong trong phần %prep

Từ những mã nguồn này, có thể thấy có một đoạn cấu hình configure script, configure script này sẽ đưa ra một chỉ dẫn tốt nhất về cách thức để có biên dịch phần mềm này Ngoài ra cũng có một tệp Readme chứa những thông tin hữu ích trước khi cài đặt

Để biên dịch một RPM nhị phân, sử dụng tùy chon –bb, Ví dụ:

$ rpmbuild -bb /usr/src/redhat/SPECS/jikes.spec

Câu lệnh trên trả về nhiều tham số, hầu hết chúng đến từ doạn mã cấu hình configure scirpt Khi hoàn thành lệnh rpmbuild, sẽ có một RPM nhị phân trong một thư mục con của thư mục RPMS ví dụ thư mục i386:

Trang 30

-29-

Một số tùy chọn với câu lệnh rpmbuild:

-ba Biên dịch cả gói nhị phân và gói nguồn RPM

-bb Chỉ biên dịch gói nhị phân RPM

-bc Biên dịch chương trình nhưng không tạo ra một gói RPM đầy đủ, dừng lại

sau phần %build

-bp Chuẩn bị biên dịch một gói nhị phân RPM và dừng lại sau phần %prep -bi Tạo tệp nhị phân và dừng lại sau phần %install

-bl Kiểm tra danh sách các tệp trong gói RPM và đưa ra thông báo lỗi nếu

trong thư mục cài đặt bị thiếu tệp

-bs Chỉ biên dịch ra gói nguồn RPM

Bảng 2-1: Các tham số khi biên dịch gói RPM bằng câu lệnh rpmbuild

2.1.2.2 Quá trình phân phối

Quá trình phân phối một gói RPM được bắt đầu từ người phát triển, sau khi đã viết xong phần mềm, phần mềm được đóng gói và chuyển tới cài đặt trên máy trạm Các

gói phần mềm này có thể đến các máy trạm bằng hai phương thức là phân phối trực tuyến và phân phối không trực tuyến

• Các mô hình phân phối

o Phân phối không trực tuyến: Là cách thức phân phối các gói truyền

thống, có thể sử dụng ngay trong khi không thể kết nối thường xuyên tới kho với đường truyền Internet Người sử dụng có thể lấy các gói phần mềm

bằng các cách khác nhau sau đó cài đặt hay cập nhật trên hệ thống của họ

o Phân phối trực tuyến: Với phân phối không trực tuyến, người sử dụng

phải cài đặt một cách tương đối thủ công, một bất tiện trong quá trình cài đặt là khi thiếu một thư viện nào đó, nó không có khả năng tìm kiếm trên các “kho chứa” các gói phụ thuộc để cài đặt Với mô hình phân phối trực tuyến người sử dụng chỉ việc cung cấp địa chỉ các “kho chứa” lưu trữ gói,

hệ thống sẽ tự cài đặt gói phần mềm lên hệ thống

Mô hình phân phối trực tuyến đang phát triển mạnh và cũng là nội dung chính của

đề tài này vì vậy luận văn chỉ phân tích các thành phần trong phần phân phối trực tuyến, quá trình phần phối trực tuyến được thực hiện theo các bước như sau:

Trang 31

-30-

Hình 2-8: Các bước trong quá trình cài đặt gói RPM trực tuyến

Các thành phần trong quá trình phân phối

o Thành phần biên dịch và tạo gói RPM: Thành phần biên dịch tạo ra tệp

hai loại gói là RPM nhị phân (có phần mở rộng là rpm) và gói RPM nguồn (có phần mở rộng là src.rpm)

o Kho chứa (Repositories): Chứa các gói RPM, kho chứa phải đảm bảo

cung cấp đầy đủ thông tin về các gói, hỗ trợ kiểm tra tính phụ thuộc trên máy trạm và có khả năng điều phối nhiều máy trạm truy cập cùng một lúc

o Thành phần quản lý giao dịch: Thành phần quản lý giao dịch trên máy

trạm, được sử dụng để điều phối các giao dịch, tránh xung đột, tiếp nhận các tệp từ kho chứa

Trang 32

-31-

o Thành phần quản lý phần mềm: Thành phần quản lý phần mềm sẽ kiểm

tra, quản lý các gói phần mềm trên hệ thống và cài đặt các gói phần mềm

mới

o Giao diện quản lý phần mềm ở mức trên (GUI): Là thành phần tùy chọn

nên thường có trong các hệ thống, thành phần này có nhiều chức năng, giúp cho người sử dụng có thể có được các thông tin về các gói phần mềm trên máy cũng như các phần mềm trên các kho chứa Thành phần này giúp người sử dụng không phải sử dụng các câu lệnh dài và phức tạp trên

termial

Hình 2-9: Mô hình phân phối gói RPM

Trang 33

Thực hiện kiểm tra tính phụ thuộc: Các gói phần mềm chỉ có thể hoạt động

được khi có đầy đủ các thư viện hỗ trợ Như vậy khi cài đặt, bước đầu tiên RPM

sẽ kiểm tra trong gói mục RPM dependency requirement, để xác nhận các gói tin đó đã được cài đặt tránh trường hợp các gói cài đặt ra không thể sử dụng

được

Kiểm tra các xung đột: RPM thực hiện một số kiểm tra trong giai đoạn này,

những thao tác kiểm tra sẽ tìm kiếm bằng cách cài đặt thử các gói

Thực thi các câu lệnh có sẵn trong gói trước khi cài đặt: Trong bước này một

vài lệnh sẽ được thực thi như cấu hình lại hệ thống, cập nhật cơ sở dữ liệu, hay tạo ra các thư mục để chuẩn bị cho quá trình cài đặt Các lệnh này sẽ được đưa vào trong khi biên dịch gói tin

Thay đổi tệp cấu hình (config file): Một trong những đặc tính đã được thiết lập

cho RPM ngoài các chương trình quản lý gói là sử dụng tệp config, thay đổi tệp config sẽ làm thay đổi hành vi của các phần mềm đã được cài đặt, đơn giản như việc ghi đè tệp config sẽ làm mất các thiết lập cũ của người sử dụng

• M ởi gói (unpack) các tệp vào các thư mục tương ứng: Trong một gói chứa

một danh sách các tệp sẽ được cài đặt và đường dẫn, RPM sẽ mở các tệp này

Trang 34

-33-

vào các thư mục tương ứng Thêm vào đó một số thuộc tính tệp như quyền sẽ

được RPM thiết lập trong bước này

Thực thi các câu lệnh cần thiết sau khi cài đặt: Sau khi một gói mới được cài

đặt, một số tác vụ cần được thực thi, ví dụ như có thể chạy lệnh ldconfig để chia

sẻ truy cập các thư viện, các lệnh này sẽ được đưa vào trong khi biên dịch, và người cài đặt có thể tùy chọn thực thi hay không

Sao lưu các thông tin cần thiết: Mỗi một gói mới được cài đặt trên hệ thống,

các vết cài đặt sẽ được lưu lại trong cơ sở dữ liệu (database) Cơ sở dữ liệu sẽ chứa những thông tin cần thiết để kiểm tra sự xung đột trong quá trình cài đặt Các tham số khi cài đặt với RPM –i

Tham số 1 Tham số 2 Ý nghĩa

-i Cài đặt gói sử dung RPM

-ih Hiện thêm thông tin về tiến độ cài đặt

-ivv Xem thêm thông tin

-iv Hiển thị thông tin trạng thái cài đặt

test Chỉ cài đặt thử replacepkgs Cài đặt gói ngay cả khi gói đó đã được cài replace files Cài đặt gói ngay cả khi nó thay thế các tệp tin của

các gói khác Nodeps Không kiểm tra tính phụ thuộc khi cài đặt force Cài đặt ép

excludedocs Không cài tài liệu includedocs Cài đặt bao gồm cả tài liệu prefix <path> Định vị lại các gói đến đường dẫn <path>

noscripts Không thực thi các kịch bản trước và sau khi cài đặt percent Hiển thị phần trăm cài đặt

dbpath <path> Xác định đường dẫn tới cơ sở dữ liệu RPM

Trang 35

-34-

ftpport Xác định cổng ftp khi dowload sử dụng ftp URL ignoreach Không kiểm tra kiến trúc của gói có phù hợp với hệ

thống ignoreos Không xác nhận các gói hoạt động

Bảng 2-2: Bảng tham số khi cài đặt gói RPM sử dụng câu lệnh RPM -i

2.1.3.2 Gỡ bỏ gói

Khi gỡ bỏ một gói phần mềm, trên hệ thống sẽ thực hiện tuần tự các bước sau đây:

Hình 2-11: Các bước để xóa một gói RPM đã cài đặt

Các bước thực hiện:

Kiểm tra cơ sở dữ liệu: RPM sẽ kiểm tra cơ sở dữ liệu để chắc chắn rằng

không có một gói nào liên quan hoặc phụ thuộc vào gói bị xóa

Thực thi các lệnh cần thiết trước khi gỡ gói: Trong bước này một vài lệnh sẽ

được thực thi, các lệnh này được đóng gói cùng với gói phần mềm

Kiểm tra tệp cấu hình: Hệ thống sẽ thực hiện kiểm tra lại tệp cấu hình, nếu có

sự thay đổi nó sẽ được lưu lại vì có thể được sử dụng trong lần cài đặt sau

• Xóa các tệp đã cài đặt: Thực hiện xóa các tệp trong danh sách tệp, trước khi

xóa RPM sẽ kiểm tra và chỉ thực hiện xóa khi tệp đó không thuộc về sử dụng một gói khác

Thực hiện các lệnh sau khi gỡ gói: Trong bước này một vài lệnh sẽ được thực

thi, các lệnh này được đóng gói cùng với gói phần mềm

• Xóa các thông tin liên quan trong cơ sở dữ liệu: Trong bước này hệ thống sẽ

thực hiện xóa bỏ hoàn toàn các vết lưu trữ về gói tin đó trong cơ sở dữ liệu

Trang 36

-35-

Các tham số khi cài gỡ bỏ gói với RPM –e

Tham số 1 Tham số 2 Ý nghĩa

-e Gỡ bỏ gói phần mềm

vv Nhận thêm thông tin Nodeps Không kiểm tra các tính phụ thuộc noscripts Không thực thi các kịch bản trước và sau khi

cài đặt test Chỉ xóa thử

Bảng 2-3: Bảng tham số khi gỡ bỏ gói RPM sử dụng câu lệnh RPM -e

lý khác nhau dựa vào thông tin được cung cấp, đó là MD5 checksums (Message

Digest Algorithm 5 checksums) Một MD5 checksums có thể tạo kèm theo tệp, tương tự như CRC32, có thể kiểm tra đúng theo từng Bit của mỗi một tệp mà mình tạo ra, nếu như tệp đó bị thay đổi, thì checksum sẽ cho chúng ta biết tệp này không còn là tệp gốc nữa, mà đã bị sửa đổi Tùy theo việc kiểm tra Checksum mà hệ thống

sẽ đưa ra các quyết định khác nhau

Các tham số khi cài đặt với RPM –u

Tham số 1 Tham số 2 Ý nghĩa

-ivv Nhận thêm thông tin

-ih Hiển thị quá trình nâng cấp

-iv Hiển thị một dòng trạng thái đơn

includedocs Cài đặt tài liệu test Chỉ nâng cấp thử

Trang 37

-36-

oldpackage Cấm “việc nâng cấp” từ một gói cũ hơn ignoreach Không xác nhận cấu trúc các gói

force Nâng cấp ép replacepkgs Cài đặt gói ngay cả khi gói đó đã cài đặt excludedocs Không cài tài liệu

noscripts Không thực thi các kịch bản trước và sau khi nâng

cấp replacefiles Nâng cấp gói ngay cả trong khi nó thay thế các

tệp cài đặt của các gói percent Hiển thị phần trăm đã nâng cấp ignoreos Không xác nhận các gói hoạt động ftpport Cổng ftp khi dowload sử dụng ftp URL dbpath <path> Dùng đường dẫn<path> để tìm cơ sở dữ liệu RPM prefix <path> Định vị lại đường dẫn cài đặt

Nodeps Không kiểm tra tính phụ thuộc trước khi cài các

chưa cài đặt Nếu tất cả các thao tác thành công, hệ thống sẽ có một trạng thái mới Mỗi khi cài đặt hoặc gỡ bỏ các gói, hệ thống RPM sẽ định ra một giao dịch ID cho tập các gói, từ đó có thể thực hiện khôi phục lại giao dịch trên các gói có cùng một giao dịch ID

Hệ thống RPM thực hiện lưu lại “hình ảnh” của RPM header cho mỗi gói đã được cài đặt hoặc gỡ bỏ Sử dụng những hình ảnh này cộng với ID của giao dịch, người

sử dụng có thể hủy bỏ một giao dịch sai khi cài đặt

Trang 38

-37-

Với RPM, hủy bỏ một giao dịch bao gồm hai thao tác: khôi phục giao dịch và cài đặt lại nguyên bản các gói để khôi phục lại trạng thái trước đây của hệ thống Trong trường hợp đơn giản nhất là sử dụng câu lệnh, khi việc cài đặt gói bị lỗi, rpm sẽ tự khôi phục lại trạng thái của hệ thống Khả năng tự động hỗ trợ cho các giao dịch rất thuận tiện cho người quản trị hệ thống, tuy nhiên nó chỉ hoạt động tự động trong lần cài đặt, cập nhật và hủy bỏ đầu tiên, trong những lần sau cần sử dụng với tùy chọn rollback

• Transaction IDs

Khi giao dịch trong mỗi giao dịch RPM sử dụng Giao dịch ID (Transaction ID) Một giao dịch ID là một số nguyên, chính là số Unix timestamp (là số giây tính từ ngày1/1/1970) Từ giao dịch ID, chúng ta có thể thực hiện một số thao tác trên các gói Giao dịch ID không phải được gán cố định mà có thể thay đổi được, như vậy tất

cả các gói được cài đặt trong cùng một thời điểm sẽ có cùng một số giao dịch ID Điều đó có nghĩa là chúng ta có thể thực hiện các thao tác trên tập các gói, đây là những gói được cài đặt cùng nhau

Tuy nhiên đây cũng là điểm bất lợi, khi tất cả các gói được cài đặt trong lần đầu tiên, hoặc khi nâng cấp hệ điều hành sẽ có cùng một số giao dịch ID, như vậy sẽ không thể lựa chọn một vài trong số những gói đó bằng cách sử dụng số giao dịch

ID

Trên máy trạm để biết số giao dịch ID, có thể sử dụng câu lệnh như sau:

$ rpm -q qf "%-20{NAME} %-20{INSTALLTID}\n" jikes

Trang 39

-38-

Tùy chọn rollback rất hạn chế, nó chỉ làm việc cho những gói đã được nâng cấp

mà không thể khôi phục những gói được cài đặt mới, điều này không cho phép khôi phục lại tất cả các gói Tuy nhiên trước khi rollback cần dự phòng lại cơ sở dữ liệu

Sao lưu các gói cũ

Khi cài đặt, hủy bỏ hoặc cập nhật, có thể sử dụng tùy chọn repackage để lưu lại các phiên bản của các gói cũ vào một tệp dự phòng(backup) Những gói backup cũng chình là một gói RPM, như vậy có thể sử dụng câu lệnh rpmbuild để biên dịch lại gói này Điều này rất hữu dụng để khôi phục lại khi gói cập nhật mới hơn có lỗi,

và người sử dụng muốn quay lại phiên bản trước Khi sử dụng câu lệnh rpm với tùy chọn trên, hệ thống sẽ tạo một gói cũ và đặt chúng vào trong thư mục /var/spool/repackage, đôi khi nó cũng được đặt vào thư mục /var/spool/up2date hoặc /var/tmp

Khi đó phiên bản cập nhật sẽ thay thế cho phiên bản cũ, và gói cũ sẽ được lưu vào rong thư mục /var/spool/repackage

Repackaged RPM chứa một bản sao của gói tệp chứ không phải gói cài đặt ban đầu, tuy nhiên gói này vẫn có thể được cài đặt lại bằng cách sử dụng câu lệnh rpmbuild

2.1.3.5 Kiểm tra tính phụ thuộc

Một số gói chỉ có thể hoạt động khi đã có sẵn một số yếu tố khác ví dụ các ứng dụng sẽ phụ thuộc vào thư viện lập trình C, ứng dụng mạng phụ thuộc vào thư viện mạng mức thấp Những phụ thuộc này rất quan trọng ví dụ mỗi khi một lỗi bảo mật được sửa trên thư viện mạng này, phần mềm sử dụng nó cũng sẽ được cập nhật, mặt khác chia sẻ thư viện cũng đồng nghĩa với việc mỗi một phần mềm sẽ có ít mã nguồn hơn và điều này thuận lợi trong việc phát triển và chia sẻ ứng dụng

Sử dụng rpm –q để truy vấn trong RPM database hoặc gói RPM, với truy vấn này

có thể kiểm tra bốn loại phụ thuộc dependency:

• Những gì một gói đó cần để hoạt động

• Những gì mà gói đó cung cấp

• Gói đó không cần sử dụng và có thể gây xung đột với các gói khác

Trang 40

-39-

• Ngoài ra nó có thể truy vấn những gói nào đang sử dụng thư viện do nó cung cấp

Xác định những phụ thuộc mà gói cần để hoạt động

Bước đầu tiên và quan trọng nhất là xác định các những khả năng mà một gói cần:

Sử dụng tùy chọn requires để hiển thị danh sách những thư viện mà một gói đó cần

rpm –q query_options requires packages

Ngày đăng: 12/02/2021, 16:23

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w