Debian 8 Üzerine Go Programlama Dili Kurulum Rehberi
Go (genellikle Golang olarak da bilinir), Google tarafından geliştirilen açık kaynaklı, statik olarak yazılmış ve derlenmiş bir programlama dilidir. Özellikle büyük ölçekli ve yüksek performanslı sistemler, ağ servisleri ve bulut tabanlı uygulamalar geliştirmek için tasarlanmıştır. Go, basit sözdizimi, yerleşik eşzamanlılık (goroutines ve kanallar aracılığıyla), hızlı derleme süreleri ve güçlü bir standart kütüphane gibi özellikleriyle öne çıkar. Bu makalede, eski ancak hala birçok sunucuda kullanılan Debian 8 (Jessie) işletim sistemi üzerine Go programlama dilinin nasıl kurulacağını adım adım ve detaylı bir şekilde inceleyeceğiz.
Debian 8, Go’nun modern sürümleri için doğrudan destek sunan güncel bir platform değildir. Bu durum, kurulum yöntemlerini seçerken dikkatli olmayı gerektirir. APT paket yöneticisi aracılığıyla kurulan Go sürümü genellikle çok eski olabilir ve modern Go geliştirme pratikleriyle uyumsuzluk gösterebilir. Bu nedenle, bu rehberde en güncel ve önerilen yöntem olan resmi ikili dosyaları kullanarak kurulumu ve alternatif olarak APT üzerinden kurulumu ele alacağız.
Go Programlama Dili Neden Tercih Edilmeli?
Go’nun popülaritesi, özellikle mikroservis mimarileri, dağıtık sistemler ve sunucu tarafı uygulamaları geliştirenler arasında hızla artmaktadır. İşte Go’nun başlıca avantajları:
* Performans: Go, derlenmiş bir dil olduğu için C ve C++ gibi dillere yakın performans sunar.
* Eşzamanlılık: Goroutine’ler ve kanallar sayesinde kolay ve verimli eşzamanlı programlama imkanı sağlar. Bu, çok çekirdekli işlemcilerden en iyi şekilde yararlanılmasını sağlar.
* Basitlik ve Okunabilirlik: Go, minimal bir sözdizimine sahiptir ve kodun okunabilirliğini artıran katı kurallar içerir (örneğin, kullanılmayan değişkenlere izin verilmez).
* Hızlı Derleme Süreleri: Büyük projelerde bile hızlı derleme süreleri, geliştirme sürecini hızlandırır.
* Çapraz Platform Desteği: Go, Windows, Linux, macOS gibi farklı işletim sistemleri için kolayca derlenebilir ikili dosyalar oluşturabilir.
* Güçlü Standart Kütüphane: Ağ, şifreleme, dosya işlemleri gibi birçok temel görevi yerine getiren zengin bir standart kütüphaneye sahiptir.
* Bellek Yönetimi: Otomatik çöp toplama (garbage collection) özelliği sayesinde bellek yönetimi yükünü geliştiriciden alır.
Ön Gereksinimler
Debian 8 sisteminize Go kurmaya başlamadan önce aşağıdaki ön gereksinimlere sahip olduğunuzdan emin olun:
* Debian 8 (Jessie) İşletim Sistemi: Kurulumu yapacağınız bir Debian 8 sunucusu veya sanal makine.
* Root veya Sudo Yetkileri: Sistem genelinde değişiklikler yapmak için root kullanıcısı olmanız veya sudo yetkilerine sahip bir kullanıcı hesabınızın bulunması gerekmektedir.
* İnternet Bağlantısı: Kurulum dosyalarını indirmek ve sistem paketlerini güncellemek için aktif bir internet bağlantısı.
* Temel Terminal Bilgisi: Linux komut satırı (terminal) kullanımı hakkında temel bilgiye sahip olmak.
Yöntem 1: Resmi İkili Dosyaları Kullanarak Go Kurulumu (Önerilen Yöntem)
Bu yöntem, Debian 8 sisteminize Go’nun en güncel ve kararlı sürümünü kurmanın en iyi yoludur. APT paket yöneticisi ile gelen sürümün eski olması nedeniyle, bu yöntem modern Go geliştirme için şiddetle tavsiye edilir.
Adım 1: Sistem Paketlerini Güncelleme
Kuruluma başlamadan önce, sisteminizdeki mevcut paket listesini güncelleyelim ve yükseltmeleri yapalım. Bu, olası bağımlılık sorunlarını önlemeye yardımcı olacaktır.
sudo apt update
sudo apt upgrade -y
sudo apt update komutu, yerel paket indeksini uzak depolardaki en son bilgilerle senkronize ederken, sudo apt upgrade -y komutu ise sisteminizdeki tüm yüklü paketleri en yeni sürümlerine yükseltir. -y bayrağı, tüm sorulara otomatik olarak “evet” yanıtı vermenizi sağlar.
Adım 2: Gerekli Araçları Yükleme
Go ikili dosyasını indirmek ve çıkarmak için wget ve tar gibi araçlara ihtiyacımız olacak. Çoğu Debian sisteminde bu araçlar varsayılan olarak yüklü olsa da, kontrol etmek ve eksikse kurmak iyi bir uygulamadır.
sudo apt install wget tar -y
Adım 3: Go Sürümünü Seçme ve İndirme
Go’nun en son kararlı sürümünü indirmek için resmi Go web sitesini ziyaret etmeniz gerekmektedir: [https://golang.org/dl/](https://golang.org/dl/). Bu sayfada, farklı işletim sistemleri ve mimariler için mevcut ikili dosyaların listesini bulacaksınız. Debian 8 genellikle 64-bit bir sistem olduğu için “Linux” ve “x86-64” (veya “amd64”) mimarisine uygun olan sürümü arayacaksınız.
Örnek olarak, bu makalenin yazıldığı tarihteki en son kararlı sürüm go1.22.4 olsun (bu sürüm zamanla değişecektir, lütfen güncel sürümü kontrol edin). İndirme bağlantısı genellikle goX.Y.Z.linux-amd64.tar.gz formatında olacaktır.
Terminal üzerinden indirme işlemini gerçekleştirelim:
wget https://golang.org/dl/go1.22.4.linux-amd64.tar.gz
Önemli: Yukarıdaki URL’yi Go’nun resmi indirme sayfasından aldığınız en güncel sürümün URL’si ile değiştirdiğinizden emin olun.
Adım 4: İndirilen Dosyanın Bütünlüğünü Doğrulama (İsteğe Bağlı ama Önerilen)
İndirilen dosyanın bozuk olmadığından veya üzerinde oynanmadığından emin olmak için SHA256 sağlama toplamını kontrol etmek iyi bir uygulamadır. İndirme sayfasında her dosya için bir SHA256 sağlama toplamı bulunur.
Önce, indirdiğiniz dosyanın sağlama toplamını hesaplayın:
sha256sum go1.22.4.linux-amd64.tar.gz
Bu komutun çıktısını, Go’nun indirme sayfasındaki ilgili SHA256 değeriyle karşılaştırın. Eğer değerler eşleşiyorsa, dosya sağlam demektir.
Adım 5: Go Tarball Dosyasını Çıkarma
Go’nun ikili dosyalarını sisteminize uygun bir yere çıkarmanız gerekmektedir. Geleneksel olarak, Go, /usr/local/go dizinine kurulur. Bu dizin, sistem genelinde erişilebilir bir konumdur.
Önceki Go kurulumlarını temizlemek isteyebilirsiniz (eğer varsa):
sudo rm -rf /usr/local/go
Şimdi indirdiğiniz tarball dosyasını /usr/local dizinine çıkarın:
sudo tar -C /usr/local -xzf go1.22.4.linux-amd64.tar.gz
* sudo: Komutu root yetkileriyle çalıştırır.
* tar: Sıkıştırılmış arşivi açmak için kullanılan komut.
* -C /usr/local: Arşivi /usr/local dizinine çıkaracağını belirtir.
* -x: Çıkarma (extract) işlemi yapacağını belirtir.
* -z: Gzip sıkıştırmasını açacağını belirtir.
* -f: İşlem yapılacak dosyanın adını belirtir (bu durumda go1.22.4.linux-amd64.tar.gz).
Bu işlemden sonra, Go’nun tüm dosyaları /usr/local/go dizini altında bulunacaktır.
Adım 6: Ortam Değişkenlerini Yapılandırma
Go’yu kullanabilmek için bazı ortam değişkenlerini ayarlamanız gerekmektedir. Bu değişkenler, kabuk (shell) ortamınıza Go’nun nerede kurulu olduğunu ve Go projelerinizi nerede saklayacağınızı bildirir.
GOROOT, GOPATH ve PATH Değişkenleri
* GOROOT: Go’nun yüklü olduğu dizini belirtir. Varsayılan olarak /usr/local/go olacaktır.
* GOPATH: Go çalışma alanınızın kök dizinidir. Bu dizin, Go kaynak kodunuzu, derlenmiş paketleri ve Go araçlarının ikili dosyalarını sakladığınız yerdir. Genellikle kullanıcının ana dizini altında ~/go olarak ayarlanır.
* PATH: Sisteminizin çalıştırılabilir dosyaları aradığı dizinlerin listesidir. Go komutlarını terminalden doğrudan çalıştırabilmek için GOROOT/bin ve GOPATH/bin dizinlerini PATH değişkenine eklemeniz gerekir.
Bu değişkenleri ayarlamak için, genellikle kullanıcının ana dizininde bulunan kabuk yapılandırma dosyalarını (örneğin, ~/.profile, ~/.bashrc veya ~/.zshrc) düzenlemeniz gerekir. ~/.profile dosyası, oturum açtığınızda bir kez çalıştırılır ve genellikle sistem genelindeki PATH ayarları için kullanılır. ~/.bashrc ise her yeni Bash kabuk oturumu başlatıldığında çalışır. Genellikle ~/.profile tercih edilir, çünkü PATH gibi değişkenler bir kez ayarlanmalıdır.
Bir metin düzenleyici (örneğin nano veya vi) ile ~/.profile dosyasını açın:
nano ~/.profile
Dosyanın sonuna aşağıdaki satırları ekleyin:
# Go Ortam Değişkenleri
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
* export GOROOT=/usr/local/go: Go kurulum dizinini tanımlar.
* export GOPATH=$HOME/go: Go çalışma alanınızı kullanıcının ana dizinindeki go klasörü olarak ayarlar. Eğer bu klasör yoksa, Go ilk kullanıldığında otomatik olarak oluşturulacaktır.
* export PATH=$PATH:$GOROOT/bin:$GOPATH/bin: Go’nun çalıştırılabilir dosyalarının bulunduğu dizinleri (hem Go araçları hem de kendi Go projelerinizin derlenmiş çıktıları) sistem PATH’ine ekler. $PATH mevcut PATH değerini temsil eder.
Değişiklikleri kaydedin ve nano‘dan çıkın (Ctrl+O, Enter, Ctrl+X).
Yapılan değişikliklerin geçerli olması için ya oturumu kapatıp tekrar açmanız ya da aşağıdaki komutla ~/.profile dosyasını yeniden kaynaklamanız gerekir:
source ~/.profile
Adım 7: Kurulumu Doğrulama
Go’nun başarıyla kurulup kurulmadığını ve ortam değişkenlerinin doğru ayarlanıp ayarlanmadığını kontrol etmek için go version komutunu kullanın:
go version
Eğer kurulum başarılıysa, Go’nun sürüm numarasını gösteren bir çıktı almalısınız, örneğin:
go version go1.22.4 linux/amd64
Ayrıca, Go ortam değişkenlerini kontrol etmek için go env komutunu kullanabilirsiniz:
go env
Bu komut, Go’nun tüm ortam değişkenlerini listeleyecektir. GOROOT, GOPATH ve PATH değerlerinin doğru olduğundan emin olun.
Yöntem 2: Debian APT Paket Yöneticisi Kullanarak Go Kurulumu (Eski Sürüm)
Bu yöntem daha basittir ancak Debian 8’in depolarında bulunan Go sürümü muhtemelen çok eski olacaktır. Bu, modern Go geliştirme için ciddi sınırlamalara yol açabilir. Bu yöntemi yalnızca hızlı bir test ortamı kurmanız gerekiyorsa veya belirli bir eski Go sürümüne ihtiyacınız varsa düşünmelisiniz.
Adım 1: Sistem Paketlerini Güncelleme
Yine, kuruluma başlamadan önce sistem paketlerini güncelleyin:
sudo apt update
sudo apt upgrade -y
Adım 2: Go’yu Yükleme
Debian depolarından Go’yu yüklemek için aşağıdaki komutu kullanın:
sudo apt install golang -y
Bu komut, golang paketini ve onun bağımlılıklarını kuracaktır. Debian 8’in (Jessie) varsayılan depolarında bulunan Go sürümü genellikle Go 1.3 veya Go 1.4 civarında olacaktır ki bu, güncel Go 1.22+ sürümlerinden çok geridedir.
Adım 3: Kurulumu Doğrulama
Kurulumun başarılı olup olmadığını kontrol etmek için go version komutunu kullanın:
go version
Çıktı, muhtemelen şu şekilde eski bir sürüm numarasını gösterecektir:
go version go1.3.3 linux/amd64
Bu sürümle modern Go modülleri gibi özellikleri kullanamayacak veya güncel kütüphanelerle uyumsuzluk yaşayacaksınız. Bu nedenle, ciddi geliştirme projeleri için birinci yöntemi kullanmanız şiddetle tavsiye edilir.
Post-Kurulum Yapılandırması ve İlk Go Programı
Go’yu kurduktan sonra, geliştirme ortamınızı ayarlamanız ve ilk Go programınızı çalıştırmanız önemlidir.
GOPATH ve Go Çalışma Alanı
Daha önce bahsettiğimiz gibi, GOPATH değişkeni Go çalışma alanınızın kök dizinidir. Bu dizin genellikle aşağıdaki üç alt dizini içerir:
* src: Go kaynak kodunuzu (projeleriniz, kütüphaneleriniz) içerir. Her projenin kendi dizini olmalıdır (örneğin, github.com/kullaniciadi/projeadi).
* pkg: Derlenmiş paket dosyalarını içerir. Bu dosyalar, projeleriniz tarafından kullanılan kütüphanelerin önceden derlenmiş halleridir.
* bin: go install komutuyla derlenen veya Go araçları tarafından oluşturulan çalıştırılabilir ikili dosyaları içerir. PATH değişkeninize $GOPATH/bin eklemenizin nedeni budur.
Eğer $HOME/go dizinini GOPATH olarak ayarladıysanız, bu dizini oluşturmanız gerekebilir:
mkdir -p $HOME/go/{bin,pkg,src}
Bu komut, ~/go dizinini ve onun altındaki bin, pkg, ve src dizinlerini oluşturacaktır.
İlk Go Programınız: “Merhaba, Go!”
Şimdi Go kurulumunuzun doğru çalıştığından emin olmak için basit bir “Merhaba, Go!” programı yazalım.
1. Proje Dizinini Oluşturma:
Go projelerinizi GOPATH/src altında düzenlemeniz önerilir. Örneğin, myhello adında bir proje oluşturalım:
mkdir -p $GOPATH/src/myhello
cd $GOPATH/src/myhello
2. Go Kaynak Kodunu Yazma:
main.go adında bir dosya oluşturun ve içine aşağıdaki kodu ekleyin:
nano main.go
package main
import "fmt"
func main() {
fmt.Println("Merhaba, Go! Debian 8 üzerinde çalışıyorum!")
}
* package main: Bu dosyanın bir çalıştırılabilir program olduğunu belirtir.
* import "fmt": Go’nun standart kütüphanesinden “format” paketini içe aktarır. Bu paket, giriş/çıkış işlemleri için fonksiyonlar sağlar.
* func main(): Programın giriş noktasıdır.
* fmt.Println(...): Konsola bir metin yazdırır.
Değişiklikleri kaydedin ve dosyadan çıkın (Ctrl+O, Enter, Ctrl+X).
3. Programı Çalıştırma:
Go programınızı çalıştırmanın iki ana yolu vardır:
* Doğrudan Çalıştırma (go run): Kaynak kodu derler ve hemen çalıştırır, ancak derlenmiş ikili dosyayı kaydetmez.
go run main.go
Çıktı:
Merhaba, Go! Debian 8 üzerinde çalışıyorum!
* Derleme ve Çalıştırma (go build): Kaynak kodu derler ve mevcut dizinde çalıştırılabilir bir ikili dosya oluşturur.
go build main.go
Bu komut, main adında bir çalıştırılabilir dosya oluşturacaktır (veya Windows’ta main.exe). Şimdi bu dosyayı çalıştırabilirsiniz:
./main
Çıktı:
Merhaba, Go! Debian 8 üzerinde çalışıyorum!
* Kurulum ve Çalıştırma (go install): Programı derler ve $GOPATH/bin dizinine taşır. Bu, programınızın sistem genelinde erişilebilir olmasını sağlar.
go install
Şimdi, myhello komutunu herhangi bir dizinden çalıştırabilirsiniz:
myhello
Çıktı:
Merhaba, Go! Debian 8 üzerinde çalışıyorum!
Bu, go install komutunun PATH değişkeninizin $GOPATH/bin dizinini içermesi nedeniyle çalıştığını gösterir.
Go Modülleri (Modern Go İçin)
Go 1.11 ile birlikte tanıtılan Go Modülleri, bağımlılık yönetimini kökten değiştirmiştir. Eğer Go’nun güncel bir sürümünü (Yöntem 1 ile) kurduysanız, projelerinizi Go modülleri ile yönetmeniz önerilir. GOPATH tabanlı yaklaşımdan farklı olarak, Go modülleri projenin kendisiyle birlikte bağımlılıkları yönetir ve projenin herhangi bir dizinde bulunmasına olanak tanır (yani GOPATH/src altında olmak zorunda değildir).
Bir projeyi Go modülü olarak başlatmak için:
# Proje dizininize gidin (GOPATH/src altında olmak zorunda değil)
mkdir my_modern_go_app
cd my_modern_go_app
Go modülünü başlatın
go mod init my_modern_go_app
Bu komut, go.mod adında bir dosya oluşturacak ve bu dosya projenizin bağımlılıklarını ve Go sürümünü takip edecektir. Bağımlılıkları (örneğin, üçüncü taraf kütüphaneleri) eklediğinizde, go get veya go build gibi komutlar otomatik olarak go.mod ve go.sum dosyalarını güncelleyecektir.
Debian 8’deki APT deposundan kurulan eski Go sürümleri Go modüllerini desteklemeyecektir. Bu nedenle, modül tabanlı geliştirme yapmak istiyorsanız kesinlikle Yöntem 1’i kullanmalısınız.
Go Komutları ve Araçları
Go, geliştirme sürecini kolaylaştıran bir dizi yerleşik komut ve araçla birlikte gelir:
* go run : Tek bir Go kaynak dosyasını derler ve çalıştırır.
* go build [paket]: Bir Go paketini veya dosyalarını derler ve çalıştırılabilir bir ikili dosya oluşturur.
* go install [paket]: Bir Go paketini derler ve $GOPATH/bin (veya modüller kullanılıyorsa GOBIN) dizinine kurar.
* go get [paket]: Uzak bir Go paketini (örneğin GitHub’dan) indirir ve $GOPATH/src dizinine yerleştirir. Modüllerle birlikte, bağımlılıkları go.mod dosyasına ekler.
* go test [paket]: Go paketlerinin testlerini çalıştırır.
* go fmt [paket]: Go kaynak kodunu standart Go biçimlendirme kurallarına göre biçimlendirir.
* go doc [paket]: Go paketleri veya sembolleri hakkında belge gösterir.
* go clean [paket]: Derlenmiş önbellek dosyalarını ve derlenmiş ikili dosyaları kaldırır.
* go mod [alt komut]: Go modülleriyle ilgili işlemleri yönetir (örneğin go mod init, go mod tidy).
* go env: Go ortam değişkenlerini gösterir.
Sık Karşılaşılan Sorunlar ve Çözümleri
* go: command not found: Bu hata genellikle PATH ortam değişkeninin yanlış ayarlandığını gösterir. ~/.profile (veya ~/.bashrc) dosyanızı kontrol edin ve GOROOT/bin ile GOPATH/bin dizinlerinin PATH içinde olduğundan emin olun. Değişiklik yaptıktan sonra source ~/.profile komutunu çalıştırmayı unutmayın.
* Yanlış Go Sürümü: go version komutu beklediğinizden daha eski bir sürüm gösteriyorsa, muhtemelen APT ile eski bir Go sürümünü kurdunuz veya PATH değişkeniniz yanlışlıkla eski bir Go kurulumunu işaret ediyor olabilir. Yöntem 1’i kullanarak güncel sürümü kurduğunuzdan ve PATH değişkeninizin doğru şekilde güncellendiğinden emin olun. Eski kurulumları kaldırmak (örneğin /usr/local/go ve APT ile kurulu golang paketi) yardımcı olabilir.
* İzin Sorunları: sudo kullanmadan Go’yu /usr/local gibi sistem dizinlerine çıkarmaya çalışırsanız izin hataları alabilirsiniz. Her zaman sudo kullandığınızdan emin olun.
* Ağ Sorunları: wget veya go get komutları çalışmıyorsa, internet bağlantınızı veya proxy ayarlarınızı kontrol edin.
* GOPATH Sorunları: Go projeleriniz bulunamıyor veya bağımlılıklar indirilemiyorsa, GOPATH değişkeninizin doğru ayarlandığından ve projenizin GOPATH/src altında doğru bir dizin yapısına sahip olduğundan emin olun (eski Go sürümleri için). Modüllerle çalışıyorsanız go mod init komutunu çalıştırmayı unutmayın.
Go Kurulumunu Güncelleme (Resmi İkili Dosyalar İçin)
Eğer Go’yu resmi ikili dosyalarla kurduysanız ve daha yeni bir sürüme geçmek istiyorsanız, süreç oldukça basittir:
1. Mevcut Go Kurulumunu Kaldırma:
Mevcut Go dizinini silin:
sudo rm -rf /usr/local/go
2. Yeni Go Sürümünü İndirme:
Go’nun resmi indirme sayfasından en son kararlı sürümün tarball’ını indirin (Adım 3’teki gibi).
wget https://golang.org/dl/goX.Y.Z.linux-amd64.tar.gz
(X.Y.Z yerine yeni sürüm numarasını yazın)
3. Yeni Go Sürümünü Çıkarma:
İndirdiğiniz yeni tarball’ı /usr/local dizinine çıkarın (Adım 5’teki gibi).
sudo tar -C /usr/local -xzf goX.Y.Z.linux-amd64.tar.gz
4. Kurulumu Doğrulama:
go version komutuyla yeni sürümün başarıyla kurulduğunu kontrol edin. Ortam değişkenleriniz zaten ayarlı olduğu için ek bir yapılandırmaya gerek kalmayacaktır.
Sonuç
Bu kapsamlı rehberde, Debian 8 (Jessie) işletim sistemi üzerine Go programlama dilinin nasıl kurulacağını detaylı bir şekilde öğrendiniz. Go’nun eski sürümlerini sunan APT paket yöneticisi yerine, Go’nun en güncel ve kararlı sürümünü resmi ikili dosyalar aracılığıyla kurmanın neden daha iyi bir seçenek olduğunu ve bu yöntemin adımlarını titizlikle uyguladık. Ortam değişkenlerinin doğru yapılandırılması, Go çalışma alanının anlaşılması ve ilk “Merhaba, Go!” programınızı çalıştırma konularına değindik. Ayrıca, sık karşılaşılan sorunları ve Go’yu güncelleme yöntemlerini de inceledik.
Artık Debian 8 sisteminizde güçlü ve verimli Go programları geliştirmeye hazırsınız. Go’nun zengin ekosistemini keşfetmek ve projelerinizi hayata geçirmek için resmi Go belgelerini ve geniş Go topluluğunu kaynak olarak kullanmaya devam edebilirsiniz. Başarılar dileriz!
