ฉันจะยกเลิกการติดตั้งโมดูล Perl ทั้งหมดโดยไม่ตั้งใจได้อย่างไร


8

ฉันพยายามอัพเกรด Perl โมดูลของฉันผ่าน CPAN แต่ฉันไม่ได้ให้ชื่อ regex / module เพื่ออัพเกรด: perl -MCPAN -e 'upgrade'; ฉันสามารถถือว่าเลวร้ายที่สุด (ซึ่งดูเหมือนว่าจะได้รับการสนับสนุนโดยการส่งออกของperldoc perllocal) นั่นคือทั้งหมดโมดูล Perl จาก CPAN กำลังติดตั้ง

ฉันจะยกเลิกความยุ่งเหยิงนี้ได้อย่างไร ฉันคิดว่าฉันสามารถลบ/usr/local/share/perlได้ แต่สิ่งที่มีความหมายของสิ่งนั้นคืออะไร

แก้ไข:ฉันยังมีพื้นที่ว่าง 95% ในฮาร์ดไดรฟ์ของฉันดังนั้นจึงไม่ใช่เรื่องใหญ่ ฉันไม่ต้องการความยุ่งเหยิงที่ไม่จำเป็นมากมาย ฉันกำลังพิจารณาrmว่ากำลังทำไดเรกทอรีอยู่ให้ทำdpkg --purge perlและทำซ้ำapt-getขั้นตอนการติดตั้งและ CPAN แต่มันจำเป็นจริงๆหรือฉันจะลบโมดูลที่ไม่จำเป็นออกได้/usr/local/share/perlไหม?


บางคนรู้สึกว่าไม่ควรลบไฟล์ระบบ (และโฟลเดอร์) โดยตรง อาจเป็นการดีกว่าที่จะใช้สิ่งต่าง ๆ เช่นapt-getหรือ Synaptic เพื่อให้ระบบทำการลบอย่างละเอียดและอัพเดตฐานข้อมูลที่จำเป็น

4
@ vasa1 โมดูล Perl ที่ติดตั้งภายใต้ CPAN จะไม่ถูกติดตามด้วยวิธีดังกล่าว ไดเรกทอรีที่โมดูลอยู่อาจจำเป็นต้องลบ หรืออย่างใดอย่างหนึ่งจะต้องลบออกด้วยตนเองผ่าน CPAN และมันเป็น cr * pshoot หากพวกเขาจะปฏิบัติตามคำสั่งถอนการติดตั้งหรือแม้กระทั่งmake uninstallคำสั่ง มันเป็นระบบการจัดการแพคเกจที่แตกต่างอย่างสิ้นเชิงโชคไม่ดี stackoverflow.com/questions/2626449/…
Kevin Bowen

@ maggotbrain ขอบคุณ! ฉันไม่รู้ (Perl เดียวที่ฉันใช้สำหรับสิ่งเล็ก ๆ น้อย ๆ มาพร้อมกับระบบปฏิบัติการ)

คำตอบ:


5

เมื่อมองดูใกล้ ๆ นี้ฉันไม่คิดว่าคุณจะต้องหรือควรลบไดเรกทอรีหรือไฟล์ใด ๆ ในระบบของคุณ

การรันคำสั่งperl -MCPAN -e 'upgrade'จากบรรทัดคำสั่งจะไม่ติดตั้งโมดูลเพิ่มเติมลงในระบบของคุณ

มันจะเพียง แต่พยายามที่จะติดตั้งโมดูลอัพเกรดผ่านระบบการจัดการแพคเกจ CPAN ที่และไม่ผ่าน Synaptic

สิ่งนี้คล้ายกับการเรียกใช้คำสั่ง 'r' จากนั้นเรียกใช้คำสั่งอัปเกรดที่cpan[1]>พรอมต์ ดู ที่นี่

CPAN และ Synaptic เป็นระบบการจัดการบรรจุภัณฑ์ที่แตกต่างกันสองระบบ

สิ่งนี้จะไม่ติดตั้งโมดูล Perl ทั้งหมดที่เป็นไปได้จาก CPAN และจะไม่แก้ไขแพ็กเกจระบบที่มีอยู่ dB ดังนั้นคุณสามารถย้อนกลับได้อย่างปลอดภัย

อย่างไรก็ตามนี่อาจเป็นความเสี่ยงหากแอปพลิเคชันหรือระบบของคุณขึ้นอยู่กับโมดูล Perl รุ่นใดรุ่นหนึ่ง

หากคุณขัดจังหวะกระบวนการอัพเกรดโอกาสดีที่คุณหลีกเลี่ยงการทำอันตรายต่อระบบของคุณ

ตัวเลือกการกู้คืน:

จากบรรทัดรับคำสั่งเริ่มต้นcpanและรันคำสั่งrเพื่อดูรายการของโมดูลที่ติดตั้งและการอัพเกรดที่พร้อมใช้งาน ตัวอย่างเช่นนี่คือเอาต์พุตย่อจาก cpan ของฉัน:

cpan[7]> r

Package namespace         installed    latest  in CPAN file
App::Cpan                    1.5701      1.61  BDFOY/App-Cpan-1.61.tar.gz
DBD::mysql                    4.020     4.022  CAPTTOFU/DBD-mysql-4.022.tar.gz
DBI                           1.616     1.623  TIMB/DBI-1.623.tar.gz
DB_File                       1.821     1.827  PMQS/DB_File-1.827.tar.gz
Error                       0.17010   0.17019  SHLOMIF/Error-0.17019.tar.gz
Eval::Closure                  0.06      0.08  DOY/Eval-Closure-0.08.tar.gz
....

ใช้Eval::Closureโมดูลสำหรับตัวอย่างนี้ สมมติว่าคุณให้perl -MCPAN -e 'upgrade'คำสั่งเสร็จสมบูรณ์และตอนนี้คุณได้ติดตั้งรุ่น 0.08 แล้ว

ดู Synaptic ในกรณีนี้มันจะแสดงว่าเวอร์ชั่นล่าสุดในที่เก็บจะยังคงเป็น 0.06 (0.06-1 โดยเฉพาะในกรณีของฉัน)

คุณสามารถย้อนกลับไปเป็นเวอร์ชั่นระบบได้โดยการรันคำสั่งต่อไปนี้:

sudo apt-get install --reinstall libeval-closure-perl

หากคุณติดตั้งโมดูล Perl ด้วยตนเองและต้องการย้อนกลับไปเป็นเวอร์ชันก่อนหน้าคุณจะต้องดาวน์โหลดอีกครั้ง (จาก source.cpan.org หรือที่อื่น ๆ ) และติดตั้งใหม่ด้วยตนเอง

ในการสรุป: การอัพเกรดโมดูล Perl ภายใน CPAN ไม่ควรส่งผลกระทบต่อที่เก็บข้อมูลระบบของคุณ

ขอให้โชคดี อย่าตกใจ


คำตอบที่ยอดเยี่ยมและทั่วถึง! "Don't panic" เป็นวลีสำคัญที่นี่ ฉันเห็นเอาต์พุตจำนวนมากและอ่านเกี่ยวกับการใช้อาร์กิวเมนต์เพื่อระบุโมดูลดังนั้นฉันจึงข้ามไปยังข้อสรุปเร็วเกินไป ฉันได้รับประหลาดใจที่จะพบว่าผมใช้แทบพื้นที่ HD ใด ๆ แต่ฉันยังคงเห็นบางโมดูลผมไม่รู้จัก (อาจจะเป็นเพราะการอ้างอิง) เป็นการดีที่จะรู้ว่าสิ่งนี้ไม่จำเป็นต้องใช้สำหรับฉัน!
paulrehkugler

0

ฉันขอแนะนำให้ทำ: apt-get remove <installed-packages> && apt-get autoremove(เพื่อลบการอ้างอิง) && apt-get purge <installed-packages>(เพื่อลบไฟล์ config remaning) จากนั้นคุณสามารถลบโฟลเดอร์ที่คุณไม่ต้องการ แต่มันควรจะทำเพื่อคุณ :)


2
OP ทำสิ่งนี้ผ่าน CPAN การล้างจะไม่ช่วยเนื่องจากโมดูลเหล่านี้ไม่ได้อยู่ในการจัดการบรรจุภัณฑ์
Kevin Bowen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.