deb.sury.org
deb.sury.org copied to clipboard
Ubuntu non-LTS non-support
After some thought, these repositories will not support the non-LTS Ubuntu versions. It requires an extra effort to add all the packages to the new Ubuntu release, and it does consume computing cycles every time there's a new PHP (or any other package updates).
The release cycle on non-LTS Ubuntu release is just 9 months this feels like a waste of just everything. There also doesn't seem to be a very high demand for these packages - only a handful of people wrote here, to mail or on Twitter asking for Ubuntu Impish support.
Ubuntu 21.10 Impish Indri will be the last non-LTS release supported.
Dear @oerdnj, First, a sincere thanks for your PPAs.
I am having a dependency issue after upgrading to Impish: php7.3-common seems to depend on libpcre2-dev
Setting up php-common (2:84+ubuntu21.04.1+deb.sury.org+1) ...
dpkg: dependency problems prevent configuration of libpcre2-dev:amd64:
libpcre2-dev:amd64 depends on libpcre2-posix2 (= 10.38-2+ubuntu21.04.1+deb.sury.org+1); however:
Package libpcre2-posix2:amd64 is not installed.
When I try to install libpcre2-posix2 though, it conflicts with another dependency that is already installed:
Preparing to unpack .../libpcre2-posix2_10.38-2+ubuntu21.04.1+deb.sury.org+1_amd64.deb ...
Unpacking libpcre2-posix2:amd64 (10.38-2+ubuntu21.04.1+deb.sury.org+1) ...
dpkg: error processing archive /var/cache/apt/archives/libpcre2-posix2_10.38-2+ubuntu21.04.1+deb.sury.org+1_amd64.deb (--unpack):
trying to overwrite '/usr/lib/x86_64-linux-gnu/libpcre2-posix.so.3', which is also in package libpcre2-posix3:amd64 10.37-0ubuntu2
Can you please suggest a solution? Thanks much!
You are using Ubuntu 21.04 packages on Ubuntu 21.10, and reporting this to the issue that says that I will most probably not create packages for Ubuntu 21.10. What exactly did you expect to happen?
Now I understand what you meant in your first post :) I was thinking it could be somewhat backwards compatible. So basically we cannot use the PPAs in 21.10 and have to be in 21.04 or the next version. Thanks!
21.10 is severely messed up, and that is not just with the official php8.0 packages, but also with other packages.
One way to avoid this would be to run servers + PHP in a VM instead of from the main OS. That's likely the route I will take moving forward..
Make sense, though I guess a lot of people will be disappointed - including me :) Always appreciated your awesome work. Will you update this topic if you will do this version - if not, I'll revert my OS to 21.04 (which also has a 9 months EOL cycle) Thanks and either way ... looking forward to the 22.04 version then!
As a temporary solution, at least for my web-projects, I will just install 21.04 in a VM and share my www or web directory with the VM.
It looks like downgrading without re-installing can be a complicated process :-P
Here's a question to start a discussion.
What is the particular use case that makes you run the latest Ubuntu release as a web server.
I can understand the desktop as development machine where you want to run the latest desktop environment and all the PHP versions.
Possibly because I have a Ryzen laptop with poor hardware support, and I am desperately waiting for better support for AMD graphics in VirtualBox.
I can not run hardware accelerated software in my Windows VM currently, and I suspect the issue may be Kernel related. I have also had different issues in the past that was resolved by updating the Kernel.
And, it seems we now need signed Ubuntu Kernels because of modern bios configurations. Possibly this is related to secure boot or something — and Kernels are only signed on official releases afaik
But, other then that, I actually prefer to run the latest software on my main system, and then Snaps or Appimages when available. Interestingly, FFMpeg also broke, so I had to compile a standalone to get video conversion working, but that was in the beta, and I have not checked if the dependencies has been fixed in the final 21.10 release.
I wanted to try and move my servers to a VM for some time, and now I finally got shared folders working; I figure, why not give it a try for now, because it seem to enable me to test the latest software more freely :-)
What is the particular use case that makes you run the latest Ubuntu release as a web server.
I've been hopping between non-LTS versions to get some new features in apache2 and libcurl. A few years back, Apache 2.4.18 added proper HTTP/2 support, and it took a few Ubuntu releases to make it to official Ubuntu repos. I also relied on some newer features in libcurl, and hopping to the latest non-LTS version made it easier to get them instead of compiling libcurl and all packages that depend on it myself.
That said, I completely understand the massive work it takes to add 21.10 and other new targets with short lifespans. Thank you! I don't know how many of us use the latest non-LTS versions on production servers, but it certainly seems like a minority.
For apache2, there's ppa:ondrej/apache2 and for nginx, there are ppa:ondrej/nginx and ppa:ondrej/nginx-mainline.
I do understand that it is a lot of work to make all what to be done for a short spanned version. Do you have a recommendation for another PPA than yours to be used with impish ?
That would be really really really helpful :)
And thank you for your awesome work.
I didn't say I am not going to do that. But I would like to have a discussion if and how it's useful apart from "I have to run the latest Ubuntu" use case. Especially, when we are talking about the production environments.
Well in my case it is kind of a silly reason and it's not for a production server, but for my dev machine.
I am a freelance. And I have many different clients with many different server specs: i can't have a différent VM for all my clients. One of my client is stuck with PHP7.4 right now and can't upgrade to PHP8.*
On my dev machine, a long time ago, I really don't know why, I switched my do-release-upgrade from "lts" to "normal" (i know, it's bad.) And this weekend, I was not thinking about it and made the upgrade from 21.04 to 21.10... and know, I can't dev for my client because I don't have the right PHP)
I made plenty of mistake (lts to normal and upgrade without thinking), that is why I am looking for a way to be able to keep working for this client.... the other way will be te reinstall a lts ubuntu on my machine. But I kind of fear this prospect (will I lose a lot of time ? will I lose some strange configurations I did 5 years ago ? that kind of things)
I would suggest you use docker or podman (or even just simple chroot) to have a matching environment to what your client uses. That would solve your problem and at the same time improve compatibility with the production environment.
FTR for my $dayjob I have a beefier machine in the "basement" with Proxmox installed and have multiple operating systems and versions in separate VMs for testing compatibility when there's a problem in the CI.
I found out that long-term it's better to separate the development environment from the "desktop" machine, because they usually have different lifecycles.
@oerdnj I completely respect your decision. Is this something that someone else could do, if they were interested in contributing? Or would handing that over also be a considerable amount of your time and resources?
I also agree it's probably not worth the effort.
In my case, my production environment is of course running LTS, so it's really just my own problem that I haven't setup a proper dev environment on my laptop that's separated from my personal stuff.
Today I just noticed the specific dependency issue, in my situation, seems to have been resolved in the official repositories, so I am now able to install php8.0-gd — but I realize it is probably best to continue using a VM for my dev-environment, so it does not really matter to me at this point.
So, as right now I am stuck with Impish and I really needed a php 7.4 working, this is what I did:
I added the repo
sudo add-apt-repository ppa:ondrej/php
edited the sources.list.d
sudo nano /etc/apt/sources.list.d/ondrej-ubuntu-php-impish.list
I changed the impish main
to hirsute main
and now it's okay, I can install and use my php7.4
sudo apt-get install php7.4 php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-mysql php7.4-mbstring php7.4-zip php7.4-fpm php7.4-intl php7.4-simplexml
sudo a2dismod php8.0
sudo a2enmod php7.4
sudo update-alternatives --set php /usr/bin/php7.4
sudo update-alternatives --set phar /usr/bin/phar7.4
sudo update-alternatives --set phar.phar /usr/bin/phar.phar7.4
sudo update-alternatives --set phpize /usr/bin/phpize7.4
sudo update-alternatives --set php-config /usr/bin/php-config7.4
I hope it helps someone somewhere :)
(next time I won't upgrade that thoughtlessly... you can think that 15 years using linux teaches you that ... but nop)
I am a freelance. And I have many different clients with many different server specs: i can't have a différent VM for all my clients. One of my client is stuck with PHP7.4 right now and can't upgrade to PHP8.*
Then simply use some Docker based stuff like https://github.com/drud/ddev that helps you to use different PHP versions per project in a very simple manner
Then simply use some Docker based stuff like https://github.com/drud/ddev that helps you to use different PHP versions per project in a very simple manner
Exactly. I am not too familiar with docker, so I simply installed the LTS in a VM and then installed multiple PHP versions via ppa:ondrej/php — we just got to link them in the Apache configuration and enable the individual configuration files. I just love the convenience of Apache :-P
Typically I use the latest PHP-FPM with fcgi as a global configuration, and then I override the default on a per VHOST basis as needed. E.g. Inside the VirtualHost
blocks, but outside of Directory
blocks:
include /etc/apache2/conf-available/php7.4-fpm.conf
Of course, php7.4-fpm should not be enabled via "a2enconf", but rather by manually loading it for the VHOST that needs it. Hope that makes sense to some. Have no idea about nginx unfortunately, because I have not used that for a long time.
The latest PHP version can then be enabled with sudo a2enconf php8.0-fpm
, which will be the global default PHP version.
The cool thing I found out is that I can just share my host's /var/www/
folder with the VirtualBox, and than add Apache (the www-data user) to the vboxsf group, which then allows me to run headless and still edit files from my host. So, the clients DocumentRoot becomes /media/sf_www/
(but that's fine with me).
What is the particular use case that makes you run the latest Ubuntu release as a web server.
In my case: Im using an Oroid H2+ which has limited CPU power per Core. This is used as test environment, NAS, Backup, pivate Nextcloud, DLNA, Kodi and other topics. Due to several Samba improvements (RSS, raster encryption) I would like to add latest Samba version. I built Samba form scratch but there wo so many dependencies that I devided than an upgrade would maybe a better alternative. So I rolled back and upgraded to Impish. Ok, now Samba is running but Apache don't (there is not even an error message which makes sense - it is just running in timeout since upgrade). So maybe I will wait till 22.04 now without test environment for Webserver. There is also an issue with Nginx with Pagespeed and dependencies ( https://github.com/apache/incubator-pagespeed-mod/issues/2083 ). But seems to be most developers are not really interested in the versions between LTS. Which makes them pretty useless in my opinion.
Will that effect also LTS in long term? Because if less testing is done with non LTS in my opinion you have to skipp the first point release of LTS also, because testing will be done on LTS more and more.
Why I don't use docker? Well, if you use a small unit with limited ressources Docker is really bad because it slows everything down even more. I made e.g. a test with elasticsearch and docker is so slow compared to a non docker environment, that I choose the way without docker (which is more complex, because there are less guides).
Anyway thanks for your work. I should have noticed that before I upgraded in this case I maybe haven't.
I just updated my work development machine to 21.10 without checking all these packages were available (my bad).
These packages don't just get used on servers :)
For me it seems that the hirsute
ones still work fine though, I just hope that continues until the next release!
FTR so far only like 5-6 people wrote here or into email asking for Ubuntu 21.10 support.
interested as well - but also just running some smaller personal pages on a home server that i upgraded to the latest ubuntu release for newer kernel/packages. would be nice to have 8.1 for testing purpose.
@oerdnj
I'm interested in 21.10 support too. I need to handle codebases in PHP 8 and 5.6 (:cry:) and need have them both installed. I know there are alternatives but my workflow as of many years depends on having both versions available simultaneously.
Thanks for your work!
@oerdnj I'm interested as well. For some PHP extensions and for switching between 5.6, 7.4 and 8.0 on my development workstation that I like keeping on the edge regarding Ubuntu versions. I am worried that it is such a hard work for you ...
The most annoying is bringing that issue in between two rolling releases, but if you can keep the hard work until next LTS and then decide to only support LTS release, I must admit that I personally would be very thankful ...
FTR I will do the Ubuntu 21.10 as the last non-LTS release and after Ubuntu 22.04, only LTS releases will be supported by this repository.
I upgraded to 21.10, and will be staying with 22.04 LTS. Thank you @oerdnj for providing a smooth path to 22.04.
@loxK @gjm @jacobseated @stadja Please dont torture yourself and just use docker to manage multiple projects on same machine - then each such project you can have separate OS version, php version, apache version etc :)
Alternatively, as was also mentioned: VM. Like Vagrant+Virtualbox etc.
Additional bonus which you get from above approaches is that you can always simply "delete" your docker container (or VM) and rebuild it from scratch - without affecting your computer. Is a lot less pain when for example you need to upgrade something (Ubuntu version etc) in one of your projects.
@oerdnj Thank you very much for maintenance this very useful PHP repo for many years, and I had been using it for my Ansible Role and Docker image for few years, too:
- https://github.com/alvistack/ansible-role-php
- https://github.com/alvistack/docker-php
- https://hub.docker.com/r/alvistack/php-8.0/tags
- https://hub.docker.com/r/alvistack/php-7.4/tags
- https://hub.docker.com/r/alvistack/php-7.3/tags
Also sharing some though when maintenance my repo (https://build.opensuse.org/project/show/home:alvistack) for latest Ansible / Kubernetes / CRI-O / Podman / etc:
- For LTS release I keep a
N / N -1
policy- e.g. Ubuntu 20.04 / 18.04, CentOS 8 / 7, openSUSE Leap 15.3 / 15.2
- For point release I keep sync with its
EOL
- e.g. Only support Ubuntu 21.10 / 21.04 (to be remove on 2022-01)
- Remove Ubuntu 20.10 support (EOL since 2021-07)
- For rolling release I simply keep it as technical preview (i.e. allow failure)
- e.g. Debian Testing, Fedora Rawhide, openSUSE Tumbleweed
- Keeping it active so whenever new point / LTS comes upgrade could be much simpler
- For each package I keep multiple version with policy
MAJOR x1 / MINOR x2 / PATCH x3
- e.g. For podman I remove all v2.y.z release, just keep recent v3.3.z and v3.4.z releases
P.S. I saw that you need to manually maintenance https://packages.sury.org/ for Debian based packages which could be very time consuming; working with https://build.opensuse.org/ for all supported OS seems much simple then using Ubuntu PPA (for Ubuntu only):
- It could support both Debian / Ubuntu within single repo
- Support automatic rebuild triggered by corresponding dependencies got upgraded
- I simply do a quick local build with my Ubuntu 21.10, once it looks good and pushed to OBS, OBS will handle all OS build for me at once
- If I need to debug the packaging, I could also have an isolated local build environment for Debian 10 / 11 / Ubuntu 18.04 / 20.04 / 21.04 / etc, on top of my daily used Ubuntu 21.10
Again, thank you very much for maintenance this repo ;-)
For me the pressure to use these packages increases when the following conditions are met:
- The latest ubuntu LTS is getting too old to daily drive
- The new ubuntu LTS is shipping soon with a new version of PHP
Since PHP releases +- once a year, and ubuntu LTS once every 2 years. I predict that in 2 years, when ubuntu 23.10 is released the same discussing will arise :)