influxdata/influxdb · error · PluginEnvironmentError

Package manager not available

Error message

Package manager not available: {0}

What it means

PluginEnvironmentError::PackageManagerNotFound is thrown by influxdb3's processing engine plugin environment manager when the system package manager (e.g. apt, dnf, brew) needed to provision a plugin's Python environment cannot be found. It carries the name/details of the manager that was probed.

Solutions

  1. Install the system package manager expected by the host platform (e.g. apt-get in Debian/Ubuntu images)
  2. Ensure the package manager binary is on the PATH of the influxdb3 process (check systemd Environment=)
  3. Use a base image that includes a package manager, or pre-install plugin dependencies in the image
  4. Pre-provision the plugin's virtual environment manually so no package manager call is needed

Example fix

# before (Dockerfile)
FROM gcr.io/distroless/cc
# after
FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y python3 python3-venv
Defensive patterns

Strategy: validation

Validate before calling

// shell: verify a package manager before enabling env management
for pm in apt-get dnf yum brew apk; do
  command -v "$pm" >/dev/null 2>&1 && echo "found: $pm" && exit 0
done
echo "no package manager found" >&2; exit 1

Try / catch

match env_manager.setup(plugin).await {
    Err(PluginEnvironmentError::PackageManagerNotFound(pm)) => {
        eprintln!("install {pm} or pre-provision the environment");
        Err(anyhow!("package manager {pm} missing"))
    }
    other => other,
}

Prevention

When it happens

Trigger: Triggering plugin environment setup (installing plugin dependencies) on a system where the expected package manager binary is absent from PATH, or on an unsupported OS/distribution.

Common situations: Running influxdb3 in a minimal/slim container (no apt/yum installed); running as non-root in a distroless image; deploying on Alpine where apt/dnf are absent; PATH stripped in the systemd unit.

Related errors


AI-assisted analysis of influxdata/influxdb@06200ef96b (2026-09-19). Data as JSON: /api/errors/b16b2709d5bd4950. Report an issue: GitHub.

Appendix: source

Thrown at influxdb3_processing_engine/src/environment.rs:15

use crate::environment::PluginEnvironmentError::PluginEnvironmentDisabled;

use crate::virtualenv::{VenvError, find_python, initialize_venv};
use observability_deps::tracing::debug;
use pyo3::prelude::PyAnyMethods;
use pyo3::{PyResult, Python};
use std::fmt::Debug;
use std::path::{Path, PathBuf};
use std::process::Command;
use std::sync::{Arc, OnceLock};
use thiserror::Error;

#[derive(Error, Debug)]
pub enum PluginEnvironmentError {
    #[error("Package manager not available: {0}")]
    PackageManagerNotFound(String),
    #[error("External call failed: {0}")]
    InstallationFailed(#[from] std::io::Error),
    #[error("Plugin environment management is disabled")]
    PluginEnvironmentDisabled,

    #[error("Virtual environment error: {0}")]
    VenvError(#[from] VenvError),

    #[error("Failed to list packages: {0}")]
    PackageListFailed(String),

    #[error(
        "Package installation has been disabled. Contact your administrator for more information."
    )]
    PackageInstallationDisabled,
}

View on GitHub (pinned to 06200ef96b)