ฉันสามารถอัปเดตซอฟต์แวร์ที่ติดตั้งจากซอร์สโค้ดโดยตรง


14

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

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

นอกจากนี้ฉันอยากรู้ว่ามีข้อได้เปรียบเฉพาะของการติดตั้งจากแหล่งอื่นนอกเหนือจากที่กล่าวมาหรือไม่


คำตอบ:


10

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

หากคุณรวบรวมจากแหล่งที่มาไม่มี.debแพ็คเกจที่คล้ายกันที่คุณจะสามารถใช้อัปเดตได้เว้นแต่คุณจะรอให้การแจกจ่ายเพื่อรวมซอฟต์แวร์นั้นลงในที่เก็บของพวกเขาหรือรอจนกว่าจะมีการอัปเดต PPA ของนักพัฒนา

พูดง่ายๆคือมีคนต้องคอมไพล์ก่อนเพื่อให้เป็นเดบิต การคอมไพล์เวอร์ชั่นเก่าจะไม่ให้ความสามารถในการอัปเดตโดยอัตโนมัติคุณยังต้องผ่านกระบวนการ "download-configure-compile-install" ทั้งหมด

อย่างไรก็ตามหากคุณต้องการติดตั้งรุ่นเดียวกันในคอมพิวเตอร์หลายเครื่องมันจะทำให้แพคเกจรุ่นรวบรวมของคุณเป็น.deb(หรือคล้ายกัน) และกระจายไปยังคอมพิวเตอร์เหล่านั้น หากทำถูกต้องการอ้างอิงจะถูกดึงเข้ามาโดยอัตโนมัติ

ด้วยข้อดีของการติดตั้งจากแหล่งที่มาเพียงสองอย่างที่ฉันคิดได้คือ:

  • คุณสามารถเข้าถึงการแก้ไขรหัสล่าสุดและคุณสามารถเลือกรุ่นที่เสถียรหรือรุ่นที่ทันสมัย ​​(โดยปกติจะเรียกว่างานสร้างตอนกลางคืน, การแก้ไขล่าสุด ฯลฯ )
  • Ubuntu / การกระจายอื่นอาจไม่ต้องการรวมซอฟต์แวร์ไว้ในที่เก็บ ในกรณีนั้นคุณติดอยู่กับซอร์สโค้ดหรือแพ็คเกจที่นักพัฒนาซอฟต์แวร์หรือชุมชนจัดทำขึ้น นั่นคือคุณไม่มีทางเลือกนอกจากใช้แหล่งข้อมูล

4
แม้ว่าคุณจะรวบรวมบางสิ่งบางอย่างเพื่อใช้กับคอมพิวเตอร์ 1 เครื่องมันก็มีประโยชน์เสมอที่จะสร้างแพ็คเกจ. deb ด้วยตัวคุณเองเพราะช่วยให้คุณสามารถเก็บภาพรวมของซอฟต์แวร์ที่ติดตั้งไว้ในที่เดียวและทำให้การถอนการติดตั้ง
JanC

4

ตามโพสต์นี้คุณสามารถสร้างแพ็คเกจ. deb หลังจากรวบรวมแหล่ง จากนั้นแทนที่จะ "ทำการติดตั้ง" คุณสามารถติดตั้งได้จากแพ็คเกจ. deb ทำให้ง่ายต่อการอัปเดต (หากอยู่ในที่เก็บบางแห่ง) เนื่องจากแพ็คเกจจะได้รับการจัดการโดยผู้จัดการแพคเกจที่ติดตามการอัปเดต

ในกรณีสำหรับการสร้างแพคเกจ "บางแพ็คเกจ" จากแหล่งที่มาและมีการอ้างอิงคุณสามารถลอง "apt-get build-dep บางแพคเกจ" เพื่อติดตั้งการอ้างอิงทั้งหมดที่จำเป็นสำหรับคุณในการรวบรวมแพ็คเกจโดยอัตโนมัติโดยไม่ต้องติดตามด้วยตนเอง พึ่งพาตัวเอง ด้วยวิธีนี้การจัดการการพึ่งพายังได้รับการจัดการโดยตัวจัดการแพคเกจและควรได้รับการปรับปรุงโดยอัตโนมัติเช่นกัน


3

อีกทางเลือกหนึ่งสำหรับgitผู้ใช้คือมูลค่าการกล่าวขวัญ:

นอกจากนี้คุณยังสามารถใช้git pullหลังจากก่อนหน้านี้git cloneเพื่ออัปเดตซอร์สโค้ดของคุณและคอมไพล์โปรแกรมของคุณอีกครั้งหากต้องการ (คุณสามารถใช้gitเพื่อติดตามไฟล์เพิ่มเติม: ดูคำตอบที่นี่ )

หากคุณเคยใช้git cloneเพื่อรับซอร์สโค้ดเช่นในตัวอย่างเช่น

git clone git://github.com/person/programname.git

และคุณเก็บโฟลเดอร์ไว้หลังจากคอมไพล์และติดตั้งคุณสามารถ cd ไปยังโฟลเดอร์และรันgit pullเพื่อรับคอมมิตล่าสุด จากนั้นลบไดเร็กทอรีการ build ใด ๆ ที่คุณอาจสร้างและ / หรือรันmake clean(ถ้าเหมาะสม) จากนั้นคอมไพล์ซอฟต์แวร์อีกครั้งและติดตั้งด้วยcheckinstallซึ่งสร้างแพ็คเกจสำหรับคุณด้วย (แม้ว่าจะไม่เหมาะสำหรับการแจกจ่าย)

อย่างไรก็ตามหากคุณกำลังช่วยพัฒนาโปรแกรมและจำเป็นต้องคอมไพล์ใหม่ทุกวันgit pullหลังจากนั้นคุณอาจจะติดตั้งในโฮมโฟลเดอร์เนื่องจากไม่จำเป็นต้องติดตั้งลงใน/usr/local/ลำดับชั้นในแต่ละครั้ง

ตัวอย่างเช่นถ้าฉันกำลังทดสอบและการคอมไพล์โปรแกรมใหม่เป็นประจำฉันจะ cd ไปที่โฟลเดอร์บิลด์ของฉันหลังจากรับคอมมิชชันล่าสุดgit pullและรัน (สำหรับโปรแกรมนี้โดยเฉพาะ):

cmake .. -DCMAKE_BUILD_TYPE=Debug -DLAYOUT=home -DPREFIX=home

แล้วคอมไพล์เวอร์ชัน debug เพื่อทดสอบ

แต่ถ้าคุณต้องการเพียงเพื่อรวบรวมรุ่นใหม่ของโปรแกรมโคลนคอมไพล์ของคุณทุกเดือนหรือมากกว่านั้น (และไม่ได้รับการทดสอบหรือการแก้จุดบกพร่องมัน) ที่คุณมักจะติดตั้งกับลำดับชั้นด้วย/usr/local/checkinstall


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