+2

Tìm hiểu về Package Manager

Kiến thức về Package Mananger vô cùng cần thiết với các lập trình viên, có thể bạn đã sử dụng nó bấy lâu nay mà không hay biết. Bài viết ngắn gọn này sẽ giải thích về Package Manager, các thành phần chính và nguyên tắc hoạt động, cũng như giới thiệu một số PM phổ biến.

Package Manager là gì?

Nói đơn giản, Package Manager (PM) hoặc package management system là một tập hợp các phần mềm dùng để quản lý và tự động hoá việc cài đặt, nâng cấp, gỡ bỏ các phần mềm/thư viện (package) (Nguồn: wikipedia).

Hơi trừu tượng phải không nào? Điểu ta phải tìm hiểu một chuyện: PM giải quyết vấn đề gì?

Giả sử bạn đang làm một dự án, cần sử dụng một số thư viện thay vì tự code. Bạn lên mạng tải thư viện đó về, link vào dự án và bắt đầu chạy. Cách làm này có một số vấn đề:

  1. Khi nhiều người cùng làm chung một dự án, đôi khi mỗi người sử dụng một phiên bản riêng, xung đột lẫn nhau. Code chạy được ở máy này, không chạy được ở máy khác.
  2. Khi commit code vào source control, ta phải commit cả thư viện vào, rất nhiều và nặng khi commit cũng như tải về.
  3. Khi deploy, ta phải copy luôn thư viện lên, rất chậm và mất thời gian.

Sử dụng PM, mọi vấn đề này đều được giải quyết! Ngạc nhiên chưa?? Hãy xem PM xử lý vấn đề này như thế nào nhé?

Các thành phần của Package Manager, nguyên tắc hoạt động

Thông thường, một hệ thống PM thường bao gồm các thành phần:

  1. Package Manager: Cài đặt trên máy developer, quản lý việc cài đặt các package
  2. Repository: Nơi chứa các package (trên mạng). Khi cần một package nào đó, PM sẽ tải package đó từ repository về
  3. Local Package Database: Mỗi dự án sẽ có local package database riêng, chứa thông tin (metadata, bao gồm tên package, phiên bản, dependency) của các package trong dự án đó.

Lấy ví dụ như NodeJS, 3 thành phần trên sẽ lần lượt là:

  1. Package Manager: npm. Đây là command line tool để quản lý package đi kèm với nodejs
  2. Repository: npmjs.com. Nơi chứa toàn bộ các package NodeJS.
  3. Local Package Database: Mỗi dự án NodeJS sẽ có một file package.json, chứa toàn bộ thông tin về phiên bản của các package.

Với 3 thành phần này, PM giải quyết các vấn đề trên rất dễ dàng:

  • Mỗi khi cần thư viện, các bạn dùng PM để cài đặt. PM sẽ tải thư viện từ Repository về, sau đó cập nhật Local Package Database.
  • Khi commit code, bạn chỉ cần commit Local Package Database, đây thường chỉ là 1 file text rất nhẹ.
  • Khi deploy hoặc share code qua máy khác, họ sẽ sử dụng PM. Dựa theo các package trong Local Package Database, PM sẽ tải đúng package phiên bản tương ứng. Điều này đảm bảo rằng mọi người đều dùng chung package, chung phiên bản. Code nằm trong source control cũng rất nhẹ, up nhanh tải nhanh.

Lập trình viên cần biết gì về Package Manager?

Thật ra cũng không cần biết hiểu quá sâu xa nhiều, chỉ cần nắm rõ một số điều như:

  • Các package được lưu trữ ở đâu, quản lý như thế nào?

  • Làm sao install package mới vào hệ thống

  • Tìm package và đọc tài liệu ở đâu?

  • Cách xử lý một số vấn đề thường gặp Ví dụ, nếu như code NodeJS, bạn sẽ cần nắm rõ một số phương pháp sử dụng npm (Package Manager chính của NodeJS) như sau:

  • Toàn bộ package được lưu trữ trong thư mục node_modules, thông tin về các package lưu trong file package.json

  • Sử dụng npm install đề cài đặt package. Nếu muốn thông tin package được lưu trong file package.json, dùng lệnh npm install –save

  • Thông tin và tài liệu về các package có thể dễ dàng tìm thấy tại: https://www.npmjs.com

  • Khi clone một dự án từ github về, ta phải chạy npm install để npm tải các package về. Ta cũng có thể cài đặt command bằng cách thêm scripts trong package.json.

Một số Package Manager nổi tiếng

Đi kèm với hệ điều hành

Một số hệ điều hành thường có cài sẵn các PM. Những PM này thường được sử dụng để cài phần mềm, nâng cấp phần mềm trong hệ điều hành.

  • Yum, Apt-Get: PM apt cài sẵn trên các hệ điều hành dòng Debian, yum thì thuộc hệ điều hành Red Hat. Các bạn cần biết sơ sơ cách dùng khi muốn cấu hình VPS, sử dụng máy ảo trên cloud
  • Homebrew: Package manager cho MacOS
  • Chocolatey: Một PM khá hay cho Window, có thể cài đặt phần mềm trong vòng… vài nốt nhạc nhờ command line.

Dành cho lập trình viên

Các PM này thường dùng để quản lý các thư viện đã sử dụng trong một dự án. Nguyên tắc hoạt động của chúng đã được ở phần trên.

  • Bower: Package manager cho nền tảng web, phần lớn các package trên này là các thư viện CSS, JavaScript

  • npm: PM chính cho NodeJS. Hiện này, repostiory của npm đang có số lượng module lớn nhất

  • Maven: Package manager thân thiết của các lập trình viên Java (Maven là PM, Maven Central là repositorory, nơi chưa các package, các bạn đừng nhầm nhé)

  • Nuget: PM và cũng là Repository của các lập trình viên .NET. Các package thường được lưu trong file packages.config hoặc project.json

  • Composer & Packagist: Composer là PM chính của PHP. Packagist chính là repository lưu trữ các package này. Bạn nào code PHP thì nhớ tìm hiểu cách dùng 2 thứ này nhé!

Kết

Hi vọng bài viết đã khai thông cho bạn kiến thức về Package Manager. Nếu có thắc mắc hay góp ý gì, các bạn cứ hỏi thoải mái trong mục comment nhé.

Nguồn: Blog Toidicodedao


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí