How to Fix Old Software Dependency Issues in Linux

How to Fix Old Software Dependency Issues in Linux

මේ කියන්න යන්නෙ Linux වල old dependancy issues fix කරගන්න පුලුවන් හොඳම methord එක ගැන. පහුගිය දවසක packet Tracer install කරන්න ගියාම මට මේ විදිය සෑහෙන්න usefull කියලා තේරුනා (මගෙ os එක ubuntu 24.04). ඉතිං ඒක තව කාට හරි වටී කියලා හිතලා මේක ලියන්නෙ මං .

මේක packet tracer installation scenario එකෙන්ම පැහැදිලි කරන්නම්. මේ ක්රමය Packet Tracer වලට විතරක් නෙවෙයි, මේ වගේ legacy dependency අවුල් තියෙන ඕනම software එකකට පාවිච්චි කරන්න පුලුවන්.


The Problem

මේකෙදි example එක විදියට මං ගන්නෙ packet tracer. මේක packet tracer නෙවේ ඕනෙම old dependencies තියන software එකකට use කරන්න පුලුවන්

ඔයා Cisco එකෙන් දෙන Packet Tracer.deb file එක download කරගෙන, සුපුරුදු විදිහට install කරන්න හදනවා කියල හිතමු.

sudo dpkg -i Packet_Tracer822_amd64_signed.deb        

ඊට පස්සෙ terminal එකේ මෙන්න මේ වගේ ලස්සන error message එකක් පෙන්වයි.

𝘥𝘱𝘬𝘨: 𝘥𝘦𝘱𝘦𝘯𝘥𝘦𝘯𝘤𝘺 𝘱𝘳𝘰𝘣𝘭𝘦𝘮𝘴 𝘱𝘳𝘦𝘷𝘦𝘯𝘵 𝘤𝘰𝘯𝘧𝘪𝘨𝘶𝘳𝘢𝘵𝘪𝘰𝘯 𝘰𝘧 𝘱𝘢𝘤𝘬𝘦𝘵𝘵𝘳𝘢𝘤𝘦𝘳:

𝘱𝘢𝘤𝘬𝘦𝘵𝘵𝘳𝘢𝘤𝘦𝘳 𝘥𝘦𝘱𝘦𝘯𝘥𝘴 𝘰𝘯 𝘭𝘪𝘣𝘨𝘭1-𝘮𝘦𝘴𝘢-𝘨𝘭𝘹; 𝘩𝘰𝘸𝘦𝘷𝘦𝘳:

𝘗𝘢𝘤𝘬𝘢𝘨𝘦 𝘭𝘪𝘣𝘨𝘭1-𝘮𝘦𝘴𝘢-𝘨𝘭𝘹 𝘪𝘴 𝘯𝘰𝘵 𝘪𝘯𝘴𝘵𝘢𝘭𝘭𝘦𝘥.

දැන් ඉතිං ඔයා sudo apt install libgl1-mesa-glx කියල ගැහුවට වැඩක් නෑ. මොකද ඒ package එක Ubuntu 24.04 වල official repository එකේ දැන් නෑ.


What exactly happened?

මේකට හේතුව සරලයි.

Packet Tracer එක හදල තියෙන්නෙ පරණ Ubuntu version එකක් base කරගෙන.

libgl1-mesa-glx කියන package එක දැන් පරණයි (deprecated). ඒ වෙනුවට දැන් libgl1 වගේ අලුත් packages ඇවිත්.

හැබැයි Packet Tracer එකේ installation file එක (control file) එකේ hard code කරලා තියනවා එයාට අර පරණ libgl1-mesa-glx කියන package එකම ඕනෙ කියලා.

අලුත් Linux Distro වලින් මේ වගේ පරණ, පාවිච්චි නොකරන packages අයින් කරන නිසා තමයි මේ dependency ප්රශ්නෙ එන්නෙ.

මෙතනදි dpkg වල --force-depends හරි --ignore-depends හරි දීල .deb එක install කරගන්න පුලුවන් උනත් ඊට පස්සෙ apt package corruption error එනවා අපිට ආයෙ කිසිම package එකක් install කරන්න බෑ apt වලින් ඒක fix කරන්න apt install -f ගහපු ගමන් packet tracer remove කරන්න ඉල්ලනවා ඕන්න ඕකයි පස්නෙ 😅


ඉතිං මේකට easiest solution එක තමා system එක පොඩ්ඩක් "රවට්ටන" එක. අපි libgl1-mesa-glx කියන නමින් dummy package එකක් හදනවා. මේකෙ ඇතුලෙ මුකුත්ම නෑ, නම විතරයි. මේක install කරාම dpkg හිතනවා "ආ... හරි, මම ඉල්ලපු dependency එක system එකේ තියෙනවනෙ" කියලා, ඊට පස්සෙ කිසි අවුලක් නැතුව Packet Tracer එක install වෙන්න දෙනවා.

Debian based වලදි මේ වැඩේට පට්ටම ලේසි tool එකක් තියෙනවා equivs කියලා.


Step by Step,

equivs ඉන්ස්ටෝල් කරගන්න

sudo apt update ; sudo apt install equivs

Dummy Package එකට Workspace එකක් හදන්න

Clean එකට වැඩේ කරන්න පොඩි ෆෝල්ඩර් එකක් හදාගමු.

mkdir ~/dummy-glx ; cd ~/dummy-glx

Control File එක හදන්න

දැන් equivs වලින් control file එකක් generate කරගන්න. මේ file එකෙන් තමයි අපි අපේ dummy package එකේ විස්තර දෙන්නෙ.

equivs-control glx-dummy        

දැන් ඔයාගෙ ෆෝල්ඩර් එකේ glx-dummy කියල file එකක් හැදිලා ඇති. ඒක ඔයා කැමති text editor එකකින් (gedit, nano, etc.) open කරගෙන, ඇතුලෙ තියෙන ඔක්කොම අයින් කරලා පහල තියෙන ටික විතරක් දාන්න.

Section: misc

Priority: optional

Standards-Version: 3.9.2

Package: libgl1-mesa-glx

Description: Dummy package to satisfy Packet Tracer dependency.


  • මෙතන Package කියන තැනට හරියටම අර අපිට නැහැයි කියපු package එකේ නම දෙන එක තමයි වැදගත්ම දේ.



Dummy .deb File එක Build කරන්න

දැන් අර control file එක use කරලා අපේ dummy package එක හදමු.

equivs-build glx-dummy        


  • මේ command එක ගැහුවම ඔයාගෙ ෆෝල්ඩර් එකේ .deb file එකක් හැදෙයි.



Dummy Package එක Install කරන්න

අන්තිමට, අපි හදපු dummy package එක install කරගන්න.

sudo dpkg -i libgl1-mesa-glx_1.0_all.deb        


  • (ඔයාගෙ හැදෙන file එකේ version එක පොඩ්ඩක් වෙනස් වෙන්න පුලුවන්, ඒකට අවුලක් නෑ).



Let's install Packet Tracer now!
sudo dpkg -i Packet_Tracer822_amd64_signed.deb        


Install උනාට පස්සෙ terminal එකේ apt install -f කියල type කරල බලන්න. වැඩේ සාර්ථකයි!


  • මෙතනදි වැදගත් දෙයක් තමා අර deprecated package එක වෙනුවට තියන අලුත් පැකේජ් එක හොයලා install කරගන්න එක. ඒක chatgpt එකෙ අහලා හොයාගන්න. (මෙතනදි නම් libgl1 වගේ)



Common for RedHat too

මේ කතා කරේ Debian based වලට අදාල විසඳුමක්. ඔයා Red Hat, CentOS, Fedora වගේ OS එකක් පාවිච්චි කරන කෙනෙක් නම්, මේ වගේම වැඩක් dummy RPM package එකක් හදල කරගන්න පුලුවන්. ඒකට rpmbuild tool වගේ use කරන්න වෙනවා.

Concept එක එකයි: system එක රවට්ටලා dependency එක satisfy කරන එක.

ඉතිං ඔය විදිහට ඔයාටත් පරණ software වල එන dependency issues ගොඩ දාගන්න පුලුවන්.


Thanks for reading!


To view or add a comment, sign in

More articles by Ishara Deshapriya

  • Linux File Descriptors, Piping & Redirection

    මේක හැමෝම බලන වෙන්නෙ මොකක්ද කියලා දැන හෝ නොදැන pipe operator එක යූස් කරලා ඇති, redirect කරල ඇති. ඇත්තටම මට ඕනෙ piping &…

    4 Comments
  • Conventional Commits

    commit කරද්දි "fixed bug", "update code", "changes" වගේ messages දාල සති දෙක තුනකට පස්සෙ බලද්දි, මොකක්ද කරේ කියලා කරපු…

    4 Comments
  • Environment Variables

    1. What Are Environment Variables? සරලවම කිව්වොත් Environment Variables කියන්නෙ OS (Operating System) level එකෙන් save…

    4 Comments
  • Download Torrents Directly to Google Drive

    SeedUp is a Python based tool that combines torrent downloading with Google Drive uploading capabilities. SeedUp allows…

    2 Comments
  • Linux User Management

    User management කියන්නෙ හරියට linux වල alphabet වල කොටසක් වගේ..

    2 Comments
  • Working with Aliases in Linux

    Terminal එකේ වැඩ කරද්දි දිග commands use වෙනවනෙ..

    6 Comments
  • Special Permission Bits in Linux: SUID, SGID, and Sticky Bit

    කලින් ආටිකල් එකේදි මං Linux වල file permissions ගැන කීවා. permission ගැන කීවම Special Permission Bits ගැනත් කියන්න ඕනෙ;…

  • Linux Permissions and Practical Scenarios

    Linux වලදි Permission Denied කියලා error එකක් ඇවිත් තියෙනවද? ආන්න ඒකට හේතුව තමයි Permissions. සරලවම කිව්වොත්…

    11 Comments
  • Wildcards & History Expansions for Smarter Workflow

    මේ කියන්න යන්නෙ Linux terminal එකේ වැඩ කරනකොට ඔයාගෙ කාලය ඉතුරු කරගන, smart විදිහට වැඩක් කරගන්න පුලුවන් tricks ටිකක්…

  • Persistent Terminal Sessions for Reliable Server Administration with tmux

    Remote Server එකේ වැඩ කරද්දි Connection drop වෙනවද? හිතන්න ඔයා server එකකට SSH වෙලා ලොකු script එකක් run කර කර ඉන්නවා…

    1 Comment

Others also viewed

Explore content categories