วิธีการจัดการซอฟต์แวร์ที่ติดตั้งจากแหล่งที่มา?


14

ในบางครั้งเราอาจต้องติดตั้งบางสิ่งบางอย่างจากแหล่งที่มาเนื่องจากเหตุผลต่างๆ แม้ว่ามันจะเป็นมาตรฐานวิธีการติดตั้งซอฟต์แวร์ที่มีการพึ่งพาที่เหมาะสม แต่ก็ยังไม่ชัดเจนสำหรับฉันที่จะจัดการการติดตั้งดังกล่าวเพื่อความสะดวกในอนาคต

โดยเฉพาะอย่างยิ่ง:

  1. เราสามารถทำอะไรได้บ้างเพื่อให้แน่ใจว่าการถอนการติดตั้งง่ายและสะอาด (รวมถึงการพึ่งพาที่ติดตั้งมาก่อนและสำหรับซอฟต์แวร์ที่ติดตั้งจากแหล่งที่มา)

  2. เราสามารถทำอะไรได้บ้างเพื่อให้แน่ใจว่าการอัพเกรดซอฟต์แวร์เดียวกันที่ง่ายและสะอาดซึ่งน่าจะติดตั้งจากแหล่งที่มาอีกครั้ง?

  3. เราจะทำอย่างไรเพื่อลดความขัดแย้งที่อาจเกิดขึ้นได้หากมีแพ็คเกจเริ่มต้น (ติดตั้งโดยใช้ apt-get) รวมถึงรุ่น (ใหม่กว่า) ของแพ็คเกจ (ติดตั้งจากแหล่งที่มา)

คำตอบ:


8

การใช้checkinstall make installจะสร้างแพ็คเกจชั่วคราวและติดตั้ง ซึ่งหมายความว่าถูกบันทึกไว้ในตัวจัดการแพ็คเกจและสามารถถอนการติดตั้งได้


7

สิ่งที่ดีที่สุดที่จะทำคือทำแพ็คเกจ Debian ของรุ่นใหม่กว่าด้วยตัวคุณเอง dpkgและaptเครื่องมือทำสามสิ่งที่คุณพูดถึงและมีไว้สำหรับวัตถุประสงค์นั้น ใช้พวกมันแทนการพลิกโฉมพวงมาลัย มีคำแนะนำมากมายเกี่ยวกับบรรจุภัณฑ์ หากซอฟต์แวร์มีอยู่แล้วในที่เก็บคุณอาจได้รับซอร์สแพ็กเกจ ( apt-get src) ซึ่งคุณสามารถใช้เพื่อศึกษาและเริ่มต้นแพ็คเกจของคุณเอง

คำตอบสำหรับ/ubuntu//a/485230/158442 นี้อาจมีประโยชน์ตามหลักเกณฑ์ทั่วไป

ในขณะที่checkinstallดีสำหรับการแก้ปัญหาอย่างรวดเร็วและสกปรกระยะยาวคุณควรใช้บรรจุภัณฑ์ที่เหมาะสม


ขอบคุณสำหรับคำแนะนำ เมื่อคุณพูดว่า 'มีซอฟต์แวร์อยู่ในที่เก็บแล้ว' ฉันคิดว่าคุณหมายถึงคลังเก็บอย่างเป็นทางการที่ดูแลโดย Ubuntu ถ้าเป็นเช่นนั้นในหลาย ๆ กรณีที่เก็บเหล่านี้จะไม่มีเวอร์ชั่นใหม่โดยเฉพาะใน Ubuntu ที่เก่ากว่า ดังนั้นapt-get srcอาจไม่สามารถช่วยได้ในกรณีเช่นนี้
skyork

@skyork บางทีพวกเขาทำไม่ได้ แต่คุณสามารถใช้แพ็คเกจรุ่นเก่าเพื่อศึกษาได้ อาจมีการปรับแต่งบางอย่างที่ผู้ทำแพ็กเกจทำสคริปต์บำรุงรักษาที่กำหนดเองบางอย่าง ไม่มีเหตุผลใดที่คุณควรเพิกเฉยต่อสิ่งเหล่านี้และเริ่มต้นจากศูนย์ การสร้างวงล้อใหม่ดูเหมือนจะเป็นธีมที่นี่
muru

4

ก่อนอื่นขึ้นอยู่กับว่าคุณจัดการซอร์สโค้ดอย่างไร ฉันทำไดเรกทอรีเหมือน~/sourcesและวางทุกโปรแกรมในไดเรกทอรีย่อยในขณะที่คนอื่นจะสร้างไดเรกทอรีใหม่สำหรับทุกโปรแกรม

ในทำนองเดียวกันบางอย่างเช่นฉันสร้างไดเรกทอรีย่อยใหม่สำหรับทุกรุ่นใหม่และลบรุ่นที่เก่ากว่าเฉพาะเมื่อมันมั่นใจว่าไม่มีข้อบกพร่องที่สำคัญในรุ่นใหม่ที่จะหยุดงานของฉัน

ไม่มีวิธีเดียวที่จะทำเช่นนี้มี แต่วิธีใดก็ตามที่คุณเลือกเลือกวิธีที่จะง่ายที่สุดสำหรับคุณในการจัดการ

  1. ล้างการถอนการติดตั้ง

    • ฉันขอแนะนำให้สร้างrem_dep.shสคริปต์ที่มีลักษณะเช่นนี้

      #! /bin/bash
      sudo apt-get remove dep1 dep2 ... depn
      

      อยู่ที่ไหนdep1, dep2, depnพึ่งพา

  2. ทำความสะอาด & ​​อัพเกรดง่าย

    • ถ้าคุณได้รับรหัสที่มาจากระบบอัตโนมัติเวอร์ชันเหมือนgitหรือbazaarหรือถ้าการเชื่อมโยงจะคาดการณ์ได้คุณสามารถสร้างสคริปต์เปลือกซึ่งจะ

      #1 make a backup of earlier version
      #2 get new source
      #3 configure, build/make the source
      #5 if make went correctly, remove earlier version.
      #6 make install new version, update dependencies if required.
      
    • ในกรณีอื่น ๆ เช่นกันคุณสามารถสร้างสคริปต์ดังกล่าวด้วยการทำงานด้วยตนเองได้บ้าง

  3. การจัดการความขัดแย้ง

    • วิธีที่ดีที่สุดคือการใช้--prefixตัวเลือกในขณะที่ติดตั้งซอฟต์แวร์และมีการอ้างอิง
    • สิ่งสำคัญอื่น ๆ คือการปรับปรุงระบบของคุณเพื่อลดความขัดแย้ง

หมายเหตุ:หากคุณพบว่าตัวเองกำลังรวบรวมซอฟต์แวร์มากกว่าที่ควร (ตั้งค่าmax_limitสำหรับตัวคุณเองเช่น 5 หรือ 10 หรือ 100) วิธีที่ดีที่สุดคือให้คุณออกจาก Ubuntu และย้ายไปที่ Arch Linux


3

สร้างการอ้างอิง:

  • AFAIK ควรบันทึกด้วยตนเอง คุณสามารถสร้างไฟล์เช่น README เพื่อเก็บรายการการพึ่งพาที่ติดตั้งด้วยตนเอง

  • หากซอฟต์แวร์นั้นมีไบนารีอยู่แล้วในที่เก็บ Ubuntu หรือ PPA การติดตามการพึ่งพาในขณะที่การติดตั้งควรง่ายขึ้น:

    sudo apt-get build-dep target_package
    

ล้างการถอนการติดตั้ง:

เก็บโฟลเดอร์ซอร์สที่กำหนดค่าและติดตั้งไว้ ดีกว่าถ้าคุณรวบรวมแหล่งที่มาทั้งหมดในโฟลเดอร์เฉพาะด้วยไฟล์อ้างอิงที่ติดตั้ง

ล้างการแยกไฟล์อัพเกรดและติดตั้ง:

ติดตั้งพวกเขาในเฉพาะ--prefix(เด่นกว่า--prefix=/opt/software_name-version/)

สิ่งนี้จะแก้ปัญหามากมาย: เวอร์ชันที่เกิดขึ้นพร้อมกันกับที่มาจากที่เก็บ; ทำความสะอาดอัพเกรด ง่ายกว่าสำหรับการถอนการติดตั้งที่สกปรกในกรณีที่แหล่งข้อมูลถูกลบ

มีความซับซ้อนมากขึ้นหรือเป็นวิธีที่ดีที่สุดในการตอบ @muru ให้สร้างแพ็คเกจ Debian (สำหรับแพ็คเกจที่มีอยู่ในที่เก็บ Ubuntu / PPA)

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