33

Being an early adopter and using 11.04 daily builds I sometimes meet a situation when some packages require earlier versions of other packages than those I have installed. Usually newer (but refused) versions of needed packages provide all the functionality of their older versions.

If I use dpkg -i --force-depends-version to install dependent packages everything works fine, I've never seen a problem.

Instead of manually downloading and installing every package, can I just make the system pretend there is a specific package version installed when there is a newer? Or is there a --force-depends-version key equivalent for apt-get?

2 Answers 2

40

Despite an answer being already accepted, inlining the accepted better conveys the process:

  1. There is a Debian package called equivs that is able to create dummy packages. Install it by running sudo apt-get install -y equivs

  2. Once installed, you generate a template "control" file using the following command: equivs-control postfix (replace postfix with your package name). In my case, I might use an alternate package name, e.g. postfix-custom or whatever but have my custom package fulfill or Provides the installation dependency of postfix (again replacing postfix for whatever package you want.

  3. Once the template control file is generated, I will typically remove a lot of the commented out statements (statements that begin with #). One that I like to keep specifically is the Provides: statement where I can say that my package provides the capability offered by the other package that I'm trying to fake, e.g. Provides: postfix tells the Debian/Ubuntu dependency resolution mechanism that my package—of whatever name—provides the same capabilities of the target package, again postfix or whatever. This allows me to name my package independently of the target package to avoid confusion. Erlang Factory does this with their stuff, e.g. esl-erlang provides erlang.

  4. Finally, once the template control file is created, you use equivs-build to generate the fake package, e.g. equivs-build /path/to/generated/control/file.

  5. It takes a few seconds to build the package and then you can run sudo dpkg -i my_package_name*.deb

For advanced users, if your template control file has a Requires: dependency line, you may want to use a tool like gdebi to install your package as well as the various the packages it declares as dependencies.

22

You can use the equivs package to create a dummy package to fake a given package being installed. Some instructions here.

1
  • While this is enough. But the link may break sooner or later. Better to have at least resumed instruction within the answer. My answer may help here askubuntu.com/a/1181415/26246 . So we can reference this question which have the higher vote concerning equivs.
    – user.dz
    Oct 17, 2019 at 9:51

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .