Upgrading Seafile (when in use over several years) requires additional thinking and upgrade planning, because:
This means if you want to upgrade your Seafile server from version 7.0 or earlier, you need to do this on an operating system/release which offers both Python2 and Python3 support. Debian 10 (Buster) is the last Debian release which offers full Python2 support, yet also offers full Python3 (3.7) support.
The upgrade path to get your outdated Seafile to a recent version (9.0.8 is currently the newest release) on a Debian Linux, is therefore something like this:
The Seafile 7.0 to 7.1 upgrade documentation mentions the installation of several Python3 packages, using both apt and pip3 (Python's own package installation tool):
While the apt packages were installed fine, the pip3 packages fail to install:
root@seafile~# pip3 install --timeout=3600 Pillow pylibmc captcha jinja2 sqlalchemy==1.3.8 django-pylibmc django-simple-captcha python3-ldap
Collecting Pillow
[...]
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-icrvn39g/Pillow/setup.py", line 1015, in <module>
raise RequiredDependencyException(msg)
__main__.RequiredDependencyException:
The headers or library files could not be found for zlib,
a required dependency when compiling Pillow from source.
Please see the install instructions at:
https://pillow.readthedocs.io/en/latest/installation.html
The installation fails and mentions that the (development) headers for the zlib library could not be found. These can be installed using apt:
root@seafile:~# apt-get install zlib1g-dev
But after this, another error showed up at the end:
root@seafile:~# pip3 install --timeout=3600 Pillow pylibmc captcha jinja2 sqlalchemy==1.3.8 django-pylibmc django-simple-captcha python3-ldap
Collecting Pillow
[...]
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-72km_1f0/Pillow/setup.py", line 1015, in <module>
raise RequiredDependencyException(msg)
__main__.RequiredDependencyException:
The headers or library files could not be found for jpeg,
a required dependency when compiling Pillow from source.
Please see the install instructions at:
https://pillow.readthedocs.io/en/latest/installation.html
Alright, this time the jpeg development headers are missing. Install them as well:
root@seafile:~# apt-get install libjpeg62-turbo-dev
Run the pip3 command again:
root@seafile:~# pip3 install --timeout=3600 Pillow pylibmc captcha jinja2 sqlalchemy==1.3.8 django-pylibmc django-simple-captcha python3-ldap
Collecting Pillow
[...]
writing manifest file 'src/Pillow.egg-info/SOURCES.txt'
running build_ext
building 'PIL._imaging' extension
creating build/temp.linux-x86_64-3.7
creating build/temp.linux-x86_64-3.7/src
building 'PIL._imagingmath' extension
creating build/temp.linux-x86_64-3.7/src/libImaging
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include -I/usr/local/include -I/usr/include/python3.7m -c src/_imagingmath.c -o build/temp.linux-x86_64-3.7/src/_imagingmath.o
building 'PIL._imagingmorph' extension
unable to execute 'x86_64-linux-gnu-gcc': No such file or directory
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include -I/usr/local/include -I/usr/include/python3.7m -c src/_imagingmorph.c -o build/temp.linux-x86_64-3.7/src/_imagingmorph.o
unable to execute 'x86_64-linux-gnu-gcc': No such file or directory
building 'PIL._imagingtk' extension
creating build/temp.linux-x86_64-3.7/src/Tk
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include -I/usr/local/include -I/usr/include/python3.7m -c src/_imagingtk.c -o build/temp.linux-x86_64-3.7/src/_imagingtk.o
unable to execute 'x86_64-linux-gnu-gcc': No such file or directory
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DHAVE_LIBJPEG -DHAVE_LIBZ -DPILLOW_VERSION="9.2.0" -I/usr/include -I/usr/local/include -I/usr/include/python3.7m -c src/_imaging.c -o build/temp.linux-x86_64-3.7/src/_imaging.o
unable to execute 'x86_64-linux-gnu-gcc': No such file or directory
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
----------------------------------------
Command "/usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-u1qt_b1z/Pillow/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-v1udz6aa/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-install-u1qt_b1z/Pillow/
Ugh, another error. This time the error mentions an issue with gcc. Let's install two additional packages: The Python development package and the build-essential package. The latter contains a lot of program compiling tools, such as the mentioned gcc.
root@seafile:~# apt-get install python3.7-dev build-essential
root@seafile:~# pip3 install --timeout=3600 Pillow pylibmc captcha jinja2 sqlalchemy==1.3.8 django-pylibmc django-simple-captcha python3-ldap
Collecting Pillow
[...]
Installing collected packages: Pillow, pylibmc, captcha, MarkupSafe, jinja2, sqlalchemy, django-pylibmc, typing-extensions, asgiref, pytz, sqlparse, Django, django-ranged-response, django-simple-captcha, pyasn1, python3-ldap
Running setup.py install for Pillow ... done
Running setup.py install for pylibmc ... done
Running setup.py install for MarkupSafe ... done
Running setup.py install for sqlalchemy ... done
Running setup.py install for django-ranged-response ... done
Successfully installed Django-3.2.15 MarkupSafe-2.1.1 Pillow-9.2.0 asgiref-3.5.2 captcha-0.4 django-pylibmc-0.6.1 django-ranged-response-0.2.0 django-simple-captcha-0.5.17 jinja2-3.1.2 pyasn1-0.4.8 pylibmc-1.6.3 python3-ldap-0.9.8.4 pytz-2022.2.1 sqlalchemy-1.3.8 sqlparse-0.4.2 typing-extensions-4.3.0
Finally the required Python modules were installed.
Before upgrading to Seafile 7.1, you need to install more packages than mentioned in the documentation:
root@seafile:~# apt-get install python3 python3-setuptools python3-pip memcached libmemcached-dev python3.7-dev build-essential zlib1g-dev libjpeg62-turbo-dev
No comments yet.
AWS Android Ansible Apache Apple Atlassian BSD Backup Bash Bluecoat CMS Chef Cloud Coding Consul Containers CouchDB DB DNS Database Databases Docker ELK Elasticsearch Filebeat FreeBSD Galera Git GlusterFS Grafana Graphics HAProxy HTML Hacks Hardware Icinga Influx Internet Java KVM Kibana Kodi Kubernetes LVM LXC Linux Logstash Mac Macintosh Mail MariaDB Minio MongoDB Monitoring Multimedia MySQL NFS Nagios Network Nginx OSSEC OTRS Office PGSQL PHP Perl Personal PostgreSQL Postgres PowerDNS Proxmox Proxy Python Rancher Rant Redis Roundcube SSL Samba Seafile Security Shell SmartOS Solaris Surveillance Systemd TLS Tomcat Ubuntu Unix VMWare VMware Varnish Virtualization Windows Wireless Wordpress Wyse ZFS Zoneminder