This is not a user guide. It's a Implementation Plan
- apt-proxy in the server, with properly configured ubuntu repositories. (not required, though)
XML-RPC SSL dialog (using unprivileged users in both sides):
- Nwu-agent "introduction"
- Client introduces itself to the server, sending his "uniq string" and password, both randomly generated DONE
- Client sends its basic system information Partially DONE See #61
- Client sends its apt repositories information DONE
- Client send installed packages information DONE
- Client send upgrade candidates packages DONE
- Nwu-agent "hello, again" (started in the client from the cron):
- The nwu-agent must be as minimal as possible, and not load apt_pkg data unless needed. See #33
- Clients authenticates the server SSL ceritificate (SECURITY-RELATED. Pending See #35)
- Server authenticates the machine uniq and password using an HMAC hash. DONE
- Client checks if it needs to send its installed packages and versions list and push only the diff of that. DONE
- Compress XML-RPC dialog payload. See #1
- Client checks for pending tasks, like "install foo", or "update" or "upgrade" DONE
- APT repositories setup:
- Server keeps the list of repositories used in every client. DONE
- in the console, admin must be able to see that. DONE
- Server sends a "apt-get update" task execution request. DONE
- Upgrade packages
- Server sends a "apt upgrade" task execution request. DONE
- Client runs "apt-get upgrade" and feedback problems to the server DONE
- Conflicts handling
- Server sends a "apt-get install" task, with the name of the packages as arguments. It must also inform if the client can remove conflicted packages, report back conflicts or ignore. See #62
- Client checks for conflicts in the to be installed packages list against the current packages. Depending on the server's command, it removes required packages, do nothing or feedback conflicts. See #62
Client packages installation method
As root (called by nwu-maint, which is executed by cron), client runs:
export LANGUAGE=C; DEBIAN_FRONTEND=noninteractive apt-get install " + detail
Relevant suggestions
<infinity> The first cut should really just handle simple package installation, sources.list.d/ setup, and remote package listings would be nice.