# WHERE - Universal System File and Package Mapper A command-line tool that provides comprehensive observability into your Linux system's package installations and file ownership. Built in Rust for performance and reliability. ## Features - **Universal Package Manager Support** - Works with DNF, APT, Flatpak, Snap, and more - **File Ownership Tracking** - Instantly identify which package owns any file - **Package Tree Visualization** - See all files installed by a package in tree format - **Cross-Distribution Compatibility** - Single tool that works across Linux distributions - **High Performance** - Memory-mapped binary format for fast queries ## Installation ```bash git clone cd where cargo build --release ``` ## Usage ### Show Package File Tree Display all files installed by a specific package in a hierarchical tree structure: ```bash # Show files installed by bash package cargo run -- tree --package bash # Show trees for first 5 packages (demo mode) cargo run -- tree ``` ### Package Information Get detailed information about a specific package: ```bash # Show package details and file tree cargo run -- package bash ``` ### File Ownership Find out which package owns a specific file: ```bash # Check who owns /usr/bin/bash cargo run -- file /usr/bin/bash ``` ### List All Packages Display all installed packages: ```bash # List all packages cargo run -- packages ``` ### Find Files Search for files within packages: ```bash # Find all files in bash package cargo run -- find --package bash ``` ## Example Output ### Package Tree ``` bash 5.2.15-6.fc41 ├── usr/ │ ├── bin/ │ │ └── bash │ └── share/ │ ├── doc/ │ │ └── bash/ │ │ ├── CHANGES │ │ ├── README │ │ └── NEWS │ └── man/ │ └── man1/ │ └── bash.1.gz └── etc/ └── skel/ └── .bashrc ``` ### File Ownership ``` /usr/bin/bash is owned by package: bash ``` ## Architecture The tool is designed with a modular architecture supporting multiple package managers: - **Package Manager Abstraction** - Common interface for all package managers - **Binary Database Format** - High-performance storage for file metadata - **CLI Interface** - Clean command-line interface built with Clap - **Tree Visualization** - Hierarchical display of package contents ## Supported Package Managers - ✅ **DNF/RPM** (Fedora, RHEL, CentOS) - 🚧 **APT** (Debian, Ubuntu) - Coming Soon - 🚧 **Flatpak** - Coming Soon - 🚧 **Snap** - Coming Soon - 🚧 **Pacman** (Arch Linux) - Coming Soon ## Development Philosophy This tool is part of the **IntentOS** project, focused on creating systems where every component has clear provenance and purpose. The core principle is "know where everything is" - eliminating the entropy and "shrapnel" that accumulates in traditional Linux installations. ## Contributing Built with Rust 2021 edition. Key dependencies: - `clap` - Command line argument parsing - `memmap2` - Memory-mapped file access - `chrono` - Date/time handling ## License [Add your license here] ## Roadmap - [ ] Complete support for all major package managers - [ ] Real-time filesystem monitoring - [ ] Binary database format for fast queries - [ ] GUI interface - [ ] Integration with IntentOS package manager - [ ] Package installation profiles - [ ] System entropy analysis tools --- *WHERE gives you complete visibility into your system's package installations - because you should know where everything comes from.*