Reputation: 865
I followed your tutorial on RealPython for installing Python 3.6.6 on Debian 10 Buster. It fails the tests when I run make -j 8
or python3.6 -m test
after a make altinstall
.
During the test_ftplib.py
the tests hang, and after a Ctrl-C a couple of times, I get this summary:
Test suite interrupted by signal SIGINT.
158 tests omitted:
test_poplib test_posix test_posixpath test_pow test_pprint
test_print test_profile test_property test_pstats test_pty
test_pulldom test_pwd test_py_compile test_pyclbr test_pydoc
test_pyexpat test_queue test_quopri test_raise test_random
test_range test_re test_readline test_regrtest test_repl
test_reprlib test_resource test_richcmp test_rlcompleter
test_robotparser test_runpy test_sax test_sched test_scope
test_script_helper test_secrets test_select test_selectors
test_set test_setcomps test_shelve test_shlex test_shutil
test_signal test_site test_slice test_smtpd test_smtplib
test_smtpnet test_sndhdr test_socket test_socketserver test_sort
test_source_encoding test_spwd test_sqlite test_ssl test_startfile
test_stat test_statistics test_strftime test_string
test_string_literals test_stringprep test_strptime test_strtod
test_struct test_structmembers test_structseq test_subclassinit
test_subprocess test_sunau test_sundry test_super test_symbol
test_symtable test_syntax test_sys test_sys_setprofile
test_sys_settrace test_sysconfig test_syslog test_tarfile test_tcl
test_telnetlib test_tempfile test_textwrap test_thread
test_threaded_import test_threadedtempfile test_threading
test_threading_local test_threadsignals test_time test_timeit
test_timeout test_tix test_tk test_tokenize test_tools test_trace
test_traceback test_tracemalloc test_ttk_guionly test_ttk_textonly
test_tuple test_turtle test_typechecks test_typing test_ucn
test_unary test_unicode test_unicode_file
test_unicode_file_functions test_unicode_identifiers
test_unicodedata test_univnewlines test_unpack test_unpack_ex
test_urllib test_urllib2 test_urllib2_localnet test_urllib2net
test_urllib_response test_urllibnet test_urlparse test_userdict
test_userlist test_userstring test_utf8source test_uu test_uuid
test_venv test_wait3 test_wait4 test_warnings test_wave
test_weakref test_weakset test_webbrowser test_winconsoleio
test_winreg test_winsound test_with test_wsgiref test_xdrlib
test_xml_dom_minicompat test_xml_etree test_xml_etree_c
test_xmlrpc test_xmlrpc_net test_yield_from test_zipapp
test_zipfile test_zipfile64 test_zipimport test_zipimport_support
test_zlib
234 tests OK.
6 tests failed:
test_asyncio test_ftplib test_httplib test_imaplib test_logging
test_nntplib
9 tests skipped:
test_asdl_parser test_curses test_dbm_ndbm test_devpoll test_gdb
test_kqueue test_lzma test_msilib test_ossaudiodev
The specific error for test_ftplib.py is:
Exception in thread Thread-1104:Traceback (most recent call last):
File "/usr/local/lib/python3.6/threading.py", line 916, in _bootstrap_inner
self.run()
File "/usr/local/lib/python3.6/test/test_poplib.py", line 223, in run
asyncore.loop(timeout=0.1, count=1)
File "/usr/local/lib/python3.6/asyncore.py", line 207, in loop
poll_fun(timeout, map)
File "/usr/local/lib/python3.6/asyncore.py", line 150, in poll
read(obj)
File "/usr/local/lib/python3.6/asyncore.py", line 87, in read
obj.handle_error()
File "/usr/local/lib/python3.6/asyncore.py", line 83, in read
obj.handle_read_event()
File "/usr/local/lib/python3.6/asyncore.py", line 417, in handle_read_event
self.handle_accept()
File "/usr/local/lib/python3.6/asyncore.py", line 494, in handle_accept
self.handle_accepted(*pair)
File "/usr/local/lib/python3.6/test/test_poplib.py", line 233, in handle_accepted
self.handler_instance = self.handler(conn)
File "/usr/local/lib/python3.6/test/test_poplib.py", line 384, in __init__
self.secure_connection()
File "/usr/local/lib/python3.6/test/test_ftplib.py", line 315, in secure_connection
context.load_cert_chain(CERTFILE)
ssl.SSLError: [SSL: EE_KEY_TOO_SMALL] ee key too small (_ssl.c:3401)
I did some research on the 'ee key too small' error and found these resources: https://github.com/debauchee/barrier/issues/126 https://github.com/jlaine/uvloop/commit/dd15259806727fa00a7169658171f06ef5d58d11
The file test_ftplib.py
uses the test certs Lib/test/keycert3.pem
and Lib/test/pycacert.pem
. Both only have 1024 bit certs, so I tried to replace them with freshly created 3072 bit certs (openssl req -newkey rsa:3078 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
), and the test_ftplib.py
passed. However, many other ssl related tests failed. So, I feel this is a non-productive path to follow.
I am not sure how to proceed from here to get python3.6 to pass the tests on my machine. I would appreciate any suggestions you may have. I need python 3.6.6 as I am trying to deploy a django 3.0 app on this production machine with apache. I can't upgrade to python 3.7 because my app uses dlib, and it is not compatible with python 3.7.
Thanks!
Mark
Upvotes: 1
Views: 1467
Reputation: 11
Not optimal, but if you run make altinstall and skip make, or use options you can bypass the tests and the python binary would still install.
./configure
make altinstall
https://tecadmin.net/install-python-3-6-on-centos/
Upvotes: 1