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:
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:
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
Leave A Comment?