How can I specify the repository from which a package will be installed? (emacs-snapshot)

You can specify a repository with -t option. As an example, I have added the following repository to /etc/apt/sources.list to install Iceweasel latest release:

deb http://mozilla.debian.net/ squeeze-backports iceweasel-release

As you know there is a same package iceweasel in the official Debian repository. If I want install Iceweasel from this specific repo I run:

apt-get install -t squeeze-backports iceweasel

from apt-get manual page:

-t, --target-release, --default-release
           This option controls the default input to the policy engine, it creates a default pin at priority 990 using the specified
           release string. This overrides the general settings in /etc/apt/preferences. Specifically pinned packages are not affected by
           the value of this option. In short, this option lets you have simple control over which distribution packages will be retrieved
           from. Some common examples might be -t '2.1*', -t unstable or -t sid. Configuration Item: APT::Default-Release; see also the
           apt_preferences(5) manual page.

I think this is a better solution,

Source from:https://askubuntu.com/questions/27362/how-to-only-install-updates-from-a-specific-repository/57749#57749


I found a workaround. First I needed to find the repositories that had the pacakage:

$ apt-cache showpkg emacs-snapshot
Package: emacs-snapshot
Versions: 
1:20100111-1~lenny1 (/var/lib/apt/lists/emacs.orebokech.com_dists_lenny_main_binary-amd64_Packages) (/var/lib/dpkg/status)
 Description Language: 
                 File: /var/lib/apt/lists/emacs.orebokech.com_dists_lenny_main_binary-amd64_Packages
                  MD5: 906df684c212eabe267e6b5c2e8c2032

1:20090909-1 (/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic_universe_binary-amd64_Packages)
 Description Language: 
                 File: /var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_karmic_universe_binary-amd64_Packages
                  MD5: 906df684c212eabe267e6b5c2e8c2032


Reverse Depends: ...
...

In the Versions: section. I see the versions that come from different repositories:

  • 1:20100111-1~lenny1
  • 1:20090909-1

So now we just tell apt or aptitude to install that specific version:

$ sudo aptitude install emacs-snapshot=1:20100111-1~lenny1

package-name=version_name

Victory.

I still don't know how to use a specific repository. But in this case a specific version was enough.