Installing Opera on Linux Mint 22 takes two commands before the install itself: one for Opera’s signing key and one for the source line. The prerequisite step most guides open with, pulling in lsb-release, apt-transport-https and software-properties-common just to get add-apt-repository, is redundant because no command here uses add-apt-repository and apt pulls in apt-transport-https on its own. The bigger surprise is what removal leaves behind: a daily cron job that puts Opera’s keys back after you purge the browser.
Below you’ll install Opera on Linux Mint from Opera’s own APT repository, see what the package adds to your system and weigh the Flathub build. The last section removes all of it, including the pieces apt purge misses. The repository, install, launch and removal commands were run on Linux Mint 22.3 Cinnamon with Opera 138.0.6044.24 in October 2026; the Flatpak install was not.
Add the Opera APT repository
Mint does not ship Opera, so the browser comes from Opera’s repository or nowhere. Before we added anything, apt-cache policy opera-stable printed nothing at all on a fresh Mint 22.3 install, which means none of Mint’s or Ubuntu’s sources carry the package. That also rules out a stale Opera build hiding in the default repositories, so there is nothing to remove first. Confirm it on your own machine.
apt-cache policy opera-stable
Empty output is the expected result. Now import Opera’s signing key into a keyring file and point the source line at it with signed-by. Don’t read too much into that scoping, though: the package installs its own copies of Opera’s keys in /etc/apt/trusted.gpg.d during the install, and apt trusts keys there for every source on the system. Pipe the key through gpg --dearmor so apt gets the binary format it expects.
wget -qO- https://deb.opera.com/archive.key | gpg --dearmor | sudo dd of=/usr/share/keyrings/opera-browser.gpg
Check the dd summary to see that the key landed. Ours wrote 1790 bytes. If you see 0 bytes, the download failed, and every later step will error out on the signature check, so fix your network before going further.
1790 bytes (1.8 kB, 1.7 KiB) copied, 1.74912 s, 1.0 kB/s
Next, write the source line. The file name is up to you, because Opera’s install script checks sources.list and every .list and .sources file for deb.opera.com/opera-stable before it adds anything. When it finds your entry, it adds no repository of its own, so you end up with exactly one source.
echo "deb [signed-by=/usr/share/keyrings/opera-browser.gpg] https://deb.opera.com/opera-stable/ stable non-free" | sudo dd of=/etc/apt/sources.list.d/opera-archive.list
Refresh the package index so apt reads the new source.
sudo apt-get update
Among the usual Mint and Ubuntu lines you should see two from deb.opera.com, the release file and the non-free amd64 package list. If either is missing or shows a NO_PUBKEY error, the key file is empty or the signed-by path has a typo, so compare both paths character by character.
Get:8 https://deb.opera.com/opera-stable stable InRelease [3,175 B]
Get:11 https://deb.opera.com/opera-stable stable/non-free amd64 Packages [1,320 B]
Run apt-cache policy opera-stable again and it now reports a candidate version, which is your sign the repository works and the install will pull from it. Ours showed the same version the browser reported after the install, so the index was current. If it still prints nothing, the update step did not read the new file, so check the path in /etc/apt/sources.list.d.
Install Opera on Linux Mint 22
The browser package is opera-stable, and it installs like any other APT package once the repository is in place. Its only pre-dependency is apt-transport-https, which apt resolves by itself, so there is nothing to install beforehand.
sudo apt-get install -y opera-stable
In an interactive terminal the install stops on a debconf question asking whether Opera should add its repository so the browser updates with the rest of the system, and -y does not skip it. Either answer works here, as Opera’s repository manual describes, because your source line already exists. Our lab run was noninteractive and recorded the default, yes. The install fetched 143 MB, used 389 MB of disk, finished in 56 seconds and added two new packages: opera-stable and chromium-codecs-ffmpeg-extra, a recommended codecs package covered further down.
Confirm the browser is on the path and check which version you got.
opera --version
You should get the bare version number, which should match the candidate apt showed you. A “command not found” here means the install did not finish, so scroll back through the apt output for the error.
138.0.6044.24
Our lab capture below shows the candidate after the repository was added, then the install, the version and the debconf answer from our lab machine:

Ubuntu uses the same repository and package name, so if you also run Ubuntu desktops, the Opera install on Ubuntu follows this exact path. Fedora and RHEL use an RPM repository instead, covered in the Opera guide for RHEL and Fedora.
Check what the package added
The package does more than install the browser. It records your debconf answer, installs extra signing keys and adds a daily cron job that maintains them, and you’ll need to know about all three when you remove it. Start with the debconf answer.
sudo debconf-show opera-stable
A value of true means you let the package manage a repository entry. That is what our noninteractive install recorded.
opera-stable/add-deb-source: true
List the Opera files outside the package’s own directories. We ran this right after the install:
ls -l /etc/cron.daily/ /etc/apt/trusted.gpg.d/ /usr/share/keyrings/ | grep -i opera
Five files show up: four from the package, plus opera-browser.gpg, which is the one you created:
-rwxr-xr-x 1 root root 7038 Oct 21 07:22 opera-browser
-rw-r--r-- 1 root root 2302 Oct 21 07:22 opera.archive.key.2023.gpg
-rw-r--r-- 1 root root 1790 Oct 21 07:22 opera.archive.key.2025.gpg
-rw-r--r-- 1 root root 4092 Oct 21 07:22 opera-archive-keyring.gpg
-rw-r--r-- 1 root root 1790 Oct 21 07:21 opera-browser.gpg
The opera-browser script in /etc/cron.daily is not owned by any package, since dpkg -S reports no path found matching pattern for it, so dpkg never removes it. Meanwhile /etc/apt/sources.list.d held only our opera-archive.list, which confirms the install added no second repository. Updates through Mint’s Update Manager depend on that opera-archive.list line plus your own opera-browser.gpg, because signed-by pins the source to that key; the package’s trusted.gpg.d keys play no part in verifying it. If apt later reports EXPKEYSIG or NO_PUBKEY for deb.opera.com, re-run the wget key command from the first section, since the current key expires on 2027-05-19 according to Opera’s manual.
Launch Opera and handle the first run
Open Opera from the Mint menu or type opera in a terminal. Our lab started it with --no-first-run, so we did not see any onboarding screens a normal first launch may show. The window we got is busier than most browsers, and it helps to know what each piece is:
- a Speed Dial page with a Google search box
- a sidebar with Messenger, WhatsApp and Spotify shortcuts
- an AI button at the top right of the toolbar
- a bar asking you to help improve Opera with usage data
Our launch on Mint showed all four, as in the capture below.

That bar is the one first-run choice worth making on purpose, because it decides whether feature usage data goes back to Opera. Click “No, thanks” if you don’t want that. The sidebar messengers are web shortcuts that need your own account before they show anything, so they cost nothing if you ignore them. Below is Opera loading a real page on the Cinnamon desktop in our lab.

Opera is Chromium-based. If you’d rather have that engine without the sidebar and the promos, Vivaldi on Linux Mint gives you far more layout control. Google Chrome installs from a vendor repository in much the same way as Opera, which our Chrome on Linux Mint guide walks through.
ERROR: Unable to read partner speeddials file
Started from a terminal, Opera prints console lines while it starts, and the last three in our log carried an ERROR tag. None of them affected the browser, because 36 Opera processes were running after 20 seconds and the page loaded normally. These are the lines.
[11155:11186:1021/070343.260772:ERROR:opera/opera_components/partner_bookmarks/partner_bookmarks_utils.cc:267] Unable to read partner speeddials file.
[11155:11155:1021/070344.397269:ERROR:components/dbus/xdg/request.cc:173] Request ended (non-user cancelled).
[11155:11155:1021/070345.207885:ERROR:CONSOLE:0] "Uncaught (in promise) Error: No tab with id: 1370639189.", source: chrome://startpage/ (0)
The first line means Opera looked for a file of partner Speed Dial presets and did not find one, so it logged the miss and carried on. The D-Bus line is a desktop portal request that ended without user action, and the start page line is a script error inside Opera’s own UI. Ignore all three unless the window fails to open. If it does, the cause is somewhere else, and the full console output will usually show it.
Know what the codecs package does on Mint
The second package apt installed, chromium-codecs-ffmpeg-extra, is a Recommends of opera-stable, not a hard dependency, and on Mint 22 it is an empty transitional package. Its own package record says so, and reading it takes one command.
apt-cache show chromium-codecs-ffmpeg-extra | grep -E "^(Version|Depends|Description)" | head -3
There is no Depends line at all. You get a version with snap in it and a description that hands the job over to the chromium-ffmpeg snap.
Version: 2:1snap1-0ubuntu2
Description-en: Transitional package - chromium-codecs-ffmpeg-extra -> chromium-ffmpeg snap
Description-md5: d6537fb6daa5fc5f862760ce4ab9d4ff
That handover can’t happen on Mint, because Mint does not allow APT to install snapd. The policy lives in a preferences file in /etc/apt/preferences.d, and you can read it yourself.
cat /etc/apt/preferences.d/nosnap.pref | head -5
Its header comment states the purpose plainly, and the first stanza targets snapd.
# To prevent repository packages from triggering the installation of Snap,
# this file forbids snapd from being installed by APT.
# For more information: https://linuxmint-user-guide.readthedocs.io/en/latest/snap.html
Package: snapd
So the package Opera recommends is a 10.2 kB stub on Mint that points at a snap your system won’t install, and the Linux Mint snap policy explains why Mint ships that block. It does no harm, so we left it alone. Because it is only a recommendation, sudo apt-get install --no-install-recommends opera-stable should skip it, but we did not run that variant. We also did not test video playback, so this page makes no claim either way about H.264 or other proprietary codecs in Opera on Mint.
Install Opera from Flathub instead
Mint ships Flatpak with Flathub already configured, and Flathub carries Opera as com.opera.Opera (plus com.opera.opera-gx for the gaming build). We checked its size without installing it, since size and update path are what decide between the two.
flatpak remote-info flathub com.opera.Opera
Flathub’s build is a bigger download than the APT package and pulls in its own runtime on top, which is the usual Flatpak cost on a machine that has no other apps on that runtime.
Ref: app/com.opera.Opera/x86_64/stable
Download: 187.7 MB
Installed: 394.3 MB
Runtime: org.freedesktop.Platform/x86_64/25.08
Side by side, the two installs compare like this on the numbers we measured.
| Item | Opera APT repo | Flathub |
|---|---|---|
| Download | 143 MB | 187.7 MB (plus runtime if missing) |
| Disk used | 389 MB | 394.3 MB |
| Updates through | Update Manager, with the system | Flatpak updates |
| Publisher | Opera | Community wrapper, marked Not verified on Flathub |
| Tested in our lab | Installed and removed | Size check only |
We’d stay with the APT repository: it comes straight from Opera, it’s smaller, and it updates with everything else on the box. The Flathub listing is a community package that repackages Opera’s build, not one Opera publishes itself, which is the main reason we wouldn’t make it the default. It still makes sense if you already run your desktop apps as Flatpaks and accept that trade. For the format trade-offs in general, see our Snap vs Flatpak vs AppImage comparison. If you go that way, install with flatpak install flathub com.opera.Opera, which we didn’t run in this lab.
Remove Opera and its repository cleanly
A plain purge removes the browser and the keys the package installed, but it leaves the daily cron job behind, and that job puts Opera’s keys back the next time cron runs it. It also leaves your source line, your own keyring, your profile and the codecs stub. Start with the purge anyway, because it removes the 389 MB package cleanly.
sudo apt-get purge -y opera-stable
apt freed the same 389 MB the install used and purged the package’s own configuration files.
After this operation, 389 MB disk space will be freed.
Removing opera-stable (138.0.6044.24) ...
Purging configuration files for opera-stable (138.0.6044.24) ...
Then we checked what was still on disk, and everything below survived the purge:
/etc/cron.daily/opera-browser, the 7038-byte cron script/etc/apt/sources.list.d/opera-archive.list, the repository line/usr/share/keyrings/opera-browser.gpg, the key you imported~/.config/operaand~/.cache/opera, your profile and cachechromium-codecs-ffmpeg-extra, still installed
The cron script is the one that matters. We ran it once by hand, the way cron runs it every day, and it exited 0 and recreated opera.archive.key.2023.gpg, opera.archive.key.2025.gpg and opera-archive-keyring.gpg. Those keys sit in /etc/apt/trusted.gpg.d and /usr/share/keyrings, and apt trusts the trusted.gpg.d ones for every repository, so a machine you thought was free of Opera keeps trusting its signing keys indefinitely. The repository line is a separate problem: as long as opera-archive.list exists, apt keeps contacting deb.opera.com on every update.
Your profile directory holds the bookmarks, saved passwords and history, so copy ~/.config/opera somewhere safe first if you plan to come back to Opera. Then delete the cron script, every Opera key and the possible source files in one command. The opera-stable.list and opera-stable.sources names are where the package writes its own entry when it doesn’t find yours (the second on deb822 systems), and rm -f skips files that don’t exist:
sudo rm -f /etc/cron.daily/opera-browser /etc/apt/trusted.gpg.d/opera.archive.key.*.gpg /usr/share/keyrings/opera-archive-keyring.gpg /usr/share/keyrings/opera-browser.gpg /etc/apt/sources.list.d/opera-archive.list /etc/apt/sources.list.d/opera-stable.list /etc/apt/sources.list.d/opera-stable.sources
Next, let apt remove the codecs stub. Nothing needs it once Opera is gone, so autoremove treats it as an orphan.
sudo apt-get autoremove --purge
On our machine it removed only that one package and freed 10.2 kB. Read the list before you confirm, because autoremove also catches anything else that became orphaned on your system:
After this operation, 10.2 kB disk space will be freed.
Removing chromium-codecs-ffmpeg-extra (2:1snap1-0ubuntu2) ...
Delete the profile and cache as your normal user, without sudo, since they live in your home directory.
rm -rf ~/.config/opera ~/.cache/opera
Finally, prove nothing Opera-related is left in the four places the package and the cron job touch.
ls /etc/cron.daily/ /etc/apt/trusted.gpg.d/ /usr/share/keyrings/ /etc/apt/sources.list.d/ | grep -ci opera
Our machine printed 0. Any higher count means a file is left in one of those directories, so drop the c from grep -ci to see its name and delete it. Skip the cron script and the keys come back within a day, which is the step most removal guides miss. To install Opera again later, start from the repository step at the top, and the same two commands bring it back.