How To

How to Update ParrotOS (Rolling Release Guide)

Plain apt upgrade is the wrong command on ParrotOS. It refuses to upgrade any package whose new version needs other packages added or removed, and on a rolling release that is most of them, so the system drifts into a half-updated state. ParrotOS layers its own rolling echo suite on a Debian 13 stable base and ships a wrapper, parrot-upgrade, that does the update correctly: refresh the indexes, repair any interrupted state, then run a full upgrade.

Original content from computingforgeeks.com - post 169733

Run on ParrotOS 7.3 (Security Edition) in July 2026.

Step 1: Use parrot-upgrade, not apt upgrade

ParrotOS is a rolling release, so there is no point release to jump to. You keep one install current indefinitely. The maintained path is the parrot-upgrade wrapper, which runs this sequence in order:

apt update
dpkg --configure -a
apt --fix-broken --fix-missing install
apt -y --fix-broken --fix-missing full-upgrade
apt -y full-upgrade
flatpak update --assumeyes --noninteractive

The two things plain apt upgrade never does are the full-upgrade (which allows packages to be added or removed to satisfy new dependencies) and the Flatpak refresh. Both matter on a rolling base.

Step 2: Run the update

One command does the whole job:

sudo parrot-upgrade

On the test system, 19 packages were pending after a fresh install. The full-upgrade pass reports the exact count, the download size, and any space reclaimed:

Summary:
  Upgrading: 19, Installing: 0, Removing: 0, Not Upgrading: 0
  Download size: 21.5 MB
  Freed space: 1,196 kB

The packages come from the echo-backports and echo-security components, for example the ATK accessibility stack at 2.60.4-1~bpo13+1. When the wrapper finishes, a second full-upgrade pass confirms there is nothing left:

Summary:
  Upgrading: 0, Installing: 0, Removing: 0, Not Upgrading: 0

That clean second pass is the signal the upgrade finished without leaving anything half-applied.

Step 3: Know which repositories you are tracking

ParrotOS pulls from three components, all on the echo suite that names the 7.x line. Understanding them explains why full-upgrade is mandatory: echo moves continuously, echo-security carries the urgent fixes, and echo-backports brings newer userspace onto the stable base.

ParrotOS 7.3 echo rolling release apt sources, system up to date

The capture above shows the three echo components in place with nothing left pending, which is the state you are aiming for after every run.

Step 4: The manual path if you skip the wrapper

If you prefer to drive apt yourself, the only rule that matters is to use full-upgrade, never upgrade:

sudo apt update
sudo apt full-upgrade

Flatpak is a separate package system that apt does not touch, so refresh it on its own when you go manual:

flatpak update

Apt and Flatpak version their packages independently, so a system can be fully apt-current and still run an outdated Flatpak app until this runs.

Step 5: Reclaim disk space

A rolling release accumulates orphaned dependencies and a large package cache over months. Two commands clear both:

sudo apt autoremove --purge
sudo apt clean

autoremove --purge drops packages nothing depends on any more and deletes their config; clean empties the downloaded .deb cache under /var/cache/apt/archives.

Step 6: Automate the security updates

ParrotOS does not install unattended-upgrades by default, so security fixes wait for you to run the upgrade. On a machine you do not babysit, install it and turn it on:

sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

Answer Yes to the prompt. There is a Parrot-specific catch here that most guides miss: the config the package ships watches only Debian’s security origin, so as installed it ignores Parrot’s own echo-security stream. Check the allowed origins for yourself:

grep -A5 'Origins-Pattern' /etc/apt/apt.conf.d/50unattended-upgrades

The default block lists only origin=Debian lines. Parrot publishes its security fixes under origin=Parrot, archive=parrot-security, which none of those patterns match. Edit the file to add it:

sudo vim /etc/apt/apt.conf.d/50unattended-upgrades

Add the Parrot security origin inside the Unattended-Upgrade::Origins-Pattern block, on its own line next to the Debian entries:

"origin=Parrot,archive=parrot-security";

A dry run confirms the change took:

sudo unattended-upgrade --dry-run -d 2>&1 | grep "Allowed origins"

The Parrot security suite is now in the allowed-origins list, ahead of the Debian entries:

Allowed origins are: origin=Parrot,archive=parrot-security, origin=Debian,codename=echo,label=Debian, ...

Now the daily timer applies Parrot’s security patches on its own. Treat it as a safety net for urgent fixes, not a replacement for the periodic full parrot-upgrade, which is still where the rolling base actually moves forward.

Step 7: Reboot when the kernel changes

Most updates apply live, but a new kernel or core library does not take effect until you reboot. Check whether one is needed:

[ -f /var/run/reboot-required ] && echo "reboot needed" || echo "no reboot needed"

That run upgraded 19 packages without touching the kernel, which stayed at 7.0.9+parrot7-amd64, so no reboot was required. When a kernel update does land, reboot before you trust the system to be running the patched build.

What to watch after an update

A rolling release rewards a quick check after each upgrade rather than a blind reboot. Two things tell you the update landed cleanly. First, confirm you are not deliberately holding any package back, since a held package silently sits out every future upgrade until you unhold it:

apt-mark showhold

The output should be empty unless you held a package on purpose. Then confirm the services you rely on came back, and that the kernel matches what is installed on disk. If the install itself is new, the step-by-step ParrotOS install guide covers the baseline this maintenance routine keeps current, and the same tooling you will be updating is documented in the Nmap scanning guide and the pentest lab walkthrough.

Keep reading

UFW Firewall Commands with Examples on Ubuntu 24.04 / 22.04 Security UFW Firewall Commands with Examples on Ubuntu 24.04 / 22.04 Setup WireGuard VPN on Ubuntu 24.04 / Debian 13 / Rocky Linux 10 Debian Setup WireGuard VPN on Ubuntu 24.04 / Debian 13 / Rocky Linux 10 Install Kali Linux 2026.1 Step by Step [Full Guide] Security Install Kali Linux 2026.1 Step by Step [Full Guide] Things to Do After Installing ParrotOS Security Things to Do After Installing ParrotOS Getting Started with Penetration Testing on ParrotOS Security Getting Started with Penetration Testing on ParrotOS How To Secure Proxmox VE Server With Let’s Encrypt SSL Proxmox How To Secure Proxmox VE Server With Let’s Encrypt SSL

Leave a Comment

Press ESC to close