Subiquity Manager
Manage Subiquity for
Ubuntu Desktop Installer
Usage: subiman <command> [arguments]
Global options:
-h, --help Print this usage information.
Available commands:
dry-run Dry-run Subiquity server
http Send HTTP request to Subiquity
status Subiquity submodule status
update Update Subiquity submodule
Run "subiman help <command>" for more information about a command.
Installation
$ dart pub global activate --source git https://github.com/jpnurmi/subiman.git
Resolving dependencies...
[...]
Building package executables...
Built subiman:subiman.
Installed executable subiman.
Warning: Pub installs executables into $HOME/.pub-cache/bin, which is not on your path.
You can fix that by adding this to your shell's config file (.bashrc, .bash_profile, etc.):
export PATH="$PATH":"$HOME/.pub-cache/bin"
Activated subiman 0.1.0 from Git repository "https://github.com/jpnurmi/subiman.git".
Notice the instructions above if you wish to have the subiman executable
conveniently available in PATH. Alternatively, you can run dart run subiman.
Getting started
Run subiman within any Flutter or Dart project that has a (transitive)
dependency on subiquity_client.
# pubspec.yaml
name: ubuntu_flavor_installer
dependencies:
ubuntu_desktop_installer:
git:
url: https://github.com/canonical/ubuntu-desktop-installer.git
path: packages/ubuntu_desktop_installer
ref: bdf041ab8184f2c82015abb2da48283dfc614fc6
Subiquity submodule
subiman info prints the location and status of the subiquity_client/subiquity
submodule. Typically, the submodule would be in ~/.pub-cache where Dart fetches
package dependencies.
Initial uninitialized status:
$ subiman info
<path/to>/subiquity_client/subiquity
-90a2bd6f7a754964f1f35028ebf97aa305b29de5 subiquity
subiman update initializes the subiquity_client/subiquity submodule:
$ subiman update
<path/to>/subiquity_client/subiquity
Submodule path 'subiquity': checked out '90a2bd6f7a754964f1f35028ebf97aa305b29de5'
Current up-to-date status:
$ subiman info
<path/to>/subiquity_client/subiquity
90a2bd6f7a754964f1f35028ebf97aa305b29de5 subiquity
Outdated status after updating the (transitive) subiquity_client dependency:
$ subiman info
<path/to>/subiquity_client/subiquity
+34b621ee6627f85b44317f415b0d78dab9553cc5 subiquity (21.12.2-98-g34b621ee)
* subiquity 90a2bd6f...34b621ee (3):
< Merge pull request #1173 from dbungert/os-prober-arch
< Merge pull request #1167 from dbungert/lp-1952603-nonet
< Merge pull request #1171 from ogayot/bump-curtin-version
$ subiman update
<path/to>/subiquity_client/subiquity
Submodule path 'subiquity': checked out '90a2bd6f7a754964f1f35028ebf97aa305b29de5'
Testing Subiquity
Sending requests
Status
$ subiman http /meta/status
{"state": "WAITING", "confirming_tty": "", "error": null, "cloud_init_ok": true, "interactive": true, "echo_syslog_id": "subiquity_echo.472110", "log_syslog_id": "subiquity_log.472110", "event_syslog_id": "subiquity_event.472110"}
Locale
$ subiman http /locale
"en_US.UTF-8"
$ subiman http -X POST /locale \"fi_FI.UTF-8\"
null
$ subiman http /locale
"fi_FI.UTF-8"
Timezone
$ subiman http /timezone
{"timezone": "Europe/Stockholm", "from_geoip": true}
$ subiman http -X POST /timezone?tz=\"Europe/Helsinki\"
null
$ subiman http /timezone
{"timezone": "Europe/Helsinki", "from_geoip": false}
Dry-running
Sometimes it may be useful for testing purposes to manually run the Subiquity
server in dry-run mode:
$ subiman dry-run --socket /path/to/subiquity.sock