Hangi Sürümü Kaldırıyoruz?
Sunucu zamanla biriken eski Java sürümleri hem disk alanı tüketir hem de güvenlik riski oluşturur — yamalanmamış JDK'lar yıllar boyunca açık kalır. ElasticSearch'i Java 8'den 11'e, sonra 17'ye yükselttiyseniz eski sürümleri kaldırmadan bırakmak gereksizdir. Bu rehber AlmaLinux 8/9'da Java temizleme adımlarını gösterir.Adım 1 — Hangi Sürümler Yüklü?
Önce envanter çıkarın:
Code:
rpm -qa | grep -i jdk
alternatives --display java
Çıktı örneği: java-1.8.0-openjdk-1.8.0.382.b05-1.el9.x86_64 (Java 8), java-11-openjdk-11.0.21.0.9-1.el9.x86_64 (Java 11), java-17-openjdk-17.0.9.0.9-1.el9.x86_64 (Java 17).
Adım 2 — Bağımlılıkları Kontrol Et
Hangi servislerin hangi Java'ya bağlı olduğunu görmek için:
Code:
systemctl list-units --type=service | grep -i java
grep -r "JAVA_HOME" /etc/systemd/system/ 2>/dev/null
ElasticSearch, Solr, Tomcat gibi servislerin systemd unit dosyalarındaki Environment=JAVA_HOME=/usr/lib/jvm/... satırı kullandığı sürümü işaret eder. Yanlış sürümü kaldırırsanız servis başlatılamaz.
Adım 3 — Servisleri Durdurun
Etkilenebilecek servisleri önce durdurun (gerekirse alternatif Java sürümüne geçirin):
Code:
sudo systemctl stop elasticsearch
sudo systemctl stop tomcat
Adım 4 — Eski Sürümü Kaldır
DNF ile temiz kaldırma:
Code:
sudo dnf remove java-1.8.0-openjdk java-1.8.0-openjdk-headless
Bağımlı paketler (javapackages-tools) varsa DNF onları da soracaktır; "y" ile onaylayın. Manuel kurulu Java için ilgili /opt dizinini elle silin.
Adım 5 — Alternatives Temizliği
RPM paketi temizlendiğinde alternatives girdileri kalmış olabilir:
Code:
alternatives --remove java /usr/lib/jvm/jre-1.8.0-openjdk/bin/java
alternatives --remove javac /usr/lib/jvm/java-1.8.0-openjdk/bin/javac
Hata mesajı veriyorsa zaten silinmiştir, geçebilirsiniz.
Adım 6 — Doğrulama
Kaldırma sonrası kontroller:
Code:
java -version
rpm -qa | grep jdk
ls /usr/lib/jvm/
Sonuçlar yalnızca tutmak istediğiniz sürümleri göstermelidir. Servisleri yeniden başlatın:
Code:
sudo systemctl start elasticsearch
sudo systemctl status elasticsearch
Yaygın Hatalar
"Package not installed": sürüm zaten yoktu, normal. "javac: command not found" servis hatası: JDK yerine yalnızca JRE bıraktıysanız Maven/SBT gibi araçlar javac arar — JDK'yı geri kurmanız gerekebilir. "alternatives: no priorities" hatası: tüm Java alternatives girdileri silinmiş, en az bir Java'yı alternatives --install ile geri eklemelisiniz.Genel Disk Temizliği
Java cache dizinleri zamanla şişebilir:
Code:
rm -rf /root/.java/deployment/cache/
dnf clean all
Üretim Önerisi
Tek seferde kaldırmak yerine eski sürümün servislerini önce yeni sürüme migrate edin, bir hafta sorunsuz çalıştığını doğrulayın, sonra eski sürümü kaldırın. AIOR olarak müşterilerimizin ElasticSearch ve XenForo deploy'larında Java migration'larını planlı pencerede yapıyor ve rollback hazır tutuyoruz.Which Version Are We Removing?
Old Java versions accumulated over time consume disk space and create a security risk — unpatched JDKs can stay vulnerable for years. If you upgraded ElasticSearch from Java 8 to 11 and then 17, leaving the old versions around is unnecessary. This guide walks through Java cleanup on AlmaLinux 8/9.Step 1 — What's Installed?
Start with an inventory:
Code:
rpm -qa | grep -i jdk
alternatives --display java
Sample output: java-1.8.0-openjdk-1.8.0.382.b05-1.el9.x86_64 (Java 8), java-11-openjdk-11.0.21.0.9-1.el9.x86_64 (Java 11), java-17-openjdk-17.0.9.0.9-1.el9.x86_64 (Java 17).
Step 2 — Check Dependencies
See which services rely on which Java:
Code:
systemctl list-units --type=service | grep -i java
grep -r "JAVA_HOME" /etc/systemd/system/ 2>/dev/null
The Environment=JAVA_HOME=/usr/lib/jvm/... line in ElasticSearch, Solr or Tomcat service unit files tells you which version they bind to. Remove the wrong one and the service fails to start.
Step 3 — Stop Affected Services
Before removal, stop any service that may break (and migrate it to another Java first if needed):
Code:
sudo systemctl stop elasticsearch
sudo systemctl stop tomcat
Step 4 — Remove the Old Version
Clean removal via DNF:
Code:
sudo dnf remove java-1.8.0-openjdk java-1.8.0-openjdk-headless
If dependent packages exist (javapackages-tools), DNF will prompt; answer "y". For manually installed Java, delete the relevant /opt directory by hand.
Step 5 — Cleaning Alternatives
After the RPM is gone, leftover alternatives entries may persist:
Code:
alternatives --remove java /usr/lib/jvm/jre-1.8.0-openjdk/bin/java
alternatives --remove javac /usr/lib/jvm/java-1.8.0-openjdk/bin/javac
If you see an error, the entry was already removed — safe to ignore.
Step 6 — Verify
Post-removal sanity checks:
Code:
java -version
rpm -qa | grep jdk
ls /usr/lib/jvm/
Results should show only the versions you intended to keep. Restart your services:
Code:
sudo systemctl start elasticsearch
sudo systemctl status elasticsearch
Common Errors
"Package not installed": the version was already absent — fine. "javac: command not found" service error: if you left only the JRE and tools like Maven/SBT expect javac, you may need to reinstall a JDK. "alternatives: no priorities": all Java alternatives were removed; re-add at least one with alternatives --install.General Disk Cleanup
Java cache directories balloon over time:
Code:
rm -rf /root/.java/deployment/cache/
dnf clean all