Skip to content

SoftCreatR/imei

Repository files navigation

IMEI - ImageMagick Easy Install

Automated ImageMagick compilation from sources for Debian/Ubuntu including advanced delegate support.

Build

Commits GitHub release GitHub license Plant Tree Installs GitHub file size in bytes

Codacy grade CodeFactor Grade



Features

  • Compiles the latest ImageMagick release
  • Installs ImageMagick or updates ImageMagick package previously installed (via IMEI)
  • Additional HEIF/HEIC/HEIX support
  • Additional AVIF support
  • Additional JPEG XL support

Compatibility

The compatibility of every IMEI build is automatically tested using GitHub Actions against the latest Ubuntu LTS version. However, manual testing is conducted to ensure compatibility with other operating systems, such as Debian 10 or Ubuntu 18.04.

Operating System

Recommended

  • Ubuntu 24.04 (Noble Numbat)
  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 20.04 (Focal Fossa)
  • Debian 12 (Bookworm)
  • Debian 11 (Bullseye)

Also compatible

  • Ubuntu 18.04 (Bionic Beaver)
  • Debian 10 (Buster)

Other versions than the ones listed might be compatible as well, but they are not officially supported.

Known issues

  • To compile JPEG XL, CMake 3.10 or a newer version is required. On older systems like Debian 9, the version provided by maintainers is not adequate. In such cases, the compilation of JPEG XL will be skipped.
  • For libaom, a minimum CMake version of 3.6 is necessary. On older systems, the version provided by maintainers might not be sufficient. In these instances, the compilation of libaom will be skipped. Consequently, libheif will also be skipped since it depends on libaom.

Usage

One-Step Automated Install

t=$(mktemp) && \
wget 'https://dist.1-2.dev/imei.sh' -qO "$t" && \
bash "$t" && \
rm "$t"

Alternative Install Method

git clone https://github.com/SoftCreatR/imei && \
cd imei && \
chmod  x imei.sh && \
./imei.sh

Verify installer integrity

Though the installer performs a self check upon startup, you can also perform it manually. To do so, openssl is required:

wget -q https://dist.1-2.dev/imei.sh && \
wget -q https://dist.1-2.dev/imei.sh.sig && \
wget -q https://dist.1-2.dev/imei.sh.pem && \
openssl dgst -sha512 -verify imei.sh.pem -signature imei.sh.sig imei.sh

Alternative integrity check

git clone https://github.com/SoftCreatR/imei && \
cd imei && \
openssl dgst -sha512 -verify imei.sh.pem -signature imei.sh.sig imei.sh

Options available

Currently available build options are

  • --skip-dependencies / --skip-deps : Skip installation of dependencies
  • --imagemagick-version / --im-version : Build the given ImageMagick version (e.g. 7.1.1-25)
  • --force-imagemagick / --force-im : Force building of ImageMagick only, even if it's are already installed in a newer or the latest version
  • --imagemagick-quantum-depth / --im-q : ImageMagick Quantum Depth (8, 16 or 32)
  • --imagemagick-opencl / --im-ocl : Install ImageMagick with OpenCL support
  • --imagemagick-static / --im-static : Enables static libraries, disables shared libraries
  • --aom-version : Build the given aom version (e.g. 3.8.0)
  • --skip-aom : Skip building aom
  • --libheif-version / --heif-version : Build the given libheif version (e.g. 1.17.6)
  • --skip-libheif / --skip-heif : Skip building libheif
  • --jpeg-xl-version / --jxl-version : Build the given JPEG XL version (e.g. 0.9.0)
  • --skip-jpeg-xl / --skip-jxl : Skip building JPEG XL
  • --log-file : Log everything to the file provided
  • --work-dir : Download, extract & build within the directory provided
  • --build-dir : Build target directory for ImageMagick
  • --config-dir : Config target directory for ImageMagick
  • --force : Force building of components, even if they are already installed in a newer or the latest version

Additional options / switches:

  • --no-sig-verify / --dev : Disable signature verification on startup
  • --use-checkinstall / --checkinstall : Use checkinstall instead of make
  • --build-only : Used in combination with --use-checkinstall to build packages, without installing them
  • --no-backports : Disable temporary installation of OS backports (they may be used anyways, depending on your server configuration)

Default options :

  • ImageMagick version: 7.1.1-39 (Q16)
  • libaom version: 3.10.0
  • libheif version: 1.19.1
  • libjxl version: 0.11.0
  • Log File: /var/log/imei-###.log (### will be the timestamp of the script execution)
  • Work Dir: /usr/local/src/imei
  • Build Dir: /usr/local
  • Config Dir: /usr/local/etc

Older versions of ImageMagick (installed via apt / dpkg)

IMEI enforces a stringent policy that prohibits execution when ImageMagick is detected as pre-installed via the apt or dpkg package managers. Currently, there is no sanctioned method to bypass this limitation. To facilitate the installation of ImageMagick through IMEI, it is imperative to first remove any extant installations, e.g.:

apt remove "*imagemagick*" --purge -y && apt autoremove --purge -y

checkinstall vs. make

IMEI offers support for both checkinstall and make methods. While checkinstall enables the creation of packages that can be uninstalled at a later time, such as apt remove imei-imagemagick, the use of make does not provide the same convenience, making it potentially more difficult to remove all components installed by IMEI. However, it's important to note that checkinstall may not always be available and may have certain bugs that could lead to an incomplete installation of IMEI packages.

By default, IMEI utilizes the make method, but you have the option to use checkinstall by specifying it in the additional options or switches (refer to "Additional options / switches" for more details).

OpenCL support

IMEI provides the option to install ImageMagick with OpenCL support. However, it is important to consider that according to the information provided here, ImageMagick's performance is significantly lower when utilizing OpenCL compared to OpenMP.

When you choose to install ImageMagick with OpenCL support using IMEI, please be aware that IMEI only compiles ImageMagick with OpenCL capabilities. It does not handle the installation of necessary drivers or any other specific requirements to enable general OpenCL support on your system.

PHP Imagick extension

The ImageMagick installation facilitated through IMEI exhibits full compatibility with the Imagick extension of PHP. It is imperative to note that the compilation of Imagick must be conducted against the version of ImageMagick that is currently installed, rather than vice versa. Consequently, subsequent to the installation of ImageMagick, it is essential to undertake the reinstallation of the Imagick extension. This reinstallation can be executed either through the PECL interface or in accordance with the procedure delineated here.


Contributing

If you have any ideas, just open an issue and describe what you would like to add/change in IMEI.

If you'd like to contribute, please fork the repository and make changes as you'd like. Pull requests are warmly welcome.

License 🌳

ISC © 1-2.dev

This package is Treeware. If you use it in production, then we ask that you buy the world a tree to thank us for our work. By contributing to the ecologi project, you’ll be creating employment for local families and restoring wildlife habitats.