** Description changed:

- Hi,
+ [Impact]
  
- We've got an issue with Nginx and policy-rc.d on Ubuntu 24.04. Nginx
- can't install when we create an policy-rc.d file with an `exit 0` code.
+ If you use policy-rc.d to prevent unattended-upgrades from restarting your
+ services outside of a reboot or shutdown, it reveals a circular dependency
+ loop between nginx and nginx-common, where it cannot start nginx before
+ nginx-common is configured.
  
- Here is the steps to reproduce :
+ systemd[1]: Starting nginx.service - A high performance web server and a 
reverse proxy server...
+ nginx[1634]: 2025/02/07 02:21:56 [emerg] 1634#1634: open() 
"/etc/nginx/nginx.conf" failed (2: No such file or directory)
+ nginx[1634]: nginx: configuration file /etc/nginx/nginx.conf test failed
+ ...
+ dpkg: error processing package nginx (--configure):
+  installed nginx package post-installation script subprocess returned error 
exit status 1
+ dpkg: dependency problems prevent configuration of nginx-common:
+  nginx-common depends on nginx (<< 1.26.0-2ubuntu3.1~); however:
+   Package nginx is not configured yet.
  
- 1. Install Ubuntu 24.04 Live Server from the ISO.
- 2. Connect to the machine via SSH.
- 3. Create a **/usr/sbin/policy-rc.d** file containing :
+ dpkg: error processing package nginx-common (--configure):
+  dependency problems - leaving unconfigured
+  
+ The solution is to remove the circular dependency, by dropping the dependency 
for
+ nginx from nginx-common, as suggested by Thomas Ward.
  
- ```
+ [Testcase]
+ 
+ Deploy a fresh Noble or Oracular VM.
+ 
+ 1) sudo vim /usr/sbin/policy-rc.d
  #!/bin/sh
  
  exit 0
- ```
- 
- 4. Chmod the **policy-rc.d** file :
- 
- ```
- chmod 755 /usr/sbin/policy-rc.d
- ```
- 
- 5. Install Nginx :
- 
- ```
- apt update
- apt install -y nginx
- ```
- 
- Here is the output.
- 
- ```
- Lecture des listes de paquets... Fait
- Construction de l'arbre des dépendances... Fait
- Lecture des informations d'état... Fait      
- nginx est déjà la version la plus récente (1.24.0-2ubuntu7.1).
- 0 mis à jour, 0 nouvellement installés, 0 à enlever et 113 non mis à jour.
- root@ubuntu24:~# apt remove --purge nginx
- Lecture des listes de paquets... Fait
- Construction de l'arbre des dépendances... Fait
- Lecture des informations d'état... Fait      
- Les paquets suivants seront ENLEVÉS :
-   nginx* nginx-common*
- 0 mis à jour, 0 nouvellement installés, 2 à enlever et 113 non mis à jour.
- Après cette opération, 1 596 ko d'espace disque seront libérés.
- Souhaitez-vous continuer ? [O/n] Y
- (Lecture de la base de données... 83674 fichiers et répertoires déjà 
installés.)
- Suppression de nginx-common (1.24.0-2ubuntu7.1) ...
- Suppression de nginx (1.24.0-2ubuntu7.1) ...
- Traitement des actions différées (« triggers ») pour man-db (2.12.0-4build2) 
...
- (Lecture de la base de données... 83649 fichiers et répertoires déjà 
installés.)
- Purge des fichiers de configuration de nginx-common (1.24.0-2ubuntu7.1) ...
- Traitement des actions différées (« triggers ») pour ufw (0.36.2-6) ...
- root@ubuntu24:~# apt install nginx
- Lecture des listes de paquets... Fait
- Construction de l'arbre des dépendances... Fait
- Lecture des informations d'état... Fait      
- Les paquets supplémentaires suivants seront installés : 
-   nginx-common
- Paquets suggérés :
-   fcgiwrap nginx-doc ssl-cert
- Les NOUVEAUX paquets suivants seront installés :
-   nginx nginx-common
- 0 mis à jour, 2 nouvellement installés, 0 à enlever et 113 non mis à jour.
- Il est nécessaire de prendre 552 ko dans les archives.
- Après cette opération, 1 596 ko d'espace disque supplémentaires seront 
utilisés.
- Souhaitez-vous continuer ? [O/n] Y
- Réception de :1 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 
nginx-common all 1.24.0-2ubuntu7.1 [31,2 kB]
- Réception de :2 http://archive.ubuntu.com/ubuntu noble-updates/main amd64 
nginx amd64 1.24.0-2ubuntu7.1 [521 kB]
- 552 ko réceptionnés en 1s (759 ko/s)
- Préconfiguration des paquets...
- Sélection du paquet nginx-common précédemment désélectionné.
- (Lecture de la base de données... 83626 fichiers et répertoires déjà 
installés.)
- Préparation du dépaquetage de .../nginx-common_1.24.0-2ubuntu7.1_all.deb ...
- Dépaquetage de nginx-common (1.24.0-2ubuntu7.1) ...
- Sélection du paquet nginx précédemment désélectionné.
- Préparation du dépaquetage de .../nginx_1.24.0-2ubuntu7.1_amd64.deb ...
- Dépaquetage de nginx (1.24.0-2ubuntu7.1) ...
- Paramétrage de nginx (1.24.0-2ubuntu7.1) ...
+ 2) sudo chmod 755 /usr/sbin/policy-rc.d
+ 3) sudo apt update
+ 4) sudo apt install -y nginx
+ Selecting previously unselected package nginx.
+ Preparing to unpack .../nginx_1.26.0-2ubuntu3_amd64.deb ...
+ Unpacking nginx (1.26.0-2ubuntu3) ...
+ Setting up nginx (1.26.0-2ubuntu3) ...
  Job for nginx.service failed because the control process exited with error 
code.
  See "systemctl status nginx.service" and "journalctl -xeu nginx.service" for 
details.
  invoke-rc.d: initscript nginx, action "start" failed.
  × nginx.service - A high performance web server and a reverse proxy server
       Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; preset: 
enabled)
-      Active: failed (Result: exit-code) since Fri 2024-09-20 13:20:58 UTC; 
12ms ago
+      Active: failed (Result: exit-code) since Fri 2025-02-07 02:21:56 UTC; 
8ms ago
+  Invocation: 774e214ca6b04b2dbea5569234bfdb4b
         Docs: man:nginx(8)
-     Process: 2641 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; 
master_process on; (code=exited, status=1/FAILURE)
+     Process: 1634 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; 
master_process on; (code=exited, status=1/FAILURE)
+    Mem peak: 1.4M
          CPU: 3ms
  
- sept. 20 13:20:58 ubuntu24 systemd[1]: Starting nginx.service - A high 
performance web server and a reverse proxy server...
- sept. 20 13:20:58 ubuntu24 nginx[2641]: 2024/09/20 13:20:58 [emerg] 
2641#2641: open() "/etc/nginx/nginx.conf" failed (2: No such file or directory)
- sept. 20 13:20:58 ubuntu24 nginx[2641]: nginx: configuration file 
/etc/nginx/nginx.conf test failed
- sept. 20 13:20:58 ubuntu24 systemd[1]: nginx.service: Control process exited, 
code=exited, status=1/FAILURE
- sept. 20 13:20:58 ubuntu24 systemd[1]: nginx.service: Failed with result 
'exit-code'.
- sept. 20 13:20:58 ubuntu24 systemd[1]: Failed to start nginx.service - A high 
performance web server and a reverse proxy server.
- dpkg: erreur de traitement du paquet nginx (--configure) :
-  le sous-processus paquet nginx script post-installation installé a renvoyé 
un état de sortie d'erreur 1
- dpkg: des problèmes de dépendances empêchent la configuration de nginx-common 
:
-  nginx-common dépend de nginx (<< 1.24.0-2ubuntu7.1.1~); cependant :
-  Le paquet nginx n'est pas encore configuré.
+ systemd[1]: Starting nginx.service - A high performance web server and a 
reverse proxy server...
+ nginx[1634]: 2025/02/07 02:21:56 [emerg] 1634#1634: open() 
"/etc/nginx/nginx.conf" failed (2: No such file or directory)
+ nginx[1634]: nginx: configuration file /etc/nginx/nginx.conf test failed
+ systemd[1]: nginx.service: Control process exited, code=exited, 
status=1/FAILURE
+ systemd[1]: nginx.service: Failed with result 'exit-code'.
+ systemd[1]: Failed to start nginx.service - A high performance web server and 
a reverse proxy server.
+ dpkg: error processing package nginx (--configure):
+  installed nginx package post-installation script subprocess returned error 
exit status 1
+ dpkg: dependency problems prevent configuration of nginx-common:
+  nginx-common depends on nginx (<< 1.26.0-2ubuntu3.1~); however:
+   Package nginx is not configured yet.
  
- dpkg: erreur de traitement du paquet nginx-common (--configure) :
-  problèmes de dépendances - laissé non configuré
- Traitement des actions différées (« triggers ») pour ufw (0.36.2-6) ...
- Aucun rapport « apport » n'a été créé car le message d'erreur indique une 
erreur consécutive à un échec précédent.
-                                                                               
                                    Traitement des actions différées (« 
triggers ») pour man-db (2.12.0-4build2) ...
- Des erreurs ont été rencontrées pendant l'exécution :
+ dpkg: error processing package nginx-common (--configure):
+  dependency problems - leaving unconfigured
+ Processing triggers for ufw (0.36.2-6) ...
+ No apport report written because the error message indicates its a followup 
error from a previous failure.
+                                                                               
                            Processing triggers for man-db (2.12.1-3) ...
+ Errors were encountered while processing:
   nginx
   nginx-common
  needrestart is being skipped since dpkg has failed
- E: Sub-process /usr/bin/dpkg returned an error code (1)
- ```
+ Error: Sub-process /usr/bin/dpkg returned an error code (1)
  
- Thank you.
+ Test packages are available in the following ppa:
+ 
+ https://launchpad.net/~mruffell/+archive/ubuntu/sf405956-updates
+ 
+ If you install the test package, you can install nginx correctly with
+ policy-rc.d.
+ 
+ We also need to test the upgrade path from old packages to new packages to
+ ensure there are no dependency issues.
+ 
+ [Where problems can occur]
+ 
+ We are changing the dependencies on the nginx-common package to not point back
+ to nginx. nginx already depends on nginx-common, so we shouldn't be dropping
+ any dependencies in the process.
+ 
+ If a regression were to occur, it would happen during apt dependency 
resolution
+ or package installation time, which for a lot of users will be handled by
+ unattended-upgrades, and might trigger nginx service restarts. 
+ 
+ [Other info]
+ 
+ This was fixed in debian in 1.26.0-3 by Thomas Ward
+ https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1082373

** Tags added: oracular sts

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2081308

Title:
  Resolve circular dependency loop between nginx and nginx-common

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/nginx/+bug/2081308/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to