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
- Remove --install-bin from the command; it has no effect on the produced package
- Control script placement with the generic --prefix option or by staging files with -s dir
- 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
- Treat 'Using deprecated flag --install-bin' as covering five python flags: --install-bin, --install-lib, --install-data, --scripts-executable, --setup-py-arguments
- Audit fpm invocations after every fpm upgrade since dead flags only emit a warning
- Prefer -s dir with a staged tree when you need exact control over file layout
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
- Using deprecated flag: --package-prefix. Please use --packag
- Using deprecated flag: --install-location. Please use --pref
AI-assisted analysis of jordansissel/fpm@b6d77ba72a (2026-08-21).
Data as JSON: /api/errors/e2a4e626899951ae.
Report an issue: GitHub.