owncloud / core

:cloud: ownCloud web server core (Files, DAV, etc.)
https://owncloud.com
GNU Affero General Public License v3.0
8.39k stars 2.05k forks source link

package removal on DEB systems is tricky #19124

Closed jnweiger closed 7 years ago

jnweiger commented 9 years ago

With owncloud-8.1.3 we merge all the apps subpackages back into the main owncloud-server package. This means that these obsolete packages are supposed to be removed during update.

There are many different ways to update owncloud using apt-get. Some work reliably, some not so reliably. Especially in this case where we want to remove obsoleted packages, some invocations of apt-get fail although they worked before (when there no change in the number of packages). Here is the complete list to the best of my knowledge:

jnweiger commented 9 years ago

@jospoortvliet @davitol @Kawohl fyi

DeepDiver1975 commented 9 years ago

With owncloud-8.1.3 we merge all the apps subpackages back into the main owncloud-server package.

hmmm .... should we really change the packaging structure on minor releases?

chriscroome commented 9 years ago

I have hit a problem with this upgrade:

 Server internals. For a complete system install package owncloud.
Description-md5: 9fad35b7290d84c315d51d9ce427d609

root@crin1:~# a-up
About to upgrade 'owncloud:all/unknown owncloud-config-apache:all/unknown owncloud-server:all/unknown'
The following packages will be REMOVED:  
  owncloud-app-encryption{u} 
The following packages will be upgraded:
  owncloud owncloud-config-apache owncloud-server{b} 
3 packages upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
Need to get 0 B/23.9 MB of archives. After unpacking 47.3 MB will be used.
The following packages have unmet dependencies:
 owncloud-app-files-external : Depends: owncloud-server (= 8.1.1-1) but 8.1.3-13.1 is to be installed.
 owncloud-app-files-locking : Depends: owncloud-server (= 8.1.1-1) but 8.1.3-13.1 is to be installed.
 owncloud-3rdparty : Depends: owncloud-server (= 8.1.1-1) but 8.1.3-13.1 is to be installed.
 owncloud-app-user-external : Depends: owncloud-server (= 8.1.1-1) but 8.1.3-13.1 is to be installed.
 owncloud-app-files-trashbin : Depends: owncloud-server (= 8.1.1-1) but 8.1.3-13.1 is to be installed.
 owncloud-app-files-sharing : Depends: owncloud-server (= 8.1.1-1) but 8.1.3-13.1 is to be installed.
 owncloud-app-firstrunwizard : Depends: owncloud-server (= 8.1.1-1) but 8.1.3-13.1 is to be installed.
 owncloud-server : Breaks: owncloud-3rdparty (< 8.1.3-13.1) but 8.1.1-1 is installed.
                   Breaks: owncloud-app-activity (< 8.1.3-13.1) but 8.1.1-1 is installed.
                   Breaks: owncloud-app-external (< 8.1.3-13.1) but 8.1.1-1 is installed.
                   Breaks: owncloud-app-files (< 8.1.3-13.1) but 8.1.1-1 is installed.
                   Breaks: owncloud-app-files-external (< 8.1.3-13.1) but 8.1.1-1 is installed.
                   Breaks: owncloud-app-files-locking (< 8.1.3-13.1) but 8.1.1-1 is installed.
                   Breaks: owncloud-app-files-pdfviewer (< 8.1.3-13.1) but 8.1.1-1 is installed.
                   Breaks: owncloud-app-files-sharing (< 8.1.3-13.1) but 8.1.1-1 is installed.
                   Breaks: owncloud-app-files-texteditor (< 8.1.3-13.1) but 8.1.1-1 is installed.
                   Breaks: owncloud-app-files-trashbin (< 8.1.3-13.1) but 8.1.1-1 is installed.
                   Breaks: owncloud-app-files-versions (< 8.1.3-13.1) but 8.1.1-1 is installed.
                   Breaks: owncloud-app-files-videoviewer (< 8.1.3-13.1) but 8.1.1-1 is installed.
                   Breaks: owncloud-app-firstrunwizard (< 8.1.3-13.1) but 8.1.1-1 is installed.
                   Breaks: owncloud-app-gallery (< 8.1.3-13.1) but 8.1.1-1 is installed.
                   Breaks: owncloud-app-provisioning-api (< 8.1.3-13.1) but 8.1.1-1 is installed.
                   Breaks: owncloud-app-templateeditor (< 8.1.3-13.1) but 8.1.1-1 is installed.
                   Breaks: owncloud-app-user-external (< 8.1.3-13.1) but 8.1.1-1 is installed.
                   Breaks: owncloud-app-user-ldap (< 8.1.3-13.1) but 8.1.1-1 is installed.
                   Breaks: owncloud-app-user-webdavauth (< 8.1.3-13.1) but 8.1.1-1 is installed.
 owncloud-app-files-pdfviewer : Depends: owncloud-server (= 8.1.1-1) but 8.1.3-13.1 is to be installed.
 owncloud-app-activity : Depends: owncloud-server (= 8.1.1-1) but 8.1.3-13.1 is to be installed.
 owncloud-app-files-texteditor : Depends: owncloud-server (= 8.1.1-1) but 8.1.3-13.1 is to be installed.
 owncloud-app-provisioning-api : Depends: owncloud-server (= 8.1.1-1) but 8.1.3-13.1 is to be installed.
 owncloud-app-user-webdavauth : Depends: owncloud-server (= 8.1.1-1) but 8.1.3-13.1 is to be installed.
 owncloud-app-templateeditor : Depends: owncloud-server (= 8.1.1-1) but 8.1.3-13.1 is to be installed.
 owncloud-app-files-versions : Depends: owncloud-server (= 8.1.1-1) but 8.1.3-13.1 is to be installed.
 owncloud-app-files : Depends: owncloud-server (= 8.1.1-1) but 8.1.3-13.1 is to be installed.
 owncloud-app-gallery : Depends: owncloud-server (= 8.1.1-1) but 8.1.3-13.1 is to be installed.
 owncloud-app-external : Depends: owncloud-server (= 8.1.1-1) but 8.1.3-13.1 is to be installed.
 owncloud-app-files-videoviewer : Depends: owncloud-server (= 8.1.1-1) but 8.1.3-13.1 is to be installed.
 owncloud-app-user-ldap : Depends: owncloud-server (= 8.1.1-1) but 8.1.3-13.1 is to be installed.
The following actions will resolve these dependencies:

      Remove the following packages:  
1)      owncloud-3rdparty             
2)      owncloud-app-activity         
3)      owncloud-app-external         
4)      owncloud-app-files            
5)      owncloud-app-files-external   
6)      owncloud-app-files-locking    
7)      owncloud-app-files-pdfviewer  
8)      owncloud-app-files-sharing    
9)      owncloud-app-files-texteditor 
10)     owncloud-app-files-trashbin   
11)     owncloud-app-files-versions   
12)     owncloud-app-files-videoviewer
13)     owncloud-app-firstrunwizard   
14)     owncloud-app-gallery          
15)     owncloud-app-provisioning-api 
16)     owncloud-app-templateeditor   
17)     owncloud-app-user-external    
18)     owncloud-app-user-ldap        
19)     owncloud-app-user-webdavauth  

Accept this solution? [Y/n/q/?] y
The following packages will be REMOVED:
  owncloud-3rdparty{a} owncloud-app-activity{a} owncloud-app-encryption{u} owncloud-app-external{a} owncloud-app-files{a} 
  owncloud-app-files-external{a} owncloud-app-files-locking{a} owncloud-app-files-pdfviewer{a} 
  owncloud-app-files-sharing{a} owncloud-app-files-texteditor{a} owncloud-app-files-trashbin{a} 
  owncloud-app-files-versions{a} owncloud-app-files-videoviewer{a} owncloud-app-firstrunwizard{a} owncloud-app-gallery{a} 
  owncloud-app-provisioning-api{a} owncloud-app-templateeditor{a} owncloud-app-user-external{a} owncloud-app-user-ldap{a} 
  owncloud-app-user-webdavauth{a} 
The following packages will be upgraded:
  owncloud owncloud-config-apache owncloud-server 
3 packages upgraded, 0 newly installed, 20 to remove and 0 not upgraded.
Need to get 0 B/23.9 MB of archives. After unpacking 94.2 kB will be used.
Do you want to continue? [Y/n/?] y
Reading changelogs... Done               
dpkg: owncloud-app-files: dependency problems, but removing anyway as you requested:
 owncloud-server depends on owncloud-app-files (= 8.1.1-1).

(Reading database ... 55844 files and directories currently installed.)
Removing owncloud-app-files (8.1.1-1) ...
dpkg: owncloud-app-files-external: dependency problems, but removing anyway as you requested:
 owncloud-server depends on owncloud-app-files-external (= 8.1.1-1); however:
  Package owncloud-app-files-external is to be removed.

Removing owncloud-app-files-external (8.1.1-1) ...
dpkg: owncloud-app-files-locking: dependency problems, but removing anyway as you requested:
 owncloud-server depends on owncloud-app-files-locking (= 8.1.1-1); however:
  Package owncloud-app-files-locking is to be removed.

Removing owncloud-app-files-locking (8.1.1-1) ...
dpkg: owncloud-app-files-pdfviewer: dependency problems, but removing anyway as you requested:
 owncloud-server depends on owncloud-app-files-pdfviewer (= 8.1.1-1); however:
  Package owncloud-app-files-pdfviewer is to be removed.

Removing owncloud-app-files-pdfviewer (8.1.1-1) ...
dpkg: owncloud-app-files-sharing: dependency problems, but removing anyway as you requested:
 owncloud-server depends on owncloud-app-files-sharing (= 8.1.1-1); however:
  Package owncloud-app-files-sharing is to be removed.

Removing owncloud-app-files-sharing (8.1.1-1) ...
dpkg: owncloud-app-files-texteditor: dependency problems, but removing anyway as you requested:
 owncloud-server depends on owncloud-app-files-texteditor (= 8.1.1-1); however:
  Package owncloud-app-files-texteditor is to be removed.

Removing owncloud-app-files-texteditor (8.1.1-1) ...
dpkg: owncloud-app-files-trashbin: dependency problems, but removing anyway as you requested:
 owncloud-server depends on owncloud-app-files-trashbin (= 8.1.1-1); however:
  Package owncloud-app-files-trashbin is to be removed.

Removing owncloud-app-files-trashbin (8.1.1-1) ...
dpkg: owncloud-app-files-versions: dependency problems, but removing anyway as you requested:
 owncloud-server depends on owncloud-app-files-versions (= 8.1.1-1); however:
  Package owncloud-app-files-versions is to be removed.

Removing owncloud-app-files-versions (8.1.1-1) ...
dpkg: owncloud-app-files-videoviewer: dependency problems, but removing anyway as you requested:
 owncloud-server depends on owncloud-app-files-videoviewer (= 8.1.1-1); however:
  Package owncloud-app-files-videoviewer is to be removed.

Removing owncloud-app-files-videoviewer (8.1.1-1) ...
dpkg: owncloud-app-firstrunwizard: dependency problems, but removing anyway as you requested:
 owncloud-server depends on owncloud-app-firstrunwizard (= 8.1.1-1); however:
  Package owncloud-app-firstrunwizard is to be removed.

Removing owncloud-app-firstrunwizard (8.1.1-1) ...
dpkg: owncloud-app-gallery: dependency problems, but removing anyway as you requested:
 owncloud-server depends on owncloud-app-gallery (= 8.1.1-1); however:
  Package owncloud-app-gallery is to be removed.

Removing owncloud-app-gallery (8.1.1-1) ...
dpkg: owncloud-app-provisioning-api: dependency problems, but removing anyway as you requested:
 owncloud-server depends on owncloud-app-provisioning-api (= 8.1.1-1); however:
  Package owncloud-app-provisioning-api is to be removed.

Removing owncloud-app-provisioning-api (8.1.1-1) ...
dpkg: owncloud-app-templateeditor: dependency problems, but removing anyway as you requested:
 owncloud-server depends on owncloud-app-templateeditor (= 8.1.1-1); however:
  Package owncloud-app-templateeditor is to be removed.

Removing owncloud-app-templateeditor (8.1.1-1) ...
dpkg: owncloud-app-user-external: dependency problems, but removing anyway as you requested:
 owncloud-server depends on owncloud-app-user-external (= 8.1.1-1); however:
  Package owncloud-app-user-external is to be removed.

Removing owncloud-app-user-external (8.1.1-1) ...
dpkg: owncloud-app-user-ldap: dependency problems, but removing anyway as you requested:
 owncloud-server depends on owncloud-app-user-ldap (= 8.1.1-1); however:
  Package owncloud-app-user-ldap is to be removed.

Removing owncloud-app-user-ldap (8.1.1-1) ...
dpkg: owncloud-app-user-webdavauth: dependency problems, but removing anyway as you requested:
 owncloud-server depends on owncloud-app-user-webdavauth (= 8.1.1-1); however:
  Package owncloud-app-user-webdavauth is to be removed.

Removing owncloud-app-user-webdavauth (8.1.1-1) ...
dpkg: owncloud-3rdparty: dependency problems, but removing anyway as you requested:
 owncloud-server depends on owncloud-3rdparty (= 8.1.1-1).

Removing owncloud-3rdparty (8.1.1-1) ...
dpkg: owncloud-app-encryption: dependency problems, but removing anyway as you requested:
 owncloud-server depends on owncloud-app-encryption (= 8.1.1-1); however:
  Package owncloud-app-encryption is to be removed.

Removing owncloud-app-encryption (8.1.1-1) ...
dpkg: owncloud-app-external: dependency problems, but removing anyway as you requested:
 owncloud-server depends on owncloud-app-external (= 8.1.1-1); however:
  Package owncloud-app-external is to be removed.

Removing owncloud-app-external (8.1.1-1) ...
(Reading database ... 47602 files and directories currently installed.)
Preparing to unpack .../owncloud-config-apache_8.1.3-13.1_all.deb ...
Unpacking owncloud-config-apache (8.1.3-13.1) over (8.1.1-1) ...
Conf owncloud disabled.
To activate the new configuration, you need to run:
  service apache2 reload
Preparing to unpack .../owncloud_8.1.3-13.1_all.deb ...
Unpacking owncloud (8.1.3-13.1) over (8.1.1-1) ...
dpkg: owncloud-app-activity: dependency problems, but removing anyway as you requested:
 owncloud-server depends on owncloud-app-activity (= 8.1.1-1); however:
  Package owncloud-app-activity is to be removed.

(Reading database ... 47602 files and directories currently installed.)
Removing owncloud-app-activity (8.1.1-1) ...
(Reading database ... 47393 files and directories currently installed.)
Preparing to unpack .../owncloud-server_8.1.3-13.1_all.deb ...
owncloud-server: occ maintenance:mode --on
PHP Warning:  flock() expects parameter 1 to be resource, boolean given in /var/www/owncloud/lib/private/config.php on line 201
An unhandled exception has been thrown:
exception 'Exception' with message 'Could not acquire a shared lock on the config file /var/www/owncloud/config/config.php' in /var/www/owncloud/lib/private/config.php:202
Stack trace:
#0 /var/www/owncloud/lib/private/config.php(61): OC\Config->readData()
#1 /var/www/owncloud/lib/base.php(134): OC\Config->__construct('/var/www/ownclo...')
#2 /var/www/owncloud/lib/base.php(524): OC::initPaths()
#3 /var/www/owncloud/lib/base.php(1121): OC::init()
#4 /var/www/owncloud/console.php(41): require_once('/var/www/ownclo...')
#5 /var/www/owncloud/occ(11): require_once('/var/www/ownclo...')
#6 {main}Unpacking owncloud-server (8.1.3-13.1) over (8.1.1-1) ...
Setting up owncloud-server (8.1.3-13.1) ...
PHP Warning:  flock() expects parameter 1 to be resource, boolean given in /var/www/owncloud/lib/private/config.php on line 201
An unhandled exception has been thrown:
exception 'Exception' with message 'Could not acquire a shared lock on the config file /var/www/owncloud/config/config.php' in /var/www/owncloud/lib/private/config.php:202
Stack trace:
#0 /var/www/owncloud/lib/private/config.php(61): OC\Config->readData()
#1 /var/www/owncloud/lib/base.php(134): OC\Config->__construct('/var/www/ownclo...')
#2 /var/www/owncloud/lib/base.php(524): OC::initPaths()
#3 /var/www/owncloud/lib/base.php(1122): OC::init()
#4 /var/www/owncloud/console.php(41): require_once('/var/www/ownclo...')
#5 /var/www/owncloud/occ(11): require_once('/var/www/ownclo...')
#6 {main}owncloud-server: occ upgrade
PHP Warning:  flock() expects parameter 1 to be resource, boolean given in /var/www/owncloud/lib/private/config.php on line 201
An unhandled exception has been thrown:
exception 'Exception' with message 'Could not acquire a shared lock on the config file /var/www/owncloud/config/config.php' in /var/www/owncloud/lib/private/config.php:202
Stack trace:
#0 /var/www/owncloud/lib/private/config.php(61): OC\Config->readData()
#1 /var/www/owncloud/lib/base.php(134): OC\Config->__construct('/var/www/ownclo...')
#2 /var/www/owncloud/lib/base.php(524): OC::initPaths()
#3 /var/www/owncloud/lib/base.php(1122): OC::init()
#4 /var/www/owncloud/console.php(41): require_once('/var/www/ownclo...')
#5 /var/www/owncloud/occ(11): require_once('/var/www/ownclo...')
#6 {main}PHP Warning:  flock() expects parameter 1 to be resource, boolean given in /var/www/owncloud/lib/private/config.php on line 201
An unhandled exception has been thrown:
exception 'Exception' with message 'Could not acquire a shared lock on the config file /var/www/owncloud/config/config.php' in /var/www/owncloud/lib/private/config.php:202
Stack trace:
#0 /var/www/owncloud/lib/private/config.php(61): OC\Config->readData()
#1 /var/www/owncloud/lib/base.php(134): OC\Config->__construct('/var/www/ownclo...')
#2 /var/www/owncloud/lib/base.php(524): OC::initPaths()
#3 /var/www/owncloud/lib/base.php(1122): OC::init()
#4 /var/www/owncloud/console.php(41): require_once('/var/www/ownclo...')
#5 /var/www/owncloud/occ(11): require_once('/var/www/ownclo...')
#6 {main}Setting up owncloud-config-apache (8.1.3-13.1) ...
Enabling conf owncloud.
To activate the new configuration, you need to run:
  service apache2 reload
apache2_invoke: Enable module rewrite
apache2_invoke: Enable configuration owncloud
Job for apache2.service failed. See 'systemctl status apache2.service' and 'journalctl -xn' for details.
invoke-rc.d: initscript apache2, action "reload" failed.
Setting up owncloud (8.1.3-13.1) ...

Current status: 0 updates [-3], 6 new [-20].

Any suggestions regarding how I should proceed?

chriscroome commented 9 years ago

I have removed the ownCloud Apache VirtualHost as Apache doesn't now run with it enabled.

jnweiger commented 9 years ago

@DeepDiver1975 would not be much different with a major release. Except perhaps that more things break simultaneously.

jnweiger commented 9 years ago

@chriscroome You are hitting https://github.com/owncloud/core/issues/18222 -- Please followup there! Can you review permissions on the owncloud/config folder and owncloud/config/config.php in particular?

chriscroome commented 9 years ago

Sorry I was confused, Apache does run OK, I have done this:

php console.php upgrade
ownCloud or one of the apps require upgrade - only a limited number of commands are available
Turned on maintenance mode
Checked database schema update
Checked database schema update for apps
Updated database
Update successful
Turned off maintenance mode

And the site appears to be running OK.

Permissions wise this is what I have:

ls -lah config/
total 304K
drwxr-xr-x  2 owncloud owncloud 4.0K Sep 17 12:12 .
drwxr-xr-x 14 root     root     4.0K Sep 17 12:12 ..
-rwxrwxr--  1 www-data www-data 253K Sep 10 15:34 ca-bundle.crt
-rw-r-----  1 owncloud owncloud  805 Sep 17 12:17 config.php
-rwxrwxr--  1 www-data www-data  32K Sep 10 15:34 config.sample.php
-rwxrwxr--  1 www-data www-data  225 Sep 10 15:34 .htaccess

I fear this problem is of my own making, the server is running apache2-mpm-itk and the ownCloud VirtualHost runs as the owncloud user, not www-data.

jnweiger commented 9 years ago

Yes! Your config.php file and config folder have changed ownership. That causes your error. Please copy/paste that to https://github.com/owncloud/core/issues/18222 -- it may help others to better understand what is going on there. Thank you.

chriscroome commented 9 years ago

Thanks I will follow it up there, I expect before the upgrade all these files were owncloud:owncloud and the update chowned all of them, apart from config.php to www-data:www-data?

Yetangitu commented 9 years ago

Updating a single package behaves like explicitly installing it using apt-get install.

Be that as it may, the normal way to upgrade Debian-based distributions is to issue a general 'apt-get update', not a per-package command. Given that workflow the problem still exists so it would be beneficial to have those deprecated packages added to the 'Provides' section for owncloud-server. This should fix the upgrade (as in "I have not tried it yet but I assume it'll work").

I'll download the package, edit the contents and give it a try...

jnweiger commented 9 years ago

I've added the Provides: list in https://build.opensuse.org/package/show/isv:ownCloud:community:8.1:testing/owncloud

Please try these, once obs decides to publish the builds. If that works, I'll follow up with an update in the main repos.

Yetangitu commented 9 years ago

OK. I added it manually but I'd have to inject the package into the stream to simulate a normal apt-get upgrade. This is easier...

Yetangitu commented 9 years ago
$ s apt-get upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages have been kept back:
  ... owncloud owncloud-3rdparty owncloud-app-activity owncloud-app-encryption
  owncloud-app-external owncloud-app-files owncloud-app-files-external owncloud-app-files-locking owncloud-app-files-pdfviewer owncloud-app-files-sharing
  owncloud-app-files-texteditor owncloud-app-files-trashbin owncloud-app-files-versions owncloud-app-files-videoviewer owncloud-app-firstrunwizard
  owncloud-app-gallery owncloud-app-provisioning-api owncloud-app-templateeditor owncloud-app-user-external owncloud-app-user-ldap
  owncloud-app-user-webdavauth owncloud-config-apache owncloud-server ...
0 upgraded, 0 newly installed, 0 to remove and 37 not upgraded.

This guide might help: https://wiki.debian.org/PackageTransition

It does contain a remark for this particular situation (Merge and remove: A and B existed; merge everything from A into B; A does not exist in new archive; B is the functioning package ): "needs to be checked. [...] may be wrong."

The 'official' solution (which 'may be wrong') for 'new' package (B, version 2) to replace and merge one or more old packages (A, version 1) is to mark:

Breaks: A (<<2) (for backport ease) Replaces: A (<<2) optional* -- Provides: A

The 'Provides' is supposedly needed when something depends on the merged packages, otherwise it is optional.

I do notice there are version numbers in the 'Provides' section ("Provides: owncloud-3rdparty (= 8.1.3-6.1), owncloud-app-activity (= 8.1.3-6.1)..." where normally 'Provides' is used without version numbers. It could be worth trying to remove those to see whether a generic 'Provides' solves this issue.

Yetangitu commented 9 years ago

Testing in a local repo shows that owncloud-server (and all the apps packages) are still held back when the Provides: section is cleared of version numbers. I'll post a question to debian-mentors to see whether there is someone who's dealt with the before and found a working solution...

Yetangitu commented 9 years ago

https://lists.debian.org/debian-mentors/2015/09/msg00394.html

"If the Provides doesn't work, I'd go with empty transitional packages
for each owncloud-app-* *instead*.
Add them in owncloud-server/debian/control, each with Depends:
owncloud-server (>= ${source:Version}).

Then add to "Package: owncloud-server" Breaks and Replaces for each
owncloud-app-... (<< 8.1.3-6.1~)"

Elsewhere in the thread:

"Not related to your question, but you should add a "~" to every version
so that your setup also works with the versions on backports in case the
packages land there." 
jnweiger commented 9 years ago

Thanks @Yetangitu for consulting with the experts!

I have tried to follow the recommendation to have transitional packages, but fail. The debian.control file at https://build.opensuse.org/package/show/isv:ownCloud:community:8.1:testing/owncloud should allow an upgrade to 8.1.3-7 with many empty dummy packages.

But this is what I get:

apt-get update
apt-get upgrade
...
Calculating upgrade... Done
The following packages have been kept back:
  owncloud owncloud-3rdparty owncloud-app-activity owncloud-app-encryption owncloud-app-external owncloud-app-files owncloud-app-files-external owncloud-app-files-locking
  owncloud-app-files-pdfviewer owncloud-app-files-sharing owncloud-app-files-texteditor owncloud-app-files-trashbin owncloud-app-files-versions owncloud-app-files-videoviewer
  owncloud-app-firstrunwizard owncloud-app-gallery owncloud-app-provisioning-api owncloud-app-templateeditor owncloud-app-user-external owncloud-app-user-ldap
  owncloud-app-user-webdavauth owncloud-config-apache owncloud-server
0 upgraded, 0 newly installed, 0 to remove and 23 not upgraded.
jre-wine commented 9 years ago

[As the person who gave above cited advice and now is disappointed that it didn't work:]

Basics (better safe than sorry):

I had a look at your control file and wondered if you maybe missed a package somewhere, but gave up at some point. Therefore I'd recommend a "wrap-and-sort --sort-binary-packages" (and after that manually sort the non-transitional packages to the top again; wrap-and-sort is in the Debian package devscripts). IMO this makes comparing and spotting errors much easier.

Drop the "Conflicts: owncloud (<< 7.9.9)". Always use either Breaks or Conflicts per package dependency. Conflicts is "safer" but may cause more problems on updates. So unless you get errors (I am not sure if you will) just use Breaks.

No need to use "binary:version" in the breaks/replaces, just use your next version.

[btw: I don't claim that provides doesn't work, just that I usually see and use transitional packages. Furthermore before my answer Russ Albery (who is much more experienced then I am) said: "In this case, I think you want Conflicts, not Breaks, plus Provides and Replaces."]

For reference, this is what we had in the wine packages, where some subpackages (e.g. libwine-sane) were merged into libwine. IIRC this transition went painlessly. (Nitpicking notes: 1.5.7-3 should be 1.5.7-3~, and the short description should additionally mention that it is a transitional package).:

 Package: libwine
 Section: libs
 Architecture: amd64 any-i386 any-powerpc
 Multi-Arch: same
 Depends:
  ${misc:Depends},
  ${shlibs:Depends},
  libtiff5,
  libpng12-0,
  libjpeg62-turbo,
 Recommends:
  ${shlibs:Recommends},
  fonts-liberation,
  fonts-wine,
  libxcursor1,
 Suggests:
  cups-bsd,
 Pre-Depends:
  multiarch-support,
 Breaks:
  libwine-alsa    (<< 1.5.7-3),
  libwine-bin     (<< 1.5.7-3),
  libwine-capi    (<< 1.5.7-3),
  libwine-cms     (<< 1.5.7-3),
  libwine-gl      (<< 1.5.7-3),
  libwine-gphoto2 (<< 1.5.7-3),
  libwine-ldap    (<< 1.5.7-3),
  libwine-openal  (<< 1.5.7-3),
  libwine-oss     (<< 1.5.7-3),
  libwine-sane    (<< 1.5.7-3),
  wine-bin        (<< 1.5.31-1),
 Replaces:
  libwine-alsa    (<< 1.5.7-3),
  libwine-bin     (<< 1.5.7-3),
  libwine-capi    (<< 1.5.7-3),
  libwine-cms     (<< 1.5.7-3),
  libwine-gl      (<< 1.5.7-3),
  libwine-gphoto2 (<< 1.5.7-3),
  libwine-ldap    (<< 1.5.7-3),
  libwine-openal  (<< 1.5.7-3),
  libwine-oss     (<< 1.5.7-3),
  libwine-sane    (<< 1.5.7-3),
  wine-bin        (<< 1.5.31-1),
 Description: Windows API implementation - library
  Wine is a free MS-Windows API implementation.
  This is still a work in progress and many applications may still not work.
  .
  This package provides the wine library.

 Package: libwine-sane
 Section: oldlibs
 Priority: extra
 Architecture: any-i386 any-powerpc
 Multi-Arch: same
 Pre-Depends:
  ${misc:Pre-Depends},
 Depends:
  ${misc:Depends},
  libwine (>= ${binary:Version})
 Description: Windows API implementation - scanner module *(transitional package)*
  Wine is a free MS-Windows API implementation.
  This is still a work in progress and many applications may still not work.
  .
  This is a transitional package and can be safely removed.
PVince81 commented 8 years ago

@jnweiger is that still an issue with recent packages ?

PVince81 commented 8 years ago

@owncloud/packaging is this still an issue ?

PVince81 commented 7 years ago

Closing due to lack of feedback

lock[bot] commented 5 years ago

This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.