That's the usual way but my crap memory constantly forgets what the heck I put on hold, specially when the bug fix takes a long time for a given package. I used to take notes of the packages in a text document... so I switched to pin the packages in /etc/apt/preferences.d/held. This way the packages are pinned to not update and keeping the version from testing, and get the reminder notes written at the same time anyway.
Package: packagename
Pin: release a=testing
Pin-Priority: 650
These are actually my notes on how I currently do it (I need to re-read them often):
1st step - Check if the packages on hold are already fixed:Login as su in a terminal
apt-listbugs list packagename
Release the held packages if they are fixed.
Case 1: When no bugs are retrievedRetrieving bug reports... Done
Parsing Found/Fixed information... Done
apt-get update && apt-get -d dist-upgrade
logout
logon as root,
init 3
apt-get update
apt-get dist-upgrade
If no bugs are retrieved, just keep going like this
apt-get clean
init 5 && reboot
If bugs are reported then proceed to the case 2 below.
Case 2: When bugs are retrievedIf not in X better hit n, exit and login in an X session then run apt-get update && apt-get dist-upgrade and follow the next steps. If remaining outside X (in a tty) you can hit w and check the bugs in lynx or whatever CLI browser.
Retrieving bug reports... Done
Parsing Found/Fixed information... Done
grave bugs of apt (1.0.9.5 → 1.0.9.6) <Outstanding>
b1 - #776910 - apt: upgrade from wheezy to jessie breaks in the middle
critical bugs of libwebkitgtk-3.0-0 (2.4.7-3 → 2.4.8-1) <Forwarded>
b2 - #776686 - libwebkitgtk-3.0-0: Crash with SIGBUS in `WebCore::WidthIterator::advanceInternal`
Summary:
apt(1 bug), libwebkitgtk-3.0-0(1 bug)
Are you sure you want to install/upgrade the above packages? [Y/n/?/...]
Then hit:
w
Check the bugs ( bookmark the pages) and study the cases.
In terminal hit:
n
in /etc/apt/preferences.d/held-packages file pin the packages to hold
Package: packagename
Pin: release a=testing
Pin-Priority: 650
Save & close. Back to terminal:
aptitude update && aptitude -s dist-upgrade
Check the proposed solutions. Choose the one to keep the installed packages and remember it to use it later.
aptitude update && aptitude -d dist-upgrade
Choose the right option, let it run and logout.
logon as root,
init 3
aptitude update
aptitude dist-upgrade
aptitude clean
init 5 && reboot
Hope this helps.