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á
Trang 1BỘ 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 11Phầ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
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…
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 18hệ 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
Để 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
Trang 24mã 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 27Macros đầ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 build
Có thể liệt kê các lệnh ở đây để biên dịch mã nguồn sau khi đã giải nén và chuyển thư mục hiện thời tới thư mục mã nguồn
%build
./configure CXXFLAGS=-O3 prefix=$RPM_BUILD_ROOT/usr make
Những câu lệnh trên trong phần biên dịch sẽ chạy đoạn mã cấu hình để biên dịch, thay vì người sử dụng phải chạy lệnh này, sau đó sẽ chạy lệnh make
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
-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
sẽ đưa ra các quyết định khác nhau
Các tham số khi cài đặt với RPM –u
-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