Hướng dẫn is python 2 gone? - python 2 đã biến mất chưa?

Blog Jamf

Hướng dẫn is python 2 gone? - python 2 đã biến mất chưa?

Apple đã cảnh báo rằng nhị phân Python 2 sẽ bị loại bỏ. Nó là một sự thật bây giờ. Đọc những việc cần làm tiếp theo.

Python có được cài đặt trên Mac không?

Đúng. Và Apple đã cảnh báo rằng nhị phân Python 2 được cài đặt sẵn, là một phần của hệ thống MAC kể từ phát hành. Hơn nữa, Apple tuyên bố rằng kịch bản, chẳng hạn như các bản nhạc cho Python, Ruby và Perl cũng sẽ không còn được đưa vào các phiên bản macOS trong tương lai. Hướng dẫn cho các nhà phát triển bao gồm bất kỳ giải pháp nào của họ phụ thuộc vào trong các ứng dụng của họ.

Tại sao sự cần thiết cho sự thay đổi này?

Kể từ tháng 1 năm 2020, tổ chức giám sát sự phát triển của Python và phát hành chính thức Sunset Python vào phiên bản 2.7 có lợi cho Python 3 mới hơn, an toàn hơn và các phiên bản tiếp theo. Điều này có nghĩa là các bản cập nhật, sửa lỗi và cập nhật bảo mật sẽ chỉ hỗ trợ Python 3.x di chuyển về phía trước, vì Python 2 đã đạt đến cuối đời.

Trong khi Python 3 là người kế thừa chính thức, việc cập nhật mã Python từ phiên bản 2.x đến 3.x không phải là một công việc tầm thường. Người ta chỉ đơn giản là không thể thay thế thời gian chạy bằng phiên bản mới hơn và mong đợi mọi thứ sẽ "chỉ hoạt động". Điều tương tự thậm chí cũng đúng với các phiên bản nhỏ khác nhau của Python 3 hiện đang được hỗ trợ song song, bằng chứng là Python 3.7-3.10 hiện đang được hỗ trợ (kể từ khi viết này) trong khi Python 3.11 đang ở phiên bản beta.

Ngoài cảnh báo bằng văn bản cho các nhà phát triển trong Ghi chú phát hành MacOS, Apple đã thực hiện thêm bước để hiển thị các tin nhắn thông tin khi người dùng cố gắng sử dụng Python 2 Runtimes không dùng nữa trong MacOS Monterey. Những cảnh báo này có thể khó hiểu cho người dùng cuối, chủ yếu được đưa vào các nhà phát triển và quản trị viên trong việc theo dõi các ứng dụng và tập lệnh yêu cầu cập nhật. Ngoài ra, bao gồm trong các ghi chú phát hành beta cho MacOS Monterey 12.3, Apple nói rằng thư mục/usr/bin/python sẽ bị loại bỏ hoàn toàn.

Trong nỗ lực nâng cao bảo mật bằng cách loại bỏ chương trình không dùng nữa Runtimes khỏi các macOS hàng đầu của mình - ngay cả với tất cả các cảnh báo đầy đủ trong nhiều năm qua - việc loại bỏ chức năng ở quy mô này trong một bản cập nhật có thể dẫn đến các vấn đề cho người dùng, quản trị viên và nhà phát triển. Mặc dù Apple có lịch sử được ghi chép lại về việc thêm các tính năng cho người dùng cuối và quản lý trong "Cập nhật mùa xuân", việc phá vỡ chức năng tiềm năng trong một bản cập nhật nhỏ trong lịch sử và do đó, không được mong đợi.

Các vấn đề phức tạp hơn nữa, thời gian beta cho một bản cập nhật nhỏ ngắn hơn nhiều (6-8 tuần) so với thời gian beta cho các bản phát hành hệ thống chính (4-5 tháng). Điều này đã thêm Wrinkle để lại ít thời gian hơn cho các nhà phát triển và quản trị viên để cập nhật mã, kiểm tra cập nhật và triển khai chúng cho các thiết bị của người dùng.

Ví dụ, các hộp thoại cảnh báo được giới thiệu trong MacOS Monterey đã buộc hầu hết các quản trị viên phải cập nhật các tập lệnh và công cụ của họ để tuân thủ sự không hoạt động của Python 2.7. Tuy nhiên, các cuộc gọi đến thời gian chạy Legacy Python 2.7 có thể xuất hiện ở một số nơi bất ngờ.

Kịch bản Jamf

Đầu tiên, các tập lệnh chính sách và các thuộc tính mở rộng trong Jamf Pro có thể được viết hoàn toàn cho Python 2.7. Bạn có thể xác định các tập lệnh này với #!/Usr/bin/python hoặc #!/Usr/bin/env Python shebang trong dòng đầu tiên của tập lệnh. Các tập lệnh Shell cũng có thể gọi Python để sử dụng chức năng hệ thống nhất định. Laurent Pertois có một tập lệnh sử dụng API Jamf để tìm kiếm thông qua tất cả các tập lệnh và thuộc tính mở rộng để sử dụng lệnh Python. Điều này sẽ cung cấp cho bạn một danh sách các vị trí để kiểm tra nơi tìm thấy việc sử dụng Python.

Một cách sử dụng phổ biến của Python là xác định người dùng hiện đã đăng nhập. Tồn tại một sự thay thế chỉ có vỏ cho việc này, cũng như JavaScript cho tự động hóa (JXA), đây cũng là một giải pháp hữu ích cho một số lớp Python một lớp phổ biến hơn. Bạn cũng có thể tìm thấy sự thay thế hữu ích cho nhiều cách sử dụng hành chính của Python trên Jamf Nation và/hoặc trong kênh Slack Macadmins.

Python trong tập lệnh cài đặt

Bạn cũng sẽ thường xuyên tìm thấy các tập lệnh Python hoặc cuộc gọi trong các tập lệnh trước và sau khi cài đặt trong các gói cài đặt. Vì PKG thường được xây dựng bởi nhà cung cấp phần mềm, bạn có thể không biết về các tập lệnh Python này. Tôi đã viết một tập lệnh có tên PKGCheck tìm kiếm đệ quy thông qua thư mục PKGS của trình cài đặt và liệt kê tất cả các tập lệnh sử dụng Python Shebang hoặc công cụ Python trong mã. Việc sử dụng tập lệnh này chắc chắn sẽ giúp xác định các gói trình cài đặt bên thứ ba có thể gây ra rắc rối tiến về phía trước.

Khi bạn xác định PKG với tập lệnh sử dụng Python, thật hữu ích khi thông báo cho nhà cung cấp rằng trình cài đặt của họ sẽ bị hỏng với macOS 12.3 trở lên. Bất chấp nỗ lực tốt nhất của bạn, nếu nhà cung cấp phần mềm không thể cung cấp cập nhật kịp thời, hãy tận dụng các nhóm thông minh của Jamf Pro để ngăn chặn việc cài đặt gói này trên máy Mac của bạn đã được cập nhật lên MacOS 12.3 và cao hơn có thể giúp giải quyết mọi vấn đề có thể tiêu cực Tác động hiệu suất của người dùng cuối. Bạn cũng có thể cố gắng cập nhật các tập lệnh Python bị ảnh hưởng và đóng gói lại phần mềm để triển khai, nhưng tùy thuộc vào những gì các tập lệnh cài đặt làm, đó có thể là một nhiệm vụ khó khăn.

Các công cụ khác

Các công cụ nguồn mở cho quản trị viên Mac thường được viết hoàn toàn bằng Python 2. Bạn có thể xác định chúng với Shebang, như đã đề cập trước đây. Khi shebang là/usr/bin/python, thì nó đang sử dụng Python 2 tích hợp, sau đó sẽ thất bại trên MacOS 12.3. Kiểm tra kho lưu trữ hoặc trang web của nhà phát triển cho công cụ được đề cập có thể mang lại các bản cập nhật hoặc hướng dẫn để thực hiện các công cụ này hoạt động theo các phiên bản MacOS 12.3 trở lên. Nếu bạn cảm thấy thoải mái, bạn cũng có thể thử yêu cầu một giải pháp từ các quản trị viên Mac đồng nghiệp ở Jamf Nation hoặc kênh Slack Macadmins cho các giải pháp thay thế.

Một ví dụ về các loại giải pháp có thể tồn tại cho vấn đề cụ thể của bạn là công cụ Dockutil. Mặc dù các nhà phát triển đang làm việc trên phiên bản Python 3 mới, một công cụ thay thế có thể được tìm thấy trong Docklib, đã hỗ trợ Python 3.

Python sống lâu 3

Mặc dù Python 3 không phải là sự thay thế thả vào Python 2, nhưng nó vẫn là bước hợp lý nhất về phía trước. Tuy nhiên, có một nhị phân Python 3 trong macOS, tuy nhiên, nó chỉ là một nhị phân giữ chỗ, có thể chuyển hướng đến thời gian chạy Python được cài đặt với Xcode hoặc nhắc người dùng cài đặt các công cụ dòng lệnh của nhà phát triển. Binary Python 3 được bao gồm trong MacOS không phải là một sự thay thế tốt cho Python 2 không dùng nữa.

Như Apple được đề xuất trở lại trong Ghi chú phát hành MacOS Catalina, khi bạn muốn phiên bản Python bạn có thể phụ thuộc, giải pháp tốt nhất là cung cấp cho riêng bạn.

Tác giả Docklib khuyên bạn nên sử dụng phiên bản Python Macadmins. Dự án nguồn mở này cung cấp trình cài đặt PKG cho Python 3, được cấu hình sẵn với một bộ các mô-đun Python hữu ích được cài đặt sẵn. Nó cũng cài đặt vào một vị trí không chuẩn trong hệ thống tệp để tránh mâu thuẫn với các phiên bản Python khác mà các nhà phát triển có thể sử dụng.

Đây là một giải pháp tuyệt vời khi bạn muốn tiếp tục sử dụng Python cho các công cụ quản trị viên của mình. Một tùy chọn hữu ích khác là xây dựng Python tùy chỉnh của riêng bạn với các mô-đun bằng công cụ-Python có thể chuyển vị của Greg Neagle.

Bất cứ điều gì bạn làm cuối cùng, hãy nhớ rằng bây giờ bạn cũng có trách nhiệm duy trì và cập nhật nó.

Trăn trăn

Ngay cả với sự chuẩn bị tốt nhất, quá trình chuyển đổi này sẽ tạo ra một số vấn đề. Bạn sẽ phải kiểm tra, cập nhật và xác minh các tập lệnh của riêng bạn, cùng với việc thông báo cho các nhà cung cấp và nhà phát triển công cụ rằng họ nên cập nhật các gói cài đặt của họ để phản ánh những thay đổi phá vỡ công cụ với việc không dùng nữa của Python 2.

Bạn có thể phải dựa vào các nhóm JAMF Pro và Smart để trì hoãn việc cài đặt phần mềm và cập nhật cho các ứng dụng vẫn sử dụng các cuộc gọi Python trong MacOS Monterrey 12.3. Nếu phần mềm rất quan trọng cho doanh nghiệp của bạn, bạn có thể thấy việc trì hoãn bản cập nhật thành 12.3 là cần thiết cho đến khi bất kỳ phần mềm phụ thuộc 2 Python nào được vá. Nếu bạn muốn tiếp tục sử dụng Python cho nguồn mở hoặc các công cụ của riêng bạn, theo khuyến nghị ban đầu của Apple về việc cung cấp và quản lý phiên bản của riêng bạn có thể là con đường tốt nhất về phía trước.

Hướng dẫn is python 2 gone? - python 2 đã biến mất chưa?

Armin Briegel đã quản lý Mac và người dùng của họ trong gần 30 năm và có thể đã giữ hầu hết các chức danh công việc kỹ thuật hiện có cùng lúc này. Ông đã làm việc gần mười năm tại Apple ở Đức và Hoa Kỳ với tư cách là kỹ sư và kỹ sư tư vấn hệ thống. Sau đó, ông đưa lý thuyết vào thực tế với tư cách là một quản trị viên hệ thống tại Đại học California. Ông hiện đang làm việc cho Jamf với tư cách là một kỹ sư tư vấn. Ông cũng viết trên weblog của mình, scriptingosx.com và đã xuất bản năm cuốn sách cho các quản trị viên của Apple.

Đăng ký Blog Jamf

Có xu hướng thị trường, cập nhật của Apple và JAMF News được gửi trực tiếp đến hộp thư đến của bạn.

Để tìm hiểu thêm về cách chúng tôi thu thập, sử dụng, tiết lộ, chuyển giao và lưu trữ thông tin của bạn, vui lòng truy cập chính sách bảo mật của chúng tôi.