Process to update Magento 2.1 to 2.2:
For a full step by step instruction please refer to Upgrade Magento from 2.1 to 2.2.1 with sample data using composer (I created a new question because this one is specificly about "update vs. fresh install")
Answering your questions:
Does the difference in both composer.json could create issues in future development ?
Let's look at the diff:
"version": "2.2.0",
is the project version, which does not have any significance except that it tells you from which version you created the project. To avoid confusion I usually change that to the current Magento version during upgrade.
"require-dev": {
[...]
}
is relevant if you use any of the dev tools listed there. For example, if you run PHPUnit tests, you should update the PHPUnit version accordingly, as the new test suite is updated for PHPUnit 6 and does not work anymore on PHPUnit 4
"exclude-from-classmap": [
"**/dev/**",
"**/update/**",
"**/Test/**"
]
is an optimization for the autoloader. It makes sense to copy it to your composer.json but nothing should break if you don't.
"minimum-stability": "stable",
is the default stability requirement for dependencies. It looks like you changed it to alpha
for some reason, so that's up to you.
Is it advisable to upgrade or install fresh copy in case there is no real data except sample data ?
In that case, and if you did not install any extensions, it's easier to install a fresh copy (i.e. overwrite composer.json and run composer update
) because you can be sure that you don't miss anything and there are less manual steps.
Is it advisable to upgrade or install fresh copy in case there is live data available ?
With only live data it's the same as above, but if you installed any extensions, I'd rather update composer.json manually with changes from the latest version.
My best guess is that you have a <resource>
-tag in any etc/acl.xml
-file with a missing title
-attribute. Usually this would throw the issue that you could not create or edit a new role. I'm guessing that they created an extra check in 2.2 to detect this more earlier.
Better check the acl.xml
-files of your own custom extensions and/or those of 3rd party extensions. Please note: the title
-attribute is only required for new <resource>
-nodes. So if your adding a new resource-node to an existing resource node (provided by another module) there is no need to add the title
-attribute to those. For example:
<!-- provided by Magento_Backend, so they already have a title: -->
<resource id="Magento_Backend::stores">
<resource id="Magento_Backend::stores_settings">
<!-- provided by Magento_Config: -->
<resource id="Magento_Config::config">
<!-- New resource! Title is required: -->
<resource id="Vendor_Module::config_general" title="Something" translate="title"/>
</resource>
</resource>
</resource>
Best Answer
Those lines are most likely ones in your layout XMLs:
Most likely in layout XMLs you have declarations like
Which does not correspond to lib/internal/Magento/Framework/View/Layout/etc/elements.xsd and need to be replaced to