CentOS 7 / CentOS 8 Python 3.8 kurulumu
Bu yazı 2023 yılından. Anlatılan sürümler, fiyatlar ve adresler o günden bu yana değişmiş olabilir.
Bu rehberde Python 3.8'i CentOS 7 / CentOS 8'e nasıl yükleyeceğinizi öğreneceksiniz. Python, orijinal olarak Guido van Rossum tarafından oluşturulan ve 1991'de piyasaya sürülen popüler bir programlama dilidir.
Güncelleme (Kasım 2026): Bu yazıyı 2023'te yazmıştım. O günden bu yana CentOS 7'nin desteği Haziran 2024'te, CentOS 8'inki ise daha önce Aralık 2021'de bitti. Python 3.8 de Ekim 2024'te güncelleme almayı bıraktı. Yani yeni bir sunucu kuruyorsanız Rocky Linux ya da AlmaLinux gibi hâlâ desteklenen bir dağıtım ve daha yeni bir Python sürümü seçmenizi tavsiye ederim. Ama elinizde hâlâ CentOS çalışan bir sunucu varsa ve üzerinde Python 3.8 lazımsa bu rehber işinizi görecek. Yazıyı bugünkü haline göre güncelledim.
Başlamadan önce
CentOS 7 sunucularda sistemin kendi Python'ı 2.7 sürümüdür ve yum gibi sistem araçları bu sürümle çalışır. Biz bu rehberde Python 3.8'i sistemin Python'ına dokunmadan, yanına kuracağız. Kurulum bittiğinde sunucuda iki Python olacak: sistemin kullandığı eski sürüm python komutuyla, bizim kurduğumuz yeni sürüm python3.8 komutuyla çalışacak.
Komutları root kullanıcısıyla ya da sudo yetkisi olan bir kullanıcıyla çalıştırmanız gerekiyor. Kurulum Python'ı kaynak kodundan derleyeceği için sunucunun gücüne göre 10-20 dakika sürebilir, bunu da baştan bilin.
1. Depo adreslerini düzeltmek
Desteği biten CentOS sürümlerinin paket depoları eski adreslerinden kaldırılıp arşive (vault.centos.org) taşındı. Bu yüzden bir sonraki adımdaki komutlar bu ayarı yapmadan çalışmıyor, şuna benzer bir hata alıyorsunuz:
Cannot find a valid baseurl for repo: base/7/x86_64Bunu düzeltmek için depo ayarlarını arşiv adresine yönlendiriyoruz. Aşağıdaki iki komut CentOS 7'de de CentOS 8'de de aynı şekilde çalışıyor:
sudo sed -i 's/^mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*.repo
sudo sed -i 's|^#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*.repoİlk komut sunucunun artık var olmayan ayna sunucu listesini kullanmasını kapatıyor, ikincisi de depo adresini arşiv adresiyle değiştiriyor. Ardından yum'un eski kayıtlarını temizliyoruz:
sudo yum clean allEğer sunucunuzda yum update hata vermeden çalışıyorsa bu adımı atlayabilirsiniz.
2. Gerekli paketleri kurmak
Sunucumuza SSH üzerinden bağlandıktan sonra Python'ı derleyebilmek için gerekli olan paketleri yükleyelim.
sudo yum -y update
sudo yum -y groupinstall "Development Tools"
sudo yum -y install openssl-devel bzip2-devel libffi-devel zlib-devel xz-devel sqlite-devel readline-devel wgetİlk komut sunucudaki paketleri güncelliyor. İkincisi gcc ve make gibi derleme araçlarını kuruyor. Üçüncüsü de Python'ın bazı parçalarının çalışması için gereken kütüphaneleri ve dosyayı indirmek için kullanacağımız wget'i kuruyor. Eski yazıda zlib-devel'i eklememiştim. Bu paket eksik olursa kurulumun sonunda pip kurulamıyor ve "zlib not available" hatası alıyorsunuz.
Derleme araçlarının doğru kurulduğunu doğrulamak için aşağıdaki komutu kullanalım:
gcc --versionKarşınıza aşağıdakine benzer bir ekran çıkıyorsa her şey doğru gidiyor demektir. Sürüm numarası CentOS 7'de 4.8.5, CentOS 8'de 8.x olarak görünecek, bu normal.
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.3. Python 3.8'i indirmek
Şimdi Python 3.8'i orijinal kaynağından, yani python.org üzerinden sunucumuza çekiyoruz. Eski yazıda 3.8.3 sürümünü kullanmıştım, burada 3.8 serisinin son sürümü olan 3.8.20'yi kullanıyoruz. Bu sürümde o günden bu yana kapatılmış güvenlik açıklarının düzeltmeleri var.
cd /tmp
wget https://www.python.org/ftp/python/3.8.20/Python-3.8.20.tgzİndirdiğimiz sıkıştırılmış dosyayı dışarı çıkartıyoruz ve çıkan klasörün içine giriyoruz:
tar xvf Python-3.8.20.tgz
cd Python-3.8.204. Derlemek ve kurmak
Kurulumu başlatmadan önce aşağıdaki komutla derleme ayarlarını hazırlıyoruz. Bu komut sunucunuzu kontrol edip gerekli her şeyin yerinde olup olmadığına bakıyor.
./configure --enable-optimizationsBuradaki --enable-optimizations Python'ın daha hızlı çalışması için ek optimizasyon yapıyor. Kurulumu biraz uzatıyor ama değer.
Bu komut bittikten sonra aşağıdaki komutla derlemeyi başlatıyoruz:
make -j $(nproc)-j $(nproc) derlemenin sunucudaki bütün işlemci çekirdeklerini kullanmasını sağlıyor, kurulumu ciddi şekilde hızlandırıyor. Ekrandan bir sürü yazı akacak, bu normal. Bittikten sonra da kurulumu yapıyoruz:
sudo make altinstallBurada çok önemli bir nokta var: make install değil make altinstall kullanıyoruz. make install kullanırsanız sunucudaki python3 komutu artık yeni kurduğunuz sürümü çalıştırmaya başlar ve sunucuda sistemin kendi Python'ına göre yazılmış scriptler varsa beklenmedik şekilde davranabilir. altinstall ise Python 3.8'i sadece python3.8 adıyla, sistemin Python'ına hiç dokunmadan kuruyor.
Kurulumun başarılı bittiğini anlamak için en sonda çıkan yazıya bakın, aşağıdakine benzer bir satır görmeniz lazım. Buradaki sürüm numaraları sizde farklı olabilir.
Successfully installed pip-23.0.1 setuptools-56.0.05. Kurulumu kontrol etmek
Kurmuş olduğumuz Python sürümünü öğrenmek için aşağıdaki komutları çalıştırabilirsiniz:
python3.8 --version
pip3.8 --versionİlk komut Python 3.8.20 yazmalı. Eğer python3.8: command not found hatası alırsanız, özellikle de komutu sudo ile çalıştırıyorsanız, tam yolunu kullanın. Python 3.8 /usr/local/bin/ dizinine kuruluyor ve CentOS'ta sudo bu dizine varsayılan olarak bakmıyor:
/usr/local/bin/python3.8 --versionKurulum bittikten sonra indirdiğimiz dosyalara artık ihtiyacımız yok, isterseniz silebilirsiniz:
cd /tmp
rm -rf Python-3.8.20 Python-3.8.20.tgzCentOS 8 için daha kısa yol
CentOS 8 kullanıyorsanız Python 3.8'i derlemeden, doğrudan paket deposundan da kurabilirsiniz. 1. adımdaki depo ayarını yaptıktan sonra tek bir komut yeterli:
sudo dnf -y install python38Bu şekilde kurulan Python 3.8 de python3.8 komutuyla çalışıyor. Daha hızlı ve güncellemesi daha kolay, fakat depodaki sürüm 3.8.20 değil daha eski bir 3.8 sürümü oluyor. CentOS 7'de böyle bir paket olmadığı için orada yukarıdaki derleme yöntemini kullanmanız gerekiyor.