Python 3.12.1 Manifest File

VL
New Contributor III

Does anyone have, or can anyone advise on how to create, a manifest file for installing the Python 3.12.1?

Pretty new to macOS administration, and very new to Jamf Pro, but would like to be able to deploy the Python 3.12.1 package through Self Service but not been able to get it to work. I'm presuming it is because I've not declared a manifest file, and using Composer reports a whole load of Deleted Files and Modified Files which I think are unique to my machine configuration and even the Files For Package seems to include a whole load of irrelevant files.

Any help will be gratefully received.

2 ACCEPTED SOLUTIONS

AJPinto
Honored Contributor II

You can't update the preinstalled version of Python on macOS as its SIP protected. You can, however, deploy a second install of python which should come prepacked as @jamf-42 suggested. 

View solution in original post

jamf-42
Valued Contributor II

upload the python pkg you downloaded to jamf.. nothing else is needed.. tag in policy.. 

 

View solution in original post

10 REPLIES 10

jamf-42
Valued Contributor II

download the required pkg version here https://www.python.org/downloads/macos/

but note that if they already have Python installed, they should manage it.. 

AJPinto
Honored Contributor II

You can't update the preinstalled version of Python on macOS as its SIP protected. You can, however, deploy a second install of python which should come prepacked as @jamf-42 suggested. 

VL
New Contributor III

Thanks for the feedback @jamf-42  and @AJPinto.

To provide some clarity, I'm looking to provide Python 3.12.1 as my company is due to refresh a number of devices which will now be managed by Jamf Pro. I note, looking at a test device, that by default when machines are updated to macOS Sonoma 14.2.1 the available Python is version 3.9.6 (/usr/bin/python3). A number of the new devices will need to be updated with the latest stable version of Python (3.12.1).

When manually installing Python 3.12.1 (python-3.12.1-macos11.pkg) as downloaded from python.org, this creates:

  • Application folder labelled Python 3.12 which contains the app files IDLE.app and Python Launcher.app along with other files;
  • /Library/Frameworks/Python.framework which contains the sub-folder, and links to, labelled Versions which contains the 3.12 directories/files;
  • links /usr/local/bin/python3 to Python framework executable.

Now with regard to Jamf Pro, I've created a Package and upload the .pkg file; created a Policy which makes it available through Self Service; but when selecting the option to install it doesn't appear to do anything albeit it reports done.  When checking the logs this is what it shows:

Screenshot 2024-01-17 at 13.16.48.png

AJPinto
Honored Contributor II

This python package cannot update macOS's preinstalled python version (3.9.6). Instead, it installs a second instance of Python which you need to know how to call specifically. You should see a Python 3.12 folder in Applications if the package worked.

 

I cannot stress enough, inspect packages before you install them. Knowing what the packages actually do is invaluable for knowing how to validate the install, in addition to a good security practice.

AJPinto_0-1705499988104.png

Mothers Ruin Software | Suspicious Package

VL
New Contributor III

Thanks for the response @AJPinto, and the introduction to Suspicious Package which looks like a useful tool.

I think the conversation is moving away from what the issue is, that being deploying a Package file (.pkg) through Jamf Pro doesn't work.

I've got three apps that currently can be deployed through Self Service, but these originally were downloaded as DMG files (.dmg). As advised by Jamf Support, I manually installed them then used Composer to create a package file and manifest file before creating a package in Settings > Packages for deployment through Self Service. Given that I've downloaded the Python package file, and based on Jamf's documentation, it looks like all I should need to do is create the package under Settings > Packages using the original .pkg file. This, though, doesn't work.

So the question/issue is what is about the Python package, or the way I'm setting up in Jamf Pro, that prevents it from installing properly?

jamf-42
Valued Contributor II

upload the python pkg you downloaded to jamf.. nothing else is needed.. tag in policy.. 

 

AJPinto
Honored Contributor II

Python should come as a .pkg, not a .dmg. You should be able to simply upload the python .pkg to Jamf, add it to a policy payload, and deploy with no other changes needed.

Python Releases for macOS | Python.org

 

If you are manually building a package, you should be able to check to see if the contents of the package are being placed where you are expecting them to go. Run the package locally, before uploading it to Jamf and confirm it works. Unless you added a script to the package with exit codes, a package will report success to Jamf about 100% of the time as there are no failure conditions. 

 

Any information in Jamfs policy log comes from scripts in the package. If you are not putting scripts in the package that are echoing things the Jamf log wont have anything. You can also check the install.log on the device.

 

 

VL
New Contributor III

You make it sound so simple @jamf-42, and I would agree with you given my experience on setting up a couple of other apps albeit they were DMG files (.dmg), but simply "upload the python pkg you downloaded to jamf" doesn't work.

I've just downloaded the Zoom full installer file (https://zoom.us/download) zoomusInstallerFull.pkg and set up a package and policy and though it is available in Self Service clicking on Install does not result in the app being installed. Running the package interactively it installs perfectly fine, so there is clearly more to installing a package than simply uploading the file through Settings > Packages and creating a Policy but I can't find out what it is.

jamf-42
Valued Contributor II

ok.. open terminal.. twice..  in the 1st one type:

tail -f /var/log/jamf.log 

and in the other type:

tail -f /var/log/install.log

 

run your self service installs.. and lets see whats going on.... 

deploying via Self Service with a pkg.. is just, upload pkg, create policy.. add pkg.. set scope, set self service options.. other options can be set.. but this is the basics.. 

post a pic of the policy.. ?

VL
New Contributor III

@jamf-42 have been able to work out the issue, in that the Policies were not saved properly - and when previously checking them seeing what I expected to see, rather than registering what was actually there. Having had a break I realised that though I believed the Policies had a designated Package there wasn't one defined.

Having added the Package, all is working as expected. Therefore, it is as simple as uploading the package to Jamf providing the package is actually then defined in the policy.

Thanks for the help, as it did help lead me to resolving the issue.