==============================
Upgrade ownCloud From Packages
==============================

Changes in ownCloud 8.2 
-----------------------

* The Linux package repositories have changed, and **you must configure your 
  system to use these new repositories** to install or upgrade ownCloud 8.2+. 
  The new repositories are at our `Open Build Service`_.

* Apache configuration files are in a separate package, 
  ``owncloud-config-apache``.

Upgrade Notes
-------------

If you are using a custom theme, the upgrade changes it back to the default 
theme. After the upgrade is completed and you have verified that everything 
works correctly, change back to your custom theme by entering the path 
to your theme with ``'theme' => '',`` in your ``config.php`` file. If your 
custom theme causes any issues, comment out ``'theme' => '',`` to restore the 
default theme.

``owncloud/core/skeleton/`` is overwritten on upgrades. If you wish to provide 
a set of default files, place them in a different directory such as 
``owncloud/config/skeleton``. Then enter this path in ``config.php`` with the 
``'skeletondirectory' => '/path/to/folder',`` directive.

Upgrade Quickstart
------------------

The best method for keeping ownCloud current on Linux servers is by configuring 
your system to use ownCloud's `Open Build Service`_ repository. Then stay 
current by using your Linux package manager to install fresh ownCloud packages. 
After installing upgraded packages you must run a few more steps to complete 
the 
upgrade. These are the basic steps to upgrading ownCloud:

* :doc:`Disable <../installation/apps_management_installation>` all third-party 
  apps.
* Make a :doc:`fresh backup <backup>`.
* Upgrade your ownCloud packages.
* Run :ref:`occ upgrade <command_line_upgrade_label>` (optionally disabling the 
  :ref:`migration test <migration_test_label>`).
* :ref:`Apply strong permissions <strong_perms_label>` to your 
  ownCloud directories.
* Take your ownCloud server out of :ref:`maintenance mode 
  <maintenance_commands_label>`.  
* Re-enable third-party apps.

Upgrade Tips
------------

Upgrading ownCloud from our `Open Build Service`_ repository is just like any 
normal Linux upgrade. For example, on Debian or Ubuntu Linux this is the 
standard system upgrade command::

 apt-get update && apt-get upgrade
 
Or you can upgrade just ownCloud with this command::

 apt-get update && apt-get install owncloud
 
On Fedora, CentOS, and Red Hat Linux use ``yum`` to see all available updates::

 yum check-update
 
You can apply all available updates with this command::
 
 yum update
 
Or update only ownCloud::
 
 yum update owncloud
 
Your Linux package manager only downloads the current ownCloud packages. Then 
your ownCloud server is immediately put into maintenance mode. You may not see 
this until you refresh your ownCloud page.

.. figure:: images/upgrade-1.png
   :scale: 75%
   :alt: ownCloud status screen informing users that it is in maintenance mode.

Then use ``occ`` to complete the upgrade. You must run ``occ`` as your HTTP 
user. This example is for Debian/Ubuntu::

 sudo -u www-data php occ upgrade

This example is for CentOS/RHEL/Fedora::

 sudo -u apache php occ upgrade 

.. _migration_test_label:

Migration Test
--------------

Before completing the upgrade, ownCloud first runs a simulation by copying all 
database tables to new tables, and then performs the upgrade on them, to ensure 
that the upgrade will complete correctly. The copied tables are deleted after 
the upgrade. This takes twice as much time, which on large installations can be 
many hours, so you can omit this step with the ``--skip-migration-test`` 
option, like this example on CentOS::

 sudo -u apache php occ upgrade --skip-migration-test

Setting Strong Directory Permissions
------------------------------------

After upgrading, verify that your ownCloud directory permissions are set 
according to :ref:`strong_perms_label`.

If the upgrade fails, then you must try a manual upgrade.

.. _Open Build Service: 
   https://download.owncloud.org/download/repositories/stable/owncloud/
