Browser Setup
Install Chrome, Firefox (native .deb via Mozilla APT), Edge, and Brave on an Ubuntu-based distro. Choose the right secondary browser, remove browsers completely, and fix repository issues.
What This Guide Achieves
| Goal | Status |
|---|---|
| Install Chrome, Edge, or Brave | Done |
| Install Firefox as a native .deb via Mozilla APT (no Snap) | Done |
| Choose the right secondary browser based on engine diversity | Done |
| Remove a browser completely (binary, repo, keys, user data) | Done |
| Fix duplicate repository warnings | Done |
| Fix missing GPG key errors | Done |
| Fix i386 architecture warnings | Done |
Prerequisites
- Any Ubuntu 24.04-based distro
- Firefox is pre-installed on many Ubuntu-based desktops, including the tested Zorin setup
- Before adding or removing browser repositories, review the clean installation and removal best practices
The Problem (Windows User Perspective)
On Windows, you download a browser installer and run it. On Linux, browsers from Google, Microsoft, and Brave add their own apt repositories to your system so they can auto-update. This sometimes causes duplicate repository entries, missing GPG keys, or architecture warnings. The installations themselves are straightforward — the tricky part is cleaning up the repository mess afterward.
Installing Browsers
Google Chrome
# Download and install
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt install ./google-chrome-stable_current_amd64.deb
Chrome automatically adds its own apt repository for future updates.
Microsoft Edge
# Add Microsoft's GPG key and repository
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor | sudo tee /usr/share/keyrings/microsoft-edge.gpg > /dev/null
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft-edge.gpg] https://packages.microsoft.com/repos/edge stable main" | sudo tee /etc/apt/sources.list.d/microsoft-edge.list
# Install
sudo apt update
sudo apt install microsoft-edge-stable
Brave Browser
# Add Brave's GPG key and repository
sudo curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg] https://brave-browser-apt-release.s3.brave.com/ stable main" | sudo tee /etc/apt/sources.list.d/brave-browser-release.list
# Install
sudo apt update
sudo apt install brave-browser
Firefox (Native .deb via Mozilla APT — No Snap)
On Ubuntu-based systems, sudo apt install firefox may install the Snap version of Firefox, which launches noticeably slower and does not integrate as cleanly with system themes. To get the official native .deb directly from Mozilla:
# 1. Create the keyrings directory if it does not exist
sudo install -d -m 0755 /etc/apt/keyrings
# 2. Import Mozilla's APT repository signing key
wget -q https://packages.mozilla.org/apt/repo-signing-key.gpg -O- \
| sudo tee /etc/apt/keyrings/packages.mozilla.org.asc > /dev/null
# 3. Add the Mozilla APT repository
echo "deb [signed-by=/etc/apt/keyrings/packages.mozilla.org.asc] https://packages.mozilla.org/apt mozilla main" \
| sudo tee /etc/apt/sources.list.d/mozilla.list > /dev/null
# 4. Pin the Mozilla repo so it takes priority over any distro-packaged Firefox
echo '
Package: *
Pin: origin packages.mozilla.org
Pin-Priority: 1000
' | sudo tee /etc/apt/preferences.d/mozilla
# 5. Install
sudo apt update && sudo apt install firefox
Verify you got the native .deb and not the Snap:
which firefox
# Expected: /usr/bin/firefox (not /snap/bin/firefox)
firefox --version
Choosing a Secondary Browser: Engine Diversity
If you run Chrome as your primary browser and encounter rendering issues — for example, server-side generated PDFs that load correctly on Android Chrome but fail on Linux Chrome — switching to a second Chromium-based browser (Brave, Edge) will not help. They all share the same Blink rendering engine and the same built-in PDF viewer.
The correct strategy is engine diversity: pair Chrome with a browser that processes web content and files through a completely different engine.
| Browser | Engine | PDF viewer | Good secondary to Chrome? |
|---|---|---|---|
| Brave | Chromium/Blink | Same as Chrome | No — same engine quirks |
| Microsoft Edge | Chromium/Blink | Excellent (Adobe-based), but same Blink base | Partial — great PDF reader, same engine bugs |
| Firefox | Gecko | pdf.js (Mozilla’s own) | Yes — best choice |
| Zen Browser | Gecko (Firefox base) | pdf.js (same as Firefox) | Yes — Firefox engine, cleaner UI |
Why Firefox solves PDF issues: Firefox uses Mozilla’s own pdf.js renderer and the Gecko engine. When Chrome on Linux misreads a dynamic file stream, a missing MIME-type header, or a blob URL from a server-side PDF generator, Firefox reads the same data through a completely independent code path and usually renders it correctly.
Firefox vs Zen Browser
Both use Gecko and will solve Chromium-specific rendering bugs equally well. The choice depends on workflow preference:
| Factor | Firefox | Zen Browser |
|---|---|---|
| Stability | Rock-solid; backed by Mozilla’s full engineering team | Rapidly moving open-source project; occasionally minor UI bugs |
| DRM / streaming | Works out of the box (Netflix, Spotify, Prime) | May require manual configuration for some DRM content |
| UI / tab management | Traditional horizontal tabs; vertical tabs need an extension | Built-in vertical tabs, split view, workspaces — no extensions needed |
| Customization | Best-in-class with userChrome.css | Built-in Mods store for CSS tweaks |
| Package availability | Official Mozilla APT repo (native .deb) | AppImage or build from source — no apt repo yet |
For an apt-first system where stability and native packaging matter, Firefox from the Mozilla APT repo is the better fit.
Removing a Browser Completely
Browser installers add a repository, a GPG key, and user data directories. Simply running apt remove leaves all of those behind. Here is the full removal for each browser.
Remove Brave
Export bookmarks and saved passwords from
brave://bookmarksandbrave://settings/passwordsbefore removing.
# Remove the browser and its config files
sudo apt purge brave-browser
# Remove the Brave repository and signing key
sudo rm -f /etc/apt/sources.list.d/brave-browser-release.list
sudo rm -f /usr/share/keyrings/brave-browser-archive-keyring.gpg
# Delete user profile and cache
rm -rf ~/.config/BraveSoftware
rm -rf ~/.cache/BraveSoftware
# Clean up orphaned dependencies
sudo apt autoremove --purge
sudo apt update
Remove Chrome
sudo apt purge google-chrome-stable
sudo rm -f /etc/apt/sources.list.d/google-chrome.list
sudo rm -f /etc/apt/sources.list.d/google-chrome.sources
sudo rm -f /usr/share/keyrings/google-chrome.gpg
rm -rf ~/.config/google-chrome
rm -rf ~/.cache/google-chrome
sudo apt autoremove --purge
sudo apt update
Remove Firefox (Mozilla APT install)
sudo apt purge firefox
sudo rm -f /etc/apt/sources.list.d/mozilla.list
sudo rm -f /etc/apt/keyrings/packages.mozilla.org.asc
sudo rm -f /etc/apt/preferences.d/mozilla
rm -rf ~/.mozilla
rm -rf ~/.cache/mozilla
sudo apt autoremove --purge
sudo apt update
Fixing Common Repository Issues
Problem: Duplicate Chrome Repository
After installing Chrome, you may see errors like:
Err: https://dl.google.com/linux/chrome/deb stable InRelease
The following signatures couldn't be verified: NO_PUBKEY 32EE5355A6BC6E42
Cause: Chrome sometimes creates two repository files — an old .list and a new .sources — causing conflicts.
Diagnosis:
ls /etc/apt/sources.list.d/ | grep google
If you see both google-chrome.list AND google-chrome.sources, you have duplicates.
Fix:
# Check what's in each file
cat /etc/apt/sources.list.d/google-chrome.list
cat /etc/apt/sources.list.d/google-chrome.sources
# The .sources file is the modern, correct one — delete the old .list
sudo rm /etc/apt/sources.list.d/google-chrome.list
# Re-add the GPG key
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | \
sudo gpg --dearmor -o /usr/share/keyrings/google-chrome.gpg
# Verify the .sources file has the signed-by field
cat /etc/apt/sources.list.d/google-chrome.sources
# Should include: Signed-By: /usr/share/keyrings/google-chrome.gpg
# Clean update
sudo apt update
Problem: i386 Architecture Warning
N: Skipping acquire of configured file 'main/binary-i386/Packages' as repository doesn't support architecture 'i386'
Cause: The repository is configured without specifying amd64 architecture, so apt also tries to fetch 32-bit packages.
Fix: Ensure the .sources file includes Architectures: amd64:
sudo nano /etc/apt/sources.list.d/google-chrome.sources
It should look like:
Types: deb
URIs: https://dl.google.com/linux/chrome/deb/
Suites: stable
Components: main
Architectures: amd64
Signed-By: /usr/share/keyrings/google-chrome.gpg
Problem: Browsers Won’t Open
If Chrome or Edge refuse to open, try launching from terminal to see the error:
google-chrome
# or
microsoft-edge
Common fixes:
# Fix broken dependencies
sudo apt --fix-broken install
# If sandbox error (use only as a temporary diagnostic — this disables Chrome's primary security layer):
google-chrome --no-sandbox
Troubleshooting: Firefox Gear Icon and Missing History (Snap/APT Conflict)
The Symptoms
After a system update, Firefox appears with a gear icon (the generic fallback icon) on the taskbar instead of the Firefox logo. Closing that window and reopening Firefox from the application menu launches a browser with no history, no bookmarks, and no saved logins — as if Firefox was just installed.
Why This Happens
Ubuntu and Zorin OS ship a “transition package” for Firefox. When you run sudo apt install firefox, the system does not install a real .deb — it installs a stub that redirects to the Snap Store. The Snap version then runs inside an isolated container.
The problem with two coexisting versions:
| Version | Binary | Profile data location |
|---|---|---|
| Snap (Ubuntu default) | /snap/bin/firefox | ~/snap/firefox/common/.mozilla/firefox/ |
| Native APT (Mozilla PPA) | /usr/bin/firefox | ~/.mozilla/firefox/ |
If both versions exist at the same time, the application menu may launch whichever one it finds first — often the Snap version, which has no profile data and a different internal identity that the taskbar cannot match to a pinned icon.
The gear icon specifically is a WM_CLASS mismatch: the taskbar sees a window open and tries to find a pinned launcher that matches the app’s reported identity. The Snap version’s sandboxed identity often doesn’t match the .desktop file, so the taskbar falls back to a generic gear icon.
Step 1: Diagnose Which Versions Are Installed
whereis firefox
If you see both /usr/bin/firefox and /snap/bin/firefox in the output, both versions are present.
flatpak list | grep -i firefox
A Flatpak version is less common but adds a third possible source of conflict.
Check which binary the application menu is currently launching:
cat /usr/share/applications/firefox.desktop 2>/dev/null | grep Exec
cat ~/.local/share/applications/firefox.desktop 2>/dev/null | grep Exec
Step 2: Locate Your Profile Data
Your history and bookmarks are in the profile directory of whichever version you were previously using:
# APT/native version data
ls ~/.mozilla/firefox/
# Snap version data
ls ~/snap/firefox/common/.mozilla/firefox/
Whichever path exists and contains .default or .default-release folders is where your data is. If ~/.mozilla/firefox does not exist, your data is in the Snap location.
Step 3: Remove the Snap Version
Before removing, confirm the Mozilla APT pin is in place (this prevents the Snap from being reinstalled automatically on the next apt upgrade):
cat /etc/apt/preferences.d/mozilla
If the file is missing or empty, create it first:
echo '
Package: *
Pin: origin packages.mozilla.org
Pin-Priority: 1000
Package: firefox*
Pin: release o=Ubuntu
Pin-Priority: -1' | sudo tee /etc/apt/preferences.d/mozilla
Now remove the Snap version:
sudo snap remove --purge firefox
Step 4: Reinstall Clean from Mozilla APT
sudo apt purge firefox
sudo apt update
sudo apt install firefox
After reinstall, launch Firefox from the application menu. Your history and bookmarks should be restored because the native APT version reads from ~/.mozilla/firefox/, which was preserved throughout.
Step 5: Verify
apt policy firefox
Correct output:
firefox:
Installed: 150.0.2~build2
Candidate: 150.0.2~build2
Version table:
*** 150.0.2~build2 1000
1000 https://packages.mozilla.org/apt mozilla/main amd64 Packages
1:1snap1-0ubuntu5 -1
500 http://bd.archive.ubuntu.com/ubuntu noble/main amd64 Packages
Note: The exact Firefox version number (
150.0.2~build2above) will differ on your system. What matters is the structure of the output, not the specific version digits.
The three numbers to confirm:
*** 150.x.x~buildX— the installed version is from the Mozilla PPA1000— the Mozilla PPA has priority 1000 (preferred)-1— the Ubuntu/Snap stub is blocked from being installed
Pin the Firefox logo to your taskbar from the application menu after verifying the correct version is running.
Why the Gear Icon Disappears After This Fix
The native APT version of Firefox correctly declares its WM_CLASS as firefox, which matches the StartupWMClass=firefox field in the .desktop launcher file. The taskbar can link the open window back to the pinned icon. The Snap version runs in a container with a different reported identity, breaking that link.
Best Practice: Weekly Updates
Keep all browsers and system packages current:
sudo apt update && sudo apt upgrade -y
Run this once a week or set your distro’s Software & Updates → Updates tab to check automatically.
What Didn’t Work (and Why)
| Approach Tried | Why It Failed |
|---|---|
Having both .list and .sources repo files for Chrome | Creates duplicate entries — one uses the wrong URL and lacks GPG signing |
| Ignoring the i386 warning | Harmless but clutters output — better to fix it |
sudo sed to fix Chrome repo | Doesn’t work reliably since Chrome may have multiple file formats |
| Using a second Chromium-based browser to fix PDF rendering | Brave and Edge share Chrome’s Blink engine — the same server-side PDF generation bugs affect all three |
sudo apt install firefox expecting a native .deb | On Ubuntu-based systems this installs the Snap version, which starts slower and ignores system themes |
Verification
# Check for clean output (no warnings or errors)
sudo apt update
# Verify browser versions
google-chrome --version
microsoft-edge --version
brave-browser --version
# Verify Firefox is native .deb (not Snap)
which firefox
# Expected: /usr/bin/firefox
firefox --version
Complete Removal
# Chrome
sudo apt remove google-chrome-stable
sudo rm /etc/apt/sources.list.d/google-chrome.*
# Edge
sudo apt remove microsoft-edge-stable
sudo rm /etc/apt/sources.list.d/microsoft-edge.list
# Brave
sudo apt remove brave-browser
sudo rm /etc/apt/sources.list.d/brave-browser-release.list
Related Guides
- APT Repository Issues — Fix duplicate sources and GPG key errors
- Package Management Basics — Clean install, update, repository, and uninstall practices
- Software Recommendations — Full Windows-to-Linux app mapping
Discussion