Updater is removing local packages

Uninstall "knot-libdnssec" {priority = 60}
Uninstall "knot-libzscanner" {priority = 60}
Uninstall "knot-libknot" {priority = 60}
Uninstall "knot-resolver" {priority = 60}
Uninstall "unbound" {priority = 60}
Uninstall "unbound-anchor" {priority = 60}
Uninstall "dnsmasq" {priority = 60}
Uninstall "tinyproxy" {priority = 60}

Install "dnsmasq-full" {priority = 60}
Install "ntpd" {priority = 60}

Oh, I see. Well, there are some packages that are considered critical by the updater and wonā€™t let you mess too much with them, so it is a bit harder to destroy the system. I was confused about the label ā€žremoving local packagesā€œ, I thought you wanted to install something directly from .ipk file.

But yes, youā€™re right, it might make some sense to have just one resolver and be able to choose which one it is. Iā€™ll hopefuly find some time to modify the server-provided configuration to allow this soon.

Alternatively, if you really wanted to mess with it, you can have a look at this file (https://gitlab.labs.nic.cz/turris/updater/blob/updater-ng/src/pkgupdate/configs/entry.lua) and create your own configuration from scratch. Then you can disable the updater in foris and run it yourself with the top-level configuration of your own. But then, there are of course no warranties about what will go wrong.

Hmm, why is it so complicated, and how can knot or unbound be considered critical software? This is something strictly optional, and I see no reason why the updater should be preventing these packages from being removed.

I donā€™t really want to create a new configuration from scratch, why would I? I just want to remove a few packages I never wanted to have to begin with.

Well I would say that DNS resolver is pretty critical.

Thereā€™s a DNS resolver built into libc which is enough for most tasks, given that knot-resolver canā€™t be critical piece of software.

A bit longer answer than one of my collegue.

It is so complicated, because it is a router and it needs to do attention-less upgrades. If you have a server and do apt-get upgrade, it can ask questions. We canā€™t. The updater needs to solve the problems it has with the rules and flags it has. Furthermore, we wanted to be on the safe side, so we forced the ā€žcriticalā€œ flag onto everything that is the very base TurrisOS system.

The stub resolver in libc is not enough, for several reasons. For one, it is a router. It is supposed to provide real resolution to such stub resolvers on the devices on your LAN. Omnia uses knot, you can alternatively switch to unbound. We donā€™t really support anything else, because, you know, thereā€™s only limited amount of manpower and we canā€™t just test everything.

As the router uses its own resolver as well, removing it would break the internet access both to other devices on your LAN and the router itself, further preventing it from downloading any packages in manual attempt to fix that.

Depending on your OS on computer, if you try to remove some important parts, like libc or kernel, youā€™ll be prevented from doing that or youā€™ll be at least given a very loud warning. We canā€™t opt for the warning, because the updater needs to work on its own if the repository changes. So it canā€™t really decide to get rid of some of these things because it collides with some other request.

Yes, I agree that, in some cases, we marked more than absolutely necessary as critical. We try to err on the safe side. As I said, Iā€™ll have a look at making it more flexible and allowing some more freedom. But I still think it is quite reasonable to mandate that DNS resolution must work both on the router and on LAN.

2 Likes

I supported quite a few routers with DNS forwarding and local DNS resolution, and Iā€™ve never had problems with the built-in resolver. In this configuration, I prefer dnsmasq for both DNS and DHCP as itā€™s an integrated solution which handles dynamic DNS updates, DHCP, RA+DHCPv6 and DNS forwarding without extra configuration. Apart from that, I already have dnsmasq configuration from a different device which just works until Omnia updater breaks it by removing dnsmasq-full and installing unbound and knot. Apart from that, there having a daemon which answers on port 53 really isnā€™t a requirement for a router, other machines on a local network can just use the routerā€™s upstream DNS.