I faced this problem when trying to install the latest version of lyx, frontend for the famous LaTeX/TeX document processor. Lyx is available at the ubuntu main repo, but the version is kind of outdated. After checking at http://www.getdeb.net, a latest version is available. After downloading the lyx and lyx-common package from here, I tried to install both of them using "dpkg -i *.deb" but they have unsatisfied dependencies. One of the way to solve this is to download all the dependencies and put them inside one directory, and run "dpkg -i *.deb" but I think I wanna try another solution which is using apt to install them. This is where "Adding local directory to apt sources.list" comes into the picture. The steps will be explained below:
1. Create the directory to put all the deb files you downloaded, in this case I'll create /home/foo/debs
$ mkdir /home/foo/debs
2. Put all the downloaded deb files into the directory
$ mv /home/foo/Desktop/*.deb /home/foo/debs
3. Check the current priorities and section for the package, find entry named Section and Priority:
$ dpkg --info lyx_1.6.2-1~getdeb1_i386.deb
Here are some of the info:
Package: lyx
Section: editors
Priority: optional
Homepage: http://www.lyx.org/
4. Create override file. Override file is used to override the default priority and section setting of the package (refer to no. 3 for guide on how to check section and priority). Override file contains 3 columns: package, priority, section. Package is the name of the package, priority is low, medium, high or optional and section is the section to which it belongs.
Example of override file content:
## Override
#Package priority section
lyx low editors
5. Create Packages.gz inside /home/foo/debs
$ cd /home/foo/debs
$ sudo dpkg-scanpackages . override | gzip -c9 > Packages.gz
6. If you are too lazy to do the override file, you do not have to. Just change the "dpkg --scanpackages" command above to this:
$ cd /home/foo/debs
$ sudo dpkg-scanpackages . /dev/null | gzip -c9 > Packages.gz
If you follow this path, ignore step 4 and 5
7. Add this line to /etc/apt/sources.list
deb file:///home/foo/debs /
8. Resynchronize the package index files from their sources
$ sudo apt-get update
9. Install your application (in this case, lyx)
$ sudo apt-get install lyx
Apt will fetch the deb files from your local file directory also. Congratulations, you just created a local file repository in your own computer :)
This was very helpful. Thank you for posting this. My friend couldn't get access to medibuntu repos so I had to download 22 debs, 7z them and send them via host site to my friend. She then created a local source dir as you described here, and installed the 22 files with deps. Magical!
ReplyDeleteim a little bit confuse of your code
ReplyDelete$ cd /home/foo/bar
whats with the bar?
Hi anonymous,
ReplyDeleteThanks for the highlight. It should be /home/foo/debs and not /home/foo/bar. I have already corrected it.
Careful on item 7, there is a space in there I couldn't see:
ReplyDeletedeb file://(space)/home/foo/debs /
Wouldn't work without it, worked great after I entered the space.
On 14.04 the format is: deb file:/home/foo/debs /
ReplyDelete