GOPATH على Ubuntu: كيف لا تفسد عقلك (والكود)
لابد أنك واجهت هذا: لقد قمت للتو بتثبيت Go على Ubuntu، تفتح الطرفية، تكتب go run main.go، وفي المقابل - صمت. أو ما هو أسوأ، - بحر أحمر من الأخطاء مع ذكر GOPATH. إذا كنت قد بحثت عن هذه المشكلة، فمن شبه المؤكد أنك رأيت ذلك السؤال بالذات على Stack Overflow بآلاف المشاهدات: "How do I SET the GOPATH environment variable on Ubuntu? What file must I edit?". ألم مألوف؟ مرحباً بك في النادي.
لقد أضعت أنا شخصياً نصف يوم في محاولة فهم لماذا لا يرى Go حزمي، على الرغم من أنني "فعلت كل شيء بشكل صحيح". مفاجأة: لقد فعلت ذلك بشكل خاطئ. في هذه المقالة سنستعرض أهم الأخطاء عند ضبط GOPATH على Ubuntu، ونتعلم كيفية تجنبها، وأخيراً، نضبط البيئة لتعمل كالساعة السويسرية.
ما هو GOPATH ولماذا لا يزال مهماً؟
قبل أن نتعمق في التفاصيل، دعنا نتذكر ما هو GOPATH. في عالم Go (خاصة في الإصدارات قبل 1.16) كان هذا هو البقرة المقدسة. GOPATH هو المسار إلى دليل العمل الخاص بـ Go، حيث يتم تخزين ملفات المصدر الخاصة بك، والملفات الثنائية المترجمة، والحزم الخارجية. افتراضياً في Ubuntu يتم تعيينه إلى $HOME/go، لكن العديد من المطورين (خاصة أولئك الذين يعملون مع مشاريع متعددة) يغيرونه.
مع ظهور Go Modules (بدءاً من Go 1.11) انخفضت الحاجة إلى الإدارة اليدوية لـ GOPATH، لكنها لم تختف تماماً. إذا كنت تعمل مع مشاريع قديمة، أو تستخدم go get، أو تريد ببساطة أن يقوم go install بوضع الملفات الثنائية في مكان مناسب - فلا يزال عليك أن تتعامل مع هذا المتغير.
أهم 5 أخطاء عند ضبط GOPATH على Ubuntu
لقد جمعت أكثر المشاكل شيوعاً التي يقع فيها المبتدئون (وليس فقط). تحقق مما إذا كنت أنت الآن واقع في إحداها.
الخطأ رقم 1: تعديل الملف الخطأ
السؤال الأكثر شيوعاً على Stack Overflow. يقوم المستخدمون بالدخول إلى /etc/environment أو /etc/profile أو حتى /etc/bash.bashrc. نعم، هذا سيعمل، لكنها ممارسة سيئة. الملفات النظامية مخصصة للإعدادات النظامية. GOPATH الخاص بك هو متغير شخصي، ومكانه في ملفات التكوين الخاصة بالمستخدم.
الطريقة الصحيحة: قم بتعديل ~/.bashrc (لـ Bash) أو ~/.profile (إذا كنت تستخدم login shell). إذا كنت تستخدم Zsh فهو ~/.zshrc.
الخطأ رقم 2: نسيان التصدير (export)
غالباً ما أرى في ملفات التكوين: GOPATH=$HOME/go بدون export. بدون export لن يتم تمرير المتغير إلى العمليات الفرعية (بما في ذلك IDE الخاص بك و go build).
الصيغة الصحيحة:
export GOPATH=$HOME/goexport PATH=$PATH:$GOPATH/binالخطأ رقم 3: عدم إعادة تحميل الطرفية
لقد قمت بتعديل .bashrc، وحفظته، ثم جلست تنظر إلى echo $GOPATH الفارغ. لن يحدث أي سحر حتى تقوم بتطبيق التغييرات. الأمر source ~/.bashrc هو أفضل صديق لك.
الخطأ رقم 4: التعارض مع Go Modules
إذا كنت تستخدم go mod init لكل مشروع، فقد يتداخل GOPATH. خاصة إذا كنت تحاول العمل داخل $GOPATH/src. Go الحديث لا يتطلب ذلك، لكن إذا أصررت على وضع المشروع في ~/go/src/myproject، فاستعد لأخطاء غير متوقعة.
الخطأ رقم 5: المسافات والرموز الخاصة في المسار
يسمح Ubuntu بإنشاء مجلدات بمسافات. لا تفعل هذا لـ Go. /home/user/My Projects/go هو صداع. استخدم /home/user/projects/go أو ببساطة $HOME/go.
دليل خطوة بخطوة: كيفية ضبط GOPATH بشكل صحيح
دعنا نفعل هذا مرة واحدة وإلى الأبد. افتح الطرفية ونفذ الأوامر بالتسلسل.
الخطوة 1. تحقق من الإصدار الحالي لـ Go
go versionالمدونات
توصيات الكتب
اقرأ أيضًا