Takip et

Go Dili Neden Tercih Edilmeli? Temel Kavramlar Nelerdir?

Ubuntu’da Go Dili Nasıl Kurulur? Kapsamlı Kurulum Rehberi

Ubuntu işletim sisteminde Go programlama dilini kurmak, modern ve performanslı uygulamalar geliştirmek isteyenler için kritik bir adımdır. Bu kapsamlı rehber, Go’yu sıfırdan kurmanız, ortam değişkenlerini yapılandırmanız ve ilk Go programınızı çalıştırmanız için adım adım yol gösterecektir.

Go Dili Neden Tercih Edilmeli? Temel Kavramlar Nelerdir?

Günümüz yazılım dünyasında, hızlı, güvenilir ve ölçeklenebilir uygulamalar geliştirmek her zamankinden daha önemli hale gelmiştir. İşte tam da bu noktada, Google tarafından geliştirilen açık kaynaklı bir programlama dili olan Go (genellikle Golang olarak da anılır), geliştiricilere güçlü bir alternatif sunmaktadır. Peki, Go’yu bu kadar cazip kılan temel özellikler nelerdir ve neden tercih etmelisiniz?

Öncelikle, Go’nun en belirgin özelliklerinden biri eşzamanlılık (concurrency) modelidir. Go, “goroutine” adı verilen hafif iş parçacıkları ve “channel” adı verilen iletişim kanalları sayesinde eşzamanlı programlamayı son derece kolay ve verimli hale getirir. Bu, özellikle çok çekirdekli işlemcilerden tam verim almak ve aynı anda birden fazla görevi işlemek isteyen sunucu uygulamaları, mikro hizmetler ve ağ servisleri için büyük bir avantaj sağlar. Geleneksel dillerdeki karmaşık iş parçacığı yönetimi ve kilitlenme sorunları, Go’nun basit ve güvenli eşzamanlılık modeliyle büyük ölçüde ortadan kalkar. Bu sayede, geliştiriciler daha az hata ile daha performanslı sistemler inşa edebilirler.

İkinci olarak, Go performans açısından oldukça iddialıdır. C veya C++ gibi düşük seviyeli dillere yakın bir performans sunarken, Python veya JavaScript gibi daha yüksek seviyeli dillerin geliştirme kolaylığını bir araya getirir. Go, derlenmiş bir dildir, yani kodunuz doğrudan makine koduna dönüştürülür ve bu da çalışma zamanı performansını artırır. Ayrıca, Go’nun çöp toplayıcısı (garbage collector) oldukça verimlidir ve uygulamanızın duraklama sürelerini minimize eder. Bu kombinasyon, özellikle düşük gecikme süresi gerektiren sistemler ve yüksek işlem hacmine sahip uygulamalar için Go’yu ideal bir seçim haline getirir.

Üçüncü olarak, Go’nun basitliği ve okunabilirliği, geliştirici verimliliğini artıran önemli faktörlerdir. Dilin sözdizimi oldukça minimalisttir ve öğrenmesi kolaydır. Az sayıda anahtar kelime ve net bir yapıya sahip olması, yeni başlayanların hızla adapte olmasını sağlarken, deneyimli geliştiricilerin de karmaşık sistemleri daha anlaşılır bir şekilde yazmasına olanak tanır. Go’nun standart kütüphanesi oldukça zengindir ve ağ işlemleri, kriptografi, dosya sistemleri gibi birçok temel görevi kolayca halletmenizi sağlar. Bu basitlik, aynı zamanda kod tabanlarının bakımını ve işbirliğini de kolaylaştırır.

Son olarak, Go’nun statik derleme özelliği, dağıtım süreçlerini basitleştirir. Go ile derlenen bir uygulama, genellikle tüm bağımlılıklarını tek bir yürütülebilir dosyada (binary) barındırır. Bu, uygulamanızı farklı sunuculara veya ortamlara taşırken bağımlılık sorunlarıyla uğraşma ihtiyacını ortadan kaldırır. Tek bir dosya, kurulumu ve dağıtımı son derece kolay hale getirir, bu da özellikle konteyner tabanlı (Docker gibi) veya bulut ortamlarında (Kubernetes gibi) çalışan uygulamalar için büyük bir avantajdır. Bu özellikler bütünü, Go’yu modern yazılım geliştirme için vazgeçilmez bir araç haline getirmektedir.

Ubuntu’da Go Kurulumu İçin Ön Hazırlıklar Nelerdir?

Ubuntu işletim sisteminde Go programlama dilini kurmaya başlamadan önce, sorunsuz bir kurulum süreci için bazı ön hazırlıklar yapmak faydalı olacaktır. Bu adımlar, sisteminizin Go için uygun olduğundan emin olmanızı ve olası çakışmaları veya hataları önlemenize yardımcı olacaktır. Bu bölüm, sistem gereksinimlerinden mevcut kurulumları kontrol etmeye kadar her şeyi kapsayacaktır.

İlk olarak, sisteminizin Go’yu çalıştırabilecek temel gereksinimleri karşıladığından emin olmalısınız. Go, modern bir programlama dili olduğundan, genellikle güncel donanım ve yazılım üzerinde sorunsuz çalışır. Ubuntu’nun son LTS (Uzun Süreli Destek) sürümlerinden birini kullanmanız şiddetle tavsiye edilir (örneğin Ubuntu 20.04 LTS veya 22.04 LTS). Bu sürümler, kararlılık ve güvenlik güncellemeleri açısından daha avantajlıdır. Donanım tarafında ise, Go’nun kendisi çok ağır bir dil olmasa da, geliştireceğiniz uygulamaların karmaşıklığına bağlı olarak yeterli RAM ve işlemci gücüne sahip olmak, özellikle derleme süreleri ve testler sırasında performansı artıracaktır. Genellikle 4GB RAM ve çift çekirdekli bir işlemci başlangıç için yeterli olacaktır, ancak daha büyük projeler için daha fazlası önerilir.

İkinci önemli adım, sisteminizde daha önce Go’nun kurulu olup olmadığını kontrol etmektir. Bazen farklı yöntemlerle (örneğin snap veya farklı bir paket yöneticisiyle) Go kurulmuş olabilir ve bu durum yeni bir kurulumla çakışmalara yol açabilir. Mevcut Go sürümünü kontrol etmek için terminali açıp aşağıdaki komutu çalıştırabilirsiniz:

go version

Eğer bu komut “command not found” (komut bulunamadı) hatası veriyorsa, sisteminizde Go kurulu değildir ve doğrudan kuruluma geçebilirsiniz. Eğer bir sürüm numarası görüyorsanız, örneğin “go version go1.18.1 linux/amd64”, bu durumda mevcut kurulumu kaldırmayı düşünebilirsiniz. Özellikle farklı Go projeleri farklı sürümler gerektirebiliyorsa, sürüm yöneticileri kullanmak daha iyi bir strateji olabilir. Ancak bu rehberde, sıfırdan ve tek bir Go sürümü kurmaya odaklanacağız.

Üçüncü olarak, paket yöneticinizi güncellemek, herhangi bir yazılım kurulumundan önce iyi bir alışkanlıktır. Ubuntu, APT (Advanced Package Tool) paket yöneticisini kullanır. Sisteminizin paket listesini güncellemek ve mevcut paketleri yükseltmek için aşağıdaki komutları kullanın:

sudo apt update
sudo apt upgrade -y

Bu komutlar, sisteminizin en güncel paket bilgilerine sahip olmasını sağlar ve kurulum sırasında oluşabilecek bağımlılık sorunlarını minimize eder. Ayrıca, kurulum için gerekli olabilecek bazı temel araçların (örneğin wget veya tar) sisteminizde bulunduğundan emin olun. Genellikle bu araçlar Ubuntu’da varsayılan olarak gelir, ancak eksik olmaları durumunda sudo apt install wget tar -y komutuyla kolayca kurabilirsiniz.

Son olarak, Go’yu kurmak için iki ana yöntem bulunmaktadır: Ubuntu’nun resmi depolarından paket yöneticisi aracılığıyla veya Go’nun resmi web sitesinden indirilen tar.gz arşivi aracılığıyla. Resmi depolar genellikle daha eski bir Go sürümünü sunarken, resmi arşiv en güncel sürümü edinmenizi sağlar. Bu rehberde, en güncel ve esnek kurulumu sağladığı için resmi arşiv yöntemini tercih edeceğiz. Bu ön hazırlıklar tamamlandığında, Go’yu Ubuntu’ya sorunsuz bir şekilde kurmaya hazırsınız demektir.

Resmi Go Arşivini Kullanarak Adım Adım Kurulum Nasıl Yapılır?

Go programlama dilini Ubuntu’ya kurmanın en güncel ve önerilen yolu, Go’nun resmi web sitesinden indirilen ikili (binary) arşivi kullanmaktır. Bu yöntem, size Go’nun en son kararlı sürümünü sunar ve kurulum üzerinde daha fazla kontrol sağlar. Şimdi, bu adımları detaylı bir şekilde inceleyelim ve sisteminize Go’yu nasıl kuracağınızı öğrenelim.

Adım 1: Go İkili Arşivini İndirme

İlk olarak, Go’nun resmi indirme sayfasını ziyaret etmeniz veya doğrudan terminal üzerinden en son sürümü indirmeniz gerekmektedir. Terminal üzerinden indirmek için wget komutunu kullanacağız. Go’nun güncel sürümünü öğrenmek için go.dev/dl adresini kontrol edebilirsiniz. Genellikle, go1.x.x.linux-amd64.tar.gz formatında bir dosya bulunur. Aşağıdaki örnekte, varsayımsal bir sürüm numarası kullanılmıştır; siz güncel sürüm numarasını kontrol ederek değiştirmelisiniz:

wget https://go.dev/dl/go1.22.2.linux-amd64.tar.gz

Bu komut, Go’nun sıkıştırılmış dosyasını mevcut dizininize indirecektir. İndirme işlemi tamamlandığında, bir sonraki adıma geçebiliriz.

Adım 2: Arşivi Çıkartma ve Kurulum Dizini Oluşturma

İndirdiğiniz .tar.gz dosyasını, Go’nun sisteminizde bulunacağı konuma çıkartmanız gerekmektedir. Geleneksel olarak, Go’yu /usr/local dizini altına kurmak tercih edilir. Bu, Go’nun sistem genelinde erişilebilir olmasını sağlar. Arşivi bu dizine çıkarmak için aşağıdaki komutu kullanın:

sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.22.2.linux-amd64.tar.gz

İlk komut, daha önceki bir Go kurulumunu (eğer varsa) /usr/local/go dizininden temizler. Bu, temiz bir kurulum yapmanızı sağlar. İkinci komut ise indirdiğiniz arşivi /usr/local dizinine çıkartır. -C bayrağı, çıkarma işleminin hedef dizinini belirtir. -x bayrağı arşivi çıkarmak, -z gzip sıkıştırmasını açmak ve -f ise dosya adını belirtmek içindir. Bu işlemden sonra, Go’nun tüm dosyaları /usr/local/go dizini altında bulunacaktır.

Adım 3: Ortam Değişkenlerini Yapılandırma

Go’yu sistem genelinde kullanılabilir hale getirmek için, bazı ortam değişkenlerini ayarlamanız gerekmektedir. Bu değişkenler, kabuğunuza (shell) Go komutlarının nerede bulunduğunu ve Go projelerinizin nerede depolanacağını bildirir. Bu değişkenleri kullanıcı profilinize eklemek, her oturum açtığınızda otomatik olarak yüklenmelerini sağlar. Genellikle ~/.profile veya ~/.bashrc dosyasına eklenirler. Biz ~/.profile dosyasını tercih edeceğiz, çünkü bu dosya hem oturum açtığınızda hem de GUI ortamlarında çalışır.

Bir metin düzenleyici ile ~/.profile dosyasını açın (örneğin nano):

nano ~/.profile

Dosyanın sonuna aşağıdaki satırları ekleyin:

export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
  • GOROOT: Go SDK’sının yüklü olduğu dizini belirtir.
  • GOPATH: Go çalışma alanınızın kök dizinidir. Go modüllerinden önce bağımlılıklar ve derlenmiş ikililer burada depolanırdı. Modern Go projelerinde modüller tercih edilse de, GOPATH hala bazı araçlar ve eski projeler için gereklidir. Bu dizin genellikle $HOME/go olarak ayarlanır.
  • PATH: İşletim sisteminizin yürütülebilir dosyaları aradığı dizinleri listeler. $GOROOT/bin ve $GOPATH/bin dizinlerini PATH‘e ekleyerek, Go komutlarını (go, gofmt vb.) ve kendi yazdığınız Go programlarının derlenmiş ikililerini herhangi bir yerden çalıştırabilirsiniz.

Değişiklikleri kaydedip dosyayı kapatın (Ctrl+O, Enter, Ctrl+X).

Değişikliklerin etkili olması için kabuğunuzu yeniden yüklemeniz veya oturumu kapatıp tekrar açmanız gerekir. En kolay yol, aşağıdaki komutu çalıştırmaktır:

source ~/.profile

Bu komut, ~/.profile dosyasındaki ayarları mevcut kabuk oturumunuza yükleyecektir. Bu kurulum adımları tamamlandığında, Go geliştirme ortamınızın temelini atmış olursunuz. Artık Go’nun gücünden faydalanmaya hazırsınız demektir.

Kurulumu Doğrulama ve İlk Go Programınızı Çalıştırma

Go’yu Ubuntu sisteminize başarıyla kurduktan ve ortam değişkenlerini ayarladıktan sonra, kurulumun doğru bir şekilde yapıldığından emin olmanız ve Go’nun temel işlevselliğini test etmeniz gerekir. Bu adım, hem Go’nun düzgün çalıştığını doğrulamak hem de ilk “Merhaba Dünya” programınızı yazarak geliştirme sürecine hızlı bir başlangıç yapmanızı sağlamak için kritik öneme sahiptir.

İlk olarak, Go’nun sisteminizde tanınıp tanınmadığını ve doğru sürümün yüklendiğini kontrol edelim. Terminalinizi açın ve aşağıdaki komutu çalıştırın:

go version

Eğer kurulum başarılı olduysa, bu komut Go’nun yüklü sürümünü göstermelidir, örneğin: go version go1.22.2 linux/amd64. Eğer “command not found” (komut bulunamadı) gibi bir hata alırsanız, bu genellikle PATH ortam değişkeninizin doğru ayarlanmadığı anlamına gelir. Bu durumda, önceki bölümdeki “Ortam Değişkenlerini Yapılandırma” adımını dikkatlice gözden geçirmeniz ve source ~/.profile komutunu tekrar çalıştırmanız gerekebilir. Ayrıca, GOROOT ve GOPATH değişkenlerinin de doğru ayarlandığından emin olmak için aşağıdaki komutları kullanabilirsiniz:

echo $GOROOT
echo $GOPATH

Bu komutlar, ayarladığınız yolları göstermelidir (örneğin, /usr/local/go ve /home/kullanici_adiniz/go). Her şey doğru görünüyorsa, Go’nun temel araçlarını kullanmaya hazırsınız demektir.

Şimdi, Go’nun temel işleyişini test etmek için klasik “Merhaba Dünya” programını yazalım. Öncelikle, Go projeleriniz için bir çalışma dizini oluşturalım. GOPATH ortam değişkeninizi $HOME/go olarak ayarladığımızı varsayarsak, bu dizin altında bir proje klasörü oluşturabiliriz:

mkdir -p $HOME/go/src/hello
cd $HOME/go/src/hello

Bu komutlar, hello adında bir dizin oluşturacak ve bu dizine geçiş yapacaktır. Şimdi, bu dizinde main.go adında yeni bir dosya oluşturalım ve aşağıdaki kodu içine yazalım. Bir metin düzenleyici kullanabilirsiniz, örneğin nano:

nano main.go

Dosyanın içine aşağıdaki Go kodunu yapıştırın:

package main

import "fmt"

func main() {
    fmt.Println("Merhaba Dunya! Go kurulumu basarili.")
}

Kodu kaydettikten sonra (Ctrl+O, Enter, Ctrl+X), programı çalıştırmak için terminalde aşağıdaki komutu kullanın:

go run main.go

Eğer her şey yolundaysa, terminalde Merhaba Dunya! Go kurulumu basarili. çıktısını görmelisiniz. Bu, Go derleyicisinin ve çalışma zamanının düzgün çalıştığını gösterir.

go run komutu, kaynak kodunuzu derler ve hemen çalıştırır, ancak yürütülebilir bir dosya oluşturmaz. Eğer bir yürütülebilir dosya oluşturmak isterseniz, go build komutunu kullanabilirsiniz:

go build main.go

Bu komut, bulunduğunuz dizinde main (Linux/macOS) veya main.exe (Windows) adında bir yürütülebilir dosya oluşturacaktır. Bu dosyayı doğrudan çalıştırabilirsiniz:

./main

Yine aynı çıktıyı görmelisiniz. Bu adımları başarıyla tamamlamak, Go geliştirme ortamınızın tamamen işlevsel olduğunu ve Go ile kod yazmaya başlayabileceğinizi doğrular. Artık Go’nun sunduğu tüm olanaklardan faydalanmak için hazırsınız.

Go Geliştirme Ortamınızı Optimize Etme ve İleri Düzey İpuçları

Go’yu Ubuntu’ya kurduktan ve ilk programınızı çalıştırdıktan sonra, geliştirme deneyiminizi daha verimli ve keyifli hale getirmek için Go geliştirme ortamınızı optimize etmeniz önemlidir. Bu bölüm, deneyimli kullanıcılar için de faydalı olacak ileri düzey ipuçları ve araç entegrasyonlarını içerecektir. Modern Go projeleri genellikle modüllerle yönetildiğinden, bu konuya da değineceğiz.

IDE ve Editör Kurulumu

Verimli bir Go geliştirme süreci için doğru IDE (Entegre Geliştirme Ortamı) veya kod editörü seçimi büyük fark yaratır. İşte en popüler seçeneklerden bazıları:

  1. Visual Studio Code (VS Code): Microsoft tarafından geliştirilen bu hafif ancak güçlü editör, Go geliştiricileri arasında oldukça popülerdir. Go eklentisi sayesinde akıllı tamamlama (IntelliSense), hata ayıklama (debugging), kod biçimlendirme (formatting) ve linting gibi birçok özelliğe sahip olursunuz.

    # VS Code kurulumu (eğer kurulu değilse)
    sudo apt install software-properties-common apt-transport-https wget -y
    wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -
    sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"
    sudo apt update
    sudo apt install code -y
    
    # VS Code'u açtıktan sonra Go eklentisini kurun.
    # Eklentiyi kurduktan sonra, VS Code size Go araçlarını yüklemenizi önerecektir.
    # Terminalde aşağıdaki komutu çalıştırarak da manuel olarak yükleyebilirsiniz:
    go install golang.org/x/tools/gopls@latest
    go install github.com/go-delve/delve/cmd/dlv@latest
    # ... ve diğer araçlar (gofmt, golint vb.)
    
  2. GoLand: JetBrains tarafından Go için özel olarak geliştirilmiş ücretli bir IDE’dir. Çok daha zengin özellik setine, mükemmel refactoring yeteneklerine ve derinlemesine entegre hata ayıklayıcıya sahiptir. Büyük projeler ve profesyonel geliştirme için idealdir. Kurulumu, JetBrains Toolbox uygulaması üzerinden veya doğrudan indirilerek yapılabilir.

Hangi editörü seçerseniz seçin, Go araçlarının (gopls, dlv, gofmt vb.) doğru bir şekilde yüklendiğinden emin olun. Bu araçlar, geliştirme deneyiminizi büyük ölçüde iyileştirir.

Go Modülleri ile Bağımlılık Yönetimi

Go 1.11 ile birlikte tanıtılan Go Modülleri, Go projelerinde bağımlılık yönetimini devrim niteliğinde basitleştirdi. Artık GOPATH dışındaki herhangi bir dizinde proje oluşturabilir ve bağımlılıklarınızı go.mod ve go.sum dosyalarıyla yönetebilirsiniz. Bu, farklı projelerin farklı bağımlılık sürümlerini kullanmasını kolaylaştırır.

Yeni bir Go modülü projesi başlatmak için:

mkdir my-go-app
cd my-go-app
go mod init github.com/kullaniciadi/my-go-app # Modül yolunuzu belirtin

Bu komut, projenizin kök dizininde bir go.mod dosyası oluşturacaktır. Bir bağımlılık eklediğinizde (örneğin, kodunuzda yeni bir paket içe aktardığınızda ve derlediğinizde), Go otomatik olarak bu bağımlılığı go.mod dosyasına ekler ve indirir. Tüm bağımlılıkları indirmek ve temizlemek için:

go mod tidy

Go modülleri, projelerinizin daha izole ve yönetilebilir olmasını sağlar, bu da özellikle büyük ekiplerde ve açık kaynak projelerde işbirliğini kolaylaştırır.

Çapraz Derleme (Cross-Compilation)

Go’nun en güçlü özelliklerinden biri de çapraz derleme yeteneğidir. Kendi makinenizde (örneğin Linux) farklı bir işletim sistemi veya mimari için yürütülebilir dosyalar oluşturabilirsiniz. Bu, özellikle dağıtım süreçlerini basitleştirir ve farklı platformlara kolayca uygulama göndermenizi sağlar.

Örneğin, Linux makinenizde Windows için bir uygulama derlemek isterseniz:

GOOS=windows GOARCH=amd64 go build -o myapp.exe main.go

Mac için derlemek isterseniz:

GOOS=darwin GOARCH=amd64 go build -o myapp main.go

Bu komutlar, belirtilen hedef platform için yürütülebilir dosyalar oluşturacaktır. GOOS hedef işletim sistemini (linux, windows, darwin vb.), GOARCH ise hedef mimariyi (amd64, arm64 vb.) belirtir. Bu özellik, Go’yu bulut tabanlı uygulamalar, IoT cihazları ve mikro hizmetler için ideal bir seçim haline getirir.

Vaka Analizi: Mikro Hizmet Geliştirme

Bir e-ticaret platformu için ürün katalog servisi geliştirdiğinizi düşünün. Bu servis, ürün bilgilerini veritabanından alıp API üzerinden sunacak. Go’nun eşzamanlılık yetenekleri ve performans avantajları, bu tür bir mikro hizmet için mükemmeldir. VS Code veya GoLand gibi bir IDE kullanarak, hızlıca bir HTTP sunucusu kurabilir, veritabanı bağlantılarını yönetebilir ve API uç noktalarını tanımlayabilirsiniz. Go modülleri sayesinde, veritabanı sürücüleri (örneğin github.com/lib/pq PostreSQL için) ve HTTP router kütüphaneleri (örneğin github.com/gorilla/mux) gibi bağımlılıkları kolayca ekleyebilirsiniz. Çapraz derleme ile, bu mikro hizmeti farklı bulut sağlayıcılarının farklı işletim sistemlerine sahip sunucularına tek bir komutla kolayca dağıtabilirsiniz.

Bu ileri düzey ipuçları ve araçlar, Go geliştirme sürecinizi optimize etmenize ve daha karmaşık, ölçeklenebilir ve platformlar arası uygulamalar geliştirmenize olanak tanır. Go ekosistemi sürekli geliştiği için, güncel kalmak ve yeni araçları keşfetmek her zaman faydalıdır.

Go Kurulumunda Karşılaşılabilecek Yaygın Sorunlar ve Çözümleri

Go’yu Ubuntu’ya kurarken, bazı yaygın sorunlarla karşılaşmak olasıdır. Bu sorunlar genellikle ortam değişkenleri, izinler veya mevcut kurulumlarla ilgili olabilir. Bu bölümde, bu yaygın sorunları ve bunların nasıl çözüleceğini detaylı bir şekilde ele alacağız, böylece sorunsuz bir geliştirme deneyimi sağlayabilirsiniz.

Sorun 1: “go: command not found” Hatası

Bu, Go kurulumunda karşılaşılan en yaygın sorundur. Terminalde go version veya herhangi bir go komutunu çalıştırdığınızda bu hatayı alıyorsanız, işletim sisteminizin Go yürütülebilir dosyasının nerede olduğunu bulamadığı anlamına gelir. Bu genellikle PATH ortam değişkeninin yanlış ayarlanmasından kaynaklanır.

Çözüm:

  1. Ortam Değişkenlerini Kontrol Edin: Öncelikle, ~/.profile (veya ~/.bashrc/~/.zshrc kullandığınız kabuğa göre) dosyanızı kontrol edin. GOROOT, GOPATH ve PATH değişkenlerinin doğru ayarlandığından emin olun:

    export GOROOT=/usr/local/go
    export GOPATH=$HOME/go
    export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
    

    GOROOT‘un Go’yu kurduğunuz dizini (genellikle /usr/local/go) doğru gösterdiğinden emin olun.

  2. Kabuğu Yeniden Yükleyin: Değişiklikleri kaydettikten sonra, kabuğunuzu yeniden yüklemeniz gerekir. Mevcut oturumunuzda bunu yapmak için:

    source ~/.profile # Veya kullandığınız dosya (örneğin source ~/.bashrc)
    

    En kesin çözüm, terminali kapatıp yeniden açmak veya oturumu kapatıp tekrar açmaktır.

  3. Go Dizinini Kontrol Edin: Go’nun gerçekten /usr/local/go dizinine çıkarıldığından emin olun. Bu dizin yoksa veya boşsa, kurulum adımını tekrar gözden geçirmeniz gerekebilir.

Sorun 2: İzin Hataları (Permission Denied)

Go’yu /usr/local gibi sistem dizinlerine kurarken veya Go modülleri indirirken izin hatalarıyla karşılaşabilirsiniz. Örneğin, sudo tar -C /usr/local -xzf ... komutunu sudo olmadan çalıştırmaya çalışmak veya Go’nun bazı araçları indirmesine izin verilmemesi gibi durumlar.

Çözüm:

  1. sudo Kullanımı: Sistem dizinlerine yazma veya değişiklik yapma gerektiren komutlar için her zaman sudo kullanın. Go’yu /usr/local dizinine çıkartırken sudo kullanmak zorunludur.
  2. GOPATH İzinleri: GOPATH dizininizin (varsayılan olarak $HOME/go) ve içindeki alt dizinlerin (bin, pkg, src) mevcut kullanıcınız tarafından yazılabilir olduğundan emin olun. Genellikle bu dizinler ev dizininizde olduğu için sorun olmaz, ancak manuel olarak farklı bir yere kurduysanız izinleri kontrol edin:

    ls -ld $HOME/go
    

    Gerekirse izinleri düzeltin:

    sudo chown -R $USER:$USER $HOME/go
    

    Bu komut, $HOME/go dizininin ve altındaki tüm dosyaların sahipliğini mevcut kullanıcınıza verir.

Sorun 3: Birden Fazla Go Sürümü Çakışması

Sisteminizde daha önce farklı bir yöntemle (örneğin apt veya Snap) Go’nun eski bir sürümü kurulu olabilir. Bu, yeni kurduğunuz sürümle çakışmalara yol açabilir ve beklenmedik davranışlara neden olabilir.

Çözüm:

  1. Mevcut Kurulumları Kaldırma: Eğer Go’yu apt ile kurduysanız:

    sudo apt remove golang-go
    sudo apt autoremove
    

    Eğer Snap ile kurduysanız:

    sudo snap remove go
    

    /usr/local/go dizinini de temizlediğinizden emin olun (kurulum adımlarındaki sudo rm -rf /usr/local/go komutunu tekrar çalıştırabilirsiniz).

  2. PATH Sırası: Eğer birden fazla Go sürümünü yönetmek istiyorsanız (ki bu genellikle sürüm yöneticileri ile yapılır), PATH ortam değişkeninizdeki dizinlerin sırası önemlidir. İlk bulunan Go yürütülebilir dosyası kullanılacaktır. Genellikle, manuel kurduğunuz Go sürümünün yolunun ($GOROOT/bin) PATH‘te diğerlerinden önce gelmesi istenir.

Sorun 4: Modül İndirme Hataları (Proxy veya Ağ Sorunları)

go get veya go mod tidy gibi komutlarla bağımlılıkları indirirken ağ veya proxy ile ilgili sorunlar yaşayabilirsiniz.

Çözüm:

  1. Ağ Bağlantısını Kontrol Edin: İnternet bağlantınızın aktif olduğundan emin olun.
  2. Proxy Ayarları: Eğer bir proxy arkasındaysanız, Go’nun proxy’yi kullanması için ortam değişkenlerini ayarlamanız gerekebilir:

    export HTTP_PROXY="http://proxy.example.com:8080"
    export HTTPS_PROXY="http://proxy.example.com:8080"
    export NO_PROXY="localhost,127.0.0.1" # İsteğe bağlı
    

    Bu değişkenleri ~/.profile dosyanıza ekleyip kabuğunuzu yeniden yüklemeniz gerekebilir.

  3. Go Proxy: Go, modülleri indirirken varsayılan olarak proxy.golang.org adresini kullanır. Bu proxy’ye erişimde sorun yaşıyorsanız, GOPROXY ortam değişkenini değiştirebilir veya devre dışı bırakabilirsiniz (ancak bu önerilmez):

    export GOPROXY=direct # Doğrudan kaynaklardan indirme
    

    Bu yaygın sorunları ve çözümlerini bilmek, Go kurulum sürecinizi daha pürüzsüz hale getirecek ve karşılaştığınız engelleri hızla aşmanıza yardımcı olacaktır. Herhangi bir sorunla karşılaştığınızda, hata mesajlarını dikkatlice okumak ve internette arama yapmak da çok faydalıdır.

    Sonuç ve Sıkça Sorulan Sorular

    Bu kapsamlı rehber boyunca, Go programlama dilini Ubuntu işletim sisteminize nasıl kuracağınızı, ortam değişkenlerini nasıl yapılandıracağınızı ve ilk “Merhaba Dünya” programınızı nasıl çalıştıracağınızı adım adım öğrendiniz. Ayrıca, geliştirme ortamınızı optimize etmek için ileri düzey ipuçlarını, Go modüllerini ve çapraz derleme yeteneklerini inceledik. Karşılaşılabilecek yaygın sorunlara ve bunların çözümlerine de değinerek, Go geliştirme yolculuğunuz için sağlam bir temel oluşturduk. Go’nun eşzamanlılık, performans ve basitlik gibi güçlü yönleri, onu modern yazılım geliştirme için vazgeçilmez bir araç haline getirmektedir. Artık bu bilgilere sahip olarak, Go ile kendi projelerinizi geliştirmeye başlayabilir ve bu dinamik dilin sunduğu avantajlardan tam anlamıyla faydalanabilirsiniz. Unutmayın, pratik yapmak ve Go topluluğunun kaynaklarından faydalanmak, öğrenme sürecinizi hızlandıracaktır.

    Sıkça Sorulan Sorular (SSS)

    1. Go’yu Ubuntu’nun depolarından kurmak yerine neden resmi arşivi tercih etmeliyim?

      Ubuntu’nun resmi depolarındaki Go paketi genellikle Go’nun daha eski bir sürümüdür. Resmi arşivi kullanmak, size Go’nun en son kararlı sürümünü sunar, bu da en yeni özelliklere ve performans iyileştirmelerine erişmenizi sağlar. Ayrıca, bu yöntem kurulum üzerinde daha fazla kontrol imkanı sunar.

    2. GOROOT ve GOPATH arasındaki fark nedir?

      GOROOT, Go SDK’sının yüklü olduğu dizini (örneğin /usr/local/go) belirtir. Bu, Go’nun derleyicisi ve standart kütüphanelerinin bulunduğu yerdir. GOPATH ise Go çalışma alanınızın kök dizinidir (varsayılan olarak $HOME/go). Go modüllerinden önce, bağımlılıklar ve kendi projeleriniz bu dizin altında depolanırdı. Modern Go modülleri ile birlikte GOPATH‘ın önemi azalmış olsa da, bazı araçlar ve eski projeler için hala gereklidir ve go install ile derlenen ikililer $GOPATH/bin altında yer alır.

    3. Go kurulumumu nasıl güncelleyebilirim?

      Go’yu manuel olarak resmi arşivden kurduysanız, güncelleme işlemi de benzer şekilde yapılır. Yeni sürümün .tar.gz dosyasını indirin ve mevcut /usr/local/go dizinini kaldırıp yeni arşivi aynı yere çıkartın. Ortam değişkenleriniz zaten ayarlı olduğu için ek bir yapılandırma gerekmez. Örneğin:

      wget https://go.dev/dl/go1.22.3.linux-amd64.tar.gz # Yeni sürümü indirin
      sudo rm -rf /usr/local/go                       # Eski kurulumu kaldırın
      sudo tar -C /usr/local -xzf go1.22.3.linux-amd64.tar.gz # Yeni sürümü çıkarın
      go version                                      # Güncellemeyi doğrulayın
      
    4. Go modüllerini kullanmak zorunlu mu?

      Go 1.11’den itibaren Go modülleri, bağımlılık yönetimi için önerilen ve fiili standart haline gelen yöntemdir. Teknik olarak zorunlu olmasa da, yeni projelerde kesinlikle kullanılması tavsiye edilir. Go modülleri, projelerinizi GOPATH dışında oluşturmanıza, bağımlılık sürümlerini daha iyi yönetmenize ve projeler arası çakışmaları önlemenize olanak tanır. Bu, özellikle büyük ve karmaşık projelerde geliştirici deneyimini önemli ölçüde iyileştirir.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.