jordansissel/fpm · warning

Using deprecated flag --install-bin

Error message

Using deprecated flag --install-bin

What it means

The python input target's --install-bin option is deprecated and does nothing. Its handler block only calls logger.warn and returns nil, so the BIN_PATH value is discarded — script locations are decided by the python build itself, not by this flag. The warning fires on each invocation that passes the flag.

Source

Thrown at lib/fpm/package/python.rb:56

    logger.warn("Using deprecated flag: --package-prefix. Please use " \
                 "--package-name-prefix")
    value
  end
  option "--package-name-prefix", "PREFIX", "Name to prefix the package " \
    "name with.", :default => "python"
  option "--fix-name", :flag, "Should the target package name be prefixed?",
    :default => true
  option "--fix-dependencies", :flag, "Should the package dependencies be " \
    "prefixed?", :default => true

  option "--downcase-name", :flag, "Should the target package name be in " \
    "lowercase?", :default => true
  option "--downcase-dependencies", :flag, "Should the package dependencies " \
    "be in lowercase?", :default => true

  option "--install-bin", "BIN_PATH", "(DEPRECATED, does nothing) The path to where python scripts " \
    "should be installed to." do
    logger.warn("Using deprecated flag --install-bin")
  end
  option "--install-lib", "LIB_PATH", "(DEPRECATED, does nothing) The path to where python libs " \
    "should be installed to (default depends on your python installation). " \
    "Want to find out what your target platform is using? Run this: " \
    "python -c 'from distutils.sysconfig import get_python_lib; " \
    "print get_python_lib()'" do
    logger.warn("Using deprecated flag --install-bin")
  end

  option "--install-data", "DATA_PATH", "(DEPRECATED, does nothing) The path to where data should be " \
    "installed to. This is equivalent to 'python setup.py --install-data " \
    "DATA_PATH" do
    logger.warn("Using deprecated flag --install-bin")
  end

  option "--dependencies", :flag, "Include requirements defined by the python package" \
    " as dependencies.", :default => true
  option "--obey-requirements-txt", :flag, "Use a requirements.txt file " \

View on GitHub (pinned to b6d77ba72a)

Solutions

  1. Remove --install-bin from the command; it has no effect on the produced package
  2. Control script placement with the generic --prefix option or by staging files with -s dir
  3. Update shared scripts and CI templates so the dead flag stops generating warning noise

Example fix

# before
fpm -s python -t deb --install-bin /usr/bin requests

# after
fpm -s python -t deb requests
Defensive patterns

Strategy: validation

Validate before calling

grep -rnE -- '--install-bin([ =]|$)' build/ && { echo 'ERROR: --install-bin is a no-op; remove it' >&2; exit 1; } || true

Prevention

When it happens

Trigger: Passing `--install-bin <path>` to an fpm python-source build, e.g. `fpm -s python -t deb --install-bin /usr/bin requests`.

Common situations: Legacy build scripts from fpm versions where python bin/lib/data install paths were configurable; provisioning templates copied from very old fpm documentation.

Related errors


AI-assisted analysis of jordansissel/fpm@b6d77ba72a (2026-08-21). Data as JSON: /api/errors/e2a4e626899951ae. Report an issue: GitHub.