Installation#

Once prerequisites have been satisfied, Patcher can be installed via pip:

$ python3 -m pip install --upgrade patcherctl

Installing Beta Releases from TestPyPI

Patcher beta releases are published to Test PyPI. To install a beta version, you must specify the TestPyPI index:

$ python3 -m pip install -i https://test.pypi.org/simple --extra-index-url https://pypi.org/simple patcherctl=={VERSION}

Replace {VERSION} with the specific beta version number, such as 1.3.4b2.

Note

Using the --pre option alone will not install beta releases from TestPyPI since it only applies to the main PyPI repository. You must explicitly specify the TestPyPI URL to access beta versions.

Verifying the Installation#

After installation, you can verify Patcher is installed correctly by running:

$ patcherctl --version

This should display the installed version of Patcher. Additionally, the --help command can also verify installation and show helpful options to pass at runtime:

$ patcherctl --help

Usage: patcherctl [OPTIONS]

Options:
  --version                       Show the version and exit.
  -p, --path PATH                 Path to save the report(s)
  -f, --pdf                       Generate a PDF report along with Excel
                                  spreadsheet
  -s, --sort TEXT                 Sort patch reports by a specified column.
  -o, --omit                      Omit software titles with patches released
                                  in last 48 hours
  -d, --date-format [Month-Year|Month-Day-Year|Year-Month-Day|Day-Month-Year|Full]
                                  Specify the date format for the PDF header
                                  from predefined choices.
  -m, --ios                       Include the amount of enrolled mobile
                                  devices on the latest version of their
                                  respective OS.
  --concurrency INTEGER           Set the maximum concurrency level for API
                                  calls.
  -x, --debug                     Enable debug logging to see detailed debug
                                  messages.
  -r, --reset                     Resets the setup process and triggers the
                                  setup assistant again.
  --help                          Show this message and exit.

SSL Verification#

As of version 1.4.1, Patcher no longer modifies SSL configurations. SSL handling for custom certificates required some additional TLC by end users and would often cause SSL verification errors at runtime. This is compounded when taking into account our end users are likely on managed systems with security policies and third-party certificates (e.g., Zscaler).

With the current version, SSL handling is no longer required by the end user. We’ve integrated curl with asyncio within Patcher’s functionality to automatically handle SSL verification as part of API requests. This design choice removes the need for manual SSL configurations, streamlining the setup for MacAdmins on managed computers.

Note

While the current integration between curl and asyncio gets the job done for handling SSL verification, there’s room for refinement. Community contributions to enhance this functionality are welcome and encouraged. If you’re interested in exploring ways to solidify this process further, check out the relevant code in the BaseAPIClient class.

This update makes it easier for Patcher to run smoothly in secure environments, without the hassle of adjusting system certificates or tinkering with Python’s SSL settings.

If none of the above steps worked to resolve the issue, please reach out to us and let us know what (if any) security software is installed on your machine. This will help us troubleshoot issues in the future. Additionally, get in touch with someone from your security team for next steps as they may have a solution in place.