Cum se instaleaza ImageMagick pe Rocky Linux 10, 9 si 8?

Configurare noua (How To)

Situatie

Procesarea in serie a imaginilor devine obositoare cand fiecare redimensionare, conversie, thumbnail sau filigran trebuie sa treaca printr-un editor grafic. Pentru a instala ImageMagick pe Rocky Linux, folositi pachetul EPEL astfel incat DNF sa gestioneze instrumentele de linie de comanda, bibliotecile si actualizarile prin fluxul normal de pachete de sistem.

Rocky Linux 10 instaleaza in prezent ImageMagick 7, unde magick este comanda principala. Rocky Linux 9 si 8 instaleaza in prezent ImageMagick 6, unde convert, identify si mogrify raman comenzile portabile. O cale separata de compilare din sursa poate ajuta sistemele care au nevoie de un build upstream curent ImageMagick 7 fara a inlocui comenzile gestionate de DNF.

Compararea ramurilor ImageMagick pe Rocky Linux

Versiune Rocky Linux Ramura EPEL Comenzi principale Fisier politica
Rocky Linux 10 ImageMagick 7.1.x magick, plus comenzi legacy precum convert /etc/ImageMagick-7/policy.xml
Rocky Linux 9 ImageMagick 6.9.x convert, identify, mogrify /etc/ImageMagick-6/policy.xml
Rocky Linux 8 ImageMagick 6.9.x convert, identify, mogrify /etc/ImageMagick-6/policy.xml

Solutie

Pasi de urmat

Instalarea ImageMagick pe Rocky Linux

ImageMagick este ambalat pentru Rocky Linux prin EPEL, nu prin repository-urile implicite BaseOS sau AppStream. Folositi numele de pachet RPM cu majuscula, ImageMagick; imagemagick cu litere mici returneaza o eroare de nume de pachet DNF chiar daca acea ortografiere este frecventa pe sistemele din familia Debian.

Pentru majoritatea sistemelor, pachetul EPEL este optiunea implicita curata deoarece primeste actualizari prin DNF si mentine fisierele sub proprietatea package-manager-ului.

Actualizarea pachetelor Rocky Linux

Reimprospatati metadatele pachetelor si aplicati actualizarile de sistem in asteptare inainte de a adauga EPEL:

sudo dnf upgrade --refresh

Activarea EPEL pentru ImageMagick

Instalati pachetul de repository EPEL pentru Rocky Linux din repository-ul extras implicit:

sudo dnf install epel-release

Confirmati ca repository-ul EPEL este activat:

dnf repolist --enabled | grep -E '^epel[[:space:]]'

Output relevant include repository-ul EPEL corespunzator versiunii majore Rocky Linux:

epel                Extra Packages for Enterprise Linux 9 - x86_64

Instalarea pachetului ImageMagick

Instalati pachetul principal ImageMagick cu numele sau exact de pachet RPM:

sudo dnf install ImageMagick

Verificati ca DNF a instalat pachetul principal si pachetul de biblioteci:

rpm -q ImageMagick ImageMagick-libs

Output relevant pe Rocky Linux 10 include ramura pachetului ImageMagick 7:

ImageMagick-7.1.1.47-1.el10_1.x86_64
ImageMagick-libs-7.1.1.47-1.el10_1.x86_64

Rocky Linux 9 si 8 raporteaza in schimb pachete ImageMagick 6:

ImageMagick-6.9.13.25-1.el9.x86_64
ImageMagick-libs-6.9.13.25-1.el9.x86_64

Verificarea comenzilor ImageMagick

Rocky Linux 10 furnizeaza wrapper-ul ImageMagick 7 si include in continuare numele de comenzi legacy pentru compatibilitate:

command -v magick
magick --version | head -n 1
command -v convert
/usr/bin/magick
Version: ImageMagick 7.1.1-47 Q16-HDRI x86_64 22763 https://imagemagick.org
/usr/bin/convert

Rocky Linux 9 si 8 furnizeaza ImageMagick 6, deci convert este comanda asteptata iar magick nu este instalat de pachetul EPEL:

command -v convert
convert --version | head -n 1
command -v magick || echo "magick command is not installed"

/usr/bin/convert
Version: ImageMagick 6.9.13-25 Q16 x86_64 18639 https://legacy.imagemagick.org
magick command is not installed

Instalarea headerelor de dezvoltare ImageMagick pe Rocky Linux

Sarite acest pachet pentru conversie normala de imagini, redimensionare si procesare in serie. Instalati ImageMagick-devel doar cand compilati software care are nevoie de headere MagickWand sau MagickCore si metadate pkg-config.

sudo dnf install ImageMagick-devel

Confirmati ca metadatele de dezvoltare MagickWand sunt disponibile:

pkg-config --modversion MagickWand
pkg-config --libs MagickWand

Output relevant pe Rocky Linux 10 foloseste numele de biblioteca ImageMagick 7:

7.1.1
-lMagickWand-7.Q16HDRI -lMagickCore-7.Q16HDRI

Rocky Linux 9 si 8 raporteaza in prezent ramura de dezvoltare ImageMagick 6:

6.9.13
-lMagickWand-6.Q16 -lMagickCore-6.Q16

Compilarea ImageMagick din sursa pe Rocky Linux

Folositi un build din sursa doar cand ramura pachetului EPEL sau setul de delegate nu satisface workload-ul. Fluxul de lucru urmeaza procesul oficial de instalare din sursa ImageMagick, dar instaleaza intr-un prefix versionat precum /usr/local/imagemagick-7.1.2-22 si expune binarul ca magick-source. Aceasta mentine comanda compilata din sursa separata de pachetele magick, convert si biblioteci gestionate de DNF.

Instalarea dependentelor pentru compilare din sursa

Instalati instrumentele de build si pachetele de dezvoltare delegate din repository-urile implicite Rocky Linux 10, 9 si 8. Acest build din sursa nu necesita CRB sau PowerTools:

sudo dnf install git gcc gcc-c++ make pkgconf-pkg-config libjpeg-turbo-devel libpng-devel libtiff-devel libwebp-devel freetype-devel fontconfig-devel libxml2-devel zlib-devel bzip2-devel xz-devel

Crearea helper-ului de actualizare ImageMagick din sursa

Creati un script helper care poate instala primul build din sursa si il poate actualiza ulterior. Scriptul rezolva taguri stabile ImageMagick, refuza cai existente neasteptate, instaleaza sub /usr/local/imagemagick-<versiune>, actualizeaza /usr/local/imagemagick-current si leaga comanda ca /usr/local/bin/magick-source:

bash
sudo tee /usr/local/bin/update-imagemagick-source > /dev/null <<'EOF'
#!/usr/bin/env bash
set -euo pipefail

REPO_URL="https://github.com/ImageMagick/ImageMagick.git"
WORKDIR="${HOME}/imagemagick-source-build"
SOURCE_DIR="${WORKDIR}/source"
BUILD_DIR="${WORKDIR}/build"
PREFIX_BASE="/usr/local"
CURRENT_LINK="${PREFIX_BASE}/imagemagick-current"
COMMAND_LINK="${PREFIX_BASE}/bin/magick-source"
LDCONFIG_FILE="/etc/ld.so.conf.d/imagemagick-source.conf"
REQUESTED_TAG="${1:-}"

if [ "$(id -u)" -eq 0 ]; then
  echo "Run this command as a regular user, not as root."
  exit 1
fi

for cmd in git grep sed awk gcc g++ make pkg-config sudo; do
  if ! command -v "$cmd" >/dev/null 2>&1; then
    echo "Missing required command: $cmd"
    echo "Install the source-build prerequisites, then run this command again."
    exit 1
  fi
done

if [ -n "$REQUESTED_TAG" ]; then
  LATEST_TAG="$REQUESTED_TAG"
else
  echo "Resolving the latest ImageMagick release tag..."
  LATEST_TAG=$(git ls-remote --tags --sort=-version:refname "$REPO_URL" 'refs/tags/[0-9]*' |
    sed -n 's#.*refs/tags/##p' |
    grep -E '^[0-9]+\.[0-9]+\.[0-9]+-[0-9]+$' |
    head -n 1 || true)
fi

if [ -z "${LATEST_TAG:-}" ]; then
  echo "Could not determine an ImageMagick release tag."
  exit 1
fi

if ! printf '%s\n' "$LATEST_TAG" | grep -Eq '^[0-9]+\.[0-9]+\.[0-9]+-[0-9]+$'; then
  echo "Release tag does not match the expected ImageMagick stable tag format: $LATEST_TAG"
  exit 1
fi

CURRENT_VERSION="none"
if [ -x "${CURRENT_LINK}/bin/magick" ]; then
  CURRENT_VERSION=$("${CURRENT_LINK}/bin/magick" --version 2>/dev/null | awk '/^Version:/ {print $3; exit}' || true)
  CURRENT_VERSION="${CURRENT_VERSION:-none}"
fi

printf 'Current source version: %s\n' "$CURRENT_VERSION"
printf 'Target source version:  %s\n' "$LATEST_TAG"

if [ "$CURRENT_VERSION" = "$LATEST_TAG" ]; then
  echo "Already up to date."
  exit 0
fi

INSTALL_PREFIX="${PREFIX_BASE}/imagemagick-${LATEST_TAG}"

if [ -e "$CURRENT_LINK" ] && [ ! -L "$CURRENT_LINK" ]; then
  echo "Refusing to replace non-symlink path: $CURRENT_LINK"
  exit 1
fi

if [ -e "$COMMAND_LINK" ] && [ ! -L "$COMMAND_LINK" ]; then
  echo "Refusing to replace non-symlink command: $COMMAND_LINK"
  exit 1
fi

sudo true
mkdir -p "$WORKDIR"

if [ -d "${SOURCE_DIR}/.git" ]; then
  if [ -n "$(git -C "$SOURCE_DIR" status --porcelain --untracked-files=no)" ]; then
    echo "Tracked source changes found in $SOURCE_DIR; commit or remove them before updating."
    exit 1
  fi
  echo "Updating existing ImageMagick source checkout..."
  git -C "$SOURCE_DIR" fetch --depth 1 origin "refs/tags/${LATEST_TAG}:refs/tags/${LATEST_TAG}"
  git -C "$SOURCE_DIR" -c advice.detachedHead=false checkout --quiet "$LATEST_TAG"
else
  echo "Cloning ImageMagick $LATEST_TAG source..."
  git clone --depth 1 --branch "$LATEST_TAG" "$REPO_URL" "$SOURCE_DIR"
fi

git -C "$SOURCE_DIR" describe --tags --exact-match >/dev/null
rm -rf "$BUILD_DIR"
mkdir -p "$BUILD_DIR"
cd "$BUILD_DIR"

echo "Configuring ImageMagick for ${INSTALL_PREFIX}..."
"${SOURCE_DIR}/configure" \
  --prefix="$INSTALL_PREFIX" \
  --without-perl \
  --without-x \
  --disable-dependency-tracking

echo "Compiling ImageMagick (this can take several minutes)..."
make -j"$(nproc)"

echo "Installing ImageMagick under ${INSTALL_PREFIX}..."
sudo make install
sudo ln -sfn "$INSTALL_PREFIX" "$CURRENT_LINK"
sudo ln -sfn "${CURRENT_LINK}/bin/magick" "$COMMAND_LINK"
printf '%s\n' "${CURRENT_LINK}/lib" | sudo tee "$LDCONFIG_FILE" >/dev/null
sudo ldconfig

echo "ImageMagick source build is ready:"
"$COMMAND_LINK" --version | head -n 1
EOF

Faceti helper-ul executabil:

sudo chmod 0755 /usr/local/bin/update-imagemagick-source
command -v update-imagemagick-source
/usr/local/bin/update-imagemagick-source

Rularea helper-ului de compilare din sursa

Fixati versiunea ImageMagick validata pentru primul build astfel incat rezultatul sa fie reproductibil. Actualizarile ulterioare pot omite tagul dupa ce sunteti gata sa compilati cea mai noua versiune stabila:

update-imagemagick-source 7.1.2-22

Output relevant include versiunea rezolvata, prefixul de build si versiunea finala ImageMagick:

Current source version: none
Target source version:  7.1.2-22
Cloning ImageMagick 7.1.2-22 source...
Configuring ImageMagick for /usr/local/imagemagick-7.1.2-22...
Compiling ImageMagick (this can take several minutes)...
Installing ImageMagick under /usr/local/imagemagick-7.1.2-22...
ImageMagick source build is ready:
Version: ImageMagick 7.1.2-22 Q16-HDRI x86_64 bbfc7cba0:20260511 https://imagemagick.org

Verificarea ImageMagick compilat din sursa

Folositi magick-source cand doriti binarul compilat din sursa:

magick-source --version | head -n 1
magick-source logo: /tmp/imagemagick-source-logo.webp
magick-source identify -format "%m %w %h\n" /tmp/imagemagick-source-logo.webp
Version: ImageMagick 7.1.2-22 Q16-HDRI x86_64 bbfc7cba0:20260511 https://imagemagick.org
WEBP 640 480

Eliminati imaginea temporara de verificare dupa check:

rm -f /tmp/imagemagick-source-logo.webp

Utilizarea ImageMagick pe Rocky Linux

ImageMagick include o imagine integrata logo:, care face verificarile rapide de comenzi usoare fara a descarca un fisier de test. Aceste comenzi creeaza un fisier PNG, il redimensioneaza la WebP si afiseaza formatul si dimensiunile finale.

Comenzi ImageMagick 7 pe Rocky Linux 10

magick logo: logo.png
magick logo.png -resize 120x120 logo-small.webp
magick identify -format "%m %w %h\n" logo-small.webp
WEBP 120 90

Comenzi ImageMagick 6 pe Rocky Linux 9 si 8

convert logo: logo.png
convert logo.png -resize 120x120 logo-small.webp
identify -format "%m %w %h\n" logo-small.webp
WEBP 120 90

Depanare probleme ImageMagick pe Rocky Linux

Majoritatea problemelor ImageMagick pe Rocky Linux provin din EPEL neactivat, numele de pachet RPM cu majuscula, diferentele de comenzi intre ImageMagick 6 si 7, sau suportul de delegate care difera pe versiuni.

Corectarea erorii No Match pentru imagemagick

Cu metadatele EPEL disponibile, numele de pachet in stil Debian cu litere mici esueaza si DNF indica numele de pachet RPM cu majuscula:

sudo dnf install imagemagick
No match for argument: imagemagick
  * Maybe you meant: ImageMagick
Error: Unable to find a match: imagemagick

Daca EPEL nu este inca activat, puteti vedea doar o eroare fara sugestie. Activati EPEL daca este necesar, apoi instalati numele de pachet cu majuscula:

sudo dnf install epel-release
sudo dnf install ImageMagick

Corectarea erorii magick command not found

Pe Rocky Linux 9 si 8, magick: command not found este asteptat dupa instalarea pachetului EPEL deoarece acele versiuni folosesc ImageMagick 6. Folositi convert pentru acelasi flux de lucru de conversie de baza:

convert --version | head -n 1

Pe Rocky Linux 10, verificati daca pachetul este instalat daca magick lipseste:

rpm -q ImageMagick

Verificarea suportului pentru formate de imagine

Folositi lista de formate ImageMagick cand un tip de fisier esueaza cu un mesaj de delegate lipsa:

# Rocky Linux 10
magick identify -list format | grep -Ei 'HEIC|JXL|WEBP|PNG|JPEG'

# Rocky Linux 9 si 8
identify -list format | grep -Ei 'WEBP|PNG|JPEG'

NOTA: Rocky Linux 10 arata in prezent suport WebP si JPEG XL dupa instalarea pachetului, iar EPEL publica de asemenea un pachet optional ImageMagick-heic pentru acea versiune. Rocky Linux 9 si 8 arata formate comune precum JPEG, PNG si WebP, dar nu expun aceeasi suprafata de plugin ImageMagick 7. Verificati lista de formate pe sistemul tinta inainte de a va baza pe formate specializate precum HEIC, PDF sau fisiere camera RAW.

Verificarea suportului de delegate al build-ului din sursa

Daca comanda compilata din sursa nu poate citi sau scrie un format asteptat, inspectati rezumatul de configurare din magick-source. Delegatele lipsa inseamna de obicei ca pachetul -devel aferent nu era prezent inainte de compilare; instalati dependenta lipsa, apoi reexecutati update-imagemagick-source 7.1.2-22 sau tagul ales:

magick-source -list configure | grep -E '^(DELEGATES|FEATURES|PREFIX)'
DELEGATES             bzlib fontconfig freetype jng jpeg lzma png ps tiff webp xml zlib
FEATURES              Channel-masks(32-bit) Cipher DPC HDRI OpenMP
PREFIX                /usr/local/imagemagick-7.1.2-22

Gasirea fisierului policy.xml ImageMagick

Fisierul policy.xml al ImageMagick controleaza restrictiile de securitate, limitele de resurse si unele comportamente legate de Ghostscript. Localizati fisierul gestionat de pachet inainte de a-l edita:

rpm -ql ImageMagick-libs | grep '/policy.xml$'

Rocky Linux 10 foloseste calea de politica ImageMagick 7:

/etc/ImageMagick-7/policy.xml

Rocky Linux 9 si 8 folosesc calea de politica ImageMagick 6:

/etc/ImageMagick-6/policy.xml

Corectarea lipsei comenzii dnf config-manager

Fluxul de lucru al pachetului EPEL nu necesita dnf config-manager. Daca alta sarcina de repository va solicita sa activati CRB sau PowerTools si comanda lipseste, instalati mai intai pachetul de plugin-uri DNF:

sudo dnf install dnf-plugins-core

Actualizarea sau eliminarea ImageMagick pe Rocky Linux

Actualizarea ImageMagick cu DNF

Actualizarile normale de sistem includ actualizarile ImageMagick din EPEL. Pentru a verifica direct pachetul ImageMagick:

dnf check-update ImageMagick

Aplicati o actualizare ImageMagick disponibila cu:

sudo dnf upgrade ImageMagick

Actualizarea ImageMagick compilat din sursa

Daca ati folosit helper-ul de compilare din sursa, rulati-l din nou cand doriti sa treceti acel build separat la o versiune upstream mai noua. Fara argument, helper-ul rezolva cel mai recent tag stabil ImageMagick din repository-ul proiectului; transmiteti un tag doar cand doriti sa recompilati o versiune specifica:

update-imagemagick-source

Cand build-ul din sursa corespunde deja celui mai nou tag rezolvat, helper-ul se opreste inainte de recompilare:

Current source version: 7.1.2-22
Target source version:  7.1.2-22
Already up to date.

Eliminarea pachetelor ImageMagick

Eliminati pachetul principal cu DNF. Daca ImageMagick-devel este instalat, DNF il elimina ca pachet dependent si revizuieste dependentele neutilizate in aceeasi tranzactie:

sudo dnf remove ImageMagick

Verificati ca pachetele principal si de dezvoltare au disparut:

rpm -q ImageMagick ImageMagick-devel || true
package ImageMagick is not installed
package ImageMagick-devel is not installed

Eliminarea ImageMagick compilat din sursa

Metoda din sursa foloseste un prefix versionat si un symlink current astfel incat eliminarea sa poata fi targetata. Garda refuza sa elimine orice daca /usr/local/imagemagick-current nu pointeaza catre un director asteptat de build din sursa ImageMagick:

bash
SOURCE_PREFIX=$(readlink -f /usr/local/imagemagick-current 2>/dev/null || true)

case "$SOURCE_PREFIX" in
/usr/local/imagemagick-[0-9]*)
  sudo rm -f /usr/local/bin/magick-source
  sudo rm -f /usr/local/bin/update-imagemagick-source
  sudo rm -f /etc/ld.so.conf.d/imagemagick-source.conf
  sudo rm -f /usr/local/imagemagick-current
  sudo rm -rf "$SOURCE_PREFIX" "$HOME/imagemagick-source-build"
  sudo ldconfig
  ;;
"")
  echo "No ImageMagick source symlink found"
  ;;
*)
  echo "Refusing to remove unexpected path: $SOURCE_PREFIX"
  exit 1
  ;;
esac

Confirmati ca comanda compilata din sursa a disparut:

command -v magick-source || echo "magick-source removed"
magick-source removed

Curatarea optionala EPEL

Lasati EPEL activat daca alte pachete instalate provin din acel repository. Verificati mai intai:

dnf repoquery --installed --qf '%{name} %{from_repo}' | grep ' epel$' || echo "No installed packages from EPEL found"

Daca niciun pachet instalat nu depinde de EPEL si ati activat EPEL doar pentru ImageMagick, eliminati-l:

sudo dnf remove epel-release

Verificati ca EPEL nu mai este activat:

dnf repolist --enabled | grep -E '^epel[[:space:]]' || echo "EPEL is not enabled"
EPEL is not enabled

Tip solutie

Permanent

Voteaza

(13 din 28 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?