deps-checker
Dependency checker for Kodachi OS Rust binaries - Validates system dependencies and generates installation scripts
File Information
| Property | Value |
|---|---|
| Binary Name | deps-checker |
| Version | 9.8.4 (build 320) |
| Build Date | Not disclosed |
| Rust Version | rustc 1.97.0 (2d8144b78 2026-07-07) |
| File Size | 2.8MB |
| Author | Warith Al Maawali |
| License | Proprietary |
| Category | Kodachi Binary |
| Description | Dependency checker for Kodachi OS Rust binaries - Validates system dependencies and generates installation scripts |
| Git Commit | unknown |
| Metadata Generated | 2026-08-10T13:22:51Z |
| Binary Timestamp | Unknown |
| JSON Data | View Raw JSON |
SHA256 Checksum
8491fb29255835ab4fd4022b0dc0ed88cf8a6a59e7451fc3a2e77d9dcd550a36
Features
| # | Feature |
|---|---|
| 1 | Multi-profile dependency checking (minimal/full) |
| 2 | Automatic missing package installation |
| 3 | Installation script generation for multiple shells |
| 4 | Software Bill of Materials (SBOM) generation |
| 5 | External dependency database support |
| 6 | Comprehensive JSON output for automation |
| 7 | Strict mode for CI/CD pipelines |
| 8 | Dry-run mode for safe previewing |
Security Features
| Feature | Description |
|---|---|
| Authentication | Secure package repository authentication |
| Encryption | TLS for all package downloads |
| Input Validation | All user inputs are validated and sanitized |
| Rate Limiting | Built-in rate limiting for package operations |
System Requirements
| Requirement | Value |
|---|---|
| OS | Linux (Debian-based, Kodachi OS) |
| Privileges | root/sudo required for package installation |
| Dependencies | apt-get, dpkg, curl |
Global Options
| Flag | Description |
|---|---|
-h, --help |
Print help information |
-v, --version |
Print version information |
-n, --info |
Display detailed information |
-e, --examples |
Show usage examples |
--json |
Output in JSON format |
--json-pretty |
Output in pretty-printed JSON format |
--json-human |
Output in human-friendly JSON format with colors |
--json-save |
Save JSON output to an auto-generated results file |
--json-export <FILE> |
Export JSON output to a specified file |
--verbose |
Enable verbose output |
--quiet |
Suppress non-essential output |
--no-color |
Disable colored output |
-p, --profile <NAME> |
Dependency profile (minimal/full, default: full) |
--shell <TYPE> |
Shell syntax for generated scripts |
-o, --output <FILE> |
Write output to a file |
--db <FILE> |
Use an external dependency database |
--strict |
Treat warnings as errors |
--dry-run |
Show what would happen without executing |
--execute |
Execute a generated installation script after confirmation |
--sbom |
Generate a CycloneDX JSON SBOM |
Commands
Dependency Checking
check
Check dependencies for a specific binary (read-only, no root needed)
Usage:
deps-checker check [OPTIONS] <BINARY>
Options:
<BINARY>: Kodachi binary whose dependency profile should be checked-p, --profile <NAME>: Dependency profile to use: minimal or full. Any other value is rejected--db <PATH>: Load an external dependency database (JSON) on top of the built-in one--strict: Exit 1 on warnings as well as on missing packages. Use this in CI--sbom: Emit a CycloneDX JSON Software Bill of Materials instead of the report-o, --output <FILE>: Write the report to a file. Relative paths only: the path is resolved inside the execution folder, and an absolute path or one containing '..' is rejected--json-save: With --json, also save the JSON to an auto-named file under results/--json-export <FILE>: With --json, save the JSON under the given relative filename (same containment rules as -o)
Examples:
deps-checker check dns-switch
deps-checker check dns-switch --profile minimal
deps-checker check dns-switch --json
deps-checker check dns-switch --strict
check-all
Check dependencies for all 30 known binaries (read-only, no root needed)
Usage:
deps-checker check-all [OPTIONS]
Options:
-p, --profile <NAME>: Dependency profile to use: minimal or full. Any other value is rejected--strict: Exit 1 on warnings as well as on missing packages. Use this in CI--sbom: Emit a CycloneDX JSON Software Bill of Materials instead of the report--db <PATH>: Load an external dependency database (JSON) on top of the built-in one-o, --output <FILE>: Write the report to a file. Relative paths only, resolved inside the execution folder--json-save: With --json, also save the JSON to an auto-named file under results/--json-export <FILE>: With --json, save the JSON under the given relative filename (same containment rules as -o)
Examples:
deps-checker check-all
deps-checker check-all --json
deps-checker check-all --sbom --json
deps-checker check-all --strict --quiet
Package Management
install-missing
Install the missing dependency packages with apt-get. Omit BINARY and it covers ALL 30 known binaries ('install-missing all' does the same). Debian-family systems only
Usage:
sudo deps-checker install-missing [BINARY|all] [OPTIONS]
Options:
[BINARY|all]: Optional Kodachi binary name, or 'all'. When omitted, all known binaries are covered--dry-run: Print the apt-get command that would run, install nothing. Always do this first when no BINARY is given-p, --profile <NAME>: Dependency profile to install for: minimal or full--db <PATH>: Load an external dependency database (JSON) on top of the built-in one
Examples:
sudo deps-checker install-missing --dry-run
sudo deps-checker install-missing dns-switch
sudo deps-checker install-missing all --dry-run
generate-script
Turn a JSON check result into an install script. It reads the JSON from STDIN, so it must be on the right-hand side of a pipe: with no pipe it waits for input forever
Usage:
deps-checker check-all --json | deps-checker generate-script [OPTIONS]
Options:
--shell <TYPE>: Shell syntax to emit: bash, zsh or fish--execute: Run the generated script instead of printing it. It calls apt-get, so it needs root and it changes the system. Combine with --dry-run to see the script without running it--dry-run: Mark the script as a dry run: with --execute it is printed instead of executed
Examples:
deps-checker check-all --json | deps-checker generate-script
deps-checker check-all --json | deps-checker generate-script --shell fish
deps-checker check-all --json | sudo deps-checker generate-script --execute
Information
list-binaries
List all known Kodachi binaries
Usage:
deps-checker list-binaries
Examples:
deps-checker list-binaries
deps-checker list-binaries --json
list-profiles
List the dependency profiles available for one binary. BINARY is required
Usage:
deps-checker list-profiles <BINARY>
Options:
<BINARY>: Kodachi binary whose available dependency profiles should be listed
Examples:
deps-checker list-profiles dns-switch
deps-checker list-profiles dns-switch --json
Operational Scenarios
Scenario-oriented workflows generated from the binary's built-in -e --json examples.
Scenario 1: BASIC COMMANDS
Find out what a binary needs and whether the system has it. Checking is read-only: do not run it with sudo, or the files it writes under results/ end up owned by root and the next non-root run fails on them.
Step 1: See which packages dns-switch needs and which are missing
deps-checker check dns-switch
Step 2: Check only the packages dns-switch cannot run without
deps-checker check dns-switch --profile minimal
Note
Only 'minimal' and 'full' exist. Any other profile name is rejected with 'Invalid profile'.
Step 3: Check every one of the 30 known binaries at once
deps-checker check-all
Step 4: Check everything and write the report to a file
deps-checker check-all --json -o report.json
Note
-o takes a RELATIVE path only. An absolute path, or one containing '..', is rejected: output is confined to the execution folder.
Step 5: See the names accepted by check and install-missing
deps-checker list-binaries
Note
A name outside this list is rejected, so start here if 'Invalid binary name' surprises you.
Scenario 2: JSON OUTPUT
Machine-readable JSON output options
Step 1: Compact JSON output
deps-checker check dns-switch --json
Step 2: Pretty-printed JSON output
deps-checker check dns-switch --json-pretty
Step 3: Human-friendly colored JSON output
deps-checker check dns-switch --json-human
Step 4: Save JSON output to auto-generated file
deps-checker check-all --json --json-save
Scenario 3: SCRIPT GENERATION
generate-script turns a JSON check result into an install script. It ALWAYS reads its input from stdin, so it only makes sense on the right-hand side of a pipe. Run it with no pipe and it sits there waiting for input that never comes.
Step 1: Write out a bash script that installs everything currently missing
deps-checker check-all --json | deps-checker generate-script
Step 2: Emit the script in fish syntax and save it for review
deps-checker check-all --json | deps-checker generate-script --shell fish > install-deps.fish
Note
--shell accepts bash (default), zsh and fish. Anything else is rejected.
Step 3: Produce the script in dry-run form, so that even running it would only print what it intends to install
deps-checker check-all --json | deps-checker generate-script --dry-run
Note
generate-script never installs anything on its own. Only --execute does that.
Step 4: Generate the install script and immediately run it
deps-checker check-all --json | sudo deps-checker generate-script --execute
Note
CHANGES THE SYSTEM. This runs apt-get as root and installs packages. Preview it first with the same pipeline minus --execute, and pass --execute --dry-run if you want it to print the script instead of running it.
Scenario 4: INFORMATION
List known binaries and available dependency profiles
Step 1: List all known Kodachi binaries
deps-checker list-binaries
Step 2: List all known Kodachi binaries as JSON
deps-checker list-binaries --json
Step 3: List available dependency profiles for a binary
deps-checker list-profiles dns-switch
Note
Requires a binary name argument
Step 4: List dependency profiles for a binary as JSON
deps-checker list-profiles dns-switch --json
Scenario 5: INSTALLING MISSING PACKAGES
install-missing is the only command here that changes the system. It runs apt-get, so it needs root and it only works on Debian-family distributions. Everything else in this tool is read-only.
Step 1: See exactly what a full install would do, before doing it
sudo deps-checker install-missing --dry-run
Note
With no BINARY, install-missing covers ALL 30 binaries, which is the widest thing this tool can do. Always dry-run this form first.
Step 2: Install only the packages that dns-leak is missing
sudo deps-checker install-missing dns-leak
Note
CHANGES THE SYSTEM: installs Debian packages as root.
Step 3: Same as install-missing with no binary name: 'all' is an accepted alias for every known binary
sudo deps-checker install-missing all --dry-run
Step 4: Install only what dns-switch strictly needs, skipping optional packages
sudo deps-checker install-missing dns-switch --profile minimal
Note
CHANGES THE SYSTEM. Drop --profile and you get the full set.
Scenario 6: CI AND AUTOMATION
Exit codes and machine-readable artifacts. deps-checker exits 1 when a required package is missing; add --strict and it also exits 1 on warnings, which is usually what a pipeline wants.
Step 1: Fail a build on missing packages AND on warnings
deps-checker check-all --strict --quiet
Note
Without --strict, warnings still exit 0. That difference is the whole point of the flag.
Step 2: Produce a CycloneDX Software Bill of Materials for every binary and keep it
deps-checker check-all --sbom --json --json-export sbom.json
Note
--json-export takes a relative filename only, resolved inside the execution folder (absolute paths and '..' are rejected). --json-save does the same with an auto-generated name under results/.
Step 3: Check against an external dependency database layered on top of the built-in one
deps-checker check dns-switch --db custom-deps.json --json
Step 4: Show how each package was resolved when a result looks wrong
DEPS_DEBUG=1 deps-checker check dns-switch
Environment Variables
| Variable | Description | Default | Values |
|---|---|---|---|
DEPS_DEBUG |
Print how each package was resolved (which candidate matched, which fell back) to stderr. Set it when a dependency is reported missing and you do not believe it | unset | set to any value to enable |
Exit Codes
| Code | Description |
|---|---|
| 0 | All required dependencies satisfied (warnings alone still exit 0 unless --strict is passed) |
| 1 | A required package is missing, a version conflict was found, a warning was found while --strict is set, or the command itself failed (bad binary name, bad profile, rejected output path, non-Debian system for install-missing) |