Binary Installation Paths Research: Distribution Best Practices for Open Source #94

Closed
opened 2025-08-20 18:32:44 +02:00 by michael · 2 comments
Owner

Research Scope

Similar to Issue #71 config research, we need binary installation path standards across distributions.

Current Problem:

  • merkwerk Makefile uses /usr/local/bin/ for all systems
  • No research if this matches distribution expectations
  • Integration detection needs to know standard paths

Research Questions:

  1. OpenBSD: /usr/local/bin/ (packages) vs /usr/bin/ (base)?
  2. Debian: /usr/bin/ (apt packages) vs /usr/local/bin/ (manual)?
  3. Arch: /usr/bin/ (pacman) vs /usr/local/bin/ (AUR)?
  4. FreeBSD: /usr/local/bin/ (ports) consistent?

Detection Strategy Research:
What fallback order should integrations use?

  • Development: ./bin/merkwerk
  • Standard: /usr/local/bin/merkwerk OR /usr/bin/merkwerk?
  • PATH: command -v merkwerk

Deliverables:

  • Distribution binary path analysis
  • Detection order recommendation
  • Makefile PREFIX defaults per OS
  • Integration detection pattern

Priority: HIGH for Open Source adoption

## Research Scope Similar to Issue #71 config research, we need binary installation path standards across distributions. **Current Problem:** - merkwerk Makefile uses /usr/local/bin/ for all systems - No research if this matches distribution expectations - Integration detection needs to know standard paths **Research Questions:** 1. **OpenBSD**: /usr/local/bin/ (packages) vs /usr/bin/ (base)? 2. **Debian**: /usr/bin/ (apt packages) vs /usr/local/bin/ (manual)? 3. **Arch**: /usr/bin/ (pacman) vs /usr/local/bin/ (AUR)? 4. **FreeBSD**: /usr/local/bin/ (ports) consistent? **Detection Strategy Research:** What fallback order should integrations use? - Development: ./bin/merkwerk - Standard: /usr/local/bin/merkwerk OR /usr/bin/merkwerk? - PATH: command -v merkwerk **Deliverables:** - [ ] Distribution binary path analysis - [ ] Detection order recommendation - [ ] Makefile PREFIX defaults per OS - [ ] Integration detection pattern **Priority:** HIGH for Open Source adoption
michael added the
effort
medium
priority
high
type
research
labels 2025-08-20 18:32:44 +02:00
michael added this to the v0.1.2 - Gateway Basics milestone 2025-08-30 18:44:17 +02:00
Author
Owner

Library-Pfade Research (Ergaenzung zur Binary-Research)

Basierend auf Chat-Research fuer Lua/C-Projekte wie furt:

Standard Library-Installation nach Distribution:

Debian/Ubuntu:

# C Libraries
/usr/lib/x86_64-linux-gnu/        # System libs
/usr/local/lib/                   # Manual installs

# Lua Modules  
/usr/share/lua/5.1/               # Pure Lua modules
/usr/lib/x86_64-linux-gnu/lua/5.1/ # C modules (.so)

Arch Linux:

# C Libraries
/usr/lib/                         # System libs
/usr/local/lib/                   # Manual installs

# Lua Modules
/usr/share/lua/5.1/               # Pure Lua modules  
/usr/lib/lua/5.1/                 # C modules (.so)

OpenBSD:

# C Libraries
/usr/lib/                         # Base system
/usr/local/lib/                   # Packages

# Lua Modules
/usr/local/share/lua/5.1/         # Pure Lua modules
/usr/local/lib/lua/5.1/           # C modules (.so)

FreeBSD:

# C Libraries  
/usr/lib/                         # Base system
/usr/local/lib/                   # Ports

# Lua Modules
/usr/local/share/lua51/           # Pure Lua modules (Besonderheit!)
/usr/local/lib/lua/5.1/           # C modules (.so)

Erkenntnisse:

  • Binary: /usr/local/bin/ funktioniert ueberall (Issue #71 bestaetigt)
  • Libraries: /usr/local/lib/ Standard fuer alle
  • Lua-Module: /usr/local/share/lua/5.1/ (aber FreeBSD nutzt lua51/)
  • Detection-Order: Development → /usr/local → /usr → spezielle Pfade

Vorschlag:

Aus Issue #71 (config), #94 (binary/lib) und diesem Research ein Standard-Pfade-Dokument erstellen mit:

  • Distribution-Matrix
  • Detection-Patterns
  • Makefile-Templates
  • Runtime-Detection-Code

Status: Research komplett fuer Binary + Library-Pfade

## Library-Pfade Research (Ergaenzung zur Binary-Research) **Basierend auf Chat-Research fuer Lua/C-Projekte wie furt:** ### Standard Library-Installation nach Distribution: #### **Debian/Ubuntu:** ```bash # C Libraries /usr/lib/x86_64-linux-gnu/ # System libs /usr/local/lib/ # Manual installs # Lua Modules /usr/share/lua/5.1/ # Pure Lua modules /usr/lib/x86_64-linux-gnu/lua/5.1/ # C modules (.so) ``` #### **Arch Linux:** ```bash # C Libraries /usr/lib/ # System libs /usr/local/lib/ # Manual installs # Lua Modules /usr/share/lua/5.1/ # Pure Lua modules /usr/lib/lua/5.1/ # C modules (.so) ``` #### **OpenBSD:** ```bash # C Libraries /usr/lib/ # Base system /usr/local/lib/ # Packages # Lua Modules /usr/local/share/lua/5.1/ # Pure Lua modules /usr/local/lib/lua/5.1/ # C modules (.so) ``` #### **FreeBSD:** ```bash # C Libraries /usr/lib/ # Base system /usr/local/lib/ # Ports # Lua Modules /usr/local/share/lua51/ # Pure Lua modules (Besonderheit!) /usr/local/lib/lua/5.1/ # C modules (.so) ``` ### **Erkenntnisse:** - **Binary:** `/usr/local/bin/` funktioniert ueberall (Issue #71 bestaetigt) - **Libraries:** `/usr/local/lib/` Standard fuer alle - **Lua-Module:** `/usr/local/share/lua/5.1/` (aber FreeBSD nutzt `lua51/`) - **Detection-Order:** Development → /usr/local → /usr → spezielle Pfade ### **Vorschlag:** Aus Issue #71 (config), #94 (binary/lib) und diesem Research ein **Standard-Pfade-Dokument** erstellen mit: - Distribution-Matrix - Detection-Patterns - Makefile-Templates - Runtime-Detection-Code **Status:** Research komplett fuer Binary + Library-Pfade
Author
Owner

Binary Installation Paths Research

Research aus vorherigen Chat-Sessions zu Distribution-Standards:

Standard Binary-Pfade nach Distribution:

Debian/Ubuntu (.deb packages):

/usr/bin/furt                    # APT-installierte Pakete
/usr/local/bin/furt             # Manuell installierte Software

Arch Linux (pacman/AUR):

/usr/bin/furt                    # pacman-Pakete
/usr/local/bin/furt             # AUR/manuell installierte Software

OpenBSD (ports/packages):

/usr/local/bin/furt             # Packages und Ports (Standard)
/usr/bin/                       # Nur fuer Base-System-Tools

FreeBSD (ports/pkg):

/usr/local/bin/furt             # Ports und Packages (Standard)
/usr/bin/                       # Nur fuer Base-System

RHEL/CentOS (RPM):

/usr/bin/furt                   # YUM/DNF-Pakete
/usr/local/bin/furt             # Manuell kompilierte Software

Erkenntnisse:

Sichere Wahl: /usr/local/bin/

  • Funktioniert auf ALLEN Systemen (Linux + BSD)
  • Standard fuer selbst-installierte Software
  • Keine Konflikte mit Paketmanagern
  • Immer im PATH (bei Standard-Shell-Setups)

Problematisch: /usr/bin/

  • Linux: Paketmanager-Territorium (apt, pacman, yum)
  • BSD: Reserved fuer Base-System
  • Konflikte: Mit Distribution-Packages

Detection-Order Empfehlung:

# 1. Development/Git-Checkout
./bin/furt

# 2. Standard-Installation  
/usr/local/bin/furt

# 3. System-Package-Fallback
/usr/bin/furt

# 4. PATH-Detection
command -v furt

Makefile-Strategie:

PREFIX ?= /usr/local
BINDIR = $(PREFIX)/bin

Status: /usr/local/bin/ ist der Distribution-unabhaengige Standard

## Binary Installation Paths Research **Research aus vorherigen Chat-Sessions zu Distribution-Standards:** ### Standard Binary-Pfade nach Distribution: #### **Debian/Ubuntu (.deb packages):** ```bash /usr/bin/furt # APT-installierte Pakete /usr/local/bin/furt # Manuell installierte Software ``` #### **Arch Linux (pacman/AUR):** ```bash /usr/bin/furt # pacman-Pakete /usr/local/bin/furt # AUR/manuell installierte Software ``` #### **OpenBSD (ports/packages):** ```bash /usr/local/bin/furt # Packages und Ports (Standard) /usr/bin/ # Nur fuer Base-System-Tools ``` #### **FreeBSD (ports/pkg):** ```bash /usr/local/bin/furt # Ports und Packages (Standard) /usr/bin/ # Nur fuer Base-System ``` #### **RHEL/CentOS (RPM):** ```bash /usr/bin/furt # YUM/DNF-Pakete /usr/local/bin/furt # Manuell kompilierte Software ``` ### **Erkenntnisse:** #### **Sichere Wahl: `/usr/local/bin/`** - **Funktioniert auf ALLEN Systemen** (Linux + BSD) - **Standard fuer selbst-installierte Software** - **Keine Konflikte** mit Paketmanagern - **Immer im PATH** (bei Standard-Shell-Setups) #### **Problematisch: `/usr/bin/`** - **Linux:** Paketmanager-Territorium (apt, pacman, yum) - **BSD:** Reserved fuer Base-System - **Konflikte:** Mit Distribution-Packages ### **Detection-Order Empfehlung:** ```bash # 1. Development/Git-Checkout ./bin/furt # 2. Standard-Installation /usr/local/bin/furt # 3. System-Package-Fallback /usr/bin/furt # 4. PATH-Detection command -v furt ``` ### **Makefile-Strategie:** ```makefile PREFIX ?= /usr/local BINDIR = $(PREFIX)/bin ``` **Status:** `/usr/local/bin/` ist der Distribution-unabhaengige Standard
michael 2025-08-30 20:15:54 +02:00
Sign in to join this conversation.
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: DAW/furt#94
No description provided.