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.

-->