1.2 Bài 1
Chứng chỉ: |
Linux Essentials |
---|---|
Phiên bản: |
1.6 |
Chủ đề: |
1 Cộng đồng Linux và Sự nghiệp trong lĩnh vực Mã nguồn mở |
Mục tiêu: |
1.2 Các ứng dụng chính của Mã nguồn mở |
Bài: |
1 trên 1 |
Giới thiệu
Ứng dụng là một chương trình máy tính có mục đích không trực tiếp liên quan tới hoạt động bên trong của máy tính mà với các tác vụ do người dùng thực hiện. Các bản phân phối của Linux cung cấp nhiều tùy chọn ứng dụng để thực hiện nhiều tác vụ khác nhau, chẳng hạn như ứng dụng văn phòng, trình duyệt web, trình phát đa phương tiện và trình chỉnh sửa, v.v. Thường sẽ có nhiều hơn một ứng dụng hoặc công cụ để thực hiện một công việc cụ thể, tuỳ thuộc vào việc người dùng sẽ chọn ứng dụng nào để phù hợp nhất với nhu cầu của họ.
Gói Phần mềm
Hầu như mọi bản phân phối của Linux đều có cung cấp một bộ ứng dụng mặc định đã được cài đặt sẵn. Bên cạnh đó, mỗi bản phân phối sẽ có một kho lưu trữ gói cùng với một bộ sưu tập lớn các ứng dụng có sẵn để cài đặt thông qua trình quản lý gói của nó. Mặc dù các bản phân phối khác nhau sẽ cung cấp các loạt ứng dụng gần như giống nhau, vẫn có một số hệ thống quản lý gói khác nhau dành cho các bản phân phối tồn tại. Ví dụ: Debian, Ubuntu và Linux Mint sử dụng các công cụ dpkg
, apt-get
và apt
để cài đặt các gói phần mềm, và các công cụ này thường được gọi chung là Gói DEB. Các bản phân phối như Red Hat, Fedora và CentOS thay vào đó lại sử dụng các lệnh rpm
, yum
và dnf
để cài đặt các Gói RPM. Vì mỗi Dòng phân phối có một cách đóng gói ứng dụng khác nhau, việc cài các gói từ kho lưu trữ chính xác được thiết kế cho từng bản phân phối là rất quan trọng. Người dùng cuối thường không phải lo lắng về những chi tiết này vì trình quản lý gói của bản phân phối sẽ tự chọn các gói phù hợp, các phần phụ thuộc bắt buộc và các bản cập nhật trong tương lai. Các Phần phụ thuộc là các gói phụ trợ cần thiết cho các chương trình. Ví dụ: nếu một thư viện cung cấp các chức năng để xử lý ảnh JPEG được nhiều chương trình sử dụng thì khả năng cao thư viện này sẽ có gói riêng của nó, và tất cả các ứng dụng sử dụng thư viện đó đều sẽ phụ thuộc vào gói này.
Các lệnh dpkg
và rpm
hoạt động trên các tệp riêng lẻ trong gói. Trên thực tế, hầu hết tất cả các tác vụ quản lý gói trên hệ thống sử dụng gói DEB đều được thực hiện bằng lệnh apt-get
hoặc apt
, hoặc trên hệ thống sử dụng gói RPM là bằng lệnh yum
hoặc dnf
. Các lệnh này sẽ làm việc với danh mục của các gói, có thể tải xuống các gói mới và phần phụ thuộc của chúng, đồng thời kiểm tra các phiên bản mới hơn của các gói đã được cài đặt.
Cài đặt Gói
Giả sử bạn đã nghe nói về một lệnh gọi là figlet
dùng để in văn bản chữ lớn trên cửa sổ dòng lệnh (chương trình giao diện cửa sổ dòng lệnh) và bạn muốn thử sử dụng nó. Tuy nhiên, bạn nhận được thông báo sau sau khi thực hiện lệnh figlet
:
$ figlet -bash: figlet: command not found
Tức là có lẽ gói này chưa được cài đặt trên hệ thống của bạn. Nếu bản phân phối của bạn làm việc với các gói DEB, bạn có thể tìm kiếm các kho lưu trữ của nó bằng cách sử dụng apt-cache search package_name
hoặc apt search package_name
. Lệnh apt-cache
được dùng để tìm kiếm các gói và liệt kê thông tin về các gói có sẵn. Lệnh sau đây dùng để tìm kiếm sự xuất hiện bất kỳ của thuật ngữ “figlet” nào trong tên và mô tả của gói:
$ apt-cache search figlet figlet - Make large character ASCII banners out of ordinary text
Quá trình tìm kiếm đã xác định một gói có tên figlet tương ứng với lệnh bị thiếu. Việc cài đặt và gỡ bỏ một gói yêu cầu các quyền đặc biệt chỉ được cấp cho quản trị viên hệ thống: tức người dùng có tên root
(gốc). Trên các hệ thống máy tính để bàn, người dùng phổ thông có thể cài đặt hoặc gỡ bỏ các gói bằng cách thêm lệnh sudo
vào các lệnh cài đặt/gỡ bỏ. Tác vụ này sẽ yêu cầu mật khẩu để có thể tiếp tục. Đối với các gói DEB, quá trình cài đặt sẽ được thực hiện bằng lệnh apt-get install package_name
hoặc apt install package_name
:
$ sudo apt-get install figlet Reading package lists... Done Building dependency tree Reading state information... Done The following NEW packages will be installed: figlet 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Đến đây, gói sẽ được tải xuống và cài đặt trên hệ thống. Bất kỳ phần phụ thuộc nào mà gói cần cũng sẽ được tải xuống và cài đặt:
Need to get 184 kB of archives. After this operation, 741 kB of additional disk space will be used. Get:1 http://archive.raspbian.org/raspbian stretch/main armhf figlet armhf 2.2.5-2 [184 kB] Fetched 184 kB in 0s (213 kB/s) Selecting previously unselected package figlet. (Reading database ... 115701 files and directories currently installed.) Preparing to unpack .../figlet_2.2.5-2_armhf.deb ... Unpacking figlet (2.2.5-2) ... Setting up figlet (2.2.5-2) ... update-alternatives: using /usr/bin/figlet-figlet to provide /usr/bin/figlet (figlet) in auto mode Processing triggers for man-db (2.7.6.1-2) ...
Sau khi quá trình tải xuống hoàn tất, tất cả các tệp sẽ được sao chép vào các vị trí thích hợp, mọi cấu hình bổ sung sẽ được thực hiện và lệnh sẽ trở nên khả dụng:
$ figlet Awesome! _ _ / \__ _____ ___ ___ _ __ ___ ___| | / _ \ \ /\ / / _ \/ __|/ _ \| '_ ` _ \ / _ \ | / ___ \ V V / __/\__ \ (_) | | | | | | __/_| /_/ \_\_/\_/ \___||___/\___/|_| |_| |_|\___(_)
Trong các bản phân phối dựa trên các gói RPM, tác vụ tìm kiếm được thực hiện bằng cách sử dụng yum search package_name
hoặc dnf search package_name
. Giả sử bạn muốn hiển thị một số văn bản theo một cách thoải mái hơn, đính kèm một chú bò hoạt hình, nhưng bạn không chắc rằng gói nào có thể thực hiện tác vụ đó. Đối với các gói DEB, các lệnh tìm kiếm RPM có chấp nhận các thuật ngữ mô tả:
$ yum search speaking cow Last metadata expiration check: 1:30:49 ago on Tue 23 Apr 2019 11:02:33 PM -03. ==================== Name & Summary Matched: speaking, cow ==================== cowsay.noarch : Configurable speaking/thinking cow
Sau khi tìm thấy một gói phù hợp tại kho lưu trữ, gói đó có thể được cài đặt bằng lệnh yum install package_name
hoặc dnf install package_name
:
$ sudo yum install cowsay Last metadata expiration check: 2:41:02 ago on Tue 23 Apr 2019 11:02:33 PM -03. Dependencies resolved. ============================================================================== Package Arch Version Repository Size ============================================================================== Installing: cowsay noarch 3.04-10.fc28 fedora 46 k Transaction Summary ============================================================================== Install 1 Package Total download size: 46 k Installed size: 76 k Is this ok [y/N]: y
Một lần nữa, gói bạn muốn và tất cả các phần phụ thuộc có thể có của nó sẽ được tải xuống và cài đặt:
Downloading Packages: cowsay-3.04-10.fc28.noarch.rpm 490 kB/s | 46 kB 00:00 ============================================================================== Total 53 kB/s | 46 kB 00:00 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : cowsay-3.04-10.fc28.noarch 1/1 Running scriptlet: cowsay-3.04-10.fc28.noarch 1/1 Verifying : cowsay-3.04-10.fc28.noarch 1/1 Installed: cowsay.noarch 3.04-10.fc28 Complete!
Lệnh cowsay
(chú bò nói) sẽ thực hiện đúng như tên gọi của nó:
$ cowsay "Brought to you by yum" _______________________ < Brought to you by yum > ----------------------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||
Mặc dù có thể không hữu dụng nhưng các lệnh figlet
và cowsay
là một cách để thu hút sự chú ý của những người dùng khác tới những thông tin cần thiết.
Gỡ bỏ Gói
Các lệnh được sử dụng để cài đặt gói cũng là các lệnh được sử dụng để gỡ chúng. Tất cả các lệnh đều chấp nhận từ khóa remove
để gỡ cài đặt gói: apt-get remove package_name
hoặc apt remove package_name
đối với các gói DEB và yum remove package_name
hoặc dnf remove package_name
đối với các gói RPM. Để thực hiện việc gỡ bỏ gói, ta cũng cần đến lệnh sudo
. Ví dụ: để xóa gói figlet đã cài đặt trước đó khỏi bản phân phối dựa trên DEB:
$ sudo apt-get remove figlet Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: figlet 0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. After this operation, 741 kB disk space will be freed. Do you want to continue? [Y/n] Y
Sau khi xác nhận lệnh, gói sẽ bị xóa khỏi hệ thống:
(Reading database ... 115775 files and directories currently installed.) Removing figlet (2.2.5-2) ... Processing triggers for man-db (2.7.6.1-2) ...
Quy trình cũng sẽ tương tự như vậy trên hệ thống dựa trên RPM. Ví dụ: để xóa gói cowsay đã cài đặt trước đó khỏi bản phân phối dựa trên RPM:
$ sudo yum remove cowsay Dependencies resolved. ================================================================================== Package Arch Version Repository Size ================================================================================== Removing: cowsay noarch 3.04-10.fc28 @fedora 76 k Transaction Summary ================================================================================== Remove 1 Package Freed space: 76 k Is this ok [y/N]: y
Tương tự như vậy, hệ thống sẽ yêu cầu xác nhận và sau đó gói sẽ bị xóa khỏi hệ thống:
Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Erasing : cowsay-3.04-10.fc28.noarch 1/1 Running scriptlet: cowsay-3.04-10.fc28.noarch 1/1 Verifying : cowsay-3.04-10.fc28.noarch 1/1 Removed: cowsay.noarch 3.04-10.fc28 Complete!
Các tệp cấu hình của các gói đã bị xóa vẫn sẽ được lưu giữ trên hệ thống, vì vậy chúng có thể được tái sử dụng nếu gói được cài đặt lại trong tương lai.
Ứng dụng Văn phòng
Các ứng dụng văn phòng được sử dụng để chỉnh sửa các tệp như văn bản, bản trình chiếu, bảng tính và các định dạng khác thường được sử dụng trong môi trường văn phòng. Các ứng dụng này thường được bao gồm trong các bộ sưu tập có tên office suites.
Trong một thời gian dài, bộ ứng dụng văn phòng được sử dụng nhiều nhất trong Linux là bộ OpenOffice.org. OpenOffice.org là phiên bản mã nguồn mở của StarOffice suite do Sun Microsystems phát hành. Vài năm sau đó, Sun đã được Oracle Corporation mua lại, từ đó dự án được chuyển qua cho Apache Foundation và OpenOffice.org được đổi tên thành Apache OpenOffice. Trong khi đó, một bộ ứng dụng văn phòng khác dựa trên cùng một mã nguồn cũng đã được phát hành bởi Document Foundation và được đặt tên là LibreOffice.
Hai bộ ứng dụng này có các tính năng cơ bản giống nhau và tương thích với các định dạng tài liệu đến từ Microsoft Office. Tuy nhiên, định dạng tài liệu được ưu tiên là Định dạng Tài liệu Mở (Open Document Format) - một định dạng tệp chuẩn ISO và hoàn toàn mở. Việc sử dụng các tệp ODF đảm bảo được việc các tài liệu có thể được chuyển qua lại giữa các hệ điều hành và ứng dụng từ các nhà cung cấp khác nhau, chẳng hạn như Microsoft Office. Các ứng dụng chính do OpenOffice/LibreOffice cung cấp là:
- Writer
-
Trình soạn thảo văn bản
- Calc
-
Trình bảng tính
- Impress
-
Trình chiếu
- Draw
-
Trình vẽ vec tơ
- Math
-
Trình công thức toán học
- Base
-
Trình Cơ sở dữ liệu
Cả LibreOffice và Apache OpenOffice đều là phần mềm mã nguồn mở, nhưng LibreOffice được cấp phép theo Giấy phép LGPLv3 và Apache OpenOffice được cấp phép theo Giấy phép Apache 2.0. Sự khác biệt về giấy phép ám chỉ rằng LibreOffice có thể kết hợp các cải tiến do Apache OpenOffice thực hiện, nhưng Apache OpenOffice lại không thể kết hợp các cải tiến do LibreOffice thực hiện. Cộng với một cộng đồng các nhà phát triển năng nổ hơn, đây chính là lý do khiến hầu hết các bản phân phối đều sử dụng LibreOffice làm bộ ứng dụng văn phòng mặc định của chúng.
Trình duyệt Web
Đối với phần lớn người dùng, mục đích chính của máy tính là cung cấp quyền truy cập Internet. Ngày nay, các trang web có thể hoạt động như một ứng dụng với đầy đủ các tính năng, cùng ưu điểm là có thể truy cập từ mọi nơi mà không cần cài đặt thêm các phần mềm khác. Điều này khiến trình duyệt web trở thành ứng dụng quan trọng nhất của hệ điều hành, ít nhất là đối với người dùng phổ thông.
Tip
|
Một trong những nguồn bổ ích nhất để tìm hiểu về phát triển trang mạng là MDN Web Docs, có sẵn tại https://developer.mozilla.org/. MDN Web Docs được duy trì bởi Mozilla và có đầy đủ các hướng dẫn dành cho người mới bắt đầu, cũng như tài liệu tham khảo về hầu hết các công nghệ web hiện đại. |
Các trình duyệt web chính trong môi trường Linux là Google Chrome và Mozilla Firefox. Chrome là trình duyệt web do Google quản lý, nhưng nó lại được dựa trên một trình duyệt mã nguồn mở có tên Chromium; trình duyệt này có thể được cài đặt bằng trình quản lý gói của bản phân phối và hoàn toàn tương thích với Chrome. Firefox được duy trì bởi Mozilla - một tổ chức phi lợi nhuận - và là trình duyệt có nguồn gốc được liên kết với Netscape - trình duyệt web phổ biến đầu tiên áp dụng mô hình mã nguồn mở. Quỹ Mozilla (The Mozilla Foundation) có liên quan mật thiết tới việc phát triển các tiêu chuẩn mở thiết lập nền tảng cho trang mạng hiện đại.
Mozilla cũng phát triển các ứng dụng khác như ứng dụng e-mail Thunderbird. Nhiều người dùng lựa chọn sử dụng webmail thay vì ứng dụng email chuyên dụng, nhưng một ứng dụng khách như Thunderbird lại có thể cung cấp các tính năng bổ sung và tích hợp tốt nhất với các ứng dụng khác trên máy tính để bàn.
Truyền thông Đa phương tiện
So với các ứng dụng web có sẵn, các ứng dụng dành cho máy tính để bàn vẫn là lựa chọn tốt nhất để tạo các nội dung đa phương tiện. Các hoạt động liên quan đến đa phương tiện như kết xuất video thường yêu cầu lượng tài nguyên hệ thống cao, vì thế nên chúng sẽ được quản lý tốt nhất bởi một ứng dụng cục bộ trên máy tính để bàn. Một số ứng dụng đa phương tiện phổ biến nhất cho môi trường Linux và cách sử dụng chúng sẽ được liệt kê dưới đây.
- Blender
-
Một trình kết xuất 3D để làm phim hoạt hình. Blender cũng có thể được sử dụng để xuất các vật thể 3D được in bằng máy in 3D.
- GIMP
-
Một trình chỉnh sửa hình ảnh với đầy đủ các tính năng sánh ngang với Adobe Photoshop, nhưng cũng lại có các khái niệm và công cụ riêng để làm việc với hình ảnh. GIMP có thể được sử dụng để tạo, chỉnh sửa và lưu hầu hết các tệp bitmap như JPEG, PNG, GIF, TIFF và nhiều dạng khác.
- Inkscape
-
Một trình chỉnh sửa đồ họa vector, tương tự như Corel Draw hoặc Adobe Illustrator. Định dạng mặc định của Inkscape là SVG - đây cũng là một tiêu chuẩn mở cho đồ họa vector. Các tệp SVG có thể được mở bởi bất kỳ trình duyệt web nào và do bản chất là đồ họa véc-tơ nên nó có thể được sử dụng trong bố cục linh hoạt của các trang web.
- Audacity
-
Một trình chỉnh sửa âm thanh. Audacity có thể được sử dụng để lọc, áp hiệu ứng và chuyển đổi giữa nhiều định dạng âm thanh khác nhau như MP3, WAV, OGG, FLAC, v.v.
- ImageMagick
-
Một công cụ dòng lệnh dùng để chuyển đổi và chỉnh sửa hầu hết các loại tệp hình ảnh. Nó cũng có thể được sử dụng để tạo tài liệu PDF từ các tệp hình ảnh và ngược lại. Ngoài ra còn có nhiều ứng dụng dành riêng cho cho việc phát đa phương tiện. Ứng dụng phổ biến nhất để trình phát video là VLC, nhưng một số người dùng lại thích các lựa chọn thay thế khác hơn, chẳng hạn như smplayer. Trình phát nhạc cục bộ cũng có nhiều tùy chọn như Audacious, Banshee hay Amarok; các trình phát này cũng có thể quản lý một tập hợp các tệp âm thanh cục bộ.
Chương trình Máy chủ
Khi trình duyệt web tải một trang từ một trang web, thực tế là nó sẽ kết nối với một máy tính từ xa và yêu cầu một thông tin cụ thể. Trong trường hợp đó, máy tính chạy trình duyệt web được gọi là máy khách, và máy tính từ xa được gọi là máy chủ.
Máy chủ - có thể là một máy tính để bàn thông thường hoặc một phần cứng chuyên dụng - cần một chương trình đặc thù để quản lý từng loại thông tin mà nó sẽ cung cấp. Về việc phục vụ các trang web, hầu hết các máy chủ trên thế giới đều triển khai các chương trình máy chủ mã nguồn mở. Chương trình máy chủ cụ thể này được gọi là Máy chủ HTTP (HTTP là viết tắt của Hyper Text Transfer Protocol - Giao thức truyền siêu văn bản) và những chương trình phổ biến nhất là Apache, Nginx và lighttpd.
Ngay cả các trang web đơn giản cũng có thể cần nhiều yêu cầu; các yêu cầu đó có thể là các tệp thông thường — được gọi là nội dung tĩnh — hoặc nội dung động được kết xuất từ nhiều nguồn khác nhau. Vai trò của máy chủ HTTP là thu thập và gửi tất cả dữ liệu được yêu cầu trở lại trình duyệt, sau đó trình duyệt sẽ sắp xếp nội dung như được xác định bởi tài liệu HTML nhận được (HTML là viết tắt của Hyper Text Markup Language - Ngôn ngữ đánh dấu siêu văn bản) và các tệp hỗ trợ khác. Do đó, việc hiển thị trang web sẽ bao gồm các hoạt động được thực hiện ở cả phía máy chủ và phía máy khách. Cả hai bên có thể sử dụng các tệp lệnh tùy chỉnh để hoàn thành các tác vụ cụ thể. Về phía máy chủ HTTP, việc sử dụng ngôn ngữ kịch lệnh PHP là khá phổ biến. JavaScript là ngôn ngữ lệnh được sử dụng ở phía máy khách (trình duyệt web).
Các chương trình máy chủ có thể cung cấp nhiều các loại thông tin khác nhau. Việc chương trình máy chủ yêu cầu thông tin được cung cấp bởi các chương trình máy chủ khác không phải là hiếm. Đó là trường hợp khi máy chủ HTTP yêu cầu thông tin được cung cấp bởi máy chủ cơ sở dữ liệu.
Chẳng hạn như khi một trang web động được yêu cầu, máy chủ HTTP thường truy vấn cơ sở dữ liệu để thu thập tất cả các phần thông tin cần thiết và gửi nội dung động này trở lại máy khách. Theo cách tương tự, khi người dùng đăng ký trên một trang web, máy chủ HTTP sẽ thu thập dữ liệu do khách hàng gửi và lưu trữ nó trong cơ sở dữ liệu.
Cơ sở dữ liệu là một tập hợp thông tin có tổ chức. Một máy chủ cơ sở dữ liệu lưu trữ nội dung theo kiểu định dạng nội dung; việc này giúp nó có thể đọc, ghi và liên kết một lượng lớn dữ liệu một cách đáng tin cậy ở tốc độ cao. Máy chủ cơ sở dữ liệu mã nguồn mở được sử dụng trong nhiều ứng dụng chứ không chỉ trên Internet. Ngay cả các ứng dụng cục bộ cũng có thể lưu trữ dữ liệu bằng cách kết nối với máy chủ cơ sở dữ liệu cục bộ. Loại cơ sở dữ liệu phổ biến nhất là cơ sở dữ liệu quan hệ, trong đó dữ liệu được tổ chức trong các bảng đã được xác định trước. Các cơ sở dữ liệu quan hệ mã nguồn mở phổ biến nhất là MariaDB (có nguồn gốc từ MySQL) và PostgreSQL.
Chia sẻ Dữ liệu
Trong các mạng cục bộ, ví dụ như các mạng trong văn phòng và gia đình, các máy tính được kỳ vọng là không chỉ để truy cập Internet mà còn có thể giao tiếp với nhau. Đôi khi một máy tính có thể đóng vai trò là máy chủ, đôi khi chính nó lại đóng vai trò là máy khách. Điều này là cần thiết khi một người muốn truy cập các tệp trên một máy tính khác ở trong cùng một mạng — ví dụ: truy cập một tệp được lưu trữ trên máy tính để bàn từ một thiết bị di động — mà không phải làm tác vụ rắc rối là sao chép tệp đó vào ổ USB hoặc các thiết bị tương tự.
Trong các máy Linux, NFS (Network File System - Hệ thống Tệp Mạng) thường được sử dụng khá phổ biến. Giao thức NFS là cách tiêu chuẩn để chia sẻ các hệ thống tệp trong các mạng chỉ được trang bị với máy Unix/Linux. Với NFS, một máy tính có thể chia sẻ một hoặc nhiều thư mục của nó với các máy tính nhất định cùng ở trong mạng để chúng có thể đọc và ghi trên tệp trong các thư mục này. NFS thậm chí có thể được sử dụng để chia sẻ toàn bộ cây thư mục của hệ điều hành với các máy khách sẽ sử dụng cây thư mục đó để khởi động. Những máy tính này được gọi là máy khách có cấu hình tối thiểu (thin client) và thường được sử dụng trong các mạng lớn để tránh việc bảo trì từng hệ điều hành riêng lẻ trên mỗi máy.
Nếu có các loại hệ điều hành khác được gắn với mạng thì người dùng được khuyến cáo sử dụng giao thức chia sẻ dữ liệu mà tất cả các hệ điều hành đều có thể hiểu được. Samba có thể đáp ứng được yêu cầu này. Samba, ban đầu được dành cho hệ điều hành Windows, triển khai giao thức chia sẻ tệp qua mạng; ngày nay, nó tương thích với tất cả các hệ điều hành lớn. Với Samba, không chỉ các máy tính trong mạng nội bộ có thể chia sẻ tệp mà ngay cả máy in cũng có thể.
Trên một số mạng cục bộ, quyền đăng nhập trên máy trạm được cấp bởi máy chủ trung tâm; máy chủ này quản lý quyền truy cập vào các tài nguyên cục bộ và từ xa khác nhau. Máy chủ trung tâm là một dịch vụ được cung cấp bởi Active Directory của Microsoft. Máy trạm Linux có thể liên kết với máy chủ trung tâm bằng cách sử dụng Samba hoặc hệ thống con xác thực có tên là SSSD. Kể từ phiên bản 4, Samba cũng có thể hoạt động như một máy chủ trung tâm trên các mạng không đồng nhất.
Nếu mục tiêu ở đây là triển khai một giải pháp điện toán đám mây có khả năng cung cấp nhiều phương pháp chia sẻ dữ liệu dựa trên web khác nhau thì ta có thể xem xét hai lựa chọn là ownCloud và Nextcloud. Hai dự án này rất giống nhau vì Nextcloud chính là một sản phẩm nhánh của ownCloud. Điều này không có gì lạ đối với các dự án mã nguồn mở; các sản phẩm nhánh như vậy thường được gọi là fork. Cả hai đều cung cấp các tính năng cơ bản giống nhau: chia sẻ và đồng bộ hóa tệp, không gian làm việc cộng tác, lịch, danh bạ và thư; tất cả đều thông qua giao diện máy tính để bàn, thiết bị di động và web. Nextcloud cũng cung cấp hội nghị truyền hình/âm thanh riêng tư, trong khi ownCloud tập trung hơn vào việc chia sẻ tệp và tích hợp với các phần mềm của bên thứ ba. Nhiều tính năng khác cũng được cung cấp dưới dạng tiện ích bổ sung có thể được kích hoạt sau khi cần.
Cả ownCloud và Nextcloud đều cung cấp phiên bản trả phí với các tính năng bổ sung và hỗ trợ mở rộng. Điều làm cho chúng khác biệt với các giải pháp thương mại khác là người dùng có thể cài đặt miễn phí Nextcloud hoặc ownCloud trên máy chủ riêng giúp tránh việc lưu giữ dữ liệu nhạy cảm trên máy chủ không xác định. Vì tất cả các dịch vụ đều phụ thuộc vào giao tiếp HTTP và được viết bằng PHP nên quá trình cài đặt phải được thực hiện trên một máy chủ trang mạng được cấu hình sẵn, chẳng hạn như Apache. Nếu bạn muốn cài đặt ownCloud hoặc Nextcloud trên máy chủ của riêng mình, hãy đảm bảo bạn có kích hoạt HTTPS để mã hóa tất cả kết nối với đám mây của bạn.
Quản Trị Mạng
Giao tiếp giữa các máy tính chỉ có thể thực hiện được nếu mạng hoạt động một cách chính xác. Thông thường, cấu hình mạng được thực hiện bởi một tập hợp các chương trình chạy trên bộ đính tuyến; nó chịu trách nhiệm thiết lập và kiểm tra tính khả dụng của mạng. Để đạt được điều này, người ta sử dụng hai dịch vụ mạng cơ bản là DHCP (Dynamic Host Configuration Protocol - Giao thức cấu hình máy chủ động) và DNS (Domain Name System - Hệ Thống Tên Miền).
DHCP chịu trách nhiệm gán địa chỉ IP cho máy chủ khi cáp mạng được kết nối hoặc khi thiết bị truy cập vào mạng không dây. Khi kết nối Internet, máy chủ DHCP của ISP sẽ cung cấp địa chỉ IP cho thiết bị đang yêu cầu. Máy chủ DHCP cũng rất hữu ích trong các mạng cục bộ trong việc tự động cung cấp địa chỉ IP cho tất cả các thiết bị được kết nối. Nếu DHCP không được định cấu hình hoặc hoạt động không bình thường thì địa chỉ IP của từng thiết bị được kết nối với mạng phải được định cấu hình theo cách thủ công. Việc thiết lập địa chỉ IP theo cách thủ công trên các mạng lớn hoặc thậm chí trong các mạng nhỏ là không thực tế, đó là lý do tại sao hầu hết các bộ định tuyến mạng đều đi kèm với máy chủ DHCP đã được cấu hình sẵn theo mặc định.
Cần có địa chỉ IP để liên lạc với một thiết bị khác trên một mạng IP, nhưng các tên miền như www.lpi.org
thường sẽ dễ nhớ hơn một dãy số IP như 203.0.113.165
. Tuy vậy, bản thân tên miền không đủ để thiết lập liên lạc qua mạng. Đó là lý do tại sao tên miền cần được máy chủ DNS dịch sang địa chỉ IP. Địa chỉ IP của máy chủ DNS được cung cấp bởi máy chủ DHCP của ISP và nó sẽ được sử dụng bởi tất cả các hệ thống được kết nối để dịch tên miền thành địa chỉ IP.
Cả cài đặt DHCP và DNS đều có thể được thay đổi bằng cách truy cập vào giao diện web do bộ định tuyến cung cấp. Chẳng hạn, ta có thể hạn chế chỉ gán IP cho các thiết bị đã biết hoặc liên kết một địa chỉ IP cố định cho các máy cụ thể. Máy chủ DNS mặc định do ISP cung cấp cũng có thể được thay đổi. Một số máy chủ DNS của bên thứ ba (chẳng hạn như máy chủ do Google hoặc OpenDNS cung cấp) đôi khi có thể cho phản hồi nhanh hơn và có thêm nhiều các tính năng bổ sung.
Ngôn ngữ Lập trình
Tất cả các chương trình máy tính (chương trình máy khách và máy chủ, ứng dụng máy tính để bàn và chính hệ điều hành) đều được tạo ra bởi một hoặc nhiều ngôn ngữ lập trình. Các chương trình có thể là một tệp đơn lẻ hoặc một hệ thống phức tạp gồm hàng trăm tệp mà hệ điều hành coi là một chuỗi lệnh để bộ xử lý và các thiết bị khác diễn giải và thực hiện.
Có rất nhiều ngôn ngữ lập trình dành cho từng mục đích khác nhau, và hệ thống Linux cung cấp đa dạng các loại ngôn ngữ này. Vì phần mềm mã nguồn mở cũng bao gồm nguồn của các chương trình nên các hệ thống Linux cũng cung cấp cho các nhà phát triển những điều kiện hoàn hảo để hiểu, sửa đổi hoặc tạo ra phần mềm theo nhu cầu của riêng họ.
Mỗi một chương trình đều xuất phát dưới dạng một tệp văn bản gọi là mã nguồn. Mã nguồn này được viết bằng một ngôn ngữ ít nhiều thân thiện với con người để mô tả chương trình đang làm gì. Bộ xử lý máy tính không thể thực thi trực tiếp mã nguồn này. Trong ngôn ngữ biên dịch, nó phải được chuyển đổi thành tệp nhị phân để máy tính có thể thực thi được. Một chương trình có tên trình biên dịch sẽ chịu trách nhiệm thực hiện chuyển đổi mã nguồn sang dạng có thể thực thi được. Vì mỗi tệp nhị phân đã qua biên dịch sẽ chỉ dành riêng cho một loại bộ xử lý cụ thể, chương trình này có thể phải được biên dịch lại để chạy trên một loại máy tính khác.
Trong ngôn ngữ phiên dịch, chương trình không cần phải được biên dịch trước. Thay vào đó, một trình phiên dịch sẽ đọc mã nguồn và thực hiện luôn lệnh của nó mỗi khi chương trình được chạy. Điều này làm cho việc phát triển trở nên dễ dàng và nhanh chóng hơn, nhưng đồng thời các chương trình được phiên dịch lại có xu hướng chạy chậm hơn các chương trình được biên dịch.
Một số ngôn ngữ lập trình phổ biến nhất:
- JavaScript
-
JavaScript là ngôn ngữ lập trình chủ yếu được sử dụng trong các trang web. Các ứng dụng JavaScript ban đầu đều rất đơn giản, chẳng hạn như các quy trình xác thực biểu mẫu. Ngày nay, JavaScript được coi là ngôn ngữ hạng nhất và được sử dụng để tạo các ứng dụng rất phức tạp không chỉ trên web mà còn trên máy chủ và thiết bị di động.
- C
-
Ngôn ngữ lập trình C có liên quan chặt chẽ với các hệ điều hành, đặc biệt là Unix, nhưng nó có thể được sử dụng để viết bất kỳ loại chương trình nào cho hầu hết mọi loại thiết bị. Ưu điểm lớn của C là tính linh hoạt và tốc độ của nó. Cùng một mã nguồn có thể được biên dịch để chạy trong các nền tảng và hệ điều hành khác nhau mà không cần sửa đổi (hoặc sửa đổi rất ít) nếu được viết bằng C. Tuy nhiên, sau khi được biên dịch, chương trình sẽ chỉ chạy được trong hệ thống mục tiêu.
- Java
-
Điểm mạnh chính của Java là các chương trình được viết bằng ngôn ngữ này rất tiện dụng, có nghĩa là cùng một chương trình có thể được thực thi trong nhiều hệ điều hành khác nhau. Dù tên là Java nhưng ngôn ngữ này không hề liên quan đến JavaScript.
- Perl
-
Perl là ngôn ngữ lập trình được sử dụng nhiều nhất để xử lý nội dung văn bản. Perl nhấn mạnh vào các biểu thức chính quy, khiến nó trở thành một ngôn ngữ phù hợp để lọc và phân tích văn bản.
- Shell
-
Shell, đặc biệt là Bash shell, không chỉ là một ngôn ngữ lập trình mà còn là một giao diện tương tác để chạy các chương trình khác. Các chương trình vỏ, hay còn được gọi là tệp lệnh vỏ, có thể tự động hóa các tác vụ phức tạp hoặc lặp đi lặp lại trên môi trường dòng lệnh.
- Python
-
Python là ngôn ngữ lập trình rất phổ biến đối với sinh viên và các chuyên gia không tham gia trực tiếp vào khoa học máy tính. Mặc dù cũng có các tính năng nâng cao, Python vẫn là một phương thức tốt để bắt đầu học lập trình vì cách tiếp cận dễ sử dụng của nó.
- PHP
-
PHP được sử dụng nhiều nhất làm ngôn ngữ tệp lệnh ở phía máy chủ để tạo nội dung cho web. Hầu hết các trang HTML trực tuyến đều không phải là các tệp tĩnh mà là các nội dung động do máy chủ tạo từ nhiều nguồn khác nhau, chẳng hạn như cơ sở dữ liệu. Các chương trình PHP — đôi khi chỉ được gọi là các trang PHP hoặc tệp lệnh PHP — thường được sử dụng để tạo loại nội dung này. Thuật ngữ LAMP xuất phát từ sự kết hợp của hệ điều hành Linux, máy chủ HTTP Apache, cơ sở dữ liệu MySQL (hoặc MariaDB) và lập trình PHP. Máy chủ LAMP là một giải pháp rất phổ biến để chạy các máy chủ web. Ngoài PHP, tất cả các ngôn ngữ lập trình đã nêu trên cũng có thể được sử dụng để triển khai các ứng dụng tương tự.
C và Java đều là ngôn ngữ biên dịch. Để được hệ thống thực thi, mã nguồn viết bằng C sẽ được chuyển đổi thành mã máy nhị phân, trong khi mã nguồn Java sẽ được chuyển đổi thành bytecode được thực thi trong môi trường phần mềm đặc biệt có tên Máy ảo Java. JavaScript, Perl, Shell script, Python và PHP đều là các ngôn ngữ thông dịch hay còn được gọi là ngôn ngữ tệp lệnh.
Bài tập Hướng dẫn
-
Hãy xác định xem mỗi dòng lệnh sau đây có liên quan đến Hệ thống gói Debian hay Hệ thống gói Red Hat hay không:
dpkg
rpm
apt-get
yum
dnf
-
Lệnh nào có thể được sử dụng để cài đặt Blender trên Ubuntu? Sau khi cài đặt, làm thế nào để chạy chương trình?
-
Ứng dụng nào từ LibreOffice suite có thể được sử dụng để làm việc với bảng tính điện tử?
-
Trình duyệt web mã nguồn mở nào được sử dụng làm cơ sở cho sự phát triển của Google Chrome?
-
SVG là một tiêu chuẩn mở cho đồ họa vector. Ứng dụng phổ biến nhất để chỉnh sửa tệp SVG trong hệ thống Linux là gì?
-
Đối với mỗi định dạng tệp sau đây, hãy cho biết tên ứng dụng tương ứng có thể mở và chỉnh sửa tệp đó:
png
doc
xls
ppt
wav
-
Gói phần mềm nào cho phép chia sẻ tệp giữa các máy Linux và Windows qua mạng cục bộ?
Bài tập Mở rộng
-
Bạn đã biết rằng các tệp cấu hình được lưu giữ ngay cả khi gói của nó bị xóa khỏi hệ thống. Làm cách nào để có thể tự động xóa gói có tên cups và các tệp cấu hình của nó khỏi hệ thống dựa trên DEB?
-
Giả sử bạn có nhiều tệp ảnh TIFF và muốn chuyển chúng sang định dạng JPEG. Gói phần mềm nào có thể được sử dụng để chuyển đổi các tệp đó trực tiếp tại dòng lệnh?
-
Cần cài đặt gói phần mềm nào để có thể mở tài liệu Microsoft Word do người dùng Windows gửi cho bạn?
-
Hàng năm, linuxquestions.org sẽ thực hiện một cuộc khảo sát về các ứng dụng Linux phổ biến nhất. Truy cập https://www.linuxquestions.org/questions/2018-linuxquestions-org-members-choice-awards-128/ và tìm hiểu xem ứng dụng máy tính để bàn nào là phổ biến nhất đối với những người dùng Linux có kinh nghiệm.
Tóm tắt
Trong bài học này, bạn đã học về:
-
Các hệ thống quản lý gói được sử dụng trong các bản phân phối Linux chính
-
Các ứng dụng mã nguồn mở có thể chỉnh sửa các định dạng tệp phổ biến
-
Các chương trình máy chủ đứng sau nhiều dịch vụ mạng cục bộ và Internet quan trọng
-
Các ngôn ngữ lập trình phổ biến và công dụng của chúng
Đáp án Bài tập Hướng dẫn
-
Hãy xác định xem mỗi dòng lệnh sau đây có liên quan đến Hệ thống gói Debian hay Hệ thống gói Red Hat hay không:
dpkg
Debian packaging system
rpm
Red Hat packaging system
apt-get
Debian packaging system
yum
Red Hat packaging system
dnf
Red Hat packaging system
-
Lệnh nào có thể được sử dụng để cài đặt Blender trên Ubuntu? Sau khi cài đặt, làm thế nào để chạy chương trình?
Lệnh
apt-get install blender
. Tên gói phải được chỉ định bằng chữ thường. Chương trình có thể chạy trực tiếp trên cửa sổ dòng lệnh bằng lệnhblender
hoặc bằng cách chọn nó trên menu ứng dụng. -
Ứng dụng nào từ LibreOffice suite có thể được sử dụng để làm việc với bảng tính điện tử?
Calc
-
Trình duyệt web nguồn mở nào được sử dụng làm cơ sở cho sự phát triển của Google Chrome?
Chrominium
-
SVG là một tiêu chuẩn mở cho đồ họa vector. Ứng dụng phổ biến nhất để chỉnh sửa tệp SVG trong hệ thống Linux là gì?
Inkscape
-
Đối với mỗi định dạng tệp sau đây, hãy cho biết tên ứng dụng tương ứng có thể mở và chỉnh sửa tệp đó:
png
Gimp
doc
LibreOffice Writer
xls
LibreOffice Calc
ppt
LibreOffice Impress
wav
Audacity
-
Gói phần mềm nào cho phép chia sẻ tệp giữa các máy Linux và Windows qua mạng cục bộ?
Samba
Đáp án Bài tập Mở rộng
-
Bạn đã biết rằng các tệp cấu hình được lưu giữ ngay cả khi gói của nó bị xóa khỏi hệ thống. Làm cách nào để có thể tự động xóa gói có tên cups và các tệp cấu hình của nó khỏi hệ thống dựa trên DEB?
apt-get purge cups
-
Giả sử bạn có nhiều tệp ảnh TIFF và muốn chuyển chúng sang định dạng JPEG. Gói phần mềm nào có thể được sử dụng để chuyển đổi các tệp đó trực tiếp tại dòng lệnh?
ImageMagick
-
Cần cài đặt gói phần mềm nào để có thể mở tài liệu Microsoft Word do người dùng Windows gửi cho bạn?
LibreOffice hoặc OpenOffice
-
Hàng năm, linuxquestions.org sẽ thực hiện một cuộc khảo sát về các ứng dụng Linux phổ biến nhất. Truy cập https://www.linuxquestions.org/questions/2018-linuxquestions-org-members-choice-awards-128/ và tìm hiểu xem ứng dụng máy tính để bàn nào là phổ biến nhất đối với những người dùng Linux có kinh nghiệm.
Trình duyệt: Firefox. Trình duyệt mail: Thunderbird. Trình phát đa phương tiện: VLC. Trình chỉnh sửa đồ họa raster: GIMP.