إلغاء التثبيت
يتميز إلغاء تثبيت EstaCoda بفحوصات واضحة للملكية. الوضع الافتراضي يزيل كود التثبيت المدار، والمشغّلات المعروفة، وإدخالات PATH التي يملكها المثبّت مع الحفاظ على بيانات المستخدم. يتطلب الحذف الكامل للبيانات تأكيد تطهير صريح.
السلوك الافتراضي
estacoda uninstall
الوضع الافتراضي هو keep-data. يقوم بما يلي:
- يوقف خدمة البوابة (gateway) إذا كانت مدارة
- يزيل المشغّلات المصدرية المعروفة (
~/.local/bin/estacoda،~/.estacoda/bin/estacoda، إلخ) - يزيل إدخالات PATH المملوكة للمثبّت من ملفات إعداد الصدفة
- يزيل مجلد التثبيت المدار فقط إذا تم إثبات الملكية عبر ختم
.install-method.jsonصالح - يحتفظ بـ
~/.estacoda— الملفات الشخصية، الذاكرة، الجلسات، الإعدادات، المصادقة، وملفات الثقة
لا يحذف --yes بمفرده بيانات المستخدم. إنه يتجاوز فقط تأكيد التفاعلي لإلغاء التثبيت الافتراضي.
تطهير بيانات المستخدم
estacoda uninstall --purge --yes
كلا الخيارين مطلوبان. يرفض الأمر --purge بدون --yes مع خطأ. يزيل التطهير بيانات المستخدم بعد إيقاف البوابة وإزالة كود التثبيت.
إذا كانت هناك ملفات شخصية أخرى مسمّاة، يتم إزالة الملف الشخصي النشط ولكن الملفات الأخرى تُحتفظ بها. يتطلب الحذف الجماعي للملفات الشخصية علماً صريحاً مستقبلياً. يزيل التطهير الكامل ~/.estacoda فقط عندما لا توجد ملفات شخصية أخرى مسمّاة.
السلوك حسب طريقة التثبيت
| الطريقة | إلغاء التثبيت الافتراضي |
|---|---|
managed-source | إيقاف البوابة، تنظيف المشغّلات، تنظيف PATH، إزالة مجلد التثبيت المدار (إذا كان الختم موثوقاً والمجلد آمن). يحتفظ بـ ~/.estacoda. |
manual-source | إيقاف البوابة، تنظيف المشغّلات، تنظيف PATH. يترك نسخة git دون مساس. يحتفظ بـ ~/.estacoda. |
npm-global | يطبع npm uninstall -g estacoda. المشغّلات المملوكة لمدير الحزم لا تُزال يدوياً. |
pnpm-global | يطبع pnpm remove -g estacoda. المشغّلات المملوكة لمدير الحزم لا تُزال يدوياً. |
homebrew | يطبع brew uninstall estacoda. إزالة tap ليست تلقائية. |
docker | يطبع إرشادات الحاوية/الصورة. الحاويات والصور والأحجام لا تُزال تلقائياً. |
unknown | يزيل المشغّلات وإدخالات PATH المعروفة بقدر الإمكان. يحتفظ بجميع بيانات المستخدم. |
الملكية والثقة
يتطلب إلغاء تثبيت managed-source ختم .install-method.json صالح يُعلِن ما يلي:
method: managed-source- يتضمن
sourceUrl، بيانات وصفية للفرع، وinstallDir - يُحَلّ داخل
installDirالمُعلَن
يجب أن يكون مجلد التثبيت آمناً:
- ليس
/ - ليس
$HOME - ليس
~/.estacoda - الاسم الأساسي يجب أن يكون
estacodaأوestacoda.gitأوestacoda-source
إذا كان الختم مفقوداً أو غير صالح أو المجلد غير آمن، يُعامل التثبيت كـ manual-source. لا تُحذف نسخة git عادية أبداً لمجرد أنها تشبه EstaCoda.
تنظيف المشغّلات
يفحص المزيل هذه المسارات:
~/.local/bin/estacoda~/.estacoda/bin/estacoda/usr/local/bin/estacoda$PREFIX/bin/estacoda(Termux)
يُزال المشغّل فقط إذا احتوى على علامات معروفة ("Generated by scripts/install.sh"، "EstaCoda source wrapper"، إلخ) أو كان رابطاً رمزياً إلى هدف EstaCoda معروف. تُترك الملفات غير التابعة لـ EstaCoda دون مساس.
تنظيف PATH
يفحص المزيل .bashrc و .zshrc و .profile و .bash_profile في $HOME. يزيل الأسطر التي تحتوي على PATH= وعلامات المثبّت الخاصة بـ EstaCoda. يُحتفظ بإدخالات PATH المخصصة من قبل المستخدم فقط.
ملاحظة: إذا أضفت
ESTACODA_HOMEيدويًا إلى ملفات إعداد الصدفة (مثلًا لعزل التطوير)، فقد تحتاج إلى إزالة تلك الأسطر يدويًا. المزيل يزيل فقط إدخالات PATH التي أضافها المثبّت.
الدعم المحدود وجهود الدعم
- Windows الأصلي: إلغاء التثبيت غير مدعوم في v0.1.0.
- WSL2: جهود الدعم. يعمل المزيل ولكن قد يتصرف إيقاف خدمة systemd بشكل مختلف.
- Termux: يتم تخطي إيقاف خدمة النظام. تُزال المشغّلات المعروفة في
$PREFIX/bin/estacodaبجهود الدعم.
حالات الفشل
| العرض | السبب | الحل |
|---|---|---|
| "Full purge removes EstaCoda user data... Re-run with --purge --yes" | تم توفير --purge بدون --yes | أضف --yes |
| "Managed-source stamp was not trusted" | الختم مفقود أو غير صالح أو غير مطابق | يُعامل كـ manual-source؛ لا يتم إزالة المستودع |
| "managed-source installDir is not safe to remove automatically" | مجلد التثبيت خارج قائمة الأسماء الآمنة | لا يتم إزالة المجلد؛ يتطلب التنظيف اليدوي |
| "no managed service was removed" | لم يتم اكتشاف خدمة بوابة مدارة | أوقف البوابة يدوياً باستخدام estacoda gateway stop |
| "Wrapper left in place (not an EstaCoda source wrapper)" | الملف في مسار المشغّل لا يطابق العلامات المعروفة | الإزالة اليدوية إذا لزم الأمر |
| "npm global install detected" | طريقة التثبيت هي npm-global | شغّل npm uninstall -g estacoda يدوياً |
مستندات مرتبطة
- Installation — مسارات التثبيت وأنماط الملكية
- Updating — سلوك التحديث لكل طريقة تثبيت
- State and Files — أماكن وجود بيانات المستخدم
- Gateway Operations — تفاصيل إيقاف خدمة البوابة