ฉันติดตั้งโปรแกรมโดยรับซอร์สโค้ดจากนั้นเรียกใช้ `sudo ทำการติดตั้ง '; ทำอย่างไรจึงจะรู้ว่า `apt-get`?


46

ผมติดตั้งโปรแกรม (เรียกว่ายกตัวอย่างเช่นprogA) โดยการสร้างได้จากรหัสที่มาและแล้วในที่สุดโทรและsudo make installsudo ldconfig

แต่ดูเหมือนว่าapt-getยังไม่ได้รับการบันทึกเพราะเมื่อติดตั้งprogBซึ่งขึ้นอยู่กับprogA, แนะนำฉันยังติดตั้งapt-get progAทำไมสิ่งนี้และฉันจะทำอย่างไร


ฉันคิดว่าคุณจะต้องติดตั้งprogBด้วยตนเองเกินไป ...
Parto

11
ไม่สามารถสันนิษฐานได้ว่ารุ่น 'กำหนดเอง' ที่คุณสร้างขึ้นนั้นเหมือนกับแพ็คเกจซึ่งเป็นการอ้างอิง ทางลัด (ไม่แนะนำ) คือการติดตั้งแพคเกจจริงแล้วเขียนทับไบนารีด้วย 'พิเศษ' ของคุณ ในขณะที่คุณไม่เจาะจงฉันสามารถให้คำแนะนำเพิ่มเติมได้
david6

6
อย่าทำอย่างนี้ ให้ซอฟต์แวร์ที่จัดการโดยการจัดการแพคเกจของคุณแยกจากซอฟต์แวร์ที่คุณรวบรวมเองอย่างเคร่งครัด
Reinier Post

คำตอบ:


56

TL; DR checkinstallเป็นเพื่อนของคุณ;)

sudo apt-get install checkinstall

หลังจากการติดตั้งกับsudo make installผู้จัดการแพคเกจของคุณไม่รู้อะไรเลยเกี่ยวกับการติดตั้งนี้ แต่รู้ทุกอย่างเกี่ยวกับแพคเกจที่มีชื่อเดียวกันในที่เก็บ Ubuntu หรือ PPA

ใช้sudo checkinstallแทนและใช้รุ่นที่สูงขึ้นเป็นรุ่นในพื้นที่เก็บข้อมูลเพื่อให้แน่ใจว่าผู้จัดการแพคเกจของคุณยอมรับรุ่นนี้เป็นการอ้างอิงที่ถูกต้องสำหรับsudo make installProgB


ข้อมูลเพิ่มเติม:

checkinstallเป็นสิ่งที่ดีจริงๆเพราะมันเป็นไปตามสิ่งที่make installคำสั่งจะทำเพื่อที่จะหาวิธีสร้างแพ็คเกจ

ซึ่งหมายความว่าหากคุณติดตั้งโปรแกรมที่ใช้make installแต่ต้องการกลับใจจากบาปสิ่งที่คุณต้องทำคือsudo checkinstall -D make installและคำสั่งนั้นจะ:

  1. ทำตามmake installเพื่อหาว่ามันทำอะไร

  2. copy-cat make installยกเว้นในรูปแบบแพ็คเกจ * .deb

  3. ติดตั้งจากแพคเกจ (ตรงตามที่กำหนดmake installจะมีจุดที่ 1)) นอกจากนี้ยังแจ้งให้apt-getทราบเกี่ยวกับมันและดังนั้นจึงเขียนทับไฟล์ทั้งหมดตรงที่make installจะทำให้พวกเขาตราบเท่าที่คุณเลือกใช่เพื่อรวมไฟล์ที่ใส่make installในไดเรกทอรีบ้าน ในแพ็คเกจด้วย - ตัวเลือกสองสามตัวในระหว่างcheckinstallกระบวนการจะช่วยให้คุณสามารถเลือกได้ (แน่นอนว่ามีตัวเลือกให้คุณใช้เป็นกรณี ๆ ไป)

โบนัส: คุณสามารถลบแพ็คเกจ (เรียกprogAอีกครั้ง) ที่ติดตั้งโดยใช้make installodes ที่ไม่ได้make uninstallรับการสนับสนุนโดยทำตามcheckinstallขั้นตอนที่ระบุไว้แล้วทำเพียง:

dpkg -r progA

18
ว้าวcheckinstall- โลกจำเป็นต้องรู้เกี่ยวกับเรื่องนี้!

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

รายละเอียดใดที่คุณหมายถึง
AB

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

ไดเรกทอรีเอกสารแพคเกจ. / doc-pak ไม่มีอยู่ ฉันควรสร้างชุดเอกสารเริ่มต้นหรือไม่
n8chz

13

สามตัวเลือก:

  1. สร้างแพคเกจปลอมสำหรับprogA: วิธีการติดตั้งรุ่นแพคเกจปลอม? (มีตัวอย่างกว้างขวางสำหรับ TeXlive)

  2. สร้างแพคเกจสำหรับprogAได้ง่ายขึ้นหากมีcheckinstallตัวเลือก: วิธีการหลอกลวงการพึ่งพา apt?

  3. สร้างprogBจากแหล่งต่างๆ


1
4. ถอนการติดตั้งเวอร์ชันที่progAคุณคอมไพล์แล้วติดตั้งapt-getเวอร์ชัน 5. ติดตั้งapt-getแพคเกจมากกว่าเวอร์ชั่นที่คอมไพล์แล้วและหวังว่าจะดีที่สุด
jwodder

1

ฉันขอแนะนำให้ใช้uupdateจากdevscriptsและสร้างแพ็คเกจเหมือนต้นฉบับเคยสร้างมาก่อน

ติดตั้งแพ็คเกจที่จำเป็น

$ sudo apt-get install build-essential devscripts

ดาวน์โหลดแพคเกจเก่าจากพื้นที่เก็บข้อมูลอย่างเป็นทางการ (จะใช้MediaWikiเป็นตัวอย่าง) และ tar-ball ใหม่จากต้นน้ำ

$ mkdir ~/Downloads/mediawiki
$ cd ~/Downloads/mediawiki
$ apt-get source mediawiki
$ wget https://releases.wikimedia.org/mediawiki/1.26/mediawiki-1.26.0.tar.gz

เรียกใช้uupdateเพื่อสร้างโฟลเดอร์ซอร์สใหม่จาก upstream tar-ball และโฟลเดอร์เก่าdebian/control

$ cd mediawiki-1.19.14+dfsg   # depends on your Ubuntu version
$ uupdate ../mediawiki-1.26.0.tar.gz 1.26.0
$ cd ../mediawiki-1.26.0

ตอนนี้คุณควรตรวจสอบว่าคุณจำเป็นต้องทำการเปลี่ยนแปลงdebian/controlไฟล์ ฯลฯ หากคุณทำเสร็จแล้วคุณสามารถสร้างแพ็คเกจ deb และติดตั้งได้

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