It’s seems to be a common issue. You want to upgrade but apt shows that a certain number of packages will be held and not upgraded. In extremes cases, apt will hold all the packages and refuse to upgrade altogether. Cleaning the cache and/or purging unused repos won’t make it. You have to use a different kind of command.
The first time clean the cache and type “apt-get dist-upgrade”. You will see that apt no longer refuses to upgrade. From that moment on, anytime there are packages on hold, regardless the quantity, you only need to type the dist-upgrade command. From time to time, you may want to clean the cache as well but that’s not mandatory.
Hope this is useful and thanks for reading!