Skip to content
Package manager for PkgSrc
Shell TeX Roff Makefile POV-Ray SDL
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


NIH is a package management tool for pkgsrc.
NIH means Not Invented Here, yes, I'm talking about NIH syndrome :-)

Why not:

    - These are low level tools and cannot be used for handling
      hundreds of packages efficiently.

    - I was using pkg_chk for several years and it's quiet good tool.
      But it lacks some useful features. It is also extreammly slow.

    - Replacing packages "in place" is not safe.

    - It works only on NetBSD
    - It doesn't allow to install or update packages, it only builds them

    - Package manager written in "C"? No, thanks.
      "C" is a the worst programming language I've ever
      known for this task. All other reasons are secondary.
    - sqlite is absoletely useless for package management.

    - It is dead

Why NIH:

  - I've got pkg_summary-utils, a big collection of powerful scripts
    for managing pkg_summary files. I've been developing it since 2007
    or so and I think now it is ready to be a foundation for package

  - I've got distbb, very powerful and flexible bulk build tool.  For
    several years I've been using it for running bulk builds on Linux
    and NetBSD and I consider it rather stable.

  - I've got pkg_status, small tool for checking status of
    installed packages against pkg_summary.txt or pkgsrc source tree.
    It also provides other features usually implemented by
    full-featured package management tools. It is very small and

  - I've got pkg_digger and pkg_online_find, very powerful and quality
    tools for searching on packages. They are also small and stable.

  - NIH = pkg_summary-utils + distbb + pkg_status + pkg_digger

  - To provide features implemented in pkgchk, pkgin, pkg_comp,
    pkg_leaves, pkgfind, pkg_status, pkg_online-client and
  - Support for both binary and sources-based upgrade
  - Less than 4000 lines of code
  - No sqlite or other databases.
  - Support for PKG_OPTIONS and multivariant packages
    (Python, Apache, PHP, Ruby)
  - No dependencies other than
      a) pkg_summary-utils, runawk and pipestatus for basic functionality
      b) paexec and libmaa for running things in parallel
         using all available CPUs
      c) distbb (plus paexec and libmaa) for building packages from sources
      d) dict-client (plus libmaa) and netcat for searching
         via pkg_online server
  - Shell, AWK, RunAWK, UNIX tools and nothing else.
  - No libnih.a
You can’t perform that action at this time.