#7 - Installing Cisco Packet Tracer 9.0 on Linux Mint 22.3 without XDG, MIME, and icon errors

#7 - Installing Cisco Packet Tracer 9.0 on Linux Mint 22.3 without XDG, MIME, and icon errors

Table of Contents

Recently, I installed Cisco Packet Tracer 9.0 on Linux Mint using the official Ubuntu .deb package provided by Cisco Networking Academy.

Cisco provides Packet Tracer through the NetAcad Resource Hub, where the installer is available for Windows, Linux, and macOS:

https://www.netacad.com/resources/lab-downloads

Cisco also provides a simple PDF with the official download and installation instructions:

https://www.netacad.com/skillsforall/files/Cisco_Packet_Tracer_Download_and_Installation_Instructions.pdf

The official process is simple: download the .deb package, open a terminal, go to the folder where the file was downloaded, and install it with apt.

That method is correct. However, on my Linux Mint system, I noticed that the Packet Tracer installer may produce some annoying desktop integration errors related to XDG paths, MIME registration, icon cache generation, and file ownership under the user profile.

This post documents what happened, why it happened, and the clean installation procedure that worked for me.


Assumptions

In this post, I will use the following example user:

bwotec

So the home directory used in the commands will be:

/home/bwotec

If your Linux username is different, replace bwotec with your own username.

You can check your username with:

whoami

You can also check your home directory with:

echo "$HOME"

In this example, I assume the Packet Tracer installer was downloaded to:

/home/bwotec/Downloads/CiscoPacketTracer_900_Ubuntu_64bit.deb

or, using the home shortcut:

~/Downloads/CiscoPacketTracer_900_Ubuntu_64bit.deb

The normal Cisco installation method

The normal installation method would be:

cd ~/Downloads
sudo apt install ./CiscoPacketTracer_900_Ubuntu_64bit.deb

The ./ is important because it tells apt to install a local .deb file from the current directory.

Alternatively, you can use the full path:

sudo apt install /home/bwotec/Downloads/CiscoPacketTracer_900_Ubuntu_64bit.deb

In many Ubuntu-like environments, this is enough.

The installer should:

Install Packet Tracer
Ask for the EULA
Create desktop launchers
Register MIME types
Register icons
Update icon caches
Allow Packet Tracer to start from the menu or terminal

However, on my Linux Mint system, the application installed, but the post-installation scripts produced desktop integration errors.


The problem

During installation, I saw messages like:

Directory '/home/bwotec/.local/share/mime/packages' does not exist!
xdg-icon-resource: No writable system icon directory found.
gtk-update-icon-cache: No theme index file.
ln: failed to create symbolic link '/home/bwotec/.local/share/icons/gnome/index.theme': File exists

Later, when launching Packet Tracer, I also saw a permission error similar to this:

mkdir: cannot create directory ‘/home/bwotec/.local/.packettracer/lib’: Permission denied

So Packet Tracer itself was installed, but some user-level desktop integration files were created incorrectly.


Root cause

The problem was not Linux Mint itself.

The issue came from how the Cisco Packet Tracer .deb package handles some post-installation tasks.

The package runs its installation scripts with root privileges, but those scripts also try to modify files inside the normal user’s home directory:

/home/bwotec/.local

The installer detects the non-root user correctly:

Non-root user: bwotec
Non-root home: /home/bwotec

However, because the package scripts run through sudo, some files under ~/.local may be created as root.

That can later cause permission problems when Packet Tracer tries to write to:

/home/bwotec/.local/.packettracer

Another issue is related to the local icon theme path:

~/.local/share/icons/gnome/index.theme

The Cisco script may expect this file to point to:

/usr/share/icons/gnome/index.theme

But on my Linux Mint system, that file did not exist.

My system had icon themes such as:

/usr/share/icons/hicolor
/usr/share/icons/Adwaita
/usr/share/icons/Mint-Y
/usr/share/icons/Mint-Y-Orange

but not:

/usr/share/icons/gnome/index.theme

Because of that, the installer could create or reuse a broken gnome/index.theme link, and then gtk-update-icon-cache would complain:

gtk-update-icon-cache: No theme index file.

Clean installation procedure

This procedure prepares the expected user-level folders before installing Packet Tracer.

The goal is to avoid the XDG, MIME, icon cache, and permission errors during the first installation.

Again, replace bwotec with your actual Linux username.


1. Prepare the local user directories

Create the user-level directories expected by the installer:

mkdir -p ~/.local/share/mime/packages
mkdir -p ~/.local/share/applications
mkdir -p ~/.local/share/icons
mkdir -p ~/.local/share/icons/gnome

These directories are inside your own home folder.

They do not modify system-wide directories like:

/usr/share/icons
/usr/share/applications
/usr/share/mime

2. Create a local gnome icon theme file

This avoids the broken symlink problem related to:

/usr/share/icons/gnome/index.theme

Create a local index.theme file:

cat > ~/.local/share/icons/gnome/index.theme <<'EOF'
[Icon Theme]
Name=gnome
Comment=Local compatibility icon theme for Cisco Packet Tracer
Directories=48x48/apps,48x48/mimetypes

[48x48/apps]
Size=48
Context=Applications
Type=Fixed

[48x48/mimetypes]
Size=48
Context=MimeTypes
Type=Fixed
EOF

This file is created only inside the user profile:

/home/bwotec/.local/share/icons/gnome/index.theme

It does not change any system theme.

This was the key step that prevented the installer from relying on a broken symlink to a non-existent GNOME icon theme file.


3. Fix ownership before installing

Before installing, make sure your ~/.local directory belongs to your user:

sudo chown -R bwotec:bwotec ~/.local

Remember to replace bwotec with your own username.

You can verify that no files inside ~/.local are owned by root:

find ~/.local -maxdepth 6 -user root -ls 2>/dev/null

The expected result is no output.


4. Copy the installer to /tmp

This step is optional, but I recommend it.

If the .deb file is installed directly from ~/Downloads, apt may show a warning about the _apt user not being able to access the file.

To avoid that, copy the installer to /tmp and make it readable:

cp ~/Downloads/CiscoPacketTracer_900_Ubuntu_64bit.deb /tmp/
chmod 644 /tmp/CiscoPacketTracer_900_Ubuntu_64bit.deb

5. Install Packet Tracer with XDG variables set correctly

Now install the package using apt, but explicitly set the XDG variables so the installer knows where the user-level application, MIME, and icon data should live:

sudo env \
XDG_DATA_HOME=/home/bwotec/.local/share \
XDG_DATA_DIRS=/home/bwotec/.local/share:/usr/local/share:/usr/share \
HOME=/home/bwotec \
apt install /tmp/CiscoPacketTracer_900_Ubuntu_64bit.deb

Again, replace bwotec with your own username.

When the installer asks for the EULA:

1) Show EULA text again
2) Accept EULA
3) Decline EULA
#?

choose:

2

With the local folders prepared and the gnome/index.theme file created, the installation should complete with messages like:

gtk-update-icon-cache: Cache file created successfully.

In my final installation, the previous errors disappeared.

I no longer saw:

Directory ... mime/packages does not exist
Note that '/home/bwotec/.local/share' is not in the search path
xdg-icon-resource: No writable system icon directory found
gtk-update-icon-cache: No theme index file
ln: failed to create symbolic link ... File exists

6. Fix ownership after installation

Even with the cleaner installation method, the Cisco installer may still create files inside ~/.local as root.

So after installation, fix ownership again:

sudo chown -R bwotec:bwotec ~/.local/share/applications ~/.local/share/icons ~/.local/share/mime ~/.local/.packettracer

Replace bwotec with your own username.

Then check again:

find ~/.local -maxdepth 6 -user root -ls 2>/dev/null

The expected result is no output.

If something unrelated appears, inspect it before deleting anything.

In my case, I once found this file owned by root:

/home/bwotec/.local/share/lesshst

That file was not related to Packet Tracer. It was probably created by running commands with sudo while forcing HOME=/home/bwotec.

I fixed it with:

sudo chown bwotec:bwotec ~/.local/share/lesshst

7. Final validation

Run:

sudo dpkg --audit
apt list --installed | grep packettracer
which packettracer
find ~/.local -maxdepth 6 -user root -ls 2>/dev/null
packettracer

Expected results:

sudo dpkg --audit

should return nothing.

This command:

apt list --installed | grep packettracer

should show something like:

packettracer/now 9.0 amd64 [installed,local]

This command:

which packettracer

should return:

/usr/local/bin/packettracer

The find command should return nothing, meaning there are no root-owned files left under ~/.local.

Finally, Packet Tracer should start normally:

Cisco_Packet_Tracer_9.0.0:...:/opt/pt/packettracer.AppImage

Do I need to run dpkg-reconfigure packettracer?

In my final clean installation, I did not need it.

I used dpkg-reconfigure packettracer only during troubleshooting to test the package configuration scripts after fixing the icon theme issue.

The command would be:

sudo env \
XDG_DATA_HOME=/home/bwotec/.local/share \
XDG_DATA_DIRS=/home/bwotec/.local/share:/usr/local/share:/usr/share \
HOME=/home/bwotec \
dpkg-reconfigure packettracer

However, after preparing the directories and creating the local gnome/index.theme before installation, the normal apt install completed cleanly.

So, for a fresh installation, dpkg-reconfigure should not be necessary.


Cleanup

After installation, the temporary installer can be removed:

rm -f /tmp/CiscoPacketTracer_900_Ubuntu_64bit.deb

The copy in Downloads can also be removed if you do not want to keep it:

rm -i ~/Downloads/CiscoPacketTracer_900_Ubuntu_64bit.deb

I used rm -i here so the shell asks for confirmation before deleting the original downloaded installer.


Final notes

The official Cisco installation method is correct for a normal Ubuntu/Linux environment. Cisco’s own installation guide shows the Linux installation using a local .deb package and apt.

The issue in my case was not the apt install command itself. The problem was the Packet Tracer post-installation script behavior on Linux Mint.

The script tries to integrate the application with the desktop environment by registering MIME types, icons, and desktop launchers, but it does this in a fragile way:

It runs as root.
It writes into the normal user's ~/.local directory.
It expects a gnome icon theme path that does not exist on my Linux Mint installation.

Preparing the expected user directories, creating a valid local gnome/index.theme, setting the correct XDG variables during installation, and fixing ownership afterward resulted in a clean and working Packet Tracer 9.0 installation on Linux Mint.

The application installed correctly, dpkg reported no package issues, the packettracer command was available, and no root-owned files remained inside my ~/.local directory.