From 56340e0c374f9f287da09df6dbf52894d2ea4861 Mon Sep 17 00:00:00 2001 From: Jakub Jirutka Date: Fri, 23 Jun 2017 01:12:19 +0200 Subject: community/nextcloud: move bundled apps to /usr/share It's totally wrong to install pkg's files into /var/lib and make them writable by webserver! Moreover when Nextcloud supports multiple app paths. So we use two apps locations: * /usr/share/webapps/nextcloud/apps - for apps installed by apk, * /var/lib/nextcloud/apps - for apps installed from AppStore. BTW Fedora uses the same approach. --- community/nextcloud/APKBUILD | 27 ++++++++++++--------------- community/nextcloud/nextcloud-config.php | 17 ++++++++++++++++- community/nextcloud/nextcloud.post-upgrade | 19 +++++++++++++++++++ community/nextcloud/nextcloud.pre-upgrade | 10 ++++++++++ 4 files changed, 57 insertions(+), 16 deletions(-) create mode 100644 community/nextcloud/nextcloud.post-upgrade create mode 100644 community/nextcloud/nextcloud.pre-upgrade (limited to 'community/nextcloud') diff --git a/community/nextcloud/APKBUILD b/community/nextcloud/APKBUILD index 0a38c44b47..2cb2d4979d 100644 --- a/community/nextcloud/APKBUILD +++ b/community/nextcloud/APKBUILD @@ -13,7 +13,7 @@ depends="$_php ${_php_mods//-/$_php-}" _apps="-activity -encryption -firstrunwizard -gallery -ldap -logreader -mysql -notifications -password_policy -pdfviewer -pgsql -sqlite -texteditor -videoplayer" -install="$pkgname.pre-install" +install="$pkgname.pre-install $pkgname.pre-upgrade $pkgname.post-upgrade" subpackages="$pkgname-doc $pkgname-initscript ${_apps//-/$pkgname-}" source="https://download.nextcloud.com/server/releases/$pkgname-$pkgver.zip nextcloud10-dont-chmod-config.patch @@ -26,11 +26,12 @@ pkgusers="nextcloud" pkggroups="www-data" builddir="$srcdir"/$pkgname -_basedir="var/lib/$pkgname" -_appsdir="$_basedir/apps" +# Directory for apps shipped with Nextcloud. +_appsdir="usr/share/webapps/$pkgname/apps" package() { - local datadir="$_basedir/data" + local basedir="var/lib/$pkgname" + local datadir="$basedir/data" local wwwdir="usr/share/webapps/$pkgname" local confdir="etc/$pkgname" @@ -44,7 +45,12 @@ package() { chmod 664 ./$wwwdir/.htaccess \ ./$wwwdir/.user.ini - install -d -m 770 -o nextcloud -g www-data ./$confdir ./$datadir + install -d -m 770 -o nextcloud -g www-data \ + ./$confdir ./$datadir ./$basedir/apps + + # Create symlink from web root to site-apps, so web server can find + # assets w/o explicit configuration for this layout. + ln -s /$basedir/apps ./$wwwdir/apps-appstore mv ./$wwwdir/config/* ./$confdir/ rm -r ./$wwwdir/config @@ -53,12 +59,6 @@ package() { install -m 660 -o nextcloud -g www-data \ "$srcdir"/$pkgname-config.php ./$confdir/config.php - mkdir -p ./${_appsdir%/*} - mv ./$wwwdir/apps ./$_appsdir - chown -R nextcloud:www-data ./$_appsdir - chmod -R 770 ./$_appsdir - ln -s /$_appsdir ./$wwwdir/apps - install -m644 -D "$srcdir"/$pkgname.logrotate ./etc/logrotate.d/$pkgname install -m775 -o nextcloud -g www-data -d ./var/log/$pkgname @@ -179,14 +179,11 @@ _mv_app() { pkg) mv "$pkgdir"/$_appsdir/$dirname "$subpkgdir"/$_appsdir/;; src) mv "$srcdir"/$dirname "$subpkgdir"/$_appsdir/$appname;; esac - - chown -R :www-data "$subpkgdir"/$_appsdir - chmod 770 "$subpkgdir"/$_appsdir } sha512sums="0e409eedbcc0f4e1652085c3e384db373858b0cc116c70361a4d066a08afbd6e75792332f95d08773cbed78c1520532886268249d514f2da70acb3ba120420d5 nextcloud-12.0.0.zip a12a73a38bc009d3307ce97bb32fc62ac93e125a77a3d36b31c9d2212953fa17bd5c31f819e0759a0645b1c285817b067143b0b9c3673ce4ab3043fae426a67c nextcloud10-dont-chmod-config.patch -dca5ba4d6e09e762fd1b14e8b253eed0cd26ec28ae7f413b149e64dcdd7409c68ae08a8a38c531ba874d38ebe6a6b70e190a05509260143d9305d66a68eae10a nextcloud-config.php +7b54660441fccb60f204a98a6f55dc02ba99a4af159e590a9b380f1d7683b856bfa4c9fc9ee14603cc0923a134e5191bc713b9428d7a8b52017b93aa3c915792 nextcloud-config.php f224d72799ee5819979089eb58978225454223bee597c938681a4f6279eb49297fe9250ac54ccf8bcb33ae262bce43d085affb77723492ee662263710d4008c9 nextcloud.logrotate 35cf156839215113b5d8fb8842b4c1e19a50be3c16be7048879fdd808674e4875dbacf3e2dd884fd182258595b7a137d7d3c2dc602a7ff5613c8b65fae0abe67 nextcloud.confd b5cdccdffb35e868ec1acb15ec2849cc1c2a00f6064ad21eb591b9694e84df4576f03248f5e814000a48c38096a2a1588dfc79be66691415f2f4ef3b4105d032 fpm-pool.conf" diff --git a/community/nextcloud/nextcloud-config.php b/community/nextcloud/nextcloud-config.php index 957df795f3..09a74cf41b 100644 --- a/community/nextcloud/nextcloud-config.php +++ b/community/nextcloud/nextcloud-config.php @@ -1,5 +1,20 @@ '/var/lib/nextcloud/data', - 'logfile' => '/var/log/nextcloud/nextcloud.log' + 'logfile' => '/var/log/nextcloud/nextcloud.log', + 'apps_paths' => array ( + // Read-only location for apps shipped with Nextcloud and installed by apk. + 0 => array ( + 'path' => '/usr/share/webapps/nextcloud/apps', + 'url' => '/apps', + 'writable' => false, + ), + // Writable location for apps installed from AppStore. + 1 => array ( + 'path' => '/var/lib/nextcloud/apps', + 'url' => '/apps-appstore', + 'writable' => true, + ), + ), + 'installed' => false, ); diff --git a/community/nextcloud/nextcloud.post-upgrade b/community/nextcloud/nextcloud.post-upgrade new file mode 100644 index 0000000000..657f17e0b1 --- /dev/null +++ b/community/nextcloud/nextcloud.post-upgrade @@ -0,0 +1,19 @@ +#!/bin/sh + +ver_old="$2" + +if [ $(apk version -t "$ver_old" '12.0.0-r2') = '<' ] \ + && [ "$(ls -A /var/lib/nextcloud/apps)" ] +then + cat >&2 <<-EOF + * + * Nextcloud's bundled apps have been moved from /var/lib/nextcloud/apps + * to /usr/share/webapps/nextcloud/apps. Only apps installed from App Store + * should be stored in /var/lib/nextcloud/apps. + * + * It seems that you have installed some apps from App Store, so you have to + * add /var/lib/nextcloud/apps to your apps_paths. Copy "apps_paths" key + * from /etc/nextcloud/config.php.apk-new to your config.php. + * + EOF +fi diff --git a/community/nextcloud/nextcloud.pre-upgrade b/community/nextcloud/nextcloud.pre-upgrade new file mode 100644 index 0000000000..f444e78f49 --- /dev/null +++ b/community/nextcloud/nextcloud.pre-upgrade @@ -0,0 +1,10 @@ +#!/bin/sh + +ver_old="$2" +apps_link='/usr/share/webapps/nextcloud/apps' + +# Remove apps symlink before replacing files to avoid losing installed apps. +# This is a workaround for some issue in apk. +if [ $(apk version -t "$ver_old" '12.0.0-r2') = '<' ] && [ -L "$apps_link" ]; then + rm "$apps_link" +fi -- cgit v1.2.3