ความมหัศจรรย์อันน่าหลงใหลของการกำหนดค่า สร้าง และทำการติดตั้ง การติดตั้งโปรแกรมบน Linux (.tar, .gz, .bz, RPM และ DEB) ซอฟต์แวร์ที่จำเป็น

บ่อยครั้งที่แพ็คเกจที่จำเป็นสามารถพบได้ในรูปแบบซอร์สเท่านั้น บทความนี้อธิบายวิธีการติดตั้งแพ็คเกจจากซอร์สโค้ด

แกะกล่อง

โดยปกติโปรแกรมจะแจกจ่ายในไฟล์เก็บถาวรแบบแพ็กเกจซึ่งเป็นไฟล์ที่มีนามสกุล

.tar.gz (บางครั้ง .tgz) .tar.bz2

คุณต้องเข้าใจความแตกต่างระหว่างผู้จัดเก็บและผู้บรรจุหีบห่อ

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

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

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

ทาร์ -xvf< some_app_name>.tar.gz

จะทำการแตกและแตกไฟล์ทันที ความแตกต่างระหว่างไฟล์และนามสกุล

.tar.gz

.tar.bz2

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

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

ซีดี< имя_пакета>*

การสร้างแพ็คเกจ

ในการสร้างโปรแกรมใน GNU/Linux คุณต้องใช้ (ส่วนใหญ่) โปรแกรม ทำซึ่งเรียกใช้คำสั่งจาก เมคไฟล์แต่เนื่องจากมีการแจกจ่าย GNU/Linux จำนวนมาก และมีความแตกต่างกันทั้งหมด เพื่อสร้างโปรแกรม สำหรับการแจกจ่ายแต่ละครั้ง คุณจะต้องระบุเส้นทางแยกกันซึ่งเป็นที่ตั้งของไลบรารีและไฟล์ส่วนหัว โปรแกรมเมอร์ไม่สามารถศึกษาแต่ละการแจกแจงและสร้างแยกกันสำหรับแต่ละรายการ เมคไฟล์. ดังนั้นพวกเขาจึงสร้างตัวกำหนดค่าที่ "ศึกษา" ระบบและสร้างตามความรู้ที่ได้รับ เมคไฟล์. แต่พวกเขาไม่ได้หยุดอยู่แค่ตัวกำหนดค่าแต่กลับมาพร้อมกับตัวกำหนดค่าของตัวกำหนดค่า...นั่นคือจุดที่พวกเขาหยุด

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

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

./ บูตสแตรป ./ autogen.sh

หากไม่มีสคริปต์ดังกล่าวในไฟล์เก็บถาวร คุณสามารถรันคำสั่งต่อไปนี้ตามลำดับ:

aclocal autoheader automake --gnu --add-missing --copy --foreign autoconf -f -Wall

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

./ กำหนดค่า

เครื่องมือกำหนดค่าจะสร้าง Makefile ตามความรู้ที่ได้รับและไฟล์ makefile.am. คุณสามารถส่งผ่านตัวเลือกที่มีให้ในแหล่งที่มาของโปรแกรมไปยังตัวกำหนดค่า ซึ่งช่วยให้คุณสามารถเปิด/ปิดใช้งานคุณลักษณะบางอย่างของโปรแกรมได้ โดยปกติแล้ว คุณสามารถดูข้อมูลเกี่ยวกับคุณลักษณะเหล่านั้นได้ด้วยคำสั่ง

./ กำหนดค่า --help

นอกจากนี้ยังมีชุดตัวเลือกมาตรฐานเช่น

คำนำหน้า=

ซึ่งระบุว่าจะใช้ไดเร็กทอรีใดในการติดตั้ง โดยปกติแล้วสำหรับ Ubuntu

--คำนำหน้า =/ usr --คำนำหน้า =/ usr/ local

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

ทำ

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

การติดตั้ง

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

การติดตั้งที่ถูกต้อง (ตัวเลือกหมายเลข 1)

การติดตั้งโดยใช้ยูทิลิตี้ ตรวจสอบการติดตั้ง. ติดตั้ง:

sudo apt-get ติดตั้งตรวจสอบการติดตั้ง

ลบ วิธีนี้: ตรวจสอบการติดตั้งไม่เข้าใจแหล่งที่มาทั้งหมดเนื่องจากผู้เขียนโปรแกรมสามารถเขียนสคริปต์การติดตั้งพิเศษและ ตรวจสอบการติดตั้งจะไม่เข้าใจพวกเขา

ในการสร้างและติดตั้งแพ็คเกจ deb คุณต้องรัน

sudo ตรวจสอบการติดตั้ง

การติดตั้งที่ถูกต้อง (ตัวเลือกหมายเลข 2)

สร้างแพ็คเกจ deb ด้วยตนเองอย่างรวดเร็ว

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

    เราติดตั้งในไดเร็กทอรีชั่วคราวซึ่งเราได้รับไฟล์ที่ติดตั้งทั้งชุด:

fakeroot ทำการติดตั้ง DESTDIR=`pwd`/tempinstall

    มาสร้างไดเร็กทอรี DEBIAN ใน "แพ็กเกจรูท" และเพิ่มรายการไฟล์ทั้งหมดที่ควรเข้าไปใน /etc ลงใน DEBIAN/conffiles:

cd tempinstall mkdir DEBIAN ค้นหา ฯลฯ | sed "s/^/\//" > DEBIAN/ conffiles

    จากนั้นเราสร้างไฟล์ DEBIAN/control โดยมีเนื้อหาดังต่อไปนี้:

แพ็คเกจ: package_name เวอร์ชัน: 1.2.3 สถาปัตยกรรม: amd64/i386/armel/all ผู้ดูแล: คุณสามารถป้อนชื่อของคุณ คุณสามารถขยะได้ แต่ถ้าคุณปล่อยว่างไว้ dpkg จะสาบาน ขึ้นอยู่กับ: ที่นี่คุณสามารถป้อนรายการแพ็คเกจได้ คั่นด้วยเครื่องหมายจุลภาค. ลำดับความสำคัญ: ไม่จำเป็น คำอธิบาย: คุณต้องป้อนข้อมูลบางอย่างด้วยเพื่อไม่ให้มีคำเตือน

    หากจำเป็น คุณสามารถสร้างสคริปต์ preinst, postinst, prerm และ postrm ได้ที่นั่น

    เราสร้างแพ็คเกจ deb ซึ่งเราดำเนินการ:

dpkg -b การติดตั้งชั่วคราว

    ผลลัพธ์คือ tempinstall.deb ซึ่งเราติดตั้ง

sudo dpkg -i tempinstall.deb

การติดตั้ง (ตัวเลือกหมายเลข 3)

การติดตั้งไม่ถูกต้อง

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

ในการติดตั้งคุณต้องทำ

sudo ทำการติดตั้ง

หากต้องการลบแพ็คเกจที่ติดตั้งโดยใช้วิธีนี้ คุณต้องดำเนินการในไดเร็กทอรีรากของแหล่งที่มาของโปรแกรม (ที่คุณรันทำการติดตั้ง)

sudo ทำการถอนการติดตั้ง

ข้อผิดพลาด

บ่อยครั้งในขั้นตอนการกำหนดค่า ตัวกำหนดค่าจะรายงานว่าไลบรารีใดไลบรารีหนึ่งหายไป ชื่อไลบรารีที่รายงานไม่ตรงกับชื่อแพ็คเกจใน Ubuntu เสมอไป จากประสบการณ์ของฉันเอง ฉันสามารถแนะนำให้คุณค้นหาแพ็คเกจที่ต้องการใน Synaptic ยกเว้นคำนำหน้า lib หากคุณพบแพ็คเกจหลายแพ็คเกจที่แตกต่างจากคำนำหน้า -dev ในชื่อ คุณจะต้องติดตั้งแพ็คเกจ -dev (โดยปกติแล้วจะเป็น รวมถึงแพ็คเกจที่ไม่ใช่ dev ด้วย) คุณยังสามารถค้นหาโดยใช้ http://packages.ubuntu.com/ โดยการป้อนชื่อไลบรารี่ลงในการค้นหาเนื้อหาแพ็คเกจ ในทำนองเดียวกัน หากคุณพบ dev และไม่ใช่ dev คุณต้องใช้ทั้งสองอย่าง ดีหรือเพียงแค่ค้นหาใน Google

จำเป็น ซอฟต์แวร์

แพ็คเกจที่มี mm ต่อท้ายคำอธิบายคือแพ็คเกจสำหรับโปรแกรม C++ รายการสำหรับ bmpx แต่เหมาะสำหรับโปรแกรม GTK2/Gnome เกือบทุกโปรแกรม ดังนั้นหากคุณไม่สามารถประกอบได้ ให้ดูรายการนี้แล้วเปรียบเทียบกับสิ่งที่คุณติดตั้งไว้

รวบรวม:รันไทม์:
เอ็กซ์libx11-devlibx11-6
GlibMMlibglibmm-2.4-devlibglibmm-2.4-1c2a
จีทีเค+libgtk2.0-dev,gtk-doc-toolslibgtk2.0-0
GTKMMlibgtkmm-2.4-devlibgtkmm-2.4-1c2a
บึงlibglade2-devลิบเกลด2-0
เกลดเอ็มlibglademm-2.4-devlibglademm-2.4-1c2a
XMLlibxml2-devlibxml2
XML++libxml++2.6-devlibxml++2.6c2a
ดีบัสlibdbus-1-dev,libdbus-glib-1-devlibdbus-1-2,libdbus-glib-1-2
อัลซ่าlibaound2-devลิบาซาวด์2
ฮาลlibhal-dev, libhal-storage-devlibhal1, libhal-storage1
กามินlibgamin-devlibgamin0
นีออนlibneon25-devลิบนีออน25
TagLiblibtagc0-devlibtagc0
เริ่มต้น-แจ้งเตือนlibstartup-notification0-devlibstartup-การแจ้งเตือน 0
บูสต์libboost-dev,libboost-ระบบไฟล์-devlibboost-ระบบไฟล์1.33.1
มิวสิคเบรนซ์libmusicbrainz4-devlibmusicbrainz4c2a
GStreamerlibgstreamer0.10-dev, libgstreamer-ปลั๊กอิน-base0.10-devlibgstreamer0.10-0,libgstreamer-ปลั๊กอิน-base0.10-0

มีความปรารถนาที่จะทำความคุ้นเคยกับการพัฒนาสำหรับ Android ฉันดาวน์โหลด Android Studio แกะมันแล้วลบทิ้ง ฉันตัดสินใจมองหาตัวเลือกการติดตั้งอื่น ขณะค้นหา ฉันเจอ Ubuntu Make (หรือที่รู้จักในชื่อ Ubuntu Developer Tools Center ในอดีต) และในบันทึกย่อนี้ฉันอยากจะบอกคุณเกี่ยวกับเรื่องนี้

Ubuntu Developer Tools Center ปรากฏในข่าวพร้อมกับ Ubuntu 14.10 (Utopic Unicorn) แต่ดูเหมือนว่าสำหรับฉันแล้วมันไม่ดึงดูดความสนใจอย่างกว้างขวาง หลังจากนั้นไม่นาน โปรเจ็กต์ก็เปลี่ยนชื่อเป็น Ubuntu Make ดังที่เรียกกันจนถึงทุกวันนี้ โดยขยายเป็นเวอร์ชัน 0.4 การพัฒนาดำเนินการโดย Didier Roche วิศวกรซอฟต์แวร์ของ Canonical ที่น่าสังเกตก็คือความจริงที่ว่า Ubuntu Make เขียนด้วย Python 3.4

เป้าหมายหลักของโครงการคือการติดตั้งความต้องการของนักพัฒนาทั่วไปใน Ubuntu อย่างรวดเร็วและง่ายดาย และถึงแม้จะยังห่างไกลจาก "ความต้องการทั่วไป" (รายการแพ็คเกจที่สามารถติดตั้งได้ยังมีน้อย) แต่ทุกอย่าง "ง่ายและรวดเร็ว" ก็ยังดี

บน ช่วงเวลานี้การใช้ Ubuntu ทำให้คุณสามารถติดตั้ง:

  • แอนดรอยด์สตูดิโอ
  • คราส
  • ฉบับชุมชนแนวคิด IntelliJ
  • รุ่นชุมชน PyCharm
  • คอมไพเลอร์ go-lang ของ Google
  • IDE ผู้พัฒนาเกม Stencyl

การติดตั้ง

ใน Ubuntu 15.04 นั้น ubuntu-make พร้อมใช้งานทันที ผู้ใช้เวอร์ชัน 14.04 และ 14.10 จะถูกขอให้ติดตั้งจาก ppa:

Sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make อัปเดต sudo apt-get sudo apt-get ติดตั้ง ubuntu-make

การใช้งาน

การติดตั้งด้วย ubuntu-make นั้นง่ายมากอย่างเหลือเชื่อ สำหรับ การติดตั้ง Android Studio เพิ่งทำงานในเทอร์มินัล:

อูมาเกะ หุ่นยนต์
รอสักครู่และนี่คือผลลัพธ์:

รวมไอคอนในเส้นประและ openjdk (หาก Java ไม่ได้อยู่ในระบบ) รวมอยู่ด้วย หลังจากเปิดตัว “studio” ดึง sdk ขึ้นมาและอัปเดตเป็นเวอร์ชัน 1.0.2 เปิดตัว “Hello world” บนโทรศัพท์และการทดสอบฟังก์ชันการทำงานเสร็จสมบูรณ์

Golang ได้รับการติดตั้งในลักษณะเดียวกัน:

สำหรับ PyCharm, Eclipse, Idea จะมีการเพิ่มอาร์กิวเมนต์อีกหนึ่งรายการ:

อูมาเก อิเด ไพชาร์ม

หากต้องการลบแพ็คเกจ เพียงเพิ่มอาร์กิวเมนต์ "-r" ในบรรทัดเดียวกัน:

อูมาเกะ ide pycharm -r

ความคิดเห็น

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

เนื้อหาจากกลุ่มผู้ใช้ Bryansk Linux และ www.rm.pp.ru

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

  1. บันทึก
  2. การใช้แพทช์
  3. การกำหนดค่าเคอร์เนล
  4. รวบรวมเคอร์เนล
  5. การติดตั้งเคอร์เนลใหม่
  6. ปัญหา
  7. ลิงค์

บันทึก

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

วิธีที่หนึ่ง การสร้างเคอร์เนลเป็นแพ็คเกจ .debb

การติดตั้งแพ็คเกจที่จำเป็นเพื่อคอมไพล์เคอร์เนล

ขั้นแรก มาอัปเดตรายการแพ็คเกจกันก่อน:

#ฉลาด-รับอัปเดต

มาติดตั้งแพ็คเกจที่เราต้องการ:

# apt-get ติดตั้งเคอร์เนลแพ็คเกจ libncurses5-dev fakeroot wget bzip2 build-essential

ดาวน์โหลดแหล่งเคอร์เนล

ไปที่ไดเร็กทอรี /usr/src ไปที่ www.kernel.org และเลือกเวอร์ชันเคอร์เนลที่ต้องการ ในกรณีนี้ จะพิจารณาเวอร์ชัน linux-2.6.23.1.tar.bz2 ดาวน์โหลด:

# ซีดี /usr/src # wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.1.tar.bz2

มาแยกแหล่งที่มาและสร้างลิงก์สัญลักษณ์:

# tar xjf linux-2.6.23.1.tar.bz2 # rm linux (ลบ symlink ก่อนหน้า) # ln -s linux-2.6.23.1 linux # cd /usr/src/linux

การใช้แพทช์

อย่าทำเช่นนี้โดยไม่จำเป็นหรือไม่จำเป็น!

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

สมมติว่าคุณดาวน์โหลดแพตช์ที่ต้องการ (เช่น เรียกว่า patch.bz2) ไปที่ /usr/src ลองใช้แพตช์ที่ดาวน์โหลดมากับแหล่งที่มาของเรา (คุณยังต้องอยู่ในไดเร็กทอรี /usr/src/linux):

# bzip2 -dc /usr/src/patch.bz2 | แพทช์ -p1 --dry-run # bzip2 -dc /usr/src/patch.bz2 | แพตช์ -p1

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

วิธีนี้ทำให้คุณสามารถใช้แพตช์กับแหล่งเคอร์เนลได้ ตัวอย่างเช่น มีคุณลักษณะบางอย่างที่มีเฉพาะในเคอร์เนล 2.6.23.8 เท่านั้น และซอร์สโค้ดไม่มีฟังก์ชันที่จำเป็น แต่มีการเปิดตัว patch-2.6.23.8.bz2 คุณสามารถใช้แพตช์นี้กับเคอร์เนล 2.6.23 ได้ แต่ไม่ใช่ 2.6.23.1 หรือ 2.6.23.3 เป็นต้น คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ที่:

คำนำหน้า (พรีแพตช์) - เทียบเท่ากับการเผยแพร่อัลฟ่า แพตช์จะต้องนำไปใช้กับแหล่งที่มาของรีลีสก่อนหน้าที่สมบูรณ์ด้วยเวอร์ชัน 3 หลัก (เช่น แพตช์ 2.6.12-rc4 สามารถนำไปใช้กับแหล่งที่มาของเวอร์ชัน 2.6.11 ได้ แต่ไม่ใช่กับเวอร์ชัน 2.6.11.10)

ซึ่งหมายความว่าหากเราต้องการสร้างเคอร์เนล 2.6.23.8 เราจำเป็นต้องดาวน์โหลดซอร์สของเวอร์ชัน 2.6.23 (http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23 .tar.gz) นำไปใช้ในวิธีที่สอง "แบบดั้งเดิม"!

ใช้ patch-2.6.23.8.bz2 กับเคอร์เนล 2.6.23:

# cd /usr/src # wget http://www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.22.8.bz2 # cd /usr/src/linux # bzip2 -dc /usr/ src/patch-2.6.23.8.bz2 | แพทช์ -p1 --dry-run # bzip2 -dc /usr/src/patch-2.6.23.8.bz2 | แพตช์ -p1

การกำหนดค่าเคอร์เนล

เป็นความคิดที่ดีที่จะใช้สิ่งที่มีอยู่ ไฟล์การกำหนดค่าเคอร์เนลที่ใช้งานได้และสำหรับเคอร์เนลใหม่ ดังนั้นเราจึงคัดลอกการกำหนดค่าที่มีอยู่ไปที่ /usr/src/linux:

# ทำความสะอาด && สร้าง mrproper # cp /boot/config-`uname -r` ./.config # make menuconfig

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

รวบรวมเคอร์เนล

การสร้างเคอร์เนลทำได้ด้วยสองคำสั่ง:

# make-kpkg clean # fakeroot make-kpkg --initrd --append-to-version=-cybermind kernel_image kernel_headers

หลังจาก --append-to-version= คุณสามารถเขียนชื่อใดก็ได้ที่ต้องการ แต่ต้องขึ้นต้นด้วยเครื่องหมายลบ (-) และไม่มีช่องว่าง

กระบวนการรวบรวมและสร้างแพ็คเกจ .deb อาจใช้เวลานานพอสมควร ทุกอย่างจะขึ้นอยู่กับการกำหนดค่าเคอร์เนลและความสามารถของโปรเซสเซอร์ของคุณ

แก้ไขปัญหาด้วยการสร้าง initrd.img

เมื่อเร็ว ๆ นี้ มีข้อบกพร่องเกิดขึ้นใน Debian ซึ่งหลังจากติดตั้งแพ็คเกจที่มีเคอร์เนลประกอบโดยใช้วิธีที่อธิบายไว้ที่นี่ ไฟล์ /boot/initrd.img ที่เกี่ยวข้องจะไม่ถูกสร้างขึ้น หากต้องการแก้ไขเคอร์เนลที่ติดตั้งไว้แล้ว คุณจะต้องสร้าง initrd.img ด้วยตนเอง:

อัปเดต-initramfs -c -k<полная-версия-ядра>

เพื่อแก้ไขปัญหา "สำหรับอนาคต" แสดงความคิดเห็นดังที่แสดง บรรทัดที่สองที่ยกมาด้านล่างในไฟล์ /etc/kernel/postinst.d/initramfs-tools:

# kernel-package ผ่าน arg พิเศษ แฮ็กเพื่อไม่ให้ทำงานภายใต้เคอร์เนลแพ็คเกจ #[ -z "$2" ] || ทางออก 0

การติดตั้งเคอร์เนลใหม่

เมื่อการสร้างเคอร์เนลเสร็จสมบูรณ์ แพ็คเกจ .deb สองแพ็คเกจจะถูกสร้างขึ้นในไดเร็กทอรี /usr/src:

# ซีดี /usr/src # ls -l

linux-image-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb - เคอร์เนลจริงและ linux-headers-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb - ส่วนหัว เคอร์เนลที่จำเป็นในการสร้างโมดูลอื่นๆ (เช่น เมื่อสร้างโมดูล ไดรเวอร์ nVidia). ติดตั้ง:

# dpkg -i linux-image-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb # dpkg -i linux-headers-2.6.23.1-cybermind_2.6.23.1-cybermind-10.00.Custom_i386.deb

(ขณะนี้สามารถติดตั้งแพ็คเกจเหล่านี้บนระบบอื่นได้ และไม่จำเป็นต้องสร้างใหม่อีกครั้ง)

เพียงเท่านี้การติดตั้งก็เสร็จสมบูรณ์เมนู bootloader การติดตั้งดิสก์ RAM ใหม่และเคอร์เนลจะทำโดยอัตโนมัติ สิ่งที่เหลืออยู่คือการรีบูต:

# รีบูต

วิธีที่สอง วิธี "ดั้งเดิม"

เราดำเนินการทุกประเด็นที่อธิบายไว้ข้างต้นก่อนที่จะถึงจุด "การรวบรวมเคอร์เนล"

# ทำทั้งหมด # ทำ modules_install # ทำการติดตั้ง

ตามปกติ การสร้างอาจใช้เวลานาน ขึ้นอยู่กับการกำหนดค่าเคอร์เนลและความสามารถของโปรเซสเซอร์

ข้อเสียเปรียบหลักของวิธีนี้คือหากคุณอัปเดตเคอร์เนลบ่อยครั้งหลังจากนั้นไม่นานเคอร์เนลก็จะสะสมจำนวนมากและคุณจะต้องการลบเคอร์เนลที่ไม่ได้ใช้ออก เพื่อให้ง่ายขึ้น คุณสามารถประกอบเคอร์เนลและไฟล์อื่นๆ ที่ติดตั้งในระบบโดยใช้คำสั่ง “make modules_install” และ “make install” ลงในแพ็คเกจ deb (หรือมากกว่าสองคำสั่งที่เริ่มจากเคอร์เนล 2.6.27) คล้ายกับ วิธีแรก แต่เราจะใช้ นี่คือสคริปต์ของเคอร์เนลเอง:

# ทำทั้งหมด # ทำ deb-pkg

ไฟล์ .deb สองไฟล์จะปรากฏในไดเร็กทอรีเหนือไดเร็กทอรีต้นทางหนึ่งระดับ ฉันประกอบเคอร์เนลในไดเร็กทอรี /usr/src/linux-2.6.27.10 และไฟล์ปรากฏในไดเร็กทอรี /usr/src/

# linux-2.6.27.10_2.6.27.10-1_amd64.deb # linux-firmware-image_2.6.27.10-1_all.deb

ติดตั้งเคอร์เนลด้วยคำสั่ง

# dpkg -i linux-2.6.27.10_2.6.27.10-1_amd64.deb

เมล็ดเก่าสามารถลบออกได้เช่นจาก synaptic"a

ขั้นตอนถัดไป

เคอร์เนลได้รับการคอมไพล์และติดตั้งแล้ว แต่ตอนนี้คุณต้องสร้างดิสก์ RAM (โดยที่เคอร์เนลจะไม่สามารถบู๊ตได้) และคุณต้องอัปเดต GRUB bootloader เมื่อต้องการทำเช่นนี้ ให้ทำดังต่อไปนี้:

# depmod 2.6.23.1 # apt-get ติดตั้ง yaird

ติดตั้งดิสก์ RAM:

# mkinitrd.yaird -o /boot/initrd.img-2.6.23.1 2.6.23.1

มาอัปเดต bootloader อย่างง่ายดายและไม่ลำบาก:

# อัปเดตด้วง

เพียงเท่านี้ bootloader และเคอร์เนลใหม่ก็พร้อมแล้ว สิ่งที่เหลืออยู่คือการรีบูต:

# รีบูต

ปัญหา

หลังจากรีบูต หากเคอร์เนลใหม่ที่คุณเลือกไม่โหลด ให้รีบูตและเลือกเคอร์เนลก่อนหน้า จากนั้นคุณสามารถลองทำกระบวนการทั้งหมดอีกครั้งเพื่อสร้างเคอร์เนลที่ใช้งานได้ ในกรณีนี้ อย่าลืมลบบรรทัดของเคอร์เนลที่ไม่ทำงานใน /boot/grub/menu.lst

และยังต้องติดตั้งระบบอื่นๆด้วย โปรแกรมเพิ่มเติม. ใน ระบบปฏิบัติการบน Windows ทุกอย่างง่ายมาก ตามกฎแล้วจะมีตัวติดตั้งชื่อ setup.exe ซึ่งช่วยติดตั้งซอฟต์แวร์ แต่ใน Linux สิ่งต่าง ๆ เล็กน้อย จะติดตั้งโปรแกรมบน Linux ได้อย่างไร?ตอนนี้เรามาดูคำถามนี้กัน

Linux มีแพ็คเกจการติดตั้งหลายประเภท และแต่ละรุ่นก็มีรูปแบบแพ็คเกจของตัวเอง Fedora, Mandriva, Red Hat และ Suse ใช้การติดตั้ง Linux RPM มาตรฐานที่พัฒนาโดย Red Hat โดยทั่วไปแล้วไฟล์แพ็คเกจ RPM จะมีชื่อว่า program_name-version.rpm

อีกรูปแบบหนึ่งที่ได้รับความนิยมมากคือ DEB ใช้ใน Debian, Ubuntu, Knoppix และ Mepis มีชื่อ program_name-version.deb.

และเราก็เข้าใกล้หอจดหมายเหตุ โดยปกติแล้วสิ่งเหล่านี้คือส่วนขยาย .tar , .tar.gz , .tgz ควรแตกไฟล์แล้วติดตั้ง/คอมไพล์

คุณต้องดำเนินการตามขั้นตอนการติดตั้งโปรแกรมในฐานะผู้ใช้ระดับสูง

การนำทางอย่างรวดเร็ว

การติดตั้งโปรแกรมบน Debian, Ubuntu

มีเครื่องมือมากมายสำหรับการทำงานกับแพ็คเกจ DEB แต่เครื่องมือที่ใช้บ่อยที่สุดคือ apt-get ซึ่งรวมอยู่ในชุดเครื่องมือมาตรฐาน หากต้องการติดตั้งแอปพลิเคชัน ให้ป้อนคำสั่ง:

apt-get ติดตั้ง package_name

สำหรับการถอด:

apt-get ลบ package_name

APT จัดเก็บฐานข้อมูลท้องถิ่นของแพ็คเกจทั้งหมดที่พร้อมสำหรับการติดตั้ง และลิงก์ไปยังตำแหน่งที่จะรับแพ็คเกจเหล่านั้น ฐานข้อมูลนี้จำเป็นต้องได้รับการอัปเดตเป็นครั้งคราวด้วยคำสั่ง:

ฉลาดรับการปรับปรุง

หากต้องการอัพเดตแพ็คเกจ (โปรแกรม) ที่ล้าสมัยบนคอมพิวเตอร์ ให้ป้อนคำสั่งต่อไปนี้:

ฉลาดรับการปรับปรุง; ฉลาดรับการอัพเกรด

การติดตั้งโปรแกรมบน Fedora, Red Hat

ยูทิลิตี้ที่คล้ายกับ APT คือยำ หากต้องการดาวน์โหลดและติดตั้งแพ็กเกจจากที่เก็บที่กำหนดค่าไว้ ให้เขียนคำสั่ง:

ยำติดตั้ง package_name

ยำลบ package_name

ฐานข้อมูล yum ในเครื่องไม่ได้รับการบันทึก ดังนั้นจึงไม่จำเป็นต้องอัปเดต หากต้องการติดตั้งการอัพเดตให้ใช้คำสั่ง:

ยำอัปเดต

เลือกสิ่งที่เฉพาะเจาะจงที่จะอัปเดต:

ยำอัปเดต package_name

การติดตั้งโปรแกรมใน Mandriva

Mandriva มีชุดเครื่องมือของตัวเองสำหรับการทำงานกับแพ็คเกจที่เรียกว่า urpmi สำหรับการติดตั้ง:

แพ็คเกจ urpmi_name

ลบ:

urpme package_name

อัพเดตฐานข้อมูลท้องถิ่นด้วยรายการแพ็คเกจ:

อูรมี อัปเดต -a

ในการติดตั้งการอัพเดต:

urpmi --เลือกอัตโนมัติ

การติดตั้งโปรแกรมจากไฟล์เก็บถาวร (tarballs)

สำหรับไฟล์เก็บถาวรที่บีบอัดโดยใช้ GZIP (gz, gz2 ฯลฯ ) เราทำสิ่งนี้:

tar -xvz f ชื่อไฟล์

สำหรับไฟล์เก็บถาวรที่บีบอัดโดยใช้ BZIP (bz, bz2 ฯลฯ) จะมีความแตกต่างกันเล็กน้อย:

tar -xvjf ชื่อไฟล์

คำสั่งทาร์:

  • x – แยกไฟล์ออกจากไฟล์เก็บถาวร;
  • v – การแสดงข้อมูลโดยละเอียดบนหน้าจอ
  • f – ตัวเลือกที่จำเป็น หากไม่ได้ระบุ Tar จะพยายามใช้เทปแทนไฟล์
  • z – กระบวนการบีบอัดไฟล์เก็บถาวรโดยใช้ gzip;
  • j – ประมวลผลไฟล์เก็บถาวรที่บีบอัดโดยใช้ bzip

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

โฟลเดอร์ซีดี_ชื่อ

ถัดไป ในไฟล์เก็บถาวรที่คลายการแพ็ก ให้อ่านคำแนะนำในไฟล์ README ถ้ามี ไม่ว่าในกรณีใด หากโปรแกรมถูกคอมไพล์เป็นไฟล์ปฏิบัติการ แพ็คเกจก็จะมีไฟล์ .sh ซึ่งปกติเรียกว่า install.sh

สิ่งที่สำคัญที่สุดคือคำสั่งนี้ในรูปแบบของ "make install" หรือ "sudo make install" ไม่สามารถนำมาใช้ในการแจกแจงสมัยใหม่ได้

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

การพูดนอกเรื่องโคลงสั้น ๆ

ดังที่คุณทราบสำหรับการทำงานปกติ ซอฟต์แวร์ส่วนใหญ่ต้องไม่เพียงแต่ได้รับการคอมไพล์เท่านั้น แต่ยังต้องติดตั้งในระบบอย่างถูกต้องด้วย โปรแกรมคาดหวังที่จะค้นหาไฟล์ที่ต้องการในบางตำแหน่ง และสถานที่เหล่านี้บนระบบ *nix ส่วนใหญ่จะถูกฮาร์ดโค้ดลงในโค้ด ณ เวลาคอมไพล์ นอกเหนือจากแง่มุมนี้ ข้อแตกต่างที่สำคัญระหว่างกระบวนการติดตั้งใน linux/freebsd/อะไรก็ตามกับใน Windows และ MacOS ก็คือ โปรแกรมไม่เพียงแค่วางไฟล์จำนวนมากไว้ในไดเร็กทอรีแยกต่างหากใน Program Files หรือ /Applications เท่านั้น แต่ยัง “ แพร่กระจาย” ไปทั่ว ระบบไฟล์. ห้องสมุดไปที่ lib ไฟล์ปฏิบัติการใน bin, กำหนดค่าใน ฯลฯ, ข้อมูลประเภทต่างๆ ใน ​​var และอื่นๆ หากคุณต้องการอัปเดตอย่างกะทันหัน ทั้งหมดนี้จะต้องได้รับการทำความสะอาดก่อน เพราะ... เมื่อใช้เวอร์ชันใหม่ ไฟล์ที่เหลือจากเวอร์ชันเก่าอาจทำให้เกิดผลที่ตามมาที่คาดเดาไม่ได้โดยสิ้นเชิง, มักจะไม่ดี. ความน่าจะเป็นของเหตุการณ์นี้ไม่สูงมากนัก แต่คุณต้องการมันบนเซิร์ฟเวอร์ที่ใช้งานจริงหรือไม่?

แล้วไงล่ะ?

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

จะต่อสู้อย่างไร?

เนื่องจากแพ็คเกจในการแจกแจงมักจะได้รับการอัปเดตในบางครั้ง เพื่อแก้ไขปัญหานี้ พวกเขาจึงเกิดสิ่งเช่น ผู้จัดการแพ็คเกจ. เมื่อใช้งานการติดตั้งจะเป็นดังนี้:
  1. การเก็บถาวรที่เกิดขึ้นในลักษณะใดลักษณะหนึ่งจะถูกนำไปใช้
  2. ข้อมูลจะถูกดึงออกมาจากมันเกี่ยวกับว่ามันคืออะไร เวอร์ชันอะไร ขึ้นอยู่กับอะไร ขัดแย้งกับอะไร จำเป็นต้องเรียกใช้สคริปต์ใดๆ เพื่อติดตั้ง/ถอนการติดตั้ง/กำหนดค่า ฯลฯ
  3. กำลังดำเนินการขั้นตอนการติดตั้งโดยตรง
  4. ข้อมูลทั้งหมดเกี่ยวกับสถานที่และสิ่งที่จัดส่งจะถูกเพิ่มลงในฐานข้อมูลตัวจัดการแพ็คเกจ

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

หากคุณไม่รู้หรือเกียจคร้านคัดลอกและวางทำการติดตั้งตามคำแนะนำแล้ว ไฟล์ปรากฏบนระบบที่ตัวจัดการแพ็คเกจไม่รู้จัก. ทั้งหมดที่กล่าวมานี้ หากสิ่งที่แสดงไว้ก่อนหน้านี้ยังไม่เพียงพอสำหรับคุณ

จะทำอย่างไร?

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

ดังนั้นคุณต้องรวบรวมแพ็คเกจ

ฉันไม่มีเวลามายุ่งกับเรื่องนี้ ฉันควรติดตั้งอีกครั้งดีกว่า ทุกอย่างเรียบง่ายและชัดเจน!

ใจเย็นๆ ใจเย็นๆ เขาผูกติดอยู่กับขาของเรา ทุกอย่างไม่น่ากลัวและซับซ้อนเท่าที่เห็นเมื่อมองแวบแรก
ตรวจสอบการติดตั้ง
ยูทิลิตี้ที่ยอดเยี่ยมนี้เมื่อเปิดตัวแทนที่จะทำการติดตั้งจะถามคำถามหลายข้อหลังจากนั้นจะสร้างและติดตั้งแพ็คเกจ เพียงเท่านี้ เมื่ออัปเดต คุณจะไม่มีปัญหาในการล้างขยะเก่า ๆ
การสร้างแพ็คเกจ deb ด้วยตนเอง
หากคุณไม่อยากจะเชื่อถือระบบอัตโนมัติดังกล่าว (ซึ่งบางครั้งก็ยังเกิดปัญหาอยู่) หรือคุณต้องการทำการเปลี่ยนแปลงบางอย่าง แต่ยังขี้เกียจเกินไปที่จะจัดการกับกระบวนการปกติของการสร้างแพ็คเกจ คุณสามารถประกอบแพ็คเกจด้วยตนเองได้ ฉันให้วิธีการสร้างมันสำหรับระบบบน ฐานข้อมูลเดเบียนเพราะฉันคุ้นเคยกับพวกเขาดีที่สุด มันไม่ถูกต้องตามอุดมคติ แต่ผลลัพธ์เป็นแพ็คเกจที่ถูกต้องโดยสมบูรณ์โดยไม่ต้องใช้เอนทิตีเพิ่มเติม ทำได้ดังนี้
ขั้นแรก เราประกอบซอฟต์แวร์ด้วยพารามิเตอร์ --prefix=/usr และ --exec-prefix=/usr ที่กำหนดไว้ล่วงหน้าสำหรับ configuration หรือ autogen.sh
ต่อไปเราจะติดตั้งลงในไดเร็กทอรีชั่วคราว พวกเราเขียน:

Fakeroot ทำการติดตั้ง DESTDIR=`pwd`/tempinstall
หลังจากนั้นเราจะรับไฟล์ทั้งชุดในไดเร็กทอรีที่สร้างขึ้นใหม่ อย่างไรก็ตาม ตอนนี้เราอยู่ในสภาพแวดล้อม fakeroot เช่น คุณสามารถเปลี่ยนเจ้าของและสิทธิ์การเข้าถึงไฟล์โดยไม่มีข้อจำกัดใดๆ แต่โดยทางกายภาพแล้ว คุณจะยังคงเป็นเจ้าของระบบอยู่ ซอฟต์แวร์ภายในเซสชัน fakeroot จะได้รับข้อมูลที่เปลี่ยนแปลง ซึ่งจะทำให้สามารถเก็บถาวรไฟล์ที่มีสิทธิ์ที่ถูกต้องได้
จากนั้น สร้างไดเร็กทอรี DEBIAN ใน "แพ็กเกจรูท" และเพิ่มรายการไฟล์ทั้งหมดที่ควรเข้าไปใน /etc ลงใน DEBIAN/conffiles:

Cd tempinstall mkdir DEBIAN ค้นหา ฯลฯ | sed "s/^/\//" > DEBIAN/conffiles
จากนั้นเราสร้างไฟล์ DEBIAN/control โดยมีเนื้อหาดังต่อไปนี้:

หากจำเป็น คุณสามารถสร้างสคริปต์ preinst, postinst, prerm และ postrm ได้ที่นั่น

เพียงเท่านี้ เราทำ dpkg -b tempinstall และผลลัพธ์คือ tempinstall.deb ซึ่งคุณสามารถใช้ dpkg -i เพื่อติดตั้ง อัปเดต หรือลบอย่างถูกต้อง

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

บทสรุป

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