LinuxCommandLibrary

checkinstall

Create installable packages from source code

TLDR

Create and install a package with default settings

$ sudo checkinstall [[-y|--default]]
copy

Create a package but don't install it
$ sudo checkinstall --install=[no]
copy

Create a package without documentation
$ sudo checkinstall --nodoc
copy

Create a package and set the name
$ sudo checkinstall --pkgname [package]
copy

Create a package and specify where to save it
$ sudo checkinstall --pakdir [path/to/directory]
copy

SYNOPSIS

checkinstall [options] [make_command]

PARAMETERS

-D, --debian
    Generate a Debian package (.deb)

-F, --rpm
    Generate an RPM package (.rpm)

-R, --requires <list>
    Specify required packages or files, comma-separated

-p, --provides <name>
    Specify packages or files this one provides

-P, --prefix <dir>
    Set installation prefix (default /usr/local)

-a, --arch <arch>
    Set package architecture (auto-detects if omitted)

-b, --bindir <dir>
    Set binary installation directory

-d, --depdir <dir>
    Search directory for dependencies

-m, --maintainer <name>
    Set package maintainer name

-n, --nodoc
    Do not create or install documentation

-r, --pkgrpm <name>
    Set RPM packager name/email

-s, --strip
    Strip binaries/symbols after packaging

-t, --pkgversion <version>
    Override detected package version

-u, --upgrade <oldversion>
    Set previous package version for upgrades

-y, --yes
    Automatic yes to all prompts (non-interactive)

-v, --verbose
    Increase output verbosity

--help
    Display usage summary

--version
    Show checkinstall version

--install=no
    Create package but do not install it

--pkgname=<name>
    Set package name explicitly

--pkgrelease=<release>
    Set package release number

--pakdir=<dir>
    Set output directory for packages

--fakesysconf
    Fake /etc changes during install

--initdir=<dir>
    Directory for init scripts

DESCRIPTION

checkinstall is a versatile Linux utility designed to simplify the installation and management of software compiled from source code. Instead of running make install directly, which scatters files across the system without tracking them, checkinstall intercepts the installation process. It monitors file system changes made by the build system's install command (typically make install), captures the installed files, and packages them into a standard format like DEB (Debian/Ubuntu) or RPM (Red Hat/Fedora).

This allows users to install the package using native tools like dpkg -i or rpm -i, enabling easy uninstallation, upgrades, and dependency tracking via the system's package manager. It supports custom metadata such as maintainer info, version, description, and dependencies, making it ideal for local builds or distributing software.

checkinstall requires root privileges or fakeroot for monitoring, and it prompts for confirmation before packaging or installing. It's particularly useful for developers and sysadmins handling software not available in repositories, reducing clutter from manual installs. However, it may not capture all dynamic changes perfectly, like runtime-generated files.

CAVEATS

Requires root or fakeroot; may miss runtime-generated files or kernel modules; not ideal for complex builds with custom install scripts; test packages before distribution; conflicts possible with multi-package builds.

TYPICAL USAGE

./configure && make && sudo checkinstall make install
Replace make install with checkinstall to package binaries, libs, etc.

REQUIREMENTS

Needs packaging tools: dpkg-dev for DEB, rpm-build for RPM. Install via apt/yum: sudo apt install checkinstall.

HISTORY

Developed by Felipe Eduardo Sanchez Diaz Duran in 2002 as an open-source tool for Slackware, later expanded for Debian/RPM. Maintained sporadically; last major release around 1.6.2 in 2013. Widely used in pre-package-manager ecosystems and still relevant for custom source builds.

SEE ALSO

make(1), dpkg(1), rpm(8), fakeroot(1), dpkg-deb(1)

Copied to clipboard