sttz / install-unity

Script to install Unity 3D versions from the command line on macOS
MIT License
131 stars 25 forks source link

Getting new releases fails #3

Closed masteranza closed 7 years ago

masteranza commented 7 years ago

Probably just needs an update...

No cache found, updating Unity versions list...
Loading Unity releases...
Traceback (most recent call last):
  File "./install-unity.py", line 675, in <module>
    cache = version_cache(script_dir, update_cache)
  File "./install-unity.py", line 171, in __init__
    self.update()
  File "./install-unity.py", line 187, in update
    count = self._load_and_parse(UNITY_DOWNLOADS, UNITY_DOWNLOADS_RE, self.cache['versions'])
  File "./install-unity.py", line 220, in _load_and_parse
    error('Could not load URL "%s": %s' % url, e.reason)
TypeError: not enough arguments for format string
sttz commented 7 years ago

Thanks for the report!

It seems to be an issue with the HTTPS connection. A combination of the old OpenSSL and Python versions macOS uses together with the SSL configuration of the server, that Unity might have changed.

I haven't found a good solution for this yet. I tried to make this script run without any additional dependencies and that makes it harder to find a fix for this.

nomadalex commented 7 years ago

@sttz hello, the old openssl library is coming from system, we can not update it, so maybe switch to python from homebrew will be better?

I create a PR for it, please review it, thanks.

5

sttz commented 7 years ago

I concluded that there's no way to make it work the the Python/OpenSSL bundled with macOS. The unity3d.com web server supports only TLS1.2, while the OpenSSL shipped with macOS only supports TLS1.0.

Which means the user has to install a new version of Python 2 that is linked to at least OpenSSL version 1.0.1g. It's up to the user how they want to install it (using a package manager or using the installer from python.org) – the script now simply detects the version of OpenSSL used and prompts to upgrade Python if it's too old.