diff --git a/customization/removing-templatevm-packages.md b/customization/removing-templatevm-packages.md new file mode 100644 index 00000000..ddb61f38 --- /dev/null +++ b/customization/removing-templatevm-packages.md @@ -0,0 +1,93 @@ +--- +layout: doc +title: Removing TemplateVM Packages +permalink: /doc/removing-templatevm-packages/ +--- + +# 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 +``` diff --git a/doc.md b/doc.md index 0520b378..19df5a5a 100644 --- a/doc.md +++ b/doc.md @@ -158,6 +158,7 @@ Customization Guides * [Language Localization](/doc/language-localization/) * [Dark Theme in Dom0 and DomU](/doc/dark-theme/) * [How to make any file in a TemplateBasedVM persistent using bind-dirs](/doc/bind-dirs/) + * [Safely Removing TemplateVM Packages (Example: Thunderbird)](/doc/removing-templatevm-packages/) Troubleshooting