سؤال ما هي الطريقة الصحيحة لإزالة التطبيق بالكامل؟


لقد بحثت في الشبكة عن مثل هذه المعلومات ووجدت خطوط أوامر مختلفة ، مثل هذه:

sudo apt-get remove application
sudo apt-get remove application*

sudo apt-get remove --purge application
sudo apt-get remove --purge application*

sudo apt-get purge application
sudo apt-get purge application*

إذن ، ما هي الطريقة الصحيحة؟ هل من الضروري استخدام هذا "*"؟

بعد ذلك ، وجدت أيضًا هذه الأوامر:

sudo updatedb
sudo locate application
sudo rm -rf (file/folder name)

478
2017-09-14 21:54


الأصل


قد يتم الرد على بعض أسئلتك في هذه المشاركة: askubuntu.com/questions/1143/how-can-i-uninstall-software - Glutanimate
application*يمكن في بعض الأحيان إعطاء نتائج غير متوقعة - على سبيل المثال ، إذا كان لديك ملف في الدليل الحالي المسمى application_information، فإن shell توسع قبل أن يتم تمريرها إلى apt-get. إذا كان هذا يحدث وكنت تريد العلامة النجمية الحرفية ، يمكنك استخدامها application\* أو 'application*' - Izkata
application* أكثر خطورة حيث لا توجد ملفات في الدليل الحالي: apt-get يستخدم التعبيرات العادية ، لا أنماط glob. لقد قضى الناس على النظام بأكمله محاولين إزالته wine*. - Andrea Corbellini
هل يمكنك قبول إجابة؟ لنكون ممتنين للناس الذين أجابوا عليك. - m-ric
لا هذا ولا ذاك application* ولا application\* آمن! نقلا عن * مع \ أو '  ' فقط يزيد الخطر ، وضمان * يتم تمرير كما هو ل apt-get (على الرغم من أنها عادة على أي حال!) ، الأسباب apt-get لتفسير الحجة على أنها تعبير عادي. في تعبير عادي * يعني "صفر أو أكثر من الحرف السابق." الشكل الشائع للخطأ هو إلغاء التثبيت wine*، وإزالة جميع الحزم مع win (ليس wine، win) في أى مكان في أسمائهم وجميع الحزم اعتمادا على أي منها. نرى هذا التفسير و الإصلاحات الممكنة. Izkata - Eliah Kagan


الأجوبة:


  • apt-get remove packagename

    سيزيل الثنائيات ، ولكن ليس ملفات التكوين أو البيانات الخاصة بالحزمة packagename. وسوف يترك أيضا تبعيات مثبتة عليه في وقت التثبيت دون مساس.

  • apt-get purge packagename أو apt-get remove --purge packagename

    سوف يزيل كل شىء بخصوص الحزمة packagename، ولكن ليس التبعيات المثبتة معها على التثبيت. كلا الأمرين متساويين.

    مفيدة بشكل خاص عندما تريد "البدء من جديد" مع تطبيق لأنك أخطأت التكوين. ومع ذلك ، فإنه لا يزيل ملفات التكوين أو البيانات الموجودة في الدلائل الرئيسية للمستخدمين ، عادة في المجلدات المخفية هناك. لا توجد طريقة سهلة لإزالة هذه الأشياء أيضًا.

  • apt-get autoremove

    إزالة الحزم المعزولة ، أي الحزم المثبتة التي اعتادت تثبيتها كإعالة ، ولكنها لم تعد كذلك. استخدم هذا بعد إزالة الحزمة التي ثبّت تبعيات لم تعد مهتمًا بها.

  • aptitude remove packagename أو aptitude purge packagename (بطريقة مماثلة)

    سوف يحاول أيضا إزالة الحزم الأخرى التي كانت مطلوبة من قبل packagename ولكن لا يتطلبها أي باقات متبقية. لاحظ أن aptitude يتذكر معلومات التبعية فقط للحزم التي قام بتثبيتها.

وهناك الكثير غيرها. المستويات الدنيا dpkg- يمكن استخدام الأوامر (المتقدمة) أو أدوات واجهة المستخدم الرسومية مثل Muon و Synaptic و Software Center ، وما إلى ذلك. ليس هناك "طريقة صحيحة" واحدة لإزالة التطبيقات أو أداء مهام أخرى تتفاعل مع إدارة الحزم الخاصة بك.

القائمة التي وجدتها هي مجرد أمثلة. تأكد من فهمك للمعاني وتجربة ما تريد القيام به قبل قبول الإجراء (تحتاج إلى الضغط عليه Y قبل أن ينفذ بالفعل الإجراءات كما هو مقترح).

إصدار العلامة النجمية في السؤال هو ربما خطأ. apt-get يقبل تعبيرًا عاديًا وليس نمطًا كرويًا مثل الغلاف. فماذا يحدث مع

sudo apt-get remove application*

هو ما يلي:

  1. قذيفة تحاول توسيع application* النظر في الملفات في الدليل الحالي. إذا كان (كما هو الحال عادة) لا يجد شيئا ، فإنه يعيد نمط الكرة الأرضية دون تغيير (لنفترض) bash مع السلوك الافتراضي هنا --- zsh سوف الخطأ).

  2. apt-get سيزيل الحزم اسمه يحتوي على سلسلة يرضي التعبير العادي application*، هذا هو، applicatio متبوعًا بعدد عشوائي من n: applicatio، application، applicationn، libapplicatioوما إلى ذلك

  3. لمعرفة كيف يمكن أن يكون هذا خطيراً ، حاول (بدون جذر للسلامة المزدوجة) apt-get -s remove "wine*" (-s سوف محاكاة الشيء بدلا من القيام بذلك) --- سيقول هو إزالة جميع الحزم التي لديها "الفوز" في الاسم والاعتماد ، تقريبا النظام بأكمله ...

على الأرجح ، الأمر الذي قصد هو حقًا

 sudo apt-get remove "^application.*"

(لاحظ علامات الاقتباس والنقطة) التي ستزيل جميع الحزم التي يبدأ اسمها application.

هذه الأوامر ،

sudo updatedb                  # <-- updates the locate database (index). harmless
sudo locate application        # <-- locates the file 'application'. harmless
sudo rm -rf (file/folder name) # <-- removes files/dirs recursively. dangerous.

خارج نطاق إدارة الحزم بالكامل. لا تقم بإزالة الملفات التي تنتمي إلى الحزم دون استخدام مدير الحزم! سوف تحصل على الخلط وهو خطأ طريقة لفعل الأشياء.

إذا كنت لا تعرف الحزمة التي ينتمي إليها الملف ، فجرّب ذلك:

dpkg -S /path/to/file

638
2017-09-14 22:04



يكون خيار --purge مفيدًا أيضًا عند محاولة إزالة أي تبعيات متبقية تمامًا بما في ذلك ملفات التهيئة: apt-get-autoremove --purge  من المهم أيضًا ملاحظة أن ملفات التهيئة في الدليل الرئيسي لديك لا تتأثر بخيار --purge. هذه سوف تضطر إلى إزالة يدويا. - Glutanimate
كان هناك خطأ هنا: apt-get تقبل RE، not globs؛ حتى apt-get remove pack * سيزيل جميع الحزم التي تبدأ بـ pac متبوعة بـ k أو صفر أو أكثر ... وهو أمر غير متوقع عادة. قمت بتحرير ال anser. أنظر أيضا askubuntu.com/questions/210976/... - Rmano
أعتقد أن هذه الإجابة لم تعد دقيقة. إما apt remove -s texlive* أو apt-get خطوط المقابل المقابل مثل Note, selecting 'texlive-font-utils' for glob 'texlive*' (مما يعني أنهم يقبلون فعلاً الكرات) ، يتبعها المعتاد Package 'texlive-common' is not installed, so not removedو اخيرا Remv خطوط ، مثل Remv texlive-font-utils [2015.20160320-1] [...]. - Jonathan Y.
JonathanY. يمكنك أيضًا تحديد الحزم غير المثبتة. على أي حال ، هل يمكنك أن تطرح سؤالاً جديدًا وتوضح بالتفصيل ما هو موقفك في السؤال. سأكون سعيدا للنظر في الأمر :) - gertvdijk
أنا لا أطرح سؤالاً جديداً. أشير إلى تغيير محتمل لأن هذا الرد قد أجري يجعل بعض التفاصيل غير صحيحة. للدم ، يبدو ذلك apt-get remove packa* هل حقا يأخذ الكرة الأرضية packa* بدلاً من النظر إليه على أنه تعبير عادي: فهو يطابق package لكن لا pack. - Jonathan Y.


بالنسبة لأوبونتو 12.04 وربما أعلى ، فإن الطريقة الصحيحة هي:

sudo apt-get --purge autoremove packagename

كما هو مفصل هنا.

لا تستخدم packagename* لأن ذلك يمكن أن يحذف الحزم غير المقصودة ويسبب مشاكل أكثر مما يحل. أو إذا كان يجب عليك ، على الأقل تشغيله مع -s، --simulate، --dry-run علم لأول مرة لنرى بالضبط ما سوف تفعله دون القيام بذلك.


92
2017-11-20 20:01



هذه هي الإجابة الصحيحة ، القصيرة والموجزة: - Anwar


يمكنك استخدام هذا الأمر:

sudo apt-get purge --auto-remove packagename

سيقوم بتطهير الحزم المطلوبة مع التبعيات التي تم تثبيتها مع تلك الحزم. ال --auto-remove الخيار (كونه اسم مستعار من autoremove) يعمل على غرار sudo apt-get autoremove. باستخدام هذا الأمر ، يمكننا تشغيل أمر واحد:

sudo apt-get purge --auto-remove packagename

بدلا من:

sudo apt-get purge packagename
sudo apt-get autoremove

17
2017-09-16 20:08



على الرغم من أنك صحيح ، ولكن يمكن للمرء أيضًا استخدامه sudo apt-get --purge autoremove packagename. نفس الأمر 1 هنا - Anwar
هل يمكن كتابة الأمر الكامل أيضًا apt-get autoremove --purge بدلا من apt-get purge --auto-remove ؟ - felwithe
يمكن للشخص يرجى تبادل لاطلاق النار لي؟ - Martin Andersson


يمكنك استخدامها بأمان sudo apt-get remove --purge application أو sudo apt-get remove applications 99 ٪ من الوقت. عند استخدام purge العلم ، فإنه يزيل ببساطة كل ملفات التكوين أيضا. والتي قد تكون أو لا تكون ما تريده ، اعتمادًا على ما إذا كنت تريد إعادة تثبيت التطبيق المذكور. ال application* سوف تطابق جميع التطبيقات التي تبدأ application، وهي عادةً مكونات إضافية وميزات إضافية وما إلى ذلك للتطبيق الرئيسي الذي تزيله. أي

sudo apt-get remove gedit*

سوف يزيل gedit، gedit-plugins و gedit-common. عادة ليس من الضروري القيام بذلك ، لأن معظم المكونات الإضافية / البرامج المرتبطة تعتمد على التطبيق الرئيسي ، وسيتم إزالتها تلقائيًا (أو وضع علامة للإزالة) عندما تقوم بإلغاء تثبيت التطبيق الرئيسي.

الأمر الأخير الخاص بك هو فقط لإزالة بقايا الطعام من التطبيقات المعروفة بامتلاكها لبرامج إلغاء الفوضى ، وهي تقوم فقط بإزالة أي بقايا للتطبيق.


7
2017-09-14 22:05





تلقيت بعض رسائل الخطأ التي تزيل حزمة ، والطريقة الوحيدة التي وجدتها ناجحة هي:

mv /var/lib/dpkg/info/package.* /tmp/
dpkg --remove --force-remove-reinstreq package

لقد وجدت أنه على الرغم من استخدام فقط

dpkg --remove --force-remove-reinstreq package

لا يؤدي إلى إزالة الحزمة التي تعرض لي المسار الصحيح للملف للتنقل مع:

mv /var/lib/dpkg/info/package.* /tmp/

حزمة بديلة مع اسم التطبيق الخاص بك. استخدم sudo في Ubuntu ، وأصبح الجذر في دبيان.


5
2018-02-26 09:26





لقد وجدت هذا الأمر في الإنترنت.

dpkg --purge --force-depends application

http://www.debian-administration.org/article/Reinstalling_packages_to_fix_problems.


3
2017-09-14 22:10





يعتمد ذلك على التطبيق الذي تريد إزالته. تأكد دائمًا من التحقق من تبعياته قبل إصدار أمر نعم. عند إزالة شيء ما بواسطة سطر الأوامر ، سيعرض أحيانًا مجموعة من المكتبات التي لم تعد هناك حاجة إليها. هذه يمكن إزالتها مع apt-get autoremove.

احذر من أنه باستخدام أوامر مثل sudo apt-get remove - قد يزيل اسم التطبيق burpur بعض التبعيات التي تحتاجها التطبيقات الأخرى ، وبالتالي قد يؤدي إلى كسر النظام الخاص بك.

إذا كنت ترغب في القيام بذلك بطريقة أكثر أمانًا ، فيمكنك دائمًا إزالته باستخدام مركز البرامج فقط أو اسم تطبيق إزالة apt-get. إذا لم تعد هناك حاجة إلى التبعيات بعد ذلك ، قم بإصدار apt-get autoremove فيما بعد.


1
2017-09-14 22:10



أعتقد أن نظام حزم دبيان بأكمله صمم خصيصا له ليس إزالة حزمة إذا كانت هناك حزم أخرى تعتمد عليها. قد تسأل (بشكل مفيد) عما إذا كنت تريد إزالة جميع الحزم التابعة أيضًا ، وهذا هو المكان الذي يجب عليك فعله اقرأ قائمة الحزمة على وشك إزالتها ، وهو أعتقد ما الذي تحاول قوله - Xen2050