ค้นหาเว็บไซต์

5 โปรแกรมจัดการแพ็กเกจที่ใช้งานได้บน Windows, Mac และ Linux


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

ถ้าฉันบอกคุณว่ามีวิธีที่ดีกว่านี้ล่ะ?

ตัวจัดการแพ็กเกจของ Linux แก้ปัญหานี้ได้เมื่อหลายปีมาแล้ว แต่ปัจจุบัน ตัวจัดการแพ็กเกจไม่ได้จำกัดอยู่แค่ใน Linux; ตอนนี้คุณสามารถหาตัวจัดการแพ็กเกจที่ทำงานได้ทั้งบน Windows, macOS และ Linux ตอนนี้คำว่า "ข้ามแพลตฟอร์ม" ทำงานอย่างจริงจังที่นี่ — แต่ผมได้ทดสอบตัวจัดการแพ็กเกจข้ามแพลตฟอร์ม 5 ตัวเพื่อหาตัวเลือกที่ดีที่สุดโดยรวม

โฮมบรูว์

โปรแกรมจัดการแพ็กเกจที่เกิดบน Mac ซึ่งเติบโตขึ้นและย้ายไปยัง Linux

สำหรับผู้ใช้ Mac ไม่ว่าคุณต้องการติดตั้งซอฟต์แวร์จากบรรทัดคำสั่งหรือจัดการแอปกราฟิก Homebrew ยังคงเป็นตัวจัดการแพ็กเกจเริ่มต้นที่ผมจะแนะนำก่อน ผู้คนใช้มันเป็นประจำสำหรับยูทิลิตี้ เครื่องมือสำหรับนักพัฒนา และเซิร์ฟเวอร์ทดสอบในเครื่อง เพราะมันช่วยขจัดความยุ่งยากในการติดตั้งที่พบบ่อยใน macOS เดิมทีมันเริ่มต้นเป็นวิธีสำหรับแก้ไขจุดที่ Apple ทิ้งในบรรทัดคำสั่งพื้นฐาน แต่ต่อมามันได้เติบโตเป็นยักษ์ใหญ่แบบหลายแพลตฟอร์ม

บน Linux, Homebrew โดดเด่นเพราะมันติดตั้งแพ็กเกจใน sandbox ของตัวเอง (/home/linuxbrew/) แทนที่จะไปแก้ไขไฟล์ระบบหลักของคุณ ซึ่งเหมาะสำหรับนักพัฒนาที่ต้องการการจัดการแพ็กเกจในพื้นที่ผู้ใช้แยกออกมาโดยไม่รกรุงรังไปกับเส้นทางการแจกจ่ายหลักของพวกเขา บน macOS มันก้าวไปอีกขั้นด้วย Homebrew Cask ซึ่งช่วยให้คุณเปิดใช้งานแอปพลิเคชันกราฟิกเต็มรูปแบบ (เช่น Google Chrome หรือ VS Code) โดยตรงจากเทอร์มินัลควบคู่ไปกับสคริปต์คำสั่งแบบดั้งเดิม.

ช้างที่อยู่ในห้องคือตัว Windows. Homebrew ไม่สามารถรันโดยตรงบน Windows ได้. หากคุณต้องการใช้บนพีซี คุณต้องรันมันภายใน Windows Subsystem for Linux (WSL). แม้ว่าจะทำให้มันเป็นเครื่องมือที่ยอดเยี่ยมสำหรับนักพัฒนาที่สลับใช้งานระหว่าง macOS กับเทอร์มินัล WSL ได้อย่างราบรื่น แต่ก็จะไม่สามารถแทนที่ตัวจัดการ Windows แบบเนทีฟอย่าง Scoop หรือ winget ของ Microsoft สำหรับแอปพลิเคชันโฮสต์ได้.

นิกซ์

ฉลาด แปลก และคุ้มค่ากับความปวดหัว






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

Nix รองรับอย่างเป็นทางการบน Linux และ macOS บน Windows คุณจะต้องตั้งค่า WSL 2 รุ่นล่าสุด ซึ่งทำให้มันอยู่ในสถานะเดียวกับ Homebrew มันมีประโยชน์มากสำหรับการทำงานในเทอร์มินัลและการพัฒนาซอฟต์แวร์ แต่จะไม่จัดการแอปพลิเคชัน Windows ดั้งเดิม เช่น Windows Package Manager (winget) หรือ Scoop

ขนาดของมันก็ใหญ่โตเช่นกัน Nixpkgs มีแพ็กเกจมากกว่า 120,000 แพ็กเกจ ทำให้เป็นหนึ่งในแหล่งซอฟต์แวร์ที่ใหญ่ที่สุดที่มีอยู่ อุปสรรคคือการเรียนรู้ว่า Nix คิดอย่างไร มันไม่ได้พึ่งพาไฟล์ YAML ที่คุ้นเคยหรือสคริปต์เชลล์ธรรมดา แต่ใช้ภาษากำหนดลักษณะเฉพาะของตัวเอง Nix Flakes ทำให้ประสบการณ์ใช้งานง่ายขึ้นโดยเพิ่มสภาพแวดล้อมที่ทำซ้ำได้พร้อมไฟล์ล็อก และมันกลายเป็นแนวทางที่ชุมชนชื่นชอบ

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

คอนดา

คนที่ฉันไว้วางใจให้จัดการกับกองวิทยาศาสตร์ที่ยุ่งเหยิง

Conda ทำงานทั้งในฐานะผู้จัดการแพ็กเกจและผู้จัดการสภาพแวดล้อม และสามารถทำงานได้เป็นธรรมชาติบน Windows, macOS และ Linux แม้ว่ามันจะมีความสัมพันธ์ใกล้ชิดกับ Python และวิทยาศาสตร์ข้อมูล แต่ก็ไม่ได้จำกัดเฉพาะแพ็กเกจของ Python Conda ยังสามารถจัดการซอฟต์แวร์ที่ไม่ใช่ Python ซึ่งทำให้มันมีประโยชน์มากสำหรับเวิร์กโฟลว์ทางวิทยาศาสตร์และเทคนิคที่พึ่งพาไลบรารี C ภายนอก, ส่วนประกอบ Fortran, ไดรเวอร์เนทีฟ, หรือการพึ่งพาที่คอมไพล์อื่นๆ คุณสามารถสร้างสภาพแวดล้อมแยกที่รวมการพึ่งพาที่ซับซ้อนเหล่านี้เข้าด้วยกันโดยใช้คำสั่ง conda create ง่ายๆ

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

นอกจากนี้ยังมีประเด็นเรื่องใบอนุญาตที่ควรรู้ก่อนที่คุณจะติดตั้งใดๆ Anaconda ต้องการใบอนุญาตแบบจ่ายเงินสำหรับบางกรณีการใช้งานเชิงพาณิชย์ ดังนั้นวิธีที่สะอาดและฟรีในปัจจุบันคือ Miniforge ซึ่งจะตั้งค่า Conda พร้อมช่อง conda-forge ที่ดำเนินการโดยชุมชนโดยค่าเริ่มต้น ทำให้คุณเข้าถึงระบบนิเวศขนาดใหญ่ที่ตอนนี้มีมากกว่า 28,500 feedstocks และแพ็กเกจแยกกว่า 33,000 ตัว

npm

ไฟแพ็กเกจของ JavaScript ทั้งข้อดีและข้อเสีย

ถ้าคุณเขียน JavaScript สมัยใหม่ แทบจะหลีกเลี่ยง npm ไม่ได้เลย ในฐานะที่เป็นตัวจัดการแพ็กเกจเริ่มต้นของ Node.js มันจะดึงห้องสมุดโอเพนซอร์สและจัดการการพึ่งพาของโปรเจกต์โดยการติดตามพวกมันภายในไฟล์ package.json ภายในเครื่อง

นอกเหนือจากห้องสมุดโค้ด npm มีประโยชน์อย่างยิ่งสำหรับการใช้งานเครื่องมือบรรทัดคำสั่ง มันทำงานได้อย่างสมบูรณ์แบบบน Windows, macOS และ Linux เพราะ Node.js แยกการทำงานของระบบปฏิบัติการออกไป แพ็กเกจ npm โดยทั่วไปสามารถทำงานข้ามแพลตฟอร์มได้โดยไม่ต้องแก้ไข แม้ว่าแพ็กเกจที่มีการเชื่อมต่อ C++ แบบเนทีฟจะถูกคอมไพล์โดยอัตโนมัติบนเครื่องของคุณโดยใช้เครื่องมือสร้างของระบบเมื่อทำการติดตั้ง

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

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

ไพพ์

คำสั่งเล็ก ๆ ของ Python ที่มีระยะการเข้าถึงยาวมาก

นักพัฒนา Python พึ่งพา pip สำหรับดึงและจัดการห้องสมุดของบุคคลที่สามจากดัชนีแพ็กเกจ Python ขนาดใหญ่ (PyPI) แตกต่างจาก Conda, pip ไม่ได้จัดการซอฟต์แวร์แบบสแตนด์อโลนหรือไดรเวอร์ฮาร์ดแวร์; มันเป็นเพียงตัวติดตั้งแพ็กเกจที่เฉพาะเจาะจงสำหรับภาษาเท่านั้น มันทำงานได้อย่างสมบูรณ์แบบบน Windows, macOS และ Linux อย่างไรก็ตาม การใช้ pip แบบทั่วโลกอาจทำให้ยูทิลิตี้ระดับระบบเสียหายได้ง่าย นั่นคือเหตุผลที่การเรียนรู้วิธีสร้างและจัดการสภาพแวดล้อม Python เสมือนอย่างมีประสิทธิภาพเป็นสิ่งจำเป็นอย่างยิ่ง

ในความเป็นจริง การแจกจ่าย Linux สมัยใหม่บังคับใช้สิ่งนี้อย่างเข้มงวดผ่าน PEP 668 โดยการล็อกสภาพแวดล้อม Python ของระบบและแสดงข้อผิดพลาดร้ายแรงหากคุณพยายามติดตั้งแบบทั่วระบบ บน Windows, pip จะตั้งค่าเริ่มต้นไปยังไดเรกทอรีมาตรฐานที่ไม่มีสิทธิ์พิเศษภายในโปรไฟล์ผู้ใช้ท้องถิ่นของคุณ (AppData) เพื่อหลีกเลี่ยงการถูกบล็อกสิทธิ์ระดับผู้ดูแลระบบ

เนื่องจากโค้ด Python เป็นการสร้างนามธรรมของฮาร์ดแวร์ แพ็กเกจ pip จึงมีความสามารถในการพกพาสูง แม้กระนั้น โมดูลเฉพาะที่มีส่วนขยายแบบคอมไพล์จะต้องใช้คอมไพเลอร์ภายในเครื่องเพื่อสร้างในระหว่างการติดตั้ง หากคุณต้องการลองดูทิศทางของระบบนิเวศนี้ ให้ดูที่ uv — ทางเลือก pip ที่เร็วอย่างมากซึ่งพัฒนาด้วย Rust ที่จัดการสภาพแวดล้อมเสมือนและการติดตั้งได้เร็วกว่า Python แบบดั้งเดิมถึง 100 เท่า

สิ่งที่ดีที่สุดขึ้นอยู่กับว่าสิ่งที่คุณพยายามติดตั้งจริงๆ คืออะไร

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

บทความที่เกี่ยวข้อง