PLUGIN — installing and running plugins
Raised while a plugin is installed — from a directory, a git source or the catalogue — updated or removed, and by the checks an installed plugin contributes to the doctor. An install that fails part-way is put back: the plugin’s files and container go, and the change record says what was written and reversed.
| Code | Severity | Exit | What it means | What to do |
|---|---|---|---|---|
PLUGIN-1 | error | 1 | A check a plugin contributed to the doctor did not hold. The meaning is the one the plugin declared with its first remedy; the message names the check, the plugin, and each fault found. | Follow the remedies the plugin declared, in order. Where it declared none, the message says to ask the plugin's author. |
PLUGIN-2 | error | 1 | What was named is not a plugin lemonfiber can read. Nothing was installed or written. | Point at the plugin's directory, or at the plugin.toml inside it. |
PLUGIN-3 | error | 1 | The plugin declares things lemonfiber will not install. The manifest is refused whole — nothing was written — and the message lists every violation at once. | Read what each one says, and take it up with whoever published the plugin. |
PLUGIN-4 | error | 1 | The record of what is installed could not be read, so lemonfiber will not say that nothing is installed. The message names the file. | Restore the file from a backup, or move it aside if nothing is installed. |
PLUGIN-5 | error | 1 | The plugin is already installed. Installing over it would be an update, and an install is not one. Nothing was changed; the message names the version installed. | Update it with lemonfiber plugin update on the new source, or remove it first. |
PLUGIN-6 | error | 1 | There is nowhere to install the plugin to: no stack directory has been set up. | Run lemonfiber setup first, then install the plugin. |
PLUGIN-7 | error | 1 | A file the install needed could not be written. The install stopped where it was, and what it had written is on the change record. | Check the permissions on the stack directory, then install it again. lemonfiber history shows what was written. |
PLUGIN-8 | error | 1 | The plugin held every proof and could not be recorded as installed, so the install was put back. | Check the permissions on the configuration directory, then install it again. |
PLUGIN-9 | error | 1 | The plugin's service would not start, so nothing about it could be proved, and the install was put back. | Check that the stack is set up and the container engine is running, then install it again. |
PLUGIN-10 | error | 1 | There is no installed plugin by that name, so nothing was removed. The message lists what is installed. | See what is on this machine with lemonfiber plugin installed, and remove it by that id. |
PLUGIN-11 | error | 1 | The plugin is not installed, so there is nothing to update. Nothing was changed. | Install it instead, with lemonfiber plugin install on the same source. |
PLUGIN-12 | error | 1 | The installed version would not stop, so it was not updated. It is still installed, and nothing else changed. | Check the container engine is running, then try the update again. |
PLUGIN-13 | error | 1 | The plugin's service would answer on a hostname another plugin already answers on. The proxy will not start with two sites at one address, because that would bring down every route it serves. | Give the plugin's service another hostname in its manifest, or remove the other plugin first. |
PLUGIN-14 | error | 1 | The plugin is already installed from another source, and this is a second one for the same name. Two sources for one name are two plugins as far as anybody can tell, and which of them this machine runs is yours to choose. Nothing was written; the message names both sources. | To run the new source in its place, run lemonfiber plugin update on it. To keep the one installed, nothing needs doing. |
PLUGIN-15 | error | 1 | Fetching a plugin from a git source is switched off on this machine, so the source was not asked. Nothing was fetched or installed. | Install it from a directory instead, or allow it with lemonfiber config set LEMONFIBER_REACH_PLUGIN_SOURCE on. |
PLUGIN-16 | error | 1 | The git source could not be fetched: it did not answer, or would not hand over the revision asked for. Nothing was installed, and the message carries what went wrong. | Check the address, and that this machine can reach it, then install it again. |
PLUGIN-17 | error | 1 | The git source holds no branch, tag or commit by the name given. Nothing was fetched or installed. | Name a branch, a tag or a whole commit after the last "@", or leave it off for what the source serves by default. |
PLUGIN-18 | error | 1 | The plugin was named for the catalogue to look up, and asking the catalogue is switched off on this machine. Nothing was fetched or installed. | Install it from a git source or a directory you name instead, or allow it with lemonfiber config set LEMONFIBER_REACH_CATALOGUE on. |
PLUGIN-19 | error | 1 | The catalogue's index, or its signature, could not be fetched. Nothing was installed, and what is installed already is unaffected; installing from a git source or a directory does not ask the catalogue. | Check this machine can reach github.com and install it again, or install it from its git source. |
PLUGIN-20 | error | 1 | The catalogue's index is not signed by the key this build carries: it has no signature, one that does not verify, or none this build has a key to check. Nothing was resolved through it, because an index nobody can show the catalogue signed is no evidence that anybody reviewed anything. | Install it from its git source, where it is installed as unreviewed, or install a lemonfiber that carries the catalogue's key. |
PLUGIN-21 | error | 1 | The catalogue's index is signed and this build cannot read it. Nothing was resolved through it, and nothing was installed. | Update lemonfiber, whose newer releases read newer indexes, or install it from its git source. |
PLUGIN-22 | error | 1 | The catalogue holds no plugin by that name. Nothing was fetched or installed. | Check the name, or write ./<name> to install the directory of that name. |
PLUGIN-23 | error | 1 | What the catalogue's origin holds at the commit it named is not what the catalogue reviewed: the manifest there is not the one whose digest it signed. Nothing was installed. | Install it from its git source if you mean to run it unreviewed, and tell the catalogue's maintainers. |
PLUGIN-24 | error | 1 | The plugin's service would be named as another installed plugin's service already is, once case and "-" or "_" are set aside. lemonfiber writes a plugin's container under its service's name and keeps what the service holds in settings named after it, so the two would be one container sharing one credential. Nothing was written; the message names both services. | Remove the other plugin first, or install a version of this one whose service is named otherwise. |
PLUGIN-25 | error | 1 | That agreement was given for a different reading of the plugin: since it was read, the plugin, the stack or the record of what is installed changed. Agreeing to it now would be agreeing to something nobody saw, so nothing was changed; the message names what moved. | Read it again, and answer the name it prints. |
PLUGIN-26 | error | 1 | A value a recipe would send to another host, or the egress guard's shape a service would take, was not approved as itself, or an approval names something the reading does not list. Each is agreed to on its own, apart from the plugin, so nothing was changed. | Approve each one the reading lists, by name, with --approve, and nothing else. |
PLUGIN-27 | error | 1 | The source the update names holds a different plugin from the one it was asked to update. An update puts a new version of the installed plugin in its place, so nothing was changed. | Name a source that holds the plugin being updated, or install the other one on its own. |
PLUGIN-28 | error | 1 | The plugin's service would take a name, a port or a label something on this machine already holds: a service of the stack or of your own overlay, another plugin's port, or a site the proxy already serves. Nothing was written; the message names each clash. | Rename or move what holds them, or install a version of the plugin that declares others. |
PLUGIN-29 | error | 1 | The catalogue's index verifies and is older than one this machine has already verified. A release the catalogue has replaced is still signed, and what it reviewed may since have been withdrawn, so nothing was resolved through it and nothing was installed. | Try again later, when the catalogue serves its newest release, or install it from its git source. |
PLUGIN-30 | error | 1 | This machine cannot tell whether the catalogue's index is its newest: the record of the newest index it verified cannot be read or written. Without it, a release the catalogue has replaced would verify as though it were current, so nothing was resolved through it and nothing was installed. | Check catalogue.json in the configuration directory, or install it from its git source. |
PLUGIN-31 | error | 1 | The git source is named over a transport other than https, so nothing was asked of it and nothing was installed. A source fetched over anything else can be read or rewritten on its way here. | Name the same repository by its https address. |
PLUGIN-32 | error | 1 | The git source's host is, or stands for, an address on this machine or on a network of its own — loopback, private, link-local or unspecified. A plugin is fetched only from somewhere every machine could reach, so nothing was fetched and nothing was installed. | Install it from a directory on this machine, or from a public https address. |
PLUGIN-33 | error | 1 | The plugin's recipe substitutes a value into a header's name, which is a fixed identifier of the protocol and is written out. The manifest is refused whole — nothing was installed or written — and the message lists every other violation beside it. | Read what each one says, and take it up with whoever published the plugin. |
PLUGIN-34 | error | 1 | A recipe of the plugin asks the operator for a value that was not given, or a value was given that no recipe of it asks for. Nothing was installed and nothing was written, and the message names each input. | Give each input the plugin's recipes ask for, by name, and nothing else. |
PLUGIN-35 | error | 1 | A recipe's call names a host that is, or stands for, an address not out on the internet, so it was not sent. The install or update was put back, and the message names the steps that had run before it. | Read what the message says, and take it up with whoever published the plugin. |
PLUGIN-36 | error | 1 | A step of a recipe failed: nothing answered, the answer was not the one the recipe expects, a capture found nothing, or the answer was larger than any a recipe reads. The install or update was put back, and the message names the steps that had run before it. | Check the service the recipe calls is running, then try again. If it keeps failing, take it up with whoever published the plugin. |
PLUGIN-37 | error | 1 | A recipe's call path is not a plain absolute path. The manifest is refused whole — nothing was installed or written — and the message lists every other violation beside it. | Read what each one says, and take it up with whoever published the plugin. |
PLUGIN-38 | error | 1 | A recipe's call would have carried a value somewhere it may not go: not where the plugin's pairs say, not back to the service a credential belongs to, or outside without the operator's approval. It was not sent, and the install or update was put back. | Read what the message says, and take it up with whoever published the plugin. |
PLUGIN-39 | error | 1 | The plugin is not installed, so nothing was asked and nothing was cleared. The message lists what is installed. | See what is on this machine with lemonfiber plugin installed, and prove it by that id. |
PLUGIN-40 | error | 1 | The plugin declares a service that moves one of the stack's own services in place, and only a plugin this build embeds as first-party may do that. Nothing was written. | Install the plugin without that service's replaces, or use the first-party plugin this build names for that part. |
PLUGIN-41 | error | 1 | A proof an installed plugin declares ran the image's own program in a container of its own, and what it came to is not what the proof declares. The message names the proof, the plugin and each fault. | Prove the plugin again with lemonfiber plugin prove, and take what it says up with whoever published the plugin. |
PLUGIN-42 | warning | 1 | This release runs a part of the stack as a plugin, and this machine still runs it as the stack's own service. Moving it in place keeps its container name, its configuration, its data and its credentials; until then it keeps running as it is. | Read the move with lemonfiber plugin install and the part's name, and answer the name it prints. |
PLUGIN-43 | error | 1 | A proof an installed plugin declares asked one of its services a question, and the answer is not what the proof declares. The message names the proof, the plugin and each fault. | Prove the plugin again with lemonfiber plugin prove, and take what it says up with whoever published the plugin. |
PLUGIN-44 | error | 1 | There is no installed plugin by that name, or it declares no recipe by that name that runs on demand, so nothing was run. The message lists what there is. | See what is installed with lemonfiber plugin installed, and each plugin's demand recipes on its reading, and run one by those names. |
PLUGIN-45 | error | 1 | A demand recipe is run from the manifest kept beside the install record when the plugin was installed, and that manifest is missing or is not the one the record names, so nothing was run. | Update the plugin from its source with lemonfiber plugin update, which keeps its manifest again, then run the recipe. |
PLUGIN-46 | error | 1 | A third-party plugin is granted another service's credential only for a capability it fills, one credential for each, and this secret names none with for. Nothing was written. | Take it up with whoever published the plugin: each secret of another service names the capability of the plugin's own it is for. |
PLUGIN-47 | error | 1 | The plugin holds no grant of that credential, so nothing was revoked. The message names the grants it holds. | See every grant on lemonfiber credentials, and revoke one by the plugin and the credential it names. |
What each severity and each exit means is on every error by code, beside every other family.