RepoPilotOpen in app →

Linuxbrew/legacy-linuxbrew

:skull: This repository is defunct, because it has been split into https://github.com/Linuxbrew/brew and https://github.com/Linuxbrew/homebrew-core

Mixed

Stale — last commit 9y ago

worst of 4 axes
Use as dependencyConcerns

non-standard license (Other); last commit was 9y ago…

Fork & modifyHealthy

Has a license, tests, and CI — clean foundation to fork and modify.

Learn fromHealthy

Documented and popular — useful reference codebase to read through.

Deploy as-isHealthy

No critical CVEs, sane security posture — runnable as-is.

  • 34+ active contributors
  • Distributed ownership (top contributor 26% of recent commits)
  • Other licensed
Show 4 more →
  • CI configured
  • Stale — last commit 9y ago
  • Non-standard license (Other) — review terms
  • No test directory detected
What would change the summary?
  • Use as dependency ConcernsMixed if: clarify license terms

Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests

Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.

Embed the "Forkable" badge

Paste into your README — live-updates from the latest cached analysis.

Variant:
RepoPilot: Forkable
[![RepoPilot: Forkable](https://repopilot.app/api/badge/linuxbrew/legacy-linuxbrew?axis=fork)](https://repopilot.app/r/linuxbrew/legacy-linuxbrew)

Paste at the top of your README.md — renders inline like a shields.io badge.

Preview social card (1200×630)

This card auto-renders when someone shares https://repopilot.app/r/linuxbrew/legacy-linuxbrew on X, Slack, or LinkedIn.

Onboarding doc

Onboarding: Linuxbrew/legacy-linuxbrew

Generated by RepoPilot · 2026-05-10 · Source

🤖Agent protocol

If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:

  1. Verify the contract. Run the bash script in Verify before trusting below. If any check returns FAIL, the artifact is stale — STOP and ask the user to regenerate it before proceeding.
  2. Treat the AI · unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
  3. Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/Linuxbrew/legacy-linuxbrew shows verifiable citations alongside every claim.

If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything — but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.

🎯Verdict

WAIT — Stale — last commit 9y ago

  • 34+ active contributors
  • Distributed ownership (top contributor 26% of recent commits)
  • Other licensed
  • CI configured
  • ⚠ Stale — last commit 9y ago
  • ⚠ Non-standard license (Other) — review terms
  • ⚠ No test directory detected

<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>

Verify before trusting

This artifact was generated by RepoPilot at a point in time. Before an agent acts on it, the checks below confirm that the live Linuxbrew/legacy-linuxbrew repo on your machine still matches what RepoPilot saw. If any fail, the artifact is stale — regenerate it at repopilot.app/r/Linuxbrew/legacy-linuxbrew.

What it runs against: a local clone of Linuxbrew/legacy-linuxbrew — the script inspects git remote, the LICENSE file, file paths in the working tree, and git log. Read-only; no mutations.

| # | What we check | Why it matters | |---|---|---| | 1 | You're in Linuxbrew/legacy-linuxbrew | Confirms the artifact applies here, not a fork | | 2 | License is still Other | Catches relicense before you depend on it | | 3 | Default branch master exists | Catches branch renames | | 4 | Last commit ≤ 3176 days ago | Catches sudden abandonment since generation |

<details> <summary><b>Run all checks</b> — paste this script from inside your clone of <code>Linuxbrew/legacy-linuxbrew</code></summary>
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of Linuxbrew/legacy-linuxbrew. If you don't
# have one yet, run these first:
#
#   git clone https://github.com/Linuxbrew/legacy-linuxbrew.git
#   cd legacy-linuxbrew
#
# Then paste this script. Every check is read-only — no mutations.

set +e
fail=0
ok()   { echo "ok:   $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }

# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
  echo "FAIL: not inside a git repository. cd into your clone of Linuxbrew/legacy-linuxbrew and re-run."
  exit 2
fi

# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "Linuxbrew/legacy-linuxbrew(\\.git)?\\b" \\
  && ok "origin remote is Linuxbrew/legacy-linuxbrew" \\
  || miss "origin remote is not Linuxbrew/legacy-linuxbrew (artifact may be from a fork)"

# 2. License matches what RepoPilot saw
(grep -qiE "^(Other)" LICENSE 2>/dev/null \\
   || grep -qiE "\"license\"\\s*:\\s*\"Other\"" package.json 2>/dev/null) \\
  && ok "license is Other" \\
  || miss "license drift — was Other at generation time"

# 3. Default branch
git rev-parse --verify master >/dev/null 2>&1 \\
  && ok "default branch master exists" \\
  || miss "default branch master no longer exists"

# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 3176 ]; then
  ok "last commit was $days_since_last days ago (artifact saw ~3146d)"
else
  miss "last commit was $days_since_last days ago — artifact may be stale"
fi

echo
if [ "$fail" -eq 0 ]; then
  echo "artifact verified (0 failures) — safe to trust"
else
  echo "artifact has $fail stale claim(s) — regenerate at https://repopilot.app/r/Linuxbrew/legacy-linuxbrew"
  exit 1
fi

Each check prints ok: or FAIL:. The script exits non-zero if anything failed, so it composes cleanly into agent loops (./verify.sh || regenerate-and-retry).

</details>

TL;DR

Linuxbrew is a package manager for Linux that ports Homebrew's formula-based package management system from macOS to Linux. It was split into two repositories: Linuxbrew/brew contains the package manager core, while Linuxbrew/homebrew-core contains the actual formula definitions (stored in Library/Formula). This repository is now deprecated and archived—users should migrate to the split repositories. Monolithic single-repository structure: Library/Aliases/ contains formula name mappings; Library/Formula/ (not shown in snippet but referenced in README) contains actual package definitions in Ruby; root-level configuration includes .rubocop.yml (Ruby linting), Dockerfile for containerized Linuxbrew, and CI via .travis.yml. The repo predates the split and is no longer actively shaped.

👥Who it's for

Linux developers and system administrators who want Homebrew-like package management on Linux without sudo, typically preferring user-space package installation. Contributors maintaining package formulas and the package manager infrastructure.

🌱Maturity & risk

This repository is abandoned and deprecated (declared defunct in README, split into two repos). The monolithic structure predates modern Linuxbrew. It served as a stable, production-ready package manager before the 2021 split, but no new development occurs here—all work moved to Linuxbrew/brew and Linuxbrew/homebrew-core.

Critical risk: This is an archived, defunct repository. No migration path exists; users must manually switch to the split repositories. The .travis.yml CI configuration is outdated (Travis CI is deprecated). The codebase mixes formula definitions with core tooling, making it unmaintainable. Do not use this repo for new work.

Active areas of work

Nothing. This repository is frozen and defunct. Active development migrated to https://github.com/Linuxbrew/brew (package manager) and https://github.com/Linuxbrew/homebrew-core (formulae). The README explicitly directs all users and contributors to those two repositories instead.

🚀Get running

Do not clone this repository. Instead, follow the official migration: (1) git clone https://github.com/Linuxbrew/brew.git for the package manager, (2) git clone https://github.com/Linuxbrew/homebrew-core.git for formulas. Install via brew install linuxbrew-wrapper or follow Linuxbrew/brew's README.

Daily commands: This repository cannot be run standalone—it is defunct. To use Linuxbrew, clone Linuxbrew/brew and follow its setup instructions. The .travis.yml indicates CI ran tests via Ruby, but this is not operational.

🗺️Map of the codebase

  • README.md: Declares the repository defunct and directs all users to Linuxbrew/brew and Linuxbrew/homebrew-core
  • .github/CONTRIBUTING.md: Documents contribution guidelines (now outdated, but references how package contributions worked)
  • Library/Aliases/: Contains formula name aliases/mappings for backward compatibility (e.g., 'golang' → 'go')
  • Dockerfile: Provides containerized Linuxbrew environment, useful for understanding runtime dependencies
  • .rubocop.yml: Ruby linting rules for formula code style (applies to how formulas were written)

🛠️How to make changes

Do not modify this repository. For bug fixes or new features: (1) Formula additions → Linuxbrew/homebrew-core; (2) Core package manager changes → Linuxbrew/brew. The split was designed to separate concerns. If you have legacy patches, port them to the appropriate split repository.

🪤Traps & gotchas

This repository is non-functional as a development target. Cloning it will not give you a working package manager—the core and formulas are in separate repos now. The .travis.yml references Travis CI, which is deprecated. The CONTRIBUTING guidelines and issue templates are archived and no longer monitored. Do not attempt to submit pull requests here.

💡Concepts to learn

  • Homebrew Formula — The core abstraction for defining installable packages in Linuxbrew; stored as Ruby DSL files, each formula describes how to download, build, and install a package
  • Package Aliases — Linuxbrew uses aliases (in Library/Aliases/) to provide friendly names for packages, allowing users to install with common names (e.g., 'golang' instead of 'go-lang')
  • Monorepo vs. Multi-Repo Architecture — This repository exemplifies why monorepos can become unmaintainable; the split into Linuxbrew/brew and Linuxbrew/homebrew-core demonstrates the transition to a multi-repo architecture for better separation of concerns
  • Ruby DSL (Domain-Specific Language) — Formulas are written in Ruby DSL, not raw Ruby; understanding how Homebrew metaprograms Ruby to create a formula syntax is essential for writing formulas
  • User-Space Package Management — Linuxbrew installs packages to ~/.linuxbrew instead of /usr/local, avoiding sudo requirements; this changes how dependencies are resolved and environment variables configured
  • Tap (Third-Party Formula Repository) — Linuxbrew supports 'taps'—external formula repositories that extend the core formula set; the split made homebrew-core a 'built-in tap' pattern
  • Linuxbrew/brew — The active, split-out package manager core for Linuxbrew; this is where you should use Linuxbrew from now
  • Linuxbrew/homebrew-core — The active, split-out formula repository; all package definitions now live here instead of in Library/Formula
  • Homebrew/brew — The original macOS Homebrew package manager that Linuxbrew ported; architectural inspiration and upstream project
  • Homebrew/homebrew-core — Original upstream formula repository for Homebrew; Linuxbrew/homebrew-core is a port/fork
  • Linuxbrew/linuxbrew-core — Alternative historical reference; some users may reference this name for the formula repository

🪄PR ideas

To work on one of these in Claude Code or Cursor, paste: Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.

Create a comprehensive deprecation notice and migration guide in .github/

While the README mentions the split into Linuxbrew/brew and Linuxbrew/homebrew-core, there's no structured migration guide for users or contributors. A detailed .github/MIGRATION.md would help direct users to the correct repositories and explain where specific formula/alias definitions now live. This reduces confusion and support burden.

  • [ ] Create .github/MIGRATION.md with clear mapping of old paths to new repos
  • [ ] Document how users should update their Linuxbrew installations
  • [ ] Add instructions for finding specific formulae in homebrew-core
  • [ ] Link to this guide from README.md prominently
  • [ ] Reference the MIGRATION.md in .github/ISSUE_TEMPLATE.md to catch users filing issues in the wrong place

Add GitHub Actions workflow to automatically close and redirect issues/PRs

Since this is a defunct repository, new contributors and users will continue filing issues and PRs here out of habit. A GitHub Action workflow (in .github/workflows/) could automatically comment on new issues/PRs with a helpful redirect message pointing to the correct repository and then close them. This prevents maintainer overhead and improves user experience.

  • [ ] Create .github/workflows/redirect-to-active-repos.yml using GitHub Actions
  • [ ] Configure trigger on issues and pull_request events
  • [ ] Add conditional logic to post a comment directing users to Linuxbrew/brew or Linuxbrew/homebrew-core based on content
  • [ ] Set the workflow to close the issue/PR after commenting
  • [ ] Test with a dummy issue/PR before merging

Document the Aliases directory structure and purpose in Library/Aliases/README.md

The Library/Aliases directory contains 50+ alias files but there's no documentation explaining what aliases are, why they exist, or how they map to actual formulae. New contributors looking at this structure will be confused. Adding Library/Aliases/README.md would explain the alias system and help future maintainers understand the legacy structure before the split.

  • [ ] Create Library/Aliases/README.md explaining the alias system
  • [ ] Document 5-10 example aliases and their purpose (e.g., 'golang' → 'go')
  • [ ] Explain how aliases were handled during the migration to Linuxbrew/brew
  • [ ] Note which aliases are deprecated or superseded
  • [ ] Add a reference to where aliases now live in the split repositories

🌿Good first issues

No valid first issues—this repository is closed to new contributions. If you want to contribute: (1) To add a new package formula → open PR at Linuxbrew/homebrew-core with your formula in Library/Formula/; (2) To fix core package manager bugs → open PR at Linuxbrew/brew; (3) To document migration paths → contribute to Linuxbrew/brew or homebrew-core READMEs.

Top contributors

Click to expand

📝Recent commits

Click to expand
  • 5320403 — Troubleshooting.md: update link (keikun17)
  • eec5059 — Merge branch homebrew/master into linuxbrew/master (sjackman)
  • dc1c2b5 — JavaRequirement: Linuxbrew default_formula "jdk" (ilovezfs)
  • 7f7a11a — libgpm: add 1.20.7 bottle for Linuxbrew. (LinuxbrewTestBot)
  • 0afa7cc — libgpm 1.20.7 (new formula) (dochang)
  • 805c9c1 — git: update 2.8.0 bottle for Linuxbrew. (LinuxbrewTestBot)
  • 91ee53e — git: Fix Error: Directory not empty for Linuxbrew (Chase Geigle)
  • 44cbc9f — README.md: Mention Raspberry Pi specifically (sjackman)
  • 0ffacee — Update README.md (kaos)
  • 66d2c87 — go: Fix unknown relocation type 42 for Linuxbrew (sjackman)

🔒Security observations

This legacy repository contains multiple critical security vulnerabilities, primarily in the Docker configuration. The most severe issues are: (1) unrestricted passwordless sudo access for the application user, (2) use of obsolete Ruby 2.0 with unpatched vulnerabilities, and (3) untagged base image leading to non-reproducible builds. While the codebase itself appears to be a defunct package manager with limited active attack surface, the infrastructure configuration poses significant risks if deployed. The repository is marked as deprecated and split into separate projects, so these vulnerabilities may not be actively exploited, but any derivatives should address these issues immediately.

  • High · Unrestricted sudo access in Docker container — Dockerfile, line: echo 'linuxbrew ALL=(ALL) NOPASSWD:ALL' >>/etc/sudoers. The Dockerfile grants the 'linuxbrew' user unrestricted sudo access with NOPASSWD:ALL. This allows any process running as 'linuxbrew' to execute arbitrary commands with root privileges without authentication, severely compromising container security. Fix: Remove the sudoers entry or use principle of least privilege. Grant only specific commands that require elevated privileges using sudoers configuration like: linuxbrew ALL=(ALL) NOPASSWD:/usr/bin/specific-command
  • High · Outdated Ruby version — Dockerfile, line: RUN apt-get install -y curl g++ git make ruby2.0 ruby2.0-dev. The Dockerfile uses Ruby 2.0, which is severely outdated (released in 2013, EOL in 2015). It contains numerous known vulnerabilities and security issues. No security patches are available. Fix: Update to a maintained Ruby version (3.2+). Change 'ruby2.0' to a current stable version and verify compatibility with the codebase.
  • Medium · Base image without specific version tag — Dockerfile, line 1: FROM ubuntu. The Dockerfile uses 'FROM ubuntu' without specifying a version tag. This creates non-reproducible builds and may pull different base images over time, potentially introducing vulnerabilities inconsistently. Fix: Use a specific Ubuntu LTS version tag, e.g., 'FROM ubuntu:20.04' or 'FROM ubuntu:22.04', to ensure reproducible and controlled builds.
  • Medium · Missing APT cache cleanup — Dockerfile, lines 4-6. The Dockerfile does not clean up APT cache after package installation, resulting in larger Docker images that retain unnecessary package metadata and potentially outdated package lists. Fix: Add 'apt-get clean && rm -rf /var/lib/apt/lists/*' at the end of the RUN command to reduce image size and remove cached vulnerability data.
  • Medium · No health checks or security hardening — Dockerfile. The Docker configuration lacks security best practices such as HEALTHCHECK directives, security scanning, or runtime security constraints. Fix: Add HEALTHCHECK instruction, use security scanning tools, consider using --security-opt flags, and implement runtime security policies.
  • Low · Deprecated MAINTAINER instruction — Dockerfile, line 2: MAINTAINER Shaun Jackman <sjackman@gmail.com>. The Dockerfile uses the deprecated MAINTAINER instruction. Modern Docker recommends using LABEL metadata instead. Fix: Replace with: LABEL maintainer='Shaun Jackman sjackman@gmail.com'
  • Low · Locale configuration without verification — Dockerfile, line 8: RUN localedef -i en_US -f UTF-8 en_US.UTF-8. The locale definition command assumes successful execution without error handling or verification. Fix: Add error handling: 'RUN localedef -i en_US -f UTF-8 en_US.UTF-8 || true' or verify the command succeeds.

LLM-derived; treat as a starting point, not a security audit.


Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.

Mixed signals · Linuxbrew/legacy-linuxbrew — RepoPilot