Contents

How to fix dependency problems on Ubuntu based Linux distros

Important notes before we start
  • Ubuntu is based on Debian, and there are Linux distros that are based on Debian. Also, there are a lot of Linux distros that are based on Ubuntu. This tutorial should work with all of these Linux distros.
  • This tutorial is not for beginners, but I tried to keep it simple as possible.

Introduction about dependency problem

Dependency problem is related to outdated dependencies which is a common issue on Ubuntu based Linux distros for a few reasons:

  1. Some software developers do not give additional support to their software.
  2. Some manufactures do not give additional support for their old drivers or applications.

In this tutorial, I will give you 2 examples of outdated drivers / applications that can not be installed on new Ubuntu based Linux distros, and a way to fix each one of these conditions.

Boostnote

The first example is boostnote_0.16.1 which workes til Ubuntu 20.04, and does not work on Ubuntu based Linux distro starting from version 20.10, and the support for this application has been stopped for almost a year.

Info

The Linux distro I used is Kubuntu 20.10 which is based on Ubuntu 20.10

  • The file manager:  Dolphin
  • The terminal: Konsole
  • The package manager: Muon Package Manager

The solution for Boostnote

1- You can download boostnote directly from this link » https://github.com/BoostIO/boost-releases/releases/download/v0.16.1/boostnote_0.16.1_amd64.deb

2- Open the folder where you downloaded the file, and right click on any empty space inside the folder, and pick Open Terminal Here

Open Terminal Here

3- Write this command in the terminal to install boostnote_0.16.1_amd64.deb inside the folder without installing the required dependencies

1
sudo dpkg -i boostnote_0.16.1_amd64.deb
Install Boostnote

As you see in the picture, there is 3 dependencies that is not installed on my system: gconf-service - gconf2 - gvfs-bin

4- I opened the package manager (Muon) to search for these dependencies one by one

  • I found gconf-service, and gconf2, but I did not find gvfs-bin

    gvfs-bin can not be found
  • After a little search, I found that gvfs-bin can be dropped, and that what I will explain how to do in the next steps.

5- Create an empty folder with the name tmp using this command:

1
mkdir tmp

6- Unpack the contents of boostnote_0.16.1_amd64.deb to tmp folder using this command:

1
dpkg-deb -R boostnote_0.16.1_amd64.deb tmp

7- Open tmp folder, then open control file inside DEBIAN folder

control text file

8- Remove gvfs-bin, from the the text file, and it should look like this:

Image5.png

After you finish save the text file (File » Save)

9- Delete boostnote_0.16.1_amd64.deb

10- Pack the contents of tmp again, using this command:

1
dpkg-deb -b tmp boostnote_0.16.1_amd64.deb

11- Use these commands to install boostnote_0.16.1_amd64.deb and its dependencies correctly this time

1
2
sudo dpkg -i boostnote_0.16.1_amd64.deb
sudo apt install -f
Note
If you edited the control file correctly, you will not encounter any errors this time.

iP2700 series IJ Printer Driver

The second example is: iP2700 series IJ Printer Driver which is made to be installed on Ubuntu 9.10 (32bit)

- The link of this driver -> https://www.canon.com.au/support/sims-content?pid=9359fa0798c54eeeadf89843512d7882&cid=87FC144EA2C54EF29F637118BB6D6231&ctype=dr

- That driver worked til Ubuntu 18.04, and does not work on Ubuntu 20.04

Info

The Linux distro I used is KDE neon User Edition which is based on Ubuntu 20.04

  • The file manager:  Dolphin
  • The archive tool: Ark
  • The terminal: Konsole
  • The package manager: Muon Package Manager
    • You need to install it using this command from the terminal:

      1
      
      sudo apt install -y muon
      

The solution for iP2700 series IJ Printer Driver

1- Download the driver, Open the file manager, and extract the compressed file

  • To extract the file right click on it, go down to Extract menu, and pick Extract archive here, auto detect subfolders
Extract archive

2- Open the extracted folder, and you will find a folder inside it with the name “packages” that contains 2 DEB files which are the Debian packages

  • Debian packages are the universal packages that can be installed on any Debian / Ubuntu based Linux distro

3- Right click on any empty space inside the folder, and click Open Terminal Here

Open Terminal Here

4- You need first to write this commands in the terminal to enable 32bit architecture which is not enabled by default

1
sudo dpkg --add-architecture i386
Important notes before we proceed
  • After using the sudo command, the terminal will ask you for your account password, you need to enter the password you used during the installation.
  • While entering the password, you will not see any asteriks in the terminal, do not worry, that is a security measure, just keep writing the password, and press enter after you finish.

5- Write this command in the terminal to install the 2 Debian packages inside the folder without installing the required dependencies

1
sudo dpkg -i cinjfilter*
Install the driver

5- Use this command to install the required dependencies:

1
sudo apt install -f
  • When asked Do you want to continue, press y, then press Enter from the keyboard.
Fix missing dependencies
  • This command installed the required dependency for cnijfilter-common_3.30-1_i386.deb » libpop0:i386
    • But it removed cnijfilter-ip2700series_3.30-1_i386.deb because it can not satisfy its requirements.

6- I used the previous command to see what exactly the unsatisfied dependencies for this package

1
sudo dpkg -i cnijfilter-ip2700series_3.30-1_i386.deb
The unsatisfied dependencies

As you can see in the previous picture: libgtk2.0-0, libpng12-0, and libtiff4 are the unsatisfied dependencies.

Important notes
  • Keep in mind that all the dependencies are 32bit, and 32bit packages on Debian / Ubuntu have :i386 at the end of each one of them.
  • Do not close the terminal until the end of this example.

7- I opened the package manager to search for these dependenceis one by one

  • I found libgtk2.0-0
  • I did not find libpng12-0, but I searched for libpng, and I found libpng16-16 (i386) version 1.6.37-2
Muon Package Manager picture 1
  • I did not find libtiff4, but I searched for libtiff, and I found libtiff5 (i386) version 4.1.0
Muon Package Manager picture 2

8- Create an empty folder with the name tmp using this command:

1
mkdir tmp

9- Unpack the contents of cnijfilter-ip2700series_3.30-1_i386.deb to tmp folder using this command:

1
dpkg-deb -R cnijfilter-ip2700series_3.30-1_i386.deb tmp

10- Open tmp folder, then open control file inside DEBIAN folder

DEBIAN folder

11- Edit libpng12-0, libtiff4, and their version to be like in this picture:

Control text file

After you finish save the text file.

12- Delete cnijfilter-ip2700series_3.30-1_i386.deb

13- Pack the contents of tmp again, using this command:

dpkg-deb -b tmp cnijfilter-ip2700series_3.30-1_i386.deb

14- Use these commands to install cnijfilter-ip2700series_3.30-1_i386.deb and its dependencies correctly this time

1
2
sudo dpkg -i cnijfilter-ip2700series_3.30-1_i386.deb
sudo apt install -f
Note
If you edited the control file correctly, you will not encounter any errors this time.