Cách đặt `python` thành bí danh của` python3` systemwide trên Debian

Sep 17 2020

Các bản cập nhật mới nhất của hệ thống thử nghiệm Debian của tôi đã xóa phiên bản Python 2 và tôi chỉ cài đặt Python 3 với python3. Không còn bất kỳ lệnh nào được đặt tên python. Điều này khiến một số tập lệnh bị lỗi, bao gồm các tập lệnh tương thích với Python 3.

Tôi muốn biết cách thích hợp để định cấu hình toàn cầu pythonlàm bí danh cho là gì python3.

Một giải pháp tồi tệ sẽ là thực hiện thủ công một cái gì đó như vậy sudo ln -s /usr/bin/python{3,}, nhưng tôi lo lắng rằng điều này có thể không mạnh đối với các bản cập nhật APT trong tương lai (hoặc nếu cài đặt lại Python 2 sau này). Một tùy chọn khác là đặt bí danh, nhưng sau đó nó sẽ chỉ hoạt động cho người dùng của tôi, không cho toàn bộ hệ thống.

Tôi cũng lưu ý rằng trên Ubuntu có một gói python-is-python3thực hiện chính xác điều này, nhưng không có gói nào như vậy trên Debian.

Trả lời

3 StephenKitt Sep 17 2020 at 19:59

Nếu bạn muốn dính vào các quy tắc mà tất cả mọi thứ trong /usrngoài /usr/localphải xuất phát từ một gói phần mềm, tôi sẽ thực sự tải về các python-is-python3gói và cài đặt đó. Nó chỉ gửi /usr/bin/pythonliên kết biểu tượng và tài liệu bắt buộc, và các quan hệ gói của nó không có khả năng gây ra sự cố trong tương lai.

Một bí danh sẽ không giúp ích gì với shebang các tập lệnh của bạn và do các gói Python không sử dụng các lựa chọn thay thế, việc tạo thay thế của riêng bạn ( update-alternativesv.v.) sẽ không phải là một giải pháp mạnh mẽ.

Nếu các tập lệnh của bạn sử dụng /usr/bin/env python, bạn có thể thêm một liên kết vào theo cách thủ công /usr/local/bin.

Bất kể bạn quyết định làm gì, kể từ bây giờ các gói phụ thuộc Python trong Debian được yêu cầu sử dụng rõ ràng python2hoặc python3trong nhóm của chúng, vì vậy bạn sẽ không gặp phải sự cố do các gói từ kho lưu trữ chính thức (trong Debian 11 trở lên, ngoại trừ không ổn định và đang thử nghiệm vì chúng vẫn còn các gói Python cũ chưa được dọn dẹp).

2 a3nm Nov 02 2020 at 22:17

Dường như Debian hiện đang vận chuyển python-là-python3 mình (trong sid và thử nghiệm như các văn bản này), vì vậy tiền đề của câu hỏi không còn nắm giữ và bạn có thể chỉ: sudo apt update && sudo apt install python-is-python3.