Nổi bật trên nền tảng macOS Monterey 12. 2, Apple đã phát hành công khai macOS Monterey 12. Ghi chú phát hành 3 Beta
Mặc dù đây là một bản phát hành điểm, nhưng có một vài thay đổi đột phá
Các hạt nhân cho cả Ứng dụng Dropbox Desktop và Microsoft OneDrive được gọi là không dùng nữa trong ghi chú phát hành và do đó, cả hai đều có các bản cập nhật và/hoặc thay đổi sắp tới để khắc phục thay đổi này
Tuy nhiên, thay đổi có tác động lớn hơn là việc loại bỏ Python 2 [/usr/bin/python]
Điều này có một số điểm phân nhánh và thực sự là một thay đổi rất lớn đối với một bản phát hành điểm
Xem bên dưới để biết thêm chi tiết về điều này và nó có thể ảnh hưởng như thế nào đến mọi Quản trị viên Mac
nội dung
- 1 Tại sao điều này lại xảy ra?
- 2 Chà, chúng tôi đã được cảnh báo.
- 3 Vì vậy, chúng ta chỉ có thể chạy Python 3 như Apple khuyến nghị, phải không?
- 4 Còn #. /usr/bin/env trăn?
- 5 Và, python -c?
- 6 Chúng tôi sẽ thấy những lỗi nào?
- 7 Vậy, bây giờ thì sao?
- 7. 1 Jamf Pro
- 7. 2 Munki
- 7. 3 Pkg tự động
- 7. 4 Hướng dẫn chung.
- 8 Còn gì nữa không?
- 9 Vì vậy, chúng tôi đã tìm thấy một số lệnh gọi Python 2, bây giờ thì sao?
- 10 Còn Ruby và Perl thì sao?
Nhị phân /usr/bin/python là Python 2, đó là hoàng hôn 2020-01-01
Vì vậy, từ quan điểm bảo mật, sự thay đổi này có ý nghĩa nhưng việc loại bỏ trong một bản phát hành điểm của macOS sẽ rất khó khăn
Vâng, chúng tôi đã được cảnh báoĐúng, đã có cảnh báo trước
ghi chú phát hành macOS Catalina đã nêu
Tuy nhiên, khi macOS Monterey được phát hành, Python 2 [/usr/bin/python] vẫn được đưa vào
Thay vào đó, một cảnh báo đã được nhắc khi Python 2 [/ usr/bin/python] được gọi, [xem bài đăng trên blog trước của tôi về điều này]
Vì vậy, có, chúng tôi đã được cảnh báo. Điều ngạc nhiên hơn là thay đổi này sẽ xuất hiện trong một bản phát hành điểm, không phải macOS 13 [ví dụ]
Và, sự thay đổi này cũng có thể gây ngạc nhiên cho những người đã loại bỏ những lời nhắc phản đối về Monterey
Vì vậy, chúng ta chỉ có thể chạy Python 3 như Apple khuyến nghị, phải không?Không. Và vì một vài lý do
Điều đầu tiên, Python 3 không được cài đặt trên macOS theo mặc định
Có một tập tin nằm ở. /usr/bin/python3, nhưng đây là một sơ khai và việc gọi nó sẽ kích hoạt bên dưới [nếu Xcode chưa được cài đặt và các công cụ dành cho nhà phát triển đã được cài đặt]
Tiếp theo, đường dẫn đến Python 3 được cài đặt theo quy trình trên là /usr/bin/python3 và Python 2 được đặt tại. /usr/bin/trăn. Và, /usr/bin/ không thể được sửa đổi bởi chúng tôi, vì nó được bảo vệ bởi Bảo vệ toàn vẹn hệ thống
Và, ngay cả khi chúng ta có thể trỏ /usr/bin/python tới bản cài đặt Python 3
Python 3 bao gồm một số thay đổi có nghĩa là không thể tương thích ngược với Python 2
Những thay đổi này là một phần lý do tại sao Python 2 vẫn được sử dụng, mặc dù Python 3 đã được phát hành vào ngày 3 tháng 12 năm 2008
Khi mọi thứ đang kêu gọi #. /usr/bin/env python, họ đang yêu cầu HĐH duyệt qua các thư mục được hiển thị trong $PATH để tìm tệp có tên “python” và sau đó sử dụng tệp đó
Vì vậy, những điều này sẽ thất bại vì chúng có thể sẽ không tìm thấy tệp hoặc nếu chúng tìm thấy tệp, đó có thể là Python 3
Và, trăn -c?Điều này giống như gọi #. /usr/bin/env python và như vậy, hãy cẩn thận
Chúng ta sẽ thấy những lỗi nào?Nó thực sự phụ thuộc vào cách Python 2 được gọi, nhưng trực tiếp bạn có thể sẽ thấy một cái gì đó như
/usr/bin/python: bad interpreter: No such file or directory
Và có thể
/usr/bin/python: command not foundThế bây giờ thì thế nào?
Chà, tùy thuộc vào hệ thống bạn đang sử dụng. Nhưng để khái quát hóa, bạn sẽ muốn kiểm tra tất cả các tập lệnh và gói của mình để tìm các lần xuất hiện của python -c , /usr/bin/python hoặc /usr/bin/env python
Dưới đây là một số hướng dẫn cụ thể hơn
Jamf chuyên nghiệp
Một lần nữa, tôi khuyên bạn nên chạy Jamf Migrator đối với phiên bản Jamf Pro của bạn để tải xuống mọi tập lệnh và Thuộc tính tiện ích mở rộng để kiểm tra
Munki
Tải xuống danh mục “tất cả” [hoặc từng danh mục riêng biệt] và kiểm tra
AutoPkg
Kiểm tra công thức nấu ăn và phần ghi đè của bạn để biết các lần xuất hiện đối với /usr/bin/python hoặc /usr/bin/env python
Hướng dẫn chung
Armin Briegel, hay còn gọi là scriptingosx, có một tập lệnh tuyệt vời có tên là pkgcheck có thể duyệt qua một thư mục tìm kiếm các gói [có nhiều định dạng khác nhau và thậm chí cả các gói trong DMG] và sẽ tư vấn xem gói cài đặt trước hay cài đặt sau bắt đầu bằng một chuỗi #. /usr/bin/python [trong số nhiều thứ khác]
Vì vậy, pkgcheck rất đáng để chạy với Munki Repo hoặc Điểm phân phối Jamf của bạn [nếu bạn có JCDS, trước tiên bạn cần sao chép cục bộ]
Dưới đây là đầu ra cho Microsoft Teams 1. 00. 434557
MSTeams-1.4.00.34557-434557 /Volumes/distribution/pkgs/Applications/Microsoft/MicrosoftTeams/MSTeams-1.4.00.34557-434557.pkg Signature: Developer ID Installer: Microsoft Corporation [UBF8T346G9] Notarized: Yes, Notarized Developer ID Type: Flat Distribution PKG Version: 1.00.434557 Contains 1 component pkgs Type: Flat Component PKG Identifier: com.microsoft.teams Version: 1.00.434557 Location: /Applications Contains 9 resource files contextInstall.py has shebang #!/usr/bin/python fileLogger.py has shebang #!/usr/bin/python utility.py has shebang #!/usr/bin/python logger.py has shebang #!/usr/bin/python perfScenario.py has shebang #!/usr/bin/python startTeams.py has shebang #!/usr/bin/pythonCòn gì nữa không?
Nếu bạn chưa chạy Monterey trong sản xuất, hãy tạo một máy ảo trên Monterey hoặc cập nhật máy Mac và chạy nó thông qua quá trình triển khai của bạn. Cài đặt càng nhiều mục càng tốt và chạy chúng nữa
Ghi lại bất kỳ lời nhắc nào bạn nhận được và nếu bạn đang chạy Monterey, bạn nên xóa phần bên dưới khỏi tài khoản của mình để xem có lời nhắc nào xuất hiện không
~/Library/PythonWrapper/promptedapps.plist
Tiếp theo, cập nhật một vài thiết bị lên 12. 3 thông qua các chương trình beta khác nhau của Apple
Sử dụng điều này như trình điều khiển hàng ngày của bạn, có thể có một số điều bất ngờ mặc dù tất cả các kiểm tra trên
Monterey 12. 3 lần phá mã. ` để mở Mã VS trong một repo và tôi rất buồn… và bây giờ tôi hoàn toàn nhận thức được việc loại bỏ hệ thống Python sẽ trở nên HOANG DÃ. Hỗ trợ CNTT ôm tất cả xung quanh. #Quản trị viên Mac
– Nathaniel Strauss [@nwstrauss_] ngày 28 tháng 1 năm 2022
Có vẻ như mã nhị phân là một tập lệnh bash đơn giản, với nội dung bên dưới
cat /usr/local/bin/code #!/usr/bin/env bash # # Copyright [c] Microsoft Corporation. All rights reserved. # Licensed under the MIT License. See License.txt in the project root for license information. function realpath[] { python -c "import os,sys; print[os.path.realpath[sys.argv[1]]]" "$0"; } CONTENTS="$[dirname "$[dirname "$[dirname "$[dirname "$[realpath "$0"]"]"]"]"]" ELECTRON="$CONTENTS/MacOS/Electron" CLI="$CONTENTS/Resources/app/out/cli.js" ELECTRON_RUN_AS_NODE=1 "$ELECTRON" "$CLI" --ms-enable-electron-run-as-node "$@" exit $?Vì vậy, chúng tôi đã tìm thấy một số cuộc gọi Python 2, bây giờ thì sao?
Điều này thực sự phụ thuộc vào những gì và tổ chức của bạn cần
Ví dụ: Thuộc tính mở rộng cho jamJAR đã được chuyển từ Python 2 sang bash. Điều này đã dừng lời nhắc trên macOS Monterey 12. 0-12. 2 và có nghĩa là đối với macOS Monterey 12. 3 không cần thay đổi
Trong khi đó, đây là bộ xử lý tùy chỉnh cho công thức AutoPkg được viết bằng Python 2. Khi AutoPkg vận chuyển Python 3 của riêng nó, chúng tôi có thể chuyển tập lệnh sang Python 3 và thay đổi shebang để trỏ đến Python vận chuyển của AutoPkg
Khi nói đến các sản phẩm của nhà cung cấp, hãy liên hệ càng sớm càng tốt. Ngay khi bạn thấy rằng họ đang gọi Python 2, hãy chỉ cho họ macOS Monterey 12. 3 ghi chú phát hành
Nếu đó là một dự án nguồn mở, tôi khuyên bạn nên nêu vấn đề càng sớm càng tốt và lý tưởng nhất là PR ngay sau đó
Còn Ruby và Perl thì sao?Mặc dù các ghi chú phát hành macOS Catalinas nói rằng Ruby và Perl sẽ không được đưa vào macOS tương lai trong cùng một câu với Python, nhưng dường như không có bất kỳ mốc thời gian công khai nào xung quanh việc loại bỏ chúng, nhưng có thể là macOS 12. 4