จะถอนการติดตั้ง git ที่ติดตั้งจากแหล่งได้อย่างไร [ปิด]


21

ผมติดตั้งคอมไพล์โดยใช้บทความนี้ ตอนนี้ฉันต้องการถอนการติดตั้งคอมไพล์ ทำอย่างไร?


1
คุณยังมีซอร์สโค้ดที่คุณดาวน์โหลดและmake installใช้งานอยู่หรือไม่?
Hennes

ใช่ฉันมีซอร์สโค้ด
Mikhail

ผลลัพธ์ของ 'ทำการถอนการติดตั้ง' คืออะไร? ไม่ใช่ Makefiles ทุกตัวที่มีตัวเลือกนี้ แต่มีให้เลือกมากมาย
Hennes

1
ทำให้: *** ไม่มีกฎที่จะทำให้เป้าหมาย "ถอนการติดตั้ง" หยุด.
มิคาอิล

1
ทำไม -1 อธิบาย
มิคาอิล

คำตอบ:


15

ผมพบว่าวิธีการแก้ปัญหาที่นี่

อัพเดท 2.11.2012

หากคุณฉลาดพอและใช้คำนำหน้าที่ไม่ได้มาตรฐานเมื่อกำหนดค่า Git เพื่อให้ติดตั้งภายใต้ลำดับชั้นที่เฉพาะเจาะจงเช่นใต้ / opt / git จากนั้นเพียงลบลำดับชั้นนั้นซ้ำ

ถ้าไม่เช่นนั้นคุณสามารถไปเช่นนี้:

1) ดึงข้อมูลแหล่งทาร์บอลของรุ่นที่คุณสร้างและติดตั้งให้คลายออก

2) กำหนดค่าเหมือนกับที่คุณทำกับการติดตั้งดั้งเดิมโดยคำนึงถึงตำแหน่งการติดตั้ง (คำนำหน้า, exec-prefix ฯลฯ ); ตามที่คุณควรจะไม่แทนที่สิ่งใด

3) สร้างไดเรกทอรีชั่วคราวเพื่อทำการติดตั้งเช่นนี้: $ mkdir / var / tmp / git

4) ติดตั้ง Git ผ่านตัวแปร DESTDIR ที่เหมาะสมเพื่อสร้าง: $ make DESTDIR = / var / tmp / git การติดตั้งลำดับชั้น Git จะจบลงที่สร้างขึ้นภายใต้ไดเรกทอรีชั่วคราวนั้น

5) ใช้ลำดับชั้นที่สร้างขึ้นเพื่อตัดสินใจว่าจะลบไฟล์ใดภายใต้ลำดับชั้นที่แท้จริง ("/" ตัวมันเอง)

ขั้นตอนสุดท้ายคือตำแหน่งที่ "เวทมนตร์" เกิดขึ้นดังนั้นจึงมีคำอธิบายเพิ่มเติม ตัวอย่างเช่นคุณสามารถเรียกใช้

$ find /var/tmp/git -type f -printf '/%P\n' | xargs -n 10 rm -f

(เป็น root) ทำการลบไฟล์ที่ติดตั้งโดยการติดตั้งครั้งแรกในระบบไฟล์รูท encantation ด้านบนใช้ลำดับชั้น / var / tmp / git เพื่อพิมพ์รายการของไฟล์ที่พบ แต่จะแทนที่คำนำหน้า "/ var / tmp / git" ด้วย "/" เพื่อให้ "/ var / tmp / git" / usr / bin / git "ในผลลัพธ์จะปรากฏเป็น" / usr / bin / git " รายการนี้จะถูกไพพ์ไปxargsที่rm ชื่อไฟล์ที่อ่านในแพ็คละสิบ (เพื่อลดจำนวนการเรียกใช้rmตามลำดับความสำคัญ)

หลังจากจัดการกับไฟล์แล้วให้เรียกใช้

$ find /var/tmp/git -type d -printf '/%P\n'

เพื่อตรวจสอบรายชื่อของไดเรกทอรีที่ติดตั้ง สิ่งเหล่านี้ต้องการวิธีการแบบแมนนวลดังนั้นเพียงแค่ดูรายการที่สร้างขึ้นและคิดว่าคุณสามารถทำได้อย่างปลอดภัยrmdirจากระบบของคุณ (เหล่านี้จะเป็นไดเรกทอรีเช่น "/ usr / libexec / git" หรืออะไรทำนองนี้คุณอาจไม่ต้องการลบ "/ usr / share / man / mann" หรืออะไรบางอย่างแม้ว่ามันจะว่างเปล่า)

PS ในอนาคตไม่ต้องติดตั้งอะไรลงในระบบด้วยการใช้งาน make install! makefiles ส่วนใหญ่ในปัจจุบันไม่สนับสนุนเป้าหมาย "ถอนการติดตั้ง" เนื่องจากใช้ในการติดตั้งลงในตำแหน่งเริ่มต้นส่วนตัวสำหรับการทดสอบหรือเพื่อสร้างแพ็คเกจ (.rpm, .deb ฯลฯ ) จากนั้นตัวจัดการแพคเกจจะดูแลการทำความสะอาด หากคุณต้องการติดตั้งบางอย่างลองค้นหาแพ็คเกจที่เป็นทางการหรือลองแบ็คแพคเกจอย่างเป็นทางการอื่นจากระบบปฏิบัติการรุ่นล่าสุดของคุณหากมี เป็นทางเลือกสุดท้ายลองใช้checkinstallเครื่องมือที่พยายามสร้างแพ็คเกจไบนารีออกจากการmake installทำงานของคุณ นี้ครับ make installแต่ก็ยังดีกว่าเปลือย


โปรดขยายรายละเอียดบางส่วนที่พบที่นั่น บิตเน่าเกิดขึ้นและเมื่อใดที่คำตอบนั้นไร้ประโยชน์
sysadmin1138

ตกลงฉันปรับปรุงคำตอบของฉัน
มิคาอิล

เคารพ. มันใช้งานได้
dotlash

สรุป: ./configure. sudo make && sudo make DESTDIR=/var/tmp/git install. sudo find /var/tmp/git -type f -printf '/%P\n' | sudo xargs -n 10 rm -f
Vahid

3

ฉันไปถึง 2691 บรรทัดของ Makefile แน่นอนไม่มีการถอนการติดตั้ง DRAT

ในกรณีนั้นการแก้ไขปัญหาอาจใช้make rpmตัวเลือก ติดตั้งรอบต่อนาที (เขียนทับไฟล์ที่ติดตั้งทั้งหมดซึ่งควรจะเหมือนกับไฟล์ที่ติดตั้งแล้ว) จากนั้นยกเลิกการติดตั้งรอบต่อนาที

ในทุกกรณีในอนาคตสร้างแพ็คเกจ (RPM, yum หรืออะไรก็ตาม) ทำให้การบำรุงรักษาง่ายขึ้นมาก


1
ยกเว้นมักจะmake installทำให้สิ่งที่อยู่ในคำนำหน้า/usr/localในขณะที่รอบต่อนาที / deb / ของคุณแพคเกจที่นี่ทำงานกับพารามิเตอร์ที่แตกต่างกันเพื่อให้ไฟล์ที่พวกเขาติดตั้งจบลงด้วยคำนำหน้า./configure /usr
ptman

ฉันเป็นมือใหม่ใน CentOS ฉันควรใช้คำสั่งอะไร คุณช่วยอธิบายเพิ่มเติมได้ไหม
มิคาอิล

ฉันรันmake rpmคำสั่ง ฉันควรทำอย่างไรต่อไป
มิคาอิล

เริ่มต้นด้วยหรือman rpm มันอาจจะบอกให้คุณใช้'rpm --help rpm -i packagename.rpmอย่างไรก็ตามอาจเป็นการดีที่สุดที่จะขอดูแลระบบที่ร่มเว็บเพื่อช่วยคุณ มีเพียงสิ่งเดียวที่เราสามารถทำได้จากระยะไกล
Hennes
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.