البرمجة

تثبيت Go على أوبونتو

تثبيت لغة Go وإعداد بيئة برمجة محلية على نظام Ubuntu

تُعدّ لغة Go، التي طورتها شركة Google، واحدة من اللغات البرمجية الحديثة التي تميّزت بأدائها العالي وبساطتها وسهولة تعلمها. صُممت Go لتلبية متطلبات البرمجة المعاصرة في تطوير تطبيقات الشبكات، والخوادم، والبرامج السحابية، وقد حازت على اهتمام واسع في المجتمع البرمجي نظرًا لسرعتها وقابليتها العالية للتوسع.

هذا المقال يقدم دليلًا شاملاً لتثبيت لغة Go (أو Golang) على نظام Ubuntu وإعداد بيئة تطوير متكاملة للعمل بشكل محلي، مع التركيز على تثبيت الأدوات اللازمة، تنظيم ملفات المشروع، إعداد متغيرات البيئة، وتفعيل أدوات إدارة الحزم والاختبارات، بطريقة تجعل النظام جاهزًا لتطوير مشاريع احترافية.


أولًا: التحضيرات الأولية قبل التثبيت

قبل الشروع في عملية تثبيت لغة Go، من المهم التأكد من أن نظام التشغيل Ubuntu محدث إلى أحدث نسخة مستقرة لضمان التوافق الكامل مع الحزم الحديثة. يمكن تحديث النظام عبر الأوامر التالية في الطرفية (Terminal):

bash
sudo apt update sudo apt upgrade

من المفضل أيضًا تثبيت الأدوات الأساسية لتسهيل عملية التنزيل والبناء لاحقًا:

bash
sudo apt install -y build-essential curl wget git

ثانيًا: تحميل وتثبيت لغة Go على Ubuntu

هناك طريقتان رئيسيتان لتثبيت Go على Ubuntu: إما من مستودعات APT الافتراضية أو من خلال الموقع الرسمي للحصول على النسخة الأحدث. يوصى غالبًا بالطريقة الثانية للحصول على آخر إصدار رسمي مستقر.

الطريقة الموصى بها: التثبيت من الموقع الرسمي

  1. الذهاب إلى صفحة التنزيل الرسمية:
    الموقع الرسمي للغة Go هو https://go.dev/dl/ حيث يتم عرض أحدث الإصدارات مع روابط مباشرة.

  2. تحميل النسخة المناسبة:
    باستخدام الطرفية، يمكن تحميل آخر نسخة مستقرة من Go 64-bit (مع تحديث الرابط وفقًا للإصدار):

    bash
    wget https://go.dev/dl/go1.22.0.linux-amd64.tar.gz
  3. إزالة أي نسخة سابقة:
    للتأكد من عدم تعارض الإصدارات:

    bash
    sudo rm -rf /usr/local/go
  4. فك الضغط في المسار المناسب:

    bash
    sudo tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz

ثالثًا: إعداد متغيرات البيئة (Environment Variables)

بعد تثبيت Go، يجب إعداد المسارات المناسبة لتفعيل اللغة في النظام. يمكن تعديل ملف .bashrc أو .zshrc حسب الصدفة المستخدمة:

bash
nano ~/.bashrc

ثم أضف في نهاية الملف الأسطر التالية:

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

بعد الحفظ، فعّل التغييرات باستخدام:

bash
source ~/.bashrc

ويمكن التأكد من نجاح التثبيت بكتابة:

bash
go version

ينبغي أن تظهر رسالة تحتوي على إصدار Go المثبت.


رابعًا: إنشاء هيكل مشروع Go المحلي

يتطلب تطوير التطبيقات بلغة Go تنظيم ملفات المشروع ضمن بيئة واضحة المعالم. الهيكل التقليدي الذي يعتمده المبرمجون يتبع القواعد التالية:

go
~/go/ ├── bin/ ← الملفات التنفيذية ├── pkg/ ← الحزم المجمعة └── src/ ← الكود المصدري للمشاريع └── myproject/ ├── main.go └── go.mod

لإنشاء مشروع جديد:

bash
mkdir -p ~/go/src/myproject cd ~/go/src/myproject

خامسًا: استخدام go mod لإدارة الحزم

ابتداءً من Go 1.11، تم تقديم نظام الوحدات (Modules) لإدارة تبعيات المشروع، مما يبسط العمليات بشكل كبير.

داخل مجلد المشروع، استخدم الأمر التالي:

bash
go mod init myproject

سينشئ ملف go.mod الذي يحتوي على اسم الوحدة (module) والتبعيات.

عند استخدام مكتبات خارجية، تتم إضافتها تلقائيًا داخل الملف، ويتم تنزيلها وتخزينها في مجلد pkg/mod.


سادسًا: كتابة أول برنامج بلغة Go

داخل ملف main.go، يمكن تجربة البرنامج التالي:

go
package main import "fmt" func main() { fmt.Println("مرحبًا بك في عالم Go على Ubuntu!") }

لتنفيذه:

bash
go run main.go

ولترجمة البرنامج إلى ملف تنفيذي:

bash
go build

ينتج عن ذلك ملف تنفيذي يمكن تشغيله مباشرة:

bash
./myproject

سابعًا: إعداد محرر النصوص أو بيئة تطوير متكاملة

يمكن استخدام أي محرر نصوص يدعم Go، لكن من أكثر الخيارات شيوعًا:

1. Visual Studio Code

قم بتثبيته عبر Snap:

bash
sudo snap install --classic code

ثم من داخل VS Code، ثبّت إضافة Go الرسمية التي توفر دعمًا لتكملة الكود، التصحيح (Debugging)، التنقل، وغيرها.

2. Vim أو Neovim مع Go Plugin

لعشاق الواجهات النصية، يمكن إعداد Vim/Neovim مع إضافات مثل vim-go لتوفير دعم كامل للغة.


ثامنًا: أدوات Go المفيدة

لغة Go تأتي مزودة بعدد من الأدوات المهمة المدمجة:

الأمر الوظيفة
go run تنفيذ البرنامج مباشرة
go build ترجمة الكود إلى ملف تنفيذي
go test تشغيل اختبارات الوحدة
go get تحميل الحزم الخارجية
go fmt تنسيق الكود تلقائيًا
go vet تحليل الكود لاكتشاف الأخطاء
go doc استعراض التوثيق
go mod tidy تنظيف وتحديث التبعيات

مثال على تنسيق الكود:

bash
go fmt main.go

تاسعًا: كتابة اختبارات الوحدة في Go

توفر Go بنية ممتازة لاختبار الكود من خلال ملف *_test.go.

مثال:

go
package main import "testing" func Add(a, b int) int { return a + b } func TestAdd(t *testing.T) { result := Add(2, 3) if result != 5 { t.Errorf("Expected 5, but got %d", result) } }

لتشغيل الاختبارات:

bash
go test

عاشرًا: إعداد Go للعمل ضمن فرق تطوير باستخدام Git

يفضل إعداد Git للمشروع منذ البداية:

bash
cd ~/go/src/myproject git init echo "bin/" >> .gitignore echo "*.exe" >> .gitignore echo "*.out" >> .gitignore

يمكن ربط المشروع بمستودع GitHub لإدارة الإصدارات وتطوير فرق العمل.


حادي عشر: تثبيت إصدارات متعددة من Go باستخدام GVM (اختياري)

للمطورين الذين يحتاجون لاختبار مشاريع على أكثر من إصدار:

  1. تثبيت GVM:

bash
bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
  1. إضافة GVM للبيئة:

bash
source ~/.gvm/scripts/gvm
  1. تثبيت إصدار معين:

bash
gvm install go1.21 gvm use go1.21 --default

ثاني عشر: تنظيف النظام بعد التثبيت

ينبغي حذف الملفات المؤقتة لتقليل استخدام المساحة:

bash
rm go1.22.0.linux-amd64.tar.gz

ويمكن التحقق من مجلد GOPATH وتنظيم المشاريع داخله بشكل دوري لتقليل الفوضى.


جدول مقارنة أدوات إدارة الحزم في Go

الأداة الوظيفة الرئيسية ملاحظات
go get تنزيل وتحديث الحزم أصبح أقل أهمية في نظام الوحدات
go mod init إنشاء وحدة للمشروع ضروري لإدارة التبعيات
go mod tidy حذف التبعيات غير المستخدمة يحافظ على نظافة go.mod و go.sum
go install تثبيت أدوات أو برامج مساعدة يستخدم لبناء وتثبيت أدوات في $GOPATH/bin

خاتمة

إعداد بيئة تطوير بلغة Go على نظام Ubuntu يمثل خطوة استراتيجية مهمة لكل مطور يرغب في التوسع في بناء تطبيقات سريعة وفعالة. من خلال التثبيت اليدوي والتحكم في متغيرات البيئة، يصبح بالإمكان ضمان بيئة مستقرة ومرنة لتطوير البرمجيات. ومع نظام الوحدات وإدارة الحزم الحديث، تتكامل لغة Go مع أفضل ممارسات تطوير البرمجيات المعاصرة، مما يسهل صيانة الكود وتوسيع المشاريع على المدى الطويل.


المصادر:

  1. Go.dev Documentation

  2. Ubuntu Manual Pages