[Phần 1] Tản mạn về một số bản phân phối Linux

 

Ở phần trước, khi giới thiệu về Linux và các bản phân phối, mình đã đề cập đến rất nhiều bản phân phối và tại sao bạn cần phải quan tâm đến chúng. Hôm nay, mình sẽ giới thiệu kĩ hơn về một số trong các bản phân phối đó (những cái mà mình đã từng dùng qua) và tính phù hợp của nó với công việc của chúng ta. Nhân tiện nói luôn, bài viết hướng đến người mới, người tò mò hoặc có hứng thú với Linux. Nếu bạn là một lập trình viên lâu năm, quen thuộc với Linux và các bản phân phối thì hẳn bạn đã biết bạn cần dùng gì cho công việc. Mình cũng không hứng thú với việc gây chiến với các hệ điều hành khác hay quảng cáo cho đơn vị nào trong bài viết này.

alt text# Ubuntu

Ubuntu là một hệ điều hành mã nguồn mở xây dựng xung quanh nhân Linux, được cộng đồng cùng phát triển. Bản phát hành đầu tiên của Ubuntu là vào 20 tháng 10 năm 2004, bắt đầu bằng việc tạo ra một nhánh tạm thời của dự án Debian Linux. Trong quá trình phát triển, dự án Ubuntu đã cho ra đời nhiều phiên bản khác nhau của Ubuntu, như Ubuntu Desktop cho máy tính để bàn, Ubuntu Server cho các máy chủ. Ubuntu được tài trợ bởi Canonical Ltd, là phần mềm mã nguồn mở tự do, có nghĩa là người dùng được tự do chạy, sao chép, phân phối, nghiên cứu, thay đổi và cải tiến phần mềm theo điều khoản của giấy phép GNU GPL. Bằng việc để cho Ubuntu tự do và mở mã nguồn, Canonical có thể tận dụng tài năng của những nhà phát triển ở bên ngoài trong các thành phần cấu tạo của Ubuntu mà không cần phải tự mình phát triển.

alt text

Nếu các bạn từ nền tảng khác chuyển đến hoặc chưa làm quen với máy tính chạy các hệ điều hành Linux bao giờ thì Ubuntu là lựa chọn an toàn cho các bạn. Đơn giản, dễ dùng và hiện là một trong những bản phân phối đông người dùng nhất trong giới các hệ điều hành nhân Linux, Ubuntu chắc chắn sẽ là bước đệm đầu tiên vững chắc trên con đường làm quen với Linux.

alt text

Trong ubuntu, bạn có một giao diện người dùng thân thiện. Thời gian đầu, nếu chúng ta chưa quen hoặc đang khám phá giao diện command line (vốn là một trong những công cụ mạnh và hữu ích cho lập trình viên) thì một giao diện người dùng sẽ giúp chúng ta khá nhiều. Bên cạnh đó, Ubuntu còn hoạt động rất ổn định. Kho tàng ứng dụng phong phú sẽ giúp quá trình chuyển đổi từ các nền tảng khác sang Linux nhẹ nhàng hơn. Hiện nay có nhiều bản phân phối Linux và mỗi bản phân phối lại sử dụng một package manager khác nhau.

alt text

Một package manager (dịch nôm na là hệ thống quản lí gói) của một hệ điều hành là một tập hợp những phần mềm để tự động hóa quá trình cài đặt, nâng cấp, tinh chỉnh hoặc tháo dỡ phần mềm trên máy tính. Package manager sẽ làm việc với các package, có thể gọi là những gói và trong mỗi gói lại chứa thông tin về một phần mềm, như tên, số phiên bản, tên nhà phát triển… Package manager được sinh ra để bỏ bớt gánh nặng phải cài đặt hay quản lí các phần mềm bằng tay.

Nói định nghĩa thì nghe có vẻ rất khó hiểu. Nhưng bạn cứ liên tưởng một package manager giống kiểu một cái siêu thị. Bạn ưng gì thì tới đó mua, ở đó người ta bán hàng ngàn hàng triệu thứ. Thậm chí thời hiện đại click vài cái là người ta còn chuyển tới nhà cho bạn, không ưng thì trả. Nếu không có cái siêu thị thì bạn phải đi tìm cơ sở sản xuất mà mua từ đó, rất cực phải không?

alt text

Một trong những cái lợi khác của package manager là giúp giải quyết dependecy hell. Ví dụ ứng dụng X cần thư viện A phiên bản 1.0 là đủ, ứng dụng Y cũng cần thư viện đó nhưng phải là những thứ mới từ phiên bản 2.0.
Mà các hệ điều hành hiện đại thường dùng các phương thức liên kết thư viện chung động (dynamic shared library linking, hay trên windows là những file có đuôi .dll ấy). Để hiểu đơn giản thì mình có ứng dụng làm toán tính giai thừa. Thay vì code của mình phải bưng hết cả cái thư viện toán học vào rồi gói nó lại để đưa tới người dùng, thì dynamic shared library sẽ cho phép mình gọi thư viện đó từ hệ điều hành lúc chạy. Như vậy cái gói của mình chẳng phải bao gồm cái thư viện nào cả.

Ok giờ thì vấn đề bắt đầu thì ứng dụng X cần thư viện A phiên bản 1.0 nên hệ điều hành sẽ dùng cái thư viện A bản 1.0. Cái lúc có ứng dụng Y thì thư viện A bản 2.0 sẽ dc xài và lúc này quay trở lại xài ứng dụng X thì sẽ bị lỗi không tương thích thư viện. Ở đây mình ví dụ 1 vấn đề như thế.

alt text

Package manager thông minh sẽ giải quyết vấn đề này bằng smart upgrade (nâng cấp thông minh) hoặc tích hợp repository-based package management system (hệ thống quản lý theo kho). Để cho dễ hiểu thì mình lại dùng ví dụ siêu thị như là mọt package manager. Bạn bán há cảo, tui bán kem. Bạn yêu cầu tủ lạnh 16 độ C. Tui cần nhiệt độ thấp hơn bạn để bảo quản nên yêu cầu của tui là một cái tủ lạnh 0 độ C. Nhưng vào siêu thị thì không có chuyện mỗi đứa một tủ lạnh. Thay vào đó, siêu thị sẽ tìm kiếm hệ thống các tủ lạnh sẵn có trong kho của mình và phát hiện ra phiên bản tủ lạnh nào đó dùng chung mà hai đứa không chết, nó sẽ lôi ra chứa cả hai.



Nếu bạn chịu theo dõi đến đây thì mình khá phục bạn vì nãy giờ mình tổ lái hơi nhiều. Nhưng đó là chủ ý đấy. Biết gì không? Một trong những cái hay khi dùng Linux đó là bạn được đụng tới những khái niệm như thế này để mà tìm hiểu. Và biết gì nữa không? Mình nghĩ kiến thức này không chỉ hạn hẹp áp dụng cho Linux. Sau này mình gặp package manager trong nhiều ngôn ngữ lập trình. Ví dụ npm , pip, …

alt text

Trở lại với Ubuntu, mình chỉ định nói Ubuntu sử dụng một package manager có tên là Apt. Chống lưng cho Apt là hệ thống quản lý theo kho dpkg và một gói của dpkg lại có đuôi là .deb . Nếu gói trên windows có .exe hay .msi thì trên linux có .đủ thứ, trong đó thằng .deb là thuộc loại phổ biến nhất. Nói chung là xài Ubuntu thì có nhiều ứng dụng để xài trong siêu thị, không phải lo thiếu đói hay đi tìm trực tiếp thằng bán mà mua. Và theo chiều hướng đó, nếu bạn là dev thì công cụ bạn xài cũng không lo thiếu.

Hơn nữa Ubuntu có tính ổn định vừa. Ổn định có hai kiểu. Một kiểu là ổn định vừa và một kiểu là ổn định cũ. Ở trong thực tế nếu bạn đi bơi mặc đồ bơi một mảnh thì bạn thuộc kiểu ổn định cũ. Người khác đi bơi dùng đồ bơi hai mảnh thì người ta thuộc dạng ổn định mới. Lại có những người thích dùng loại đồ bơi tua rua, băng keo hoặc dây nhợ quấn quấn … làm đồ bơi thì người ta thuộc dạng cách tân, nhưng chưa chắc mấy cái đó hoạt động ổn định. Ở trong ubuntu, cài xong là xài ngay thôi, ít phải lo nghĩ, tinh chỉnh quá nhiều, để thời gian đó mà code. Thêm vào đó, ổn định cũng đụng tới phần cứng khi mà Ubuntu hỗ trợ cả một vùng trời các loại phần cứng.

alt text

Ubuntu được nuôi bởi Canonical. Thay vì bán Ubuntu, Canonical tạo ra doanh thu bằng cách bán hỗ trợ kĩ thuật. Công ty này có thể nghe lạ với nhiều người nhưng đây là một trong những công ty bắt nguồn từ Open Source mà lại có những thành công nhất định. Tầm nhìn và chiến lược của một công ty cũng rõ ràng. Không có gì lo hơn đang dùng một sản phẩm, một phần mềm mà ngày mai mở mắt ra dev team của sản phẩm đó thông báo không hỗ trợ nữa, bởi vì lí do gì đó. Với một công ty cầm đầu thì vấn đề này cũng đỡ lo hơn rất nhiều. Các bản Long Term Support của Ubuntu hỗ trợ lâu dài tới tận 4 5 năm.

alt text

Thực ra xung quanh Ubuntu là cả một hệ sinh thái. Dựa trên nền Ubuntu người ta đẻ ra nhiều hệ điều hành khác chia sẻ chung nhân với nó như Linux Mint, Xubuntu, Kubuntu, Elementary… (hi vọng mình sẽ có cơ hội tản mạn về những thứ này lần sau). Bởi vì chi phí, công sức xây dựng từ gốc lên là quá sức đối với các nhóm nhỏ nên người ta mượn cái nhân ổn định của Ubuntu để tạo ra các bản phân phối khác. Quen với ubuntu rồi, sau này thích đổi gió, thích khám phá hoặc vì một lí do nào đó mà cần một lựa chọn khác thì đường đi của bạn cũng rộng hơn. Vẻ đẹp của sự tự do là đây.

alt text

Một điểm cộng khác là Ubuntu xài ngon trên cloud. Trong cuộc đời của nhiều dev thì chắc chắn sẽ có lúc bạn sẽ phải deploy thứ gì đó, đụng tới server, dùng một IaaS provider,… Bạn làm quen tốt với Ubuntu từ những ngày đầu thì sau này bạn sẽ thấy nhiều thứ quen thuộc.

Cộng đồng support của Ubuntu rất mạnh. Gần như chưa bao giờ mình không tìm được một thắc mắc nào đó về Ubuntu trên askubuntu.com hay các forum có liên quan đến Ubuntu. Cộng đồng ở đây quy tụ nhiều người với hiểu biết lớn nhỏ khác nhau nhưng có cùng chung niềm tin yêu vào phần mềm mã nguồn mỡ, biết thông cảm sẻ chia với những hạn chế hiện tại và ham học hỏi tìm hiểu. Chứ không phải quy tụ lại share key, share crack, chỉ tips tào lao…. Dù chỉ là người dùng thường nhưng dev nhiều khi cũng phải phục họ.

alt text

Nói mặt tốt thì cũng nói mặt xấu. Một số nhược điểm của các bản phân phối nhân Linux nói chung thì phần trước đã nói rồi phần này không nói nữa. Nhược điểm thứ nhất Ubuntu cũng thuộc dạng vừa chứ không phải nhẹ nên một số người sẽ không chạy mượt được Ubuntu. Nhược điểm thứ hai đó là hệ điều hành này có một vài thứ không cần thiết, nên người nào khi đã ý thức được mình cần gì không cần gì sẽ ghét một vài chỗ của nó. Hệ thống vẫn cho tinh chỉnh ít quá…. Đó là một vài cái mình có thể nghĩ.

Bài viết tới đây cũng dài nên mình sẽ tách ra nhiều phần. Phần tới sẽ nói về các bản phân phối khác. Cám ơn các bạn đã theo dõi. Mọi ý kiến đóng góp câu hỏi đều được lắng nghe trong phần comment.

Advertisements

Leave a Reply

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

WordPress.com Logo

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

Twitter picture

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

Facebook photo

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

Google+ photo

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

Connecting to %s

Powered by WordPress.com.

Up ↑

%d bloggers like this: