I have a debian package file (.deb) that's missing a key library. I don't know specifics of creating a debian package. Is it possible to just add this one library file into the debian package?
If copying that particular library file in your installed system works, it should work too if you insert the library in your private deb package.
A debian package file is nothing but an archive of some files, with metadata about those files and some (optional) scripts that are executed when the files are copied over the system .i.e
Lets say, your system
/usr/lib is this without the missing library say,
├── usr │ ├── lib │ │ ├── lib1.so │ │ ├── lib2.so │ │ ├── <missing lib necessary-lib.so> │ │ ├── lib3.so
and copying the library file in
Then you can extract the deb file and put the library file in
usr/lib directory of the extracted files and repackage it.
How do you inject the library
First make a folder to extract the deb file
Then extract your deb file. I'm assuming its name is
dpkg-deb -R mypackage.deb extracted/
This will extract the package in
extracted folder. There will be a folder named
DEBIAN with some other folders like those ones in
/. You should find a
usr folder there and in that a
lib folder. You'd copy your library file there.
The theory is, you'll copy the library file in the same location of the extracted folder assuming it as the root of your system. So, you'll copy it in
cp necessary-lib.so extracted/usr/lib
Now, re-build the deb package using this command.
dpkg-deb -b extracted
It will create a new
extracted.deb file. It's your new deb file. You should be able to install it on multiple systems now without having to copy the library file each time after installation.