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

สิ่งที่สำคัญที่สุดคือคำสั่งนี้ในรูปแบบของ "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 เพื่อติดตั้ง อัปเดต หรือลบอย่างถูกต้อง

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

บทสรุป

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

และยังต้องติดตั้งระบบอื่นๆด้วย โปรแกรมเพิ่มเติม. ในห้องผ่าตัด ระบบวินโดวส์ตามกฎแล้วทุกอย่างง่ายมากมีตัวติดตั้ง 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

สวัสดีทุกคน!

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

./กำหนดค่า

คำสั่งนี้ค้นหาไลบรารีและไฟล์ส่วนหัวที่จำเป็นสำหรับการคอมไพล์ (ใช้สำหรับโปรแกรมที่เขียนบางส่วนหรือทั้งหมดด้วยภาษา C/C++ และภาษาที่คล้ายกัน) รวมถึงการตั้งค่าพารามิเตอร์พิเศษหรือการเชื่อมต่อไลบรารีพิเศษ หาก ./กำหนดค่าจะพบทุกสิ่งที่เขาต้องการเขาจะสร้าง Makefiles- ไฟล์ที่จำเป็นสำหรับการสร้างโปรแกรม

คุณสามารถกำหนดค่าพารามิเตอร์ตัวกำหนดค่าได้โดยใช้คีย์และอาร์กิวเมนต์ของคีย์เดียวกันเหล่านี้ ตัวอย่างเช่น:

./configure --prefix=/opt/my_program

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

มีคำนำหน้าระบบไฟล์หลักสามคำสำหรับการกำหนดค่าโปรแกรมส่วนใหญ่ ได้แก่:

  • / - ไดเร็กทอรีรูทของระบบปฏิบัติการที่เรียกว่า ROOT
  • /usr - ไดเร็กทอรีที่มีแอปพลิเคชันสภาพแวดล้อมของผู้ใช้อยู่
  • /usr/local - ไดเร็กทอรีเพิ่มเติมสำหรับโปรแกรมผู้ใช้ที่คอมไพล์ด้วยตนเองโดยเฉพาะสำหรับ ระบบปฏิบัติการไม่ได้กลายเป็นที่ทิ้งขยะ

หากคุณเปิดไดเร็กทอรีเหล่านี้ คุณจะเห็นโครงสร้างที่คล้ายกันมาก อย่างน้อยก็จะมีโฟลเดอร์: bin ฯลฯ รวมถึง libs, sbin

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

ยกเว้นกุญแจ --คำนำหน้าตามกฎแล้วในตัวปรับแต่งมีคีย์อื่น ๆ อีกมากมายคุณสามารถดูได้ทั้งหมดหากคุณเรียกใช้:

./configure --help

ทำ

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

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

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

คำหลัง

เพื่อไม่ให้เขียนสามคำสั่งติดต่อกัน คุณสามารถเขียนเป็นบรรทัดเดียว:

./configure && ทำ && ทำการติดตั้ง

&& - นี่คือตัวดำเนินการ AND ซึ่งมาจากภาษา C/C++ อย่างไรก็ตามจากมุมมองของเชลล์ หมายความว่าคำสั่งถัดไปจำเป็นต้องดำเนินการก็ต่อเมื่อคำสั่งก่อนหน้านี้เสร็จสมบูรณ์แล้ว ซึ่งจะสะดวกมากหากมี ของขั้นตอนจบลงด้วยข้อผิดพลาด

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

./configure && ทำการติดตั้ง

ขอให้โชคดี! และขอขอบคุณที่อ่าน!

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

แอสเซมบลี (คอมไพล์) ของโปรแกรมคือการแปลงซอร์สโค้ดของมัน ซึ่งเขียนด้วยภาษาโปรแกรมคอมไพล์บางภาษา (เช่น C++) ซึ่งโปรแกรมเมอร์สามารถเข้าใจได้ ให้เป็นโค้ดไบนารี่ (ลำดับของเลขศูนย์และตัว) ซึ่งสามารถเข้าใจได้ โปรเซสเซอร์กลางคอมพิวเตอร์. ไม่ได้รวบรวมภาษาโปรแกรมทั้งหมด ตัวอย่างเช่น โค้ดใน Python สามารถทำงานได้ทันที โดยไม่ต้องแปลเป็นโค้ดไบนารี่ (แม้ว่าจะเป็นไปได้ก็ตาม) ในการสร้างโปรแกรม ขอแนะนำให้ใช้โปรเซสเซอร์แบบมัลติคอร์ที่ทรงพลังพอสมควร อย่าคอมไพล์โปรแกรมบนแล็ปท็อป! สิ่งนี้จะส่งผลเสียอย่างมากต่ออายุขัยของพวกมัน (พวกมันไม่ได้ออกแบบมาสำหรับน้ำหนักที่มากขนาดนั้น เว้นแต่คุณจะมี แล็ปท็อปสำหรับเล่นเกม).

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

  • หากคุณยังคงมีไฟล์เก็บถาวรพร้อมรหัสอยู่ (คุณสามารถเรียกใช้ได้ ทำการถอนการติดตั้ง);
  • หากซอร์สโค้ดของโปรแกรมรองรับ
อย่าใช้ make install!

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

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

ก่อนอื่นคุณต้องเตรียมระบบก่อน หากต้องการทำสิ่งนี้เรามาตั้งค่ากัน ชุดที่จำเป็นเครื่องมือ:

udo apt ติดตั้ง gcc devscripts ที่จำเป็นต่อการสร้าง git fakeroot automake autoconf

คุณสามารถรับซอร์สโค้ดได้ วิธีทางที่แตกต่าง. ดาวน์โหลดจากอินเทอร์เน็ต (เช่น จากเว็บไซต์ของนักพัฒนา) โคลนพื้นที่เก็บข้อมูลด้วยซอร์สโค้ด และอื่นๆ ในกรณีแรกโดยทั่วไปทุกอย่างชัดเจน ประการที่สอง: สมมติว่าโปรแกรมอยู่ในพื้นที่เก็บข้อมูล git (on GitHub, ตัวอย่างเช่น). เราสามารถไปที่พื้นที่เก็บข้อมูลนี้และดาวน์โหลดไฟล์เก็บถาวรด้วยโค้ดจากที่นั่น

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

โคลนคอมไพล์ https://github.com/mgba-emu/mgba.git

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

เราอ่านอย่างระมัดระวัง เปิดเทอร์มินัลแล้วไปที่ไดเร็กทอรีด้วยซอร์สโค้ด:

ซีดี ~/mgba

และเราประกอบโปรแกรม:

สร้าง mkdir
สร้างซีดี
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ..
ทำ
sudo ตรวจสอบการติดตั้ง -D

คุณจะถูกถามถึงข้อมูลบางอย่าง (ชื่อแพ็คเกจ รุ่น ฯลฯ แนะนำให้กรอกข้อมูลให้ครบทุกช่อง) หลังจากประกอบแล้ว ในไดเร็กทอรีด้านบน (นั่นคือ ในหน่วย mgba) แพ็คเกจ deb พร้อมโปรแกรมจะปรากฏขึ้น ตอนนี้คุณสามารถติดตั้งได้โดยดับเบิลคลิกหรือใช้คำสั่ง sudo dpkg -i packagename.deb. หากในระหว่างการประกอบคุณเริ่มได้รับข้อความแสดงข้อผิดพลาด โปรดอ่านอย่างละเอียด อาจมีบางการพึ่งพาแอสเซมบลีหายไป

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

./autogen.sh

เมื่อดำเนินการแล้ว ไฟล์กำหนดค่าควรปรากฏขึ้น หากต้องการดูว่าคุณสามารถสร้างโปรแกรมด้วยพารามิเตอร์ใด ให้ป้อน:

./configure --help

ตรวจสอบตัวเลือกที่มีอยู่ทั้งหมด โดยปกติแล้ว สิ่งนี้สามารถรองรับปลั๊กอินต่างๆ ประกอบกับอินเทอร์เฟซทางเลือก แม้กระทั่งประกอบสำหรับสถาปัตยกรรมโปรเซสเซอร์ที่แตกต่างกัน สมมติว่าโปรแกรมใช้อินเทอร์เฟซที่เขียนเข้ามา จีทีเค+2แต่มีทางเลือกอื่น จีทีเค+ 3. จากนั้นการกำหนดค่าโปรแกรมจะเป็นดังนี้:

./configure --with-gtk3

./configure --enable-gtk3

ทุกอย่างจะมีการอธิบายโดยละเอียดในคำแนะนำ มีตัวเลือกมาตรฐานบางชุด (หลังจากป้อน ./configure --help แล้ว ตัวเลือกเหล่านั้นจะถูกเขียนไว้ก่อน) เช่น การระบุเส้นทางการติดตั้ง:

คำนำหน้า=/usr

หลังจากรันการกำหนดค่าและกำหนดค่าโค้ดสำเร็จแล้ว คุณสามารถรันบิลด์ได้:

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

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

เทอร์มินัลและคำสั่ง

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

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

  • สำหรับ แอปพลิเคชันสร้างแน่นอนว่าเราต้องการเครื่องมือสำหรับนักพัฒนา ในกรณีของเราคือคอมไพเลอร์และโปรแกรมประกอบอื่น ๆ งานหลักแน่นอนว่าเราจะถูกดำเนินการโดยยูทิลิตี make และ บรรทัดคำสั่ง(เทอร์มินอล) ก็จะเป็นเหมือนครัวของเราที่เราจะอยู่ เตรียม/ประกอบ/ติดตั้งแอปพลิเคชันของเราจากแหล่งที่มา ใน เทอร์มินัลลินุกซ์พร้อมใช้งานตามค่าเริ่มต้น เพื่อความสะดวกของคุณ คุณสามารถติดตั้งฟังก์ชันอื่นๆ ที่คุณคุ้นเคยได้ เช่น ฉันใช้ Guake มีความเป็นไปได้มากมายเมื่อเทียบกับแบบมาตรฐาน ซึ่งง่ายต่อการกำหนดค่าทั้งการคัดลอกและ การวางคำสั่งหรือข้อความใด ๆ โดยใช้ CTRL +C,CTRL+V และอีกมากมาย ซึ่งทำให้การทำงานกับคอนโซลสะดวกสบายยิ่งขึ้น
  • 1. แน่นอนว่าจะเริ่มต้นเมื่อสร้างแอปพลิเคชันจากแหล่งที่มาอย่างไรให้ดาวน์โหลดแอปพลิเคชันในไฟล์เก็บถาวร tar.gz หรือ tar.bz2 ในกรณีของฉันนี่คือตัวอย่างเช่นแอปพลิเคชัน Gimp 2.9.2 แม้ว่าในกรณีของเรา ไฟล์เก็บถาวรไม่อยู่ในรูปแบบ tar.gz และ tar.bz2 มันไม่ได้สร้างความแตกต่างใด ๆ ดาวน์โหลดแล้วคลิกขวาที่ไฟล์เก็บถาวร - สารสกัดที่นี่.

นี่คงเป็นช่วงแรก แล้วเราจะทำอย่างไรต่อไป? จากนั้นเราก็เปิดเทอร์มินัลแล้วไปที่โฟลเดอร์ที่คลายการแพ็คพร้อมไฟล์:

ซีดี /home/linux/Downloads/gimp-2.9.2/ ls

  • 2. ก่อนที่จะเริ่มเตรียมแหล่งสำหรับการประกอบผมขอแนะนำให้คุณเปิดและทำความคุ้นเคยกับไฟล์ INSTALL ก่อนแล้วจะพบอะไรมากมาย ข้อมูลที่เป็นประโยชน์, วี ไฟล์นี้อธิบายวิธีการติดตั้งแอปพลิเคชัน คำสั่งที่ต้องดำเนินการ และสิ่งที่น่าสนใจอื่นๆ อีกมากมาย ตอนนี้ฉันแนะนำให้คุณติดตั้ง แพ็คเกจเพิ่มเติมเรียกว่า auto-apt มันทำงานประจำให้คุณมากมาย
sudo apt-get ติดตั้งอัตโนมัติ apt

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

อัตโนมัติ apt -y run ./configure

แน่นอน คุณสามารถดำเนินการกำหนดค่าโดยไม่ต้องใช้แพ็คเกจนี้ และเพียงแค่รันคำสั่ง:

./กำหนดค่า

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

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

เราพยายามติดตั้งแพ็คเกจที่หายไปด้วยคำสั่ง:

Sudo apt-get ติดตั้ง package_name

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

ค้นหา apt-cache pakage_name

  • หลังจากดำเนินการคำสั่งนี้ คุณอาจพบแพ็คเกจที่เหมาะสม มันมักจะเกิดขึ้นว่าคุณไม่พบแพ็คเกจที่เหมาะสม แต่คุณสามารถค้นหาสำเนาที่แน่นอนของแพ็คเกจได้ แต่ด้วย คำนำหน้า devนั่นคือแพ็คเกจเช่น package_name-devและคุณสามารถใช้มันเพื่อตอบสนองการพึ่งพาได้
  • 4. หลังจากเสร็จสิ้นการกำหนดค่าแหล่งที่มาสำหรับบิลด์แล้ว แนะนำให้ติดตั้งแพ็คเกจ ตรวจสอบการติดตั้งซึ่งทำให้ง่ายต่อการประกอบแพ็คเกจแอปพลิเคชันสำหรับการแจกจ่ายของคุณ
sudo apt-get ติดตั้งตรวจสอบการติดตั้ง

ติดตั้งแพ็คเกจ จากนั้นคุณสามารถรันคำสั่ง:

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

  • คุณลักษณะ -Dจะสร้างแพ็คเกจ deb คุณลักษณะ -รจะสร้างแพ็คเกจ rpm ที่ใช้ในการแจกแจง Fedora, RHEL, ASP Linux, ALT Linux, Mandriva, openSUSE นอกจากนี้ยังมีคุณสมบัติเพิ่มเติมอีกด้วย -สซึ่งจะสร้างแพ็คเกจที่ใช้ใน Slackware

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

1 - สรุป: [ EOF ] 2 - ชื่อ: [ gimp ] 3 - เวอร์ชัน: [ 2.9.2 ] 4 - วางจำหน่าย: [ 1 ] 5 - ใบอนุญาต: [ GPL ] 6 - กลุ่ม: [ checkinstall ] 7 - สถาปัตยกรรม: [ i386 ] 8 - ตำแหน่งแหล่งที่มา: [ gimp-2.9.2 ] 9 - ตำแหน่งแหล่งที่มาสำรอง: 10 - ต้องการ: 11 - จัดเตรียม: [ gimp ] 12 - ความขัดแย้ง: 13 - การแทนที่:

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

ก่อนหน้านี้ฉันติดตั้งโดยไม่ต้องสร้างแพ็คเกจโดยใช้คำสั่ง:

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

หากคุณต้องการที่จะลบ แอปพลิเคชันที่ติดตั้งคุณควรรันคำสั่ง:

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

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

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

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

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