Nithin
Nithin

Reputation: 5840

Adding a .deb file to debian package as dependency

I am trying to package a program (FCL) but it has a dependency - libccd - which I had to package myself. So now I have created a libccd_2.0-1.deb file using check-install and I would like it to be installed as FCL dependency. So I added libccd (>= 1.0) in the control file of FCL Debian package. But the FCL package is complaining that it can't find the dependency libccd.

How can I make FCL package install the libccd_2.0-1.deb when it sees the dependency libccd? Also, where should I add the .deb file in the FCL Debian package?

Upvotes: 0

Views: 1446

Answers (2)

Chris Lamb
Chris Lamb

Reputation: 1760

Since apt version 1.1 (currently in Debian experimental), you can actually install .deb files directly using:

% sudo apt-get install ./disorderfs_0.1.0-1_amd64.deb
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Note, selecting 'disorderfs' instead of 'disorderfs_0.1.0-1_amd64.deb'
The following additional packages will be installed:
  fuse
The following NEW packages will be installed:
  disorderfs fuse
0 upgraded, 2 newly installed, 0 to remove and 1 not upgraded.
Need to get 70.8 kB/81.2 kB of archives.
After this operation, 175 kB of additional disk space will be used.
Do you want to continue? [Y/n] 

Upvotes: 1

Marki555
Marki555

Reputation: 6850

No you can't. dpkg (which is used for installing individual .deb files) cannot fullfil dependencies.

Dependencies can be resolved only by apt-get / aptitude, but they cannot install .deb files directly, they can install packages only from repositories. Each repository has a metadata file and apt build its knowledge database, so when dependency says package libccd is needed, it will know that is available from repository XY.

But dpkg doesn't know where to search for needed packages. You can install your packages either by installing the libccd*.deb first, then by installing the fcl*.deb itself. Or preferably you can put them both as parameters of one dpkg call like this: dpkg -i fcl*.deb libccd*.deb and dpkg will figure itself which of those 2 to install first. (Or you can create your own repository where you will have both packages with related metadata.)

Upvotes: 2

Related Questions