apt-mark hold dpkg
root@sidbox:~# dpkg -i /var/cache/apt/archives/dpkg_1.17.18_amd64.deb
dpkg: warning: downgrading dpkg from 1.17.19 to 1.17.18
(Reading database ... 167715 files and directories currently installed.)
Preparing to unpack .../dpkg_1.17.18_amd64.deb ...
Unpacking dpkg (1.17.18) over (1.17.19) ...
Setting up dpkg (1.17.18) ...
Processing triggers for siduction-dynamic-dms (2014.08.13) ...
Processing triggers for man-db (2.7.0.2-2) ...
wget -c http://ftp.de.debian.org/debian/pool/main/d/dpkg/dpkg_1.17.18_amd64.deb && dpkg -i dpkg_1.17.18_amd64.deb && apt-mark hold dpkg
wget -c http://ftp.de.debian.org/debian/pool/main/d/dpkg/dpkg_1.17.18_amd64.deb && dpkg -i dpkg_1.17.18_amd64.deb && apt-mark hold dpkg
--2014-10-22 12:16:12-- http://ftp.de.debian.org/debian/pool/main/d/dpkg/dpkg_1.17.18_amd64.deb
Resolving ftp.de.debian.org (ftp.de.debian.org)... 141.76.2.4
Connecting to ftp.de.debian.org (ftp.de.debian.org)|141.76.2.4|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2014-10-22 12:16:12 ERROR 404: Not Found.
wget -c http://snapshot.debian.org/archive/debian/20141021T164213Z/pool/main/d/dpkg/dpkg_1.17.18_amd64.deb. && dpkg -i dpkg_1.17.18_amd64.deb && apt-mark hold dpkg
wget -c http://snapshot.debian.org/archive/debian/20141021T164213Z/pool/main/d/dpkg/dpkg_1.17.18_i386.deb. && dpkg -i dpkg_1.17.18_i386.deb && apt-mark hold dpkg
Unfortunately it is removed, not really nice.Well all mirrors are synced and only the newest version is availabe from them. If you want an older version you always have to use snapshots. It worked for you because to took an mirror, that wasn't sync at that time you tried it.
But ok, as convbsd wrote, take it from debian snapshots.
LANG=C apt-cache policy dpkg
dpkg:
Installed: 1.17.18
Candidate: 1.17.20
Version table:
1.17.20 0
500 http://ftp.nl.debian.org/debian/ sid/main amd64 Packages
500 http://debian.morphium.info/debian/ unstable/main amd64 Packages
apt-mark unhold dpkg
apt-mark showhold