Các tiện ích gói của Slackware

Slackware Linux là phân phối có tuổi thọ lâu đời nhất của Linux. Cuối năm ngoái, dự án này đã đánh dấu 13 năm phát triển không ngừng với sự ra đời của phiên bản Slackware 11.0. Phân phối này nổi tiếng với sự gọn nhẹ, không rườm rà, phương thức tùy biến tối thiểu hóa cho các ứng dụng như KDE. Nó cũng nổi tiếng với sự miễn cưỡng chuyển đổi sang phiên bản mới của một số ứng dụng phổ biến như Apache hay GCC. Tất nhiên, cũng có một số thay đổi nhỏ trong gói hệ thống quản lý, nhưng các thay đổi không đáng kể.

Một gói Slackware được nén tarball theo kiểu: tên phiên bản - cấu trúc - số lần phát hành lại.tgz, ví dụ php-5.1.6-i486-2.tgz. Khi bạn giải nén và lấy phần nội dung bên trong tarball bằng lệnh tar -xvf php-5.1.6-i486-2.tgz, bạn sẽ thấy có 3 thư mục: etc, usr và install. Thư mục install thực chất được dùng để giúp Slackware đồng hóa nội dung của thư mục đã giải nén etc và usr vào các thư mục /etc và /usr nằm dưới thư mục gốc.

Quá trình cài đặt trên Slackware nghe có vẻ khá đơn giản và dễ hiểu, nhưng thực tế không hẳn vậy. Vấn đề không nằm ở chỗ các ứng dụng độc lập trong cài đặt. Nhưng khi chương trình ứng dụng cài đặt phụ thuộc vào chương trình và thư viện khác, công cụ quản lý gói Slackware lại hoàn toàn thất bại.

Không giống như các gói được xây dựng theo các giải pháp kiểu lưu trữ như apt-get của Debian hay yum của Fedora, các gói Slackware không được thiết kế nhận thức về sự phụ thuộc và người dùng Slackware cốt cán cũng không có cách nào khác. Các lệ thuộc cài đặt theo kiểu “thủ công” có cải tiến. Nó cho phép quản trị viên để lại khả năng điều khiển thư viện và chương trình cài đặt trên hệ thống.

Là một trong các phân phối lâu đời nhất với những cải tiến của nó, Slackware có lẽ là tập hợp lớn nhất các công cụ quản lý gói. Chúng ta cùng xem xem chúng có những gì.

Các công cụ gói “lâu đời”

Slackware có một nhóm các công cụ đóng gói cũng có tuổi thọ lâu đời như phân phối chúng hỗ trợ. Đầu tiên phải kể đến tiện ích pkgtool mạng lại giao diện định hướng theo kiểu menu ncures. Với công cụ này bạn có thể cài đặt các gói từ thư mục hiện tại hoặc từ thư mục khác. Công cụ này có thể sử dụng cho tất cả các ứng dụng đã cài đặt và có thể được dùng để loại bỏ một số trong chúng. Bạn có thể xem phần tóm tắt chính của một ứng dụng và danh sách hoàn chỉnh các file bên trong bất kỳ ứng dụng đã cài đặt nào.

Ngoài pkgtool, Slackware còn có một số công cụ hỗ trợ cài đặt, gỡ bỏ và nâng cấp các gói. Các tiện ích installpkg, removepkg, và upgradepkg đều sử dụng tên của ứng dụng như một tham số để lần lượt cài đặt, loại bỏ hoặc nâng cấp chúng.

Bạn có thể dùng tùy chọn -warn trong các lệnh installpkg và removepkg. Thay vì cài đặt ứng dụng, tùy chọn này chuyển sang việc đưa ra một danh sách các file và thư mục sẽ bị ghi đè hoặc loại bỏ nếu bạn cài đặt một gói riêng.

Bạn muốn biết gói nào sẽ được cài đặt trước khi sử dụng trigger (ràng buộc)? Hãy dùng lệnh explodepkg để giải nén tarball vào thư mục hiện tại và xem nội dung của nó.

Cài đặt các gói không phải là slackware

Cho dù tuổi thọ của Slackware khá nổi tiếng nhưng nhiều nhà phát triển ứng dụng không muốn dùng gói Slackware. Trong trường hợp này bạn có hai sự lựa chọn, hoặc là xây dựng ứng dụng dựa trên nguồn, hoặc là dùng gói RPM của nó nếu có thể. Muốn dùng gói RPM, đầu tiên nó phải được chuyển đổi sang kiểu định dạng gói của Slackware. Bạn có thể dùng công cụ rpm2targz và rpm2tgz để thực hiện điều đó. Tôi đã chuyển đổi thành công RPM của một số ứng dụng đơn giản như Joe Text Editor, into tgz và cài đặt, gỡ bỏ chúng mà không gặp phải vấn đề gì.

Nếu bạn quyết định cài đặt từ nguồn bạn sẽ cần thực hiện qua công cụ CheckInstall. Bản thân công cụ này được xem như một gói Slackware có thể cài đặt một cách dễ dàng. Cài đặt ứng dụng từ nguồn bằng cách chạy lệnh ./configure, make and make install để cấu hình, biên dịch và cài đặt ứng dụng.

CheckInstall sẽ kiểm tra trước thi cài đặt và tìm hiểu mọi thứ trong ứng dụng mới sẽ được bổ sung vào hệ thống. Sau đó, một cách đơn giản, nó tạo gói Slackware.

Các công cụ trên nền tảng lưu trữ

Hạn chế lớn nhất của tiện ích pkgtool trong Slackware là nó chỉ có thể cài đặt các gói một cách cục bộ trên máy. Công cụ Slackpkg khắc phục được điều đó. Slackpkg được tạo ra cho các gói cài đặt hoặc nâng cấp qua mạng. Nó làm việc dựa trên nguyên tắc lưu trữ trực tuyến, rất giống với APT của Debian. Công cụ này sử dụng thông tin gói từ một trong các phiên bản Slackware chính thức. Bạn có thể dùng thông tin này để tìm kiếm gói hoặc tự động download và cài đặt chúng.

Slackpkg không được cài đặt mặc định, nhưng có trong thư mục extras/ trên đĩa CD-ROM Slackware thứ hai và có thể được cài dễ dàng bằng installpkg. Trước khi sử dụng nó, bạn cần chỉnh sửa file /etc/slackpkg/mirrors, chọn một nhân bản theo vị trí khu vực tương ứng của nó.

Sau khi chọn một nhân bản, lệnh slackpkg update sẽ download một số file quan trọng trên nhân bản đó như khóa GPG, giúp kiểm chứng tính chất xác thực của các gói. Sau khi công cụ được tự động update, nó có thể được dùng để quản lý các gói. Khi một gói được lấy ra từ kho lưu trữ trực tuyến, trong nền sau (background), Slackpkg sẽ dùng tiện ích installpkg của Slackware để cài đặt chúng, cùng với removepkg và upgradepkg để loại bỏ và cài đặt các bản update.

Công cụ này đặt Slackware ngang tầm với các phân phối hiện đại khác, có thể được cài đặt và update hoàn toàn qua mạng. Nhưng vẫn có một số góc cạnh cần phải xem xét. Thành phần tìm kiếm của công cụ này đôi khi trả về các kết quả lạ.

Các công cụ xử lý phụ thuộc

Tất cả các công cụ chúng ta đề cập đến cho tới giờ vẫn chưa có công cụ nào xử lý được các phụ thuộc. Đây là một ngã rẽ lớn đối với nhiều người dùng máy tính để bàn. Chỉ phàn nàn về các công cụ là chưa thích hợp lắm. Như trước tôi đã nói, bản thân kiểu định dạng gói của Slackware không được tạo ra để nhận thức về vấn đề phụ thuộc. Từ đó, một số người dùng Slackware đã thiết kế kiểu định dạng mới, gọi là Extended TGZ. Gói trong kiểu định dạng Extended TGZ chứa thông tin về các phụ thuộc của gói.

Các gói Slackware thuộc nhóm thứ ba nhận thức về các phụ thuộc được quản lý và duy trì trên LinuxPackages.net và Slacky.it. Các tài nguyên này được phát triển với một số cộng đồng hoạt động tích cực. Giữa họ, bạn sẽ tìm thấy một số phiên bản mới nhất của hầu hết các ứng dụng bạn cần.

Bản thân các gói không thể xử lý được phụ thuộc mà cần đến hoặc là pkgtool, hoặc slackpkg của Slackware. Chúng mở đường cho các công cụ Swaret và Slapt-get.

Swaret là ứng dụng quản lý gói Slackware phổ biến nhất. Giống như Slackpkg, nó được thiết kế để cài đặt, nâng cấp các gói qua mạng Internet và có thể thu lấy chúng từ kho lưu trữ chính thức. Ngoài ra, với Swaret bạn có thể có được các gói ở nơi lưu trữ thuộc nhóm thứ ba như LinuxPackages.NET. Swaret có thể cài đặt các thư viện thiếu ứng dụng phụ thuộc vào.

Sau khi lấy ra và cài đặt TGZ của Swaret, đặt lại tên cho file cấu hình mẫu của nó thành /etc/swaret.conf và chỉnh sửa để chọn các nhân bản, tùy chọn khác như lưu trữ cục bộ tgz. Không nâng cấp như công cụ upgradepkg tool, Swaret có thể sao lưu một gói sẽ nâng cấp và trở lại phiên bản cũ của nó. Bạn có thể tạo script (kịch bản) cho Swaret để tự động update phân phối Slackware khi phiên bản mới được phát hành.

Nếu muốn xử lý vấn đề phụ thuộc thực sự, không có công cụ nào tốt hơn slapt-get. Nó làm việc với đa kho lưu trữ, có thể xử lý cả thư viện và các phụ thuộc ứng dụng. Tôi thích slapt-get hơn swaret, vì nó có tất cả thành phần của swaret với một số tùy chọn tương tự như apt-get, thậm chí còn có thể tạo kịch bản. Giống như slackpkg, slapt-get sử dụng công cụ quản lý gói tự nhiên của Slackware, installpkg, removepkg, và upgradepkg để quản lý các gói. Slapt-get cũng có nhiều tài liệu tham khảo liên quan đến cách dùng cho người sử dụng.

Portage cho Slackware

Phân phối Linux Gentoo nổi tiếng với hệ thống quản lý gói Portage. Portage là một tập hợp các script xây dựng do tiện ích nổi trội của Gentoo sử dụng để cấu hình, biên dịch và cài đặt gói. Hệ thống cũng cung cấp giải pháp phụ thuộc. Nếu bạn muốn có một hệ thống tương tự như Portage trên Slackware, có hai lựa chọn: Emerde và Portpkg.

Emerde đồng bộ với cây Portage của Gentoo, có thể download các script xây dựng cần thiết và cài đặt chúng trên Slackware. Emerde vẫn đang ở phiên bản thử nghiệm beta và các nhà phát triển khuyên nên cài đặt nó trên phần cài Slackware minimalistic để tránh xung đột giữa các gói. Ứng dụng này có thể dùng để cài các gói Slackware một cách trực tiếp.

Phương thức khác đem lại chức năng tựa portage cho Slackware là Portpkg. Thay vì dùng portage của Gentoo, Portpkg sử dụng file xây dựng riêng của Slackware, SlackBuild. Portpkg được xây dựng từ nền tảng ban đầu để phù hợp với Slackware và có thể dùng cùng Swaret, Slapt-get để update hệ thống mà không gây bất kỳ xung đột gói nào.

Giữa hai hệ thống, Portpkg thoải mái hơn cho người dùng mới vì nó sử dụng tương tự như công cụ installpkg của Slackware. Từ khi Emerger đồng bộ với các kho lưu trữ trực tuyến, người dùng có đường truyền kết nối Internet chậm sẽ không thể dùng được. Và cũng đừng hy vọng Portpkg có các gói xây dựng cho mọi ứng dụng bên ngoài.

Kết luận

Slackware được thiết kế cho người dùng muốn điều khiển hoàn toàn hệ thống của mình. Họ thích thú và tín nhiệm hệ thống quản lý gói của Slackware và không dùng hệ thống nào khác. Tuy nhiên, có một nhóm người dùng bị gây hư hại bằng các hệ thống cài đặt one-click của một số phân phối mới hơn và sai lầm hoặc thiếu hiểu biết về giải pháp phụ thuộc của Slackware.

Patrick Volkerding, người đồng sáng lập và cũng là người bảo dưỡng, nhà phát triển của Slackware tin rằng việc tạo một số phương án dự phòng để tự động xử lý vấn đề phụ thuộc là cần thiết. Các ứng dụng như Swaret và slapt-get thực hiện được điều đó. Mặt khác, bằng cách chấp nhận các phương thức cài đặt dựa trên nguồn từ phân phối khác, từ các công cụ sắp ra mắt chính thức như Emerde, Portpkg việc làm hài lòng cả người dùng cũ và mới sẽ không còn khó khăn.

Thứ Bảy, 24/02/2007 10:43
31 👨 1.996
0 Bình luận
Sắp xếp theo