Contents

How to fix dependency problems on Ubuntu based Linux distros

Note
This article was last updated on 2021-08-18, the content may be out of date.
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.
If you find this post helpful, please consider sponsoring.


If you have any questions, leave your question down below, and you can contact me directly using my E-mail account or our Matrix room.

You can get notified when we create a new content from our RSS feed, or from our Matrix room.