Cisco Packet Tracer (ugly, horrid) Fonts

Crossposted at Mint Leaves 4 Linux (mintleaves4linux.blogspot.com)

Greetings, Cisco Gurus! I’m Chris — or professortech — whichever you prefer. =) My first post will be a not-so-Cisco-technical post; it’s actually about getting Packet Tracer properly configured on Linux. If you install it right out-of-the-box, it works… but the fonts are rendered horribly! Below, I outline how to fix this so you can use this application pleasurably.

So, first thing’s first. I acquired PacketTracer53_Ubuntu.tar.gz from Cisco’s Net Academy website (cisco.netacad.net) after doing a search for Packet Tracer (while logged in).

Afterwards, I unzipped it (tar -xvzf PacketTracer53_Ubuntu.tar.gz) into my Downloads directory and did a sudo ./install from the directory containing the extracted files.

Everything is fine from here… until you open the application. Then, you are presented with a GUI that has the crappiest, most horrific looking fonts you’ll ever see in your life! Not to worry. This can be fixed.

The problem? Packet Tracer uses its own Qt4 libraries instead of using the ones that you already have on your system. From what I understand, any of the subpixel rendering that has been compiled into the libraries on your system are not present in the libraries for Packet Tracer. The Qt4 packet tracer libraries are located in the /opt/pt/lib directory, assuming you installed Packet Tracer in /opt/pt.

The solution? See below. THIS ASSUMES YOU ARE USING MINT LINUX 11 AND QT LIBRARIES 4.7.2. I am confident it will work on Ubuntu (and hopefully, other QT versions), but not so sure on other distributions (i.e. the directories may be different). Keep this in mind.

First, back up the lib directory where you installed Packet Tracer. This is /opt/pt/lib by default.

cd /opt/pt
sudo cp -r lib lib.bak

Second, you may need to install the following packages. Execute the following:

sudo apt-get install libqtwebkit2.2-cil libqt4-script libqt4-qt3support libqt4-sql

Copy the following files from /usr/lib to /opt/pt/lib, or wherever you installed Packet Tracer.

libQt3Support.so.4.7.2
libQtCore.so.4.7.2
libQtGui.so.4.7.2
libQtNetwork.so.4.7.2
libQtScript.so.4.7.2
libQtSql.so.4.7.2
libQtWebKit.so.4.7.2

So, for the first file, you’ll do:

sudo cp /usr/lib/libQt3Support.so.4.7.2 /opt/pt/lib
sudo cp /usr/lib/libQtCore.so.4.7.2 /opt/pt/lib
[… and so forth, for the remaining Qt files on the list above.]

Then? Go ahead and delete the 4.4.3 counterparts in the /opt/pt/lib directory. For example:

sudo rm libQt3Support.so.4.4.3
sudo rm libQtCore.so.4.4.3
sudo rm libQtGui.so.4.4.3
[… and so forth, for the remaining Qt files on the list above.]

Now? Well, Packet Tracer will be looking for the 4.4.3 files! We need to trick Packet Tracer into using the higher version Qt libraries.

The trick? Symlinks.

sudo ln -s [TARGET] [SYMLINK_FILE_NAME]

So… (do this in the /opt/pt/lib directory, or wherever the PT library directory is)

sudo ln -s libQt3Support.so.4.7.2 libQt3Support.so.4.4.3
sudo ln -s libQtCore.so.4.7.2 libQtCore.so.4.4.3
[… and so forth, for the remaining Qt files on the list above.]

As a result, when Packet Tracer tries to access the 4.4.3 libraries, they’ll actually be using the 4.7.2 libraries.

Finally, you’ll want to make all of the libraries we’ve copied over from /usr/lib executable. To do this, perform the following:

sudo chmod +x libQt3Support.so.4.7.2
sudo chmod +x libQtCore.so.4.7.2
[… and so forth, for the remaining Qt files on the list above.]

Now run Packet Tracer. You should be good to go.

You’ll notice that there are two Qt files we didn’t touch.

libQtAssistantClient.so.4.4.3
libQtXml.so.4.4.3

There’s a reason. First, when I was doing all of this for myself, I initially didn’t find the 4.7.2 counterpart for libQtAssistantClient library in the /usr/lib directory. So, I tried to perform the above steps without this file.

Second, there is a libQtXml.so.4.7.2 file in /usr/lib. However, if you use this file in /opt/pt/lib and run Packet Tracer, it will segfault when you try to do things like delete devices. I think this has to do with methods/functions in the code that can change from some versions to others, but don’t quote me on that. So, as a result, I avoid using this file.

If you’re a savvy user, you may see other ways to perform essentially what I have done above. No problem. I just posted what I did so you get the idea of what I accomplished.

And the result? Look… pretty!

Look! Pretty Fonts! =)

If you want to contrast my steps with the troubleshooting steps that others have taken, see the links below:

http://forum.kde.org/viewtopic.php?f=43&t=87983#p158833

http://ubuntuforums.org/showthread.php?t=1444924

http://sonniesedge.co.uk/2010/02/03/fuckin-ugly-fonts-on-ubuntu-version-of-packet-tracer/

http://pvradu.blogspot.com/2010/04/packet-tracer-52-font-problem.html

Advertisements

Intro to result filtering with Regular Expressions (regex) in Cisco IOS

Is there anyone who hasn’t once gave the Show Run  or Show Tech-Support command or anything with large output and thought “man… I don’t need to see all this information ” ?  At some point you probably realized that you that you can use the pipe ->  |  <- to filter your results.   You may not appreciate the pipe until you have to look at pretty big configuration… but it’s always advantageous to learn to use it.

So if you gave this command    show run | ?  you would be presented with these useful options for filtering:

R1#show run | ?
  append       Append redirected output to URL (URLs supporting append operation only)
  begin           Begin with the line that matches the string
  exclude        Exclude lines that match the specified string
  include        Include lines that match the specified string 
  redirect       Redirect output to URL
  section         Filter a section of output
  tee                Copy output to URL

I find section to be my favorite pipe filtering choice since it includes all the associated configurations to the configuration lines matched.  They are all very helpful options and should be learned and used but they are not the purpose of my post.

The output for the show run | ? command show above would lead you to believe that adding a text string “the specified string” and pressing enter is the full extend of the filtering feature … but that is not the case.   If you issue a question mark after the filter type  show run | section ? you are presented with the following information

R2#show run | section ?
  LINE        Regular Expression
  exclude     Exclude entire section(s) of output
  include     Include entire section(s) of output

Here we find out that not only are you able to filter based on text, but you can also add a touch of coolsauce to your search with a regular expression.  Never heard of a regular expression (regex.regexp)?  Here’s a s30 minute tutorial.  You know regular expressions but don’t use them?  Grab a good cheat sheet and improve get to improving your searching kung fu.  That’s why you are here right?  You can increase the power of your search exponentially by using regex characters  . \ [ ] ^  Here’s a few basic regular expression examples:

0.0 matches 0x0 and 020

t..t matches strings such as test, text, and tart

172\.1\.. matches 172.1.10.10 but not 172.12.0.0

^123 matches 1234, but not 01234

123$ matches 0123, but not 1234

As you become proficient with regular expressions you can do advanced searches with alternation (Joe or Bob, but not Joe and Bob), Multipliers, Ranges and much more.  Sky is the limit :-]

Till next time!

~

Gabe @ networkdojo.net

 

~

Resources:

gskinner.com/RegExr

Using the Cisco IOS Command-Line Interface

Regular Expressions Cheat Sheet (v2)

The 30 minute Regex Tutorial

Tool Command Language (TCL)

    Tcl scripting was introduced as a feature in Cisco IOS with release 12.3(2)T.  To get good use of this powerful feature, it is required that you have familiarity with Cisco IOS commands and with Tcl programming.

This tidbit is not meant to be anything more than a simple introduction to the Tcl shell in IOS.  Hopefully to whet your appetite.

To utilize the Tcl shell, enter the following IOS commands:

R1>en
R1#tcl?
tclquit  tclsh

R1#tclsh
R1(tcl)#

You can exit the shell with the shell in the typical way, and even with a special command

R1#tclsh
R1(tcl)#tclquit
R1#tclsh
R1(tcl)#exit
R1#

You can even follow up tclquit with a question mark, and it will exit the shell.

One simple useful application for the Tcl is to create a loop that iterates through commands.
A not so useful but simple example is the one right out of the CCNP labs. You could write a script to ping a list of IP addresses.

Sintax
foreach identifier {
value1
value2valuex
}{instruction} 

Example

R1#tclsh
R1(tcl)#foreach address {
10.1.1.1
10.2.2.2
}{ping $address}

If the Tool Command Language sounds intimidating start with the Tcl Tutorial everyone starts in the beginning right?  Once you feel comfortable about the idea of taking your knowledge of the IOS command line and throwing Tcl into the mix… sky is the limit.

Sayonara!

~

Gabe @ networkdojo.net

 

 

~
Resources:

Cisco IOS Scripting with Tcl
Tcl Developer Xchange