Bài viết Câu hỏi About RongvangIT
profile Pic
0
0

Đăng ngày:

 

Sửa ngày:

75 Lượt xem

[Python - CentOS Stream] Hướng dẫn cài đặt gói Python khi ở chế độ offline bằng pip

PythonCentOS

1. Giới thiệu

Trong một số trường hợp, hệ thống có thể không được kết nối với mạng bởi vì lý do bảo mật và các lý do khác. Trong trường hợp đó, bạn không thể tải trực tiếp các gói phần mềm từ Internet để cài đặt. Chúng ta sẽ tìm hiểu cách cài đặt gói Python trong môi trường offline như vậy.

2. Điều kiện tiên quyết

Được kiểm tra với Python 3.9.6.
Hệ điều hành là CentOS Stream 8, được cài đặt từ tệp ISO “Minimal Installation”.
Thông tin về phiên bản như sau:

# cat /etc/redhat-release 
CentOS Stream release 8
# uname -r
4.18.0-301.1.el8.x86_64

3. Cài đặt các gói cần thiết

Nếu bạn cài đặt hệ điều hành với lựa chọn “Minimal Installation”, Python dành cho người dùng không được cài đặt, vì vậy chúng ta cần cài đặt nó. Đồng thời, để nén và giải nén tệp khi truyền giữa các máy chủ, ta cũng cần cài đặt tar. Trong trường hợp không có kết nối Internet, bạn cần cài đặt chúng từ hình ISO của hệ điều hành.

$ sudo dnf install -y python39 tar

4. Lấy các tệp gói

Trước tiên, sử dụng máy chủ có kết nối Internet để lấy các tệp gói cần cài đặt.

4.1 Chuyển sang môi trường ảo

Trước khi lấy các tệp gói, tạo môi trường ảo để không làm ảnh hưởng đến môi trường hiện tại.

$ python3 -m venv .venv
$ source .venv/bin/activate

4.2 Cập nhật pip

Nếu phiên bản cũ của pip có thể làm cho việc lấy các tệp gói không thành công, hãy cập nhật nó lên phiên bản mới nhất.

$ pip install -U pip

4.3 Lấy tệp gói (lấy từng tệp)

Nếu bạn muốn lấy từng gói một, hãy sử dụng lệnh pip download và chỉ định tên gói làm đối số. Bạn cũng có thể sử dụng tùy chọn -d để chỉ định thư mục nơi tệp gói sẽ được lưu trữ. Nếu không chỉ định thư mục, các tệp gói sẽ được lưu trữ trong thư mục hiện tại.

Trong ví dụ sau, chúng ta lưu trữ gói ansible và các gói phụ thuộc của nó trong thư mục “packages” ngay cấp độ hiện tại.

$ pip download -d ./packages ansible

4.4 Lấy tệp gói (lấy tất cả cùng một lúc)

Nếu bạn muốn lấy nhiều gói cùng một lúc, tạo một tệp requirements.txt chứa danh sách và sử dụng nó với lệnh pip download.

Trước tiên, sử dụng trình soạn thảo văn bản để tạo tệp requirements.txt.

$ cat requirements.txt
ansible

Sau đó, sử dụng lệnh pip download với tùy chọn -r để lấy tất cả các gói trong tệp requirements.txt.

$ pip download -d ./packages -r requirements.txt

4.5 Nén thành tệp lưu trữ

Để dễ dàng truyền tải thư mục “packages” sang máy chủ môi trường offline, chúng ta nén nó thành một tệp lưu trữ.

$ tar zcvf packages.tar.gz ./packages
$ ls -l packages.tar.gz
-rw-rw-r--. 1 hoshino hoshino 46412021  9  4 01:04 packages.tar.gz

5. Cài đặt gói cục bộ

Bây giờ chúng ta sẽ thực hiện công việc trên máy chủ môi trường offline nơi chúng ta mu

ốn cài đặt các gói. Hãy cài đặt gói từ local sau khi đã có các tệp đã được tải.

5.1 Truyền tệp gói

Trước tiên, hãy truyền tệp nén đã tạo (packages.tar.gz) từ máy chủ có kết nối Internet sang máy chủ môi trường offline.

$ ls -l packages.tar.gz 
-rw-rw-r--. 1 hoshino hoshino 46412021  9  4 01:04 packages.tar.gz
$ tar zxvf packages.tar.gz

5.2 Chuyển sang môi trường ảo

Tiếp theo, tạo môi trường ảo trên máy chủ môi trường offline và chuyển sang nó để không ảnh hưởng đến môi trường hệ thống.

$ python3 -m venv .venv
$ source .venv/bin/activate

5.3 Cài đặt gói cục bộ (cài từng gói)

Nếu bạn muốn cài từng gói một, sử dụng lệnh pip install và chỉ định tên gói cùng với đường dẫn đến thư mục chứa tệp gói. Sử dụng tùy chọn —no-index để vô hiệu hóa truy cập tới máy chủ PyPI (trong trường hợp offline).

Dưới đây là ví dụ cài đặt gói ansible từ thư mục “packages”.

$ pip install --no-index --find-links=./packages ansible

5.4 Cài đặt gói cục bộ (cài đặt tất cả cùng một lúc)

Nếu bạn muốn cài đặt nhiều gói cùng một lúc, tạo một tệp requirements.txt chứa danh sách và sử dụng nó với lệnh pip install.

Trước tiên, sử dụng trình soạn thảo văn bản để tạo tệp requirements.txt.

$ cat requirements.txt
ansible

Sau đó, sử dụng lệnh pip install với tùy chọn -r để cài đặt tất cả các gói trong tệp requirements.txt.

$ pip install --no-index --find-links=./packages -r requirements.txt

5.5 Xác nhận gói đã cài đặt

Sau khi cài đặt xong, sử dụng lệnh pip list để kiểm tra xem các gói đã được cài đặt.

$ pip list
Package      Version
------------ -------
ansible      4.5.0

6. Tài liệu tham khảo

Hướng dẫn người dùng - Tài liệu pip phiên bản 21.2.4

dev_pro_it
Đang làm IT tại Japan

Bình luận

Bài viết chưa có bình luận. Hãy trở thành người bình luận đầu tiên!
Sign up for free and join this conversation.
Sign Up
If you already have a RongvangIT account Login
Danh sách thư mục
Bắt đầu ngay với RồngVàngIT - nền tảng chia sẻ kiến thức lập trình tuyệt vời cho kỹ sư Việt Nam!

Hãy đăng nhập để sử dụng hàng loạt các chức năng tuyệt vời của RồngVàngIT !

  1. 1. Bạn sẽ nhận được các bài viết phù hợp bằng chức năng theo dõi tag và người dùng.
  2. 2. Bạn có thể đọc lại các thông tin hữu ích bằng chức năng lưu trữ nội dung.
  3. 3. Chia sẻ kiến thức, đặt câu hỏi và ghi lại quá trình trưởng thành của mình cùng RồngVàngIT !
Tạo tài khoản Đăng nhập
profile Pic