mesh/check failed: unit: clipmenu/cmd/clipmenu-tools.TestTheLauncherWaitsQuietlyWhileAnotherClipmenudHoldsTheLock: manifest_test.go:199: the launcher …
mesh/merge-gate head 098c6d3ec70f merged into trunk 2f05e70734cd — pass: builds pacman → ace, g14, novox, shanks; no bus step; every machine composes with …
mesh/repo-check head 098c6d3ec70f merged into trunk 2f05e70734cd — pass: THE CHANGE ALTERS ITS OWN CHECK (merge-check.sh): main's version judged it; the ch…
mesh/delivery delivered
pacman's state directory said place ".", which resolves to /var/lib/pacman: the
package manager's database directory. The node-engine used it as found and
reported it unhealthy on every machine, and wrote keeper.json into it. It is now
the mesh's directory for the module (place "mesh", /var/lib/mesh/pacman), as
docker's is; keeper.json, the keeper's bus secret and the root helper's socket
follow through ${dir:state}.
checks/owned rule 5 refuses a directory that is, lies in or holds a /var/lib
directory a system package owns (checks/owned/system, read from shanks through
pacman_owns and tmpfiles.d), and any resource inside one. systemd and postgres
collide today and are listed in checks/owned/system-known under issue 1873; that
list only shrinks.
258 lines
5.9 KiB
JSON
258 lines
5.9 KiB
JSON
{
|
|
"module": "pacman",
|
|
"version": "1",
|
|
"capabilities": [
|
|
"package-manager",
|
|
"service-manager"
|
|
],
|
|
"claims": [
|
|
{
|
|
"name": "node-package-manager",
|
|
"scope": "node"
|
|
}
|
|
],
|
|
"reads": [
|
|
"mesh-controller.declared-packages"
|
|
],
|
|
"uses": [
|
|
"operator-channel"
|
|
],
|
|
"config": {
|
|
"upgrade-order": {
|
|
"type": "list",
|
|
"description": "The nodes in the order they upgrade, each by its name: the first opens each week's round on Saturday at 04:00 local time, and each node upgrades after the one before it passed its after-upgrade check (novox/hq ADR 0508 §5). Empty: no round starts, and every node's health says why. Falls back to the mesh-level key of the same name.",
|
|
"trusted": true,
|
|
"predefined": "upgrade-order",
|
|
"default": []
|
|
},
|
|
"record-days": {
|
|
"type": "number",
|
|
"description": "How many days a package record taken before an upgrade is kept on the bus before it is deleted (novox/hq ADR 0508 §2); a rollback can return only to a record still kept.",
|
|
"minimum": 1,
|
|
"trusted": false,
|
|
"default": 180
|
|
},
|
|
"round-start-minutes": {
|
|
"type": "number",
|
|
"description": "How many minutes a node whose turn in the round came may take to start its upgrade before the round is said to stand still, in that node's and the waiting nodes' health (novox/hq ADR 0508 §6).",
|
|
"minimum": 1,
|
|
"trusted": false,
|
|
"default": 120
|
|
}
|
|
},
|
|
"own-secrets": {
|
|
"broker-keeper": {
|
|
"path": "${dir:state}/broker-keeper.secret",
|
|
"owner": "pacman-keeper"
|
|
}
|
|
},
|
|
"state": [
|
|
"installed",
|
|
"updates",
|
|
"runs",
|
|
"records",
|
|
"rounds",
|
|
"asks"
|
|
],
|
|
"emits": [
|
|
"package.changed",
|
|
"upgrade.recorded",
|
|
"upgrade.kernel-held",
|
|
"upgrade.started",
|
|
"upgrade.finished",
|
|
"upgrade.failed",
|
|
"upgrade.checked",
|
|
"rollback.started",
|
|
"rollback.finished"
|
|
],
|
|
"tools": [
|
|
"pacman_search",
|
|
"pacman_info",
|
|
"pacman_installed",
|
|
"pacman_packages",
|
|
"pacman_owns",
|
|
"pacman_files",
|
|
"pacman_updates",
|
|
"pacman_upgrade",
|
|
"pacman_upgrade_health",
|
|
"pacman_upgrades",
|
|
"pacman_rollback",
|
|
"pacman_round",
|
|
"pacman_orphans",
|
|
"pacman_remove_orphans",
|
|
"pacman_cache",
|
|
"pacman_history",
|
|
"pacman_mirrors",
|
|
"pacman_foreign",
|
|
"pacman_news",
|
|
"pacman_config"
|
|
],
|
|
"resources": [
|
|
{
|
|
"id": "package",
|
|
"type": "package",
|
|
"package": "pacman"
|
|
},
|
|
{
|
|
"id": "config",
|
|
"type": "file",
|
|
"path": "/etc/pacman.conf",
|
|
"mode": "0644",
|
|
"template": "files/pacman.conf"
|
|
},
|
|
{
|
|
"id": "contrib",
|
|
"type": "package",
|
|
"package": "pacman-contrib"
|
|
},
|
|
{
|
|
"id": "reflector",
|
|
"type": "package",
|
|
"package": "reflector"
|
|
},
|
|
{
|
|
"id": "mirrors",
|
|
"type": "file",
|
|
"path": "/etc/xdg/reflector/reflector.conf",
|
|
"mode": "0644",
|
|
"template": "files/reflector.conf"
|
|
},
|
|
{
|
|
"id": "mirror-refresh",
|
|
"type": "service",
|
|
"unit": "reflector.timer",
|
|
"state": "running",
|
|
"boot": "enabled",
|
|
"health": {
|
|
"kind": "unit"
|
|
}
|
|
},
|
|
{
|
|
"id": "cache-cleaning",
|
|
"type": "service",
|
|
"unit": "paccache.timer",
|
|
"state": "running",
|
|
"boot": "enabled",
|
|
"health": {
|
|
"kind": "unit"
|
|
}
|
|
},
|
|
{
|
|
"id": "keeper-account",
|
|
"type": "user",
|
|
"name": "pacman-keeper",
|
|
"shell": "/usr/bin/nologin"
|
|
},
|
|
{
|
|
"id": "state",
|
|
"type": "directory",
|
|
"mode": "0711",
|
|
"place": "mesh",
|
|
"unknown": "program"
|
|
},
|
|
{
|
|
"id": "keeper-config",
|
|
"type": "file",
|
|
"path": "${dir:state}/keeper.json",
|
|
"mode": "0644",
|
|
"takes-config": [
|
|
"upgrade-order",
|
|
"record-days",
|
|
"round-start-minutes"
|
|
],
|
|
"merge": "json",
|
|
"template": "files/keeper.json",
|
|
"trusted": true
|
|
},
|
|
{
|
|
"id": "root-helper",
|
|
"type": "process",
|
|
"name": "pacman-root",
|
|
"artifact": "tools",
|
|
"run": [
|
|
"./pacman-tools",
|
|
"root"
|
|
],
|
|
"env": {
|
|
"PACMAN_ROOT_SOCKET": "${dir:state}/root/helper.sock",
|
|
"PACMAN_ROOT_PEER": "pacman-keeper"
|
|
},
|
|
"health": {
|
|
"kind": "unit"
|
|
}
|
|
},
|
|
{
|
|
"id": "keeper",
|
|
"type": "process",
|
|
"name": "pacman-keeper",
|
|
"artifact": "tools",
|
|
"run": [
|
|
"./pacman-tools",
|
|
"keeper"
|
|
],
|
|
"user": "pacman-keeper",
|
|
"env": {
|
|
"PACMAN_KEEPER_BROKER": "${dir:state}/broker-keeper.secret",
|
|
"PACMAN_KEEPER_CONFIG": "${dir:state}/keeper.json",
|
|
"PACMAN_ROOT_SOCKET": "${dir:state}/root/helper.sock"
|
|
},
|
|
"restart-on": [
|
|
"keeper-config"
|
|
],
|
|
"bus": {
|
|
"state": [
|
|
"installed",
|
|
"updates",
|
|
"runs",
|
|
"records",
|
|
"rounds",
|
|
"asks"
|
|
],
|
|
"emits": [
|
|
"package.changed",
|
|
"upgrade.recorded",
|
|
"upgrade.kernel-held",
|
|
"upgrade.started",
|
|
"upgrade.finished",
|
|
"upgrade.failed",
|
|
"upgrade.checked",
|
|
"rollback.started",
|
|
"rollback.finished"
|
|
],
|
|
"asks": true
|
|
},
|
|
"health": {
|
|
"kind": "tool",
|
|
"tool": "pacman_upgrade_health",
|
|
"interval": "60s",
|
|
"timeout": "20s",
|
|
"looks": 2,
|
|
"grace": "60s"
|
|
}
|
|
}
|
|
],
|
|
"build": {
|
|
"artifacts": [
|
|
{
|
|
"name": "tools",
|
|
"kind": "bundle",
|
|
"language": "go",
|
|
"system": "arch",
|
|
"from": "cmd/pacman-tools",
|
|
"binary": "pacman-tools",
|
|
"loads": [
|
|
"pacman-tools"
|
|
],
|
|
"env": {
|
|
"PACMAN_KEEPER_CONFIG": "${dir:state}/keeper.json"
|
|
}
|
|
},
|
|
{
|
|
"name": "files",
|
|
"kind": "archive",
|
|
"from": "files"
|
|
}
|
|
]
|
|
}
|
|
}
|