Update
You stated that updating an individual component resulted in 2 being in vendor.
This isn't right.
As a test I decided to update colinmollenhour/cache-backend-file to version 1.4.5. Not in initial composer.json file but brought in elsewhere. As you can see composer correctly performed the upgrade.
user@cli:/var/www/magento# composer require colinmollenhour/cache-backend-file:1.4.5
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 0 installs, 1 update, 0 removals
- Updating colinmollenhour/cache-backend-file (v1.4.4 => v1.4.5): As there is no 'unzip' command installed zip files are being unpacked using the PHP zip extension.
This may cause invalid reports of corrupted archives. Installing 'unzip' may remediate them.
Downloading (100%)
Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested.
Writing lock file
Generating autoload files
user@cli:/var/www/magento#
Site is operational.
composer.json (before)
{
"name": "magento/project-community-edition",
"description": "eCommerce Platform for Growth (Community Edition)",
"type": "project",
"license": [
"OSL-3.0",
"AFL-3.0"
],
"config": {
"preferred-install": "dist",
"sort-packages": true
},
"require": {
"magento/module-bundle-sample-data": "100.3.*",
"magento/module-catalog-rule-sample-data": "100.3.*",
"magento/module-catalog-sample-data": "100.3.*",
"magento/module-cms-sample-data": "100.3.*",
"magento/module-configurable-sample-data": "100.3.*",
"magento/module-customer-sample-data": "100.3.*",
"magento/module-downloadable-sample-data": "100.3.*",
"magento/module-grouped-product-sample-data": "100.3.*",
"magento/module-msrp-sample-data": "100.3.*",
"magento/module-offline-shipping-sample-data": "100.3.*",
"magento/module-product-links-sample-data": "100.3.*",
"magento/module-review-sample-data": "100.3.*",
"magento/module-sales-rule-sample-data": "100.3.*",
"magento/module-sales-sample-data": "100.3.*",
"magento/module-swatches-sample-data": "100.3.*",
"magento/module-tax-sample-data": "100.3.*",
"magento/module-theme-sample-data": "100.3.*",
"magento/module-widget-sample-data": "100.3.*",
"magento/module-wishlist-sample-data": "100.3.*",
"magento/product-community-edition": "2.3.0",
"magento/sample-data-media": "100.3.*"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "~2.13.0",
"lusitanian/oauth": "~0.8.10",
"magento/magento2-functional-testing-framework": "2.3.9",
"pdepend/pdepend": "2.5.2",
"phpmd/phpmd": "@stable",
"phpunit/phpunit": "~6.5.0",
"sebastian/phpcpd": "~3.0.0",
"squizlabs/php_codesniffer": "3.3.1"
},
"conflict": {
"gene/bluefoot": "*"
},
"autoload": {
"psr-4": {
"Magento\\Framework\\": "lib/internal/Magento/Framework/",
"Magento\\Setup\\": "setup/src/Magento/Setup/",
"Magento\\": "app/code/Magento/",
"Zend\\Mvc\\Controller\\": "setup/src/Zend/Mvc/Controller/"
},
"psr-0": {
"": [
"app/code/",
"generated/code/"
]
},
"files": [
"app/etc/NonComposerComponentRegistration.php"
],
"exclude-from-classmap": [
"**/dev/**",
"**/update/**",
"**/Test/**"
]
},
"autoload-dev": {
"psr-4": {
"Magento\\Sniffs\\": "dev/tests/static/framework/Magento/Sniffs/",
"Magento\\Tools\\": "dev/tools/Magento/Tools/",
"Magento\\Tools\\Sanity\\": "dev/build/publication/sanity/Magento/Tools/Sanity/",
"Magento\\TestFramework\\Inspection\\": "dev/tests/static/framework/Magento/TestFramework/Inspection/",
"Magento\\TestFramework\\Utility\\": "dev/tests/static/framework/Magento/TestFramework/Utility/"
}
},
"version": "2.3.0",
"minimum-stability": "stable",
"repositories": [
{
"type": "composer",
"url": "https://repo.magento.com/"
}
],
"extra": {
"magento-force": "override"
}
}
composer.json (after)
{
"name": "magento/project-community-edition",
"description": "eCommerce Platform for Growth (Community Edition)",
"type": "project",
"license": [
"OSL-3.0",
"AFL-3.0"
],
"config": {
"preferred-install": "dist",
"sort-packages": true
},
"require": {
"colinmollenhour/cache-backend-file": "1.4.5",
"magento/module-bundle-sample-data": "100.3.*",
"magento/module-catalog-rule-sample-data": "100.3.*",
"magento/module-catalog-sample-data": "100.3.*",
"magento/module-cms-sample-data": "100.3.*",
"magento/module-configurable-sample-data": "100.3.*",
"magento/module-customer-sample-data": "100.3.*",
"magento/module-downloadable-sample-data": "100.3.*",
"magento/module-grouped-product-sample-data": "100.3.*",
"magento/module-msrp-sample-data": "100.3.*",
"magento/module-offline-shipping-sample-data": "100.3.*",
"magento/module-product-links-sample-data": "100.3.*",
"magento/module-review-sample-data": "100.3.*",
"magento/module-sales-rule-sample-data": "100.3.*",
"magento/module-sales-sample-data": "100.3.*",
"magento/module-swatches-sample-data": "100.3.*",
"magento/module-tax-sample-data": "100.3.*",
"magento/module-theme-sample-data": "100.3.*",
"magento/module-widget-sample-data": "100.3.*",
"magento/module-wishlist-sample-data": "100.3.*",
"magento/product-community-edition": "2.3.0",
"magento/sample-data-media": "100.3.*"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "~2.13.0",
"lusitanian/oauth": "~0.8.10",
"magento/magento2-functional-testing-framework": "2.3.9",
"pdepend/pdepend": "2.5.2",
"phpmd/phpmd": "@stable",
"phpunit/phpunit": "~6.5.0",
"sebastian/phpcpd": "~3.0.0",
"squizlabs/php_codesniffer": "3.3.1"
},
"conflict": {
"gene/bluefoot": "*"
},
"autoload": {
"psr-4": {
"Magento\\Framework\\": "lib/internal/Magento/Framework/",
"Magento\\Setup\\": "setup/src/Magento/Setup/",
"Magento\\": "app/code/Magento/",
"Zend\\Mvc\\Controller\\": "setup/src/Zend/Mvc/Controller/"
},
"psr-0": {
"": [
"app/code/",
"generated/code/"
]
},
"files": [
"app/etc/NonComposerComponentRegistration.php"
],
"exclude-from-classmap": [
"**/dev/**",
"**/update/**",
"**/Test/**"
]
},
"autoload-dev": {
"psr-4": {
"Magento\\Sniffs\\": "dev/tests/static/framework/Magento/Sniffs/",
"Magento\\Tools\\": "dev/tools/Magento/Tools/",
"Magento\\Tools\\Sanity\\": "dev/build/publication/sanity/Magento/Tools/Sanity/",
"Magento\\TestFramework\\Inspection\\": "dev/tests/static/framework/Magento/TestFramework/Inspection/",
"Magento\\TestFramework\\Utility\\": "dev/tests/static/framework/Magento/TestFramework/Utility/"
}
},
"version": "2.3.0",
"minimum-stability": "stable",
"repositories": [
{
"type": "composer",
"url": "https://repo.magento.com/"
}
],
"extra": {
"magento-force": "override"
}
}