
# Removing TemplateVM Packages
When removing any packages from a default TemplateVM, be sure to check what's being removed by `apt autoremove` or `dnf`. 
When removing certain packages, for instance Thunderbird, `apt` and `dnf` will attempt to remove many packages required by qubes for the template to function correctly under qubes.

As an example from a terminal in a TemplateVM:
```shell_session
$ sudo apt remove thunderbird
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  debugedit libjs-sphinxdoc libjs-underscore librpm3 librpmbuild3 librpmio3
  librpmsign3 libsqlite0 linux-headers-4.9.0-6-amd64
  linux-headers-4.9.0-6-common linux-image-4.9.0-6-amd64 python-backports-abc
  python-cffi-backend python-concurrent.futures python-croniter
  python-cryptography python-dateutil python-enum34 python-idna
  python-iniparse python-ipaddress python-jinja2 python-libxml2 python-lzma
  python-markupsafe python-msgpack python-openssl python-pyasn1 python-pycurl
  python-requests python-rpm python-singledispatch python-six python-sqlite
  python-sqlitecachec python-tornado python-tz python-urlgrabber
  python-urllib3 python-xpyb python-yaml qubes-core-agent-dom0-updates
  qubes-core-agent-passwordless-root qubes-gpg-split qubes-img-converter
  qubes-input-proxy-sender qubes-mgmt-salt-vm-connector qubes-pdf-converter
  qubes-usb-proxy rpm rpm-common rpm2cpio salt-common salt-ssh usbutils yum
  yum-utils
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
  icedove lightning qubes-thunderbird qubes-vm-recommended thunderbird
0 upgraded, 0 newly installed, 5 to remove and 0 not upgraded.
After this operation, 151 MB disk space will be freed.
Do you want to continue? [Y/n]
```

Note all of the qubes packages are tracked as dependencies that will no longer be required. `apt remove` will only remove the packages listed, which is ok. 
If, however you also run `apt autoremove` the other qubes packages necessary for TemplateVMs will be removed.

If you'd still like to remove one of these applications without breaking your TemplateVM you have a couple different options. 

## Removing Only Packages Not Needed for a Qubes TemplateVM

### Debian
 1. In your TemplateVM terminal run:
 ```shell_session $ apt remove package-name```
 Note the packages "no longer required"
 2. If the list of "no longer required" packages includes anything beginning with `qubes-` or `salt-` make a note to yourself to **never** run `$ sudo apt autoremove` on this TemplateVM

**Recommended but optional:** Use `apt-mark` to make `apt autoremove` safe again. 
```shell_session
$ sudo apt-mark manual package-name package-name
```

Replace package-names with actual `qubes-*` and `salt-*` packages you'd like to retain. 

For example, still in your TemplateVM terminal: 
```shell_session
$ sudo apt-mark manual qubes-core-agent-dom0-updates qubes-core-agent-passwordless-root qubes-gpg-split qubes-img-converter qubes-input-proxy-sender qubes-mgmt-salt-vm-connector qubes-pdf-converter salt-common salt-ssh qubes-usb-proxy
```

`$ apt autoremove` should now be safe to use.

### Fedora
In your TemplateVM terminal, run:
```shell_session
$ dnf remove --noautoremove package-name
```

 
## Recovering A TemplateVM which you've already removed needed qubes-* packages
If you've already removed packages, run `apt autoremove` and restarted your VM you've lost passwordless sudo access. 
You can login as root, open a terminal in dom0 and run: 
```shell_session
$ qvm-run -u root vmname xterm
```
This will open an xterm terminal in the TemplateVM named `vmname`

Once you're logged in as root, reinstall these packages & their dependencies: 

### Debian
```shell_session
$ sudo apt install qubes-core-agent-dom0-updates qubes-core-agent-passwordless-root qubes-gpg-split qubes-img-converter qubes-input-proxy-sender qubes-mgmt-salt-vm-connector qubes-pdf-converter salt-common salt-ssh
```

### Fedora
Similar to Debian for example (package names may vary):
```shell_session
$ sudo dnf install qubes-core-agent-dom0-updates qubes-core-agent-passwordless-root qubes-gpg-split qubes-img-converter qubes-input-proxy-sender qubes-mgmt-salt-vm-connector qubes-pdf-converter salt-common salt-ssh
```
