กลับไปหน้าบทความ

อ่าน 5 นาที

ซีพีเอ็น

เครือ ข่ายเก็บถาวร Perl ที่ครอบคลุม ( CPAN [ 1 ] : xvii ) เป็น คลังซอฟต์แวร์ ที่มี โมดูลซอฟต์แวร์ มากกว่า 220,000 โมดูล และเอกสารประกอบสำหรับ 45,500 การแจกจ่าย ซึ่งเขียนด้วย...

ซีพีเอ็น

โลโก้ CPAN

เครือข่ายเก็บถาวร Perl ที่ครอบคลุม ( CPAN [ 1 ] : xvii ) เป็นคลังซอฟต์แวร์ ที่มี โมดูลซอฟต์แวร์มากกว่า 220,000 โมดูล และเอกสารประกอบสำหรับ 45,500 การแจกจ่าย ซึ่งเขียนด้วยภาษาการเขียนโปรแกรมPerl โดยผู้มีส่วนร่วมมากกว่า 14,500 คน[ 2 ] CPANสามารถหมายถึงเครือข่ายเก็บถาวรหรือโปรแกรม Perl ที่ทำหน้าที่เป็นอินเทอร์เฟซไปยังเครือข่ายและเป็นตัวติดตั้งซอฟต์แวร์อัตโนมัติ (คล้ายกับตัวจัดการแพ็กเกจ ) ซอฟต์แวร์ส่วนใหญ่ใน CPAN เป็นซอฟต์แวร์ฟรีและโอเพนซอร์ส[ 3 ]

ประวัติศาสตร์

CPAN ถูกคิดค้นขึ้นในปี 1993 และเปิดใช้งานออนไลน์ตั้งแต่เดือนตุลาคม 1995 [ 4 ]โดยอิงตาม แบบจำลอง CTANและเริ่มต้นจากการเป็นสถานที่สำหรับรวมโครงสร้างของคลังข้อมูล Perl ที่กระจัดกระจาย[ 5 ]

บทบาท

เช่นเดียวกับ ภาษาโปรแกรมหลาย ภาษา Perl มีกลไกในการใช้ไลบรารีโค้ดภายนอก ทำให้ไฟล์เดียวมีรูทีนทั่วไปที่ใช้โดยหลายโปรแกรม Perl เรียกสิ่ง เหล่านี้ ว่าโมดูล โมดูลของ Perlมักจะถูกติดตั้งในหนึ่งในหลายไดเร็กทอรี ซึ่ง เส้นทาง ของไดเร็กทอรี เหล่านั้น จะถูกใส่ไว้ใน ตัวแปลภาษา Perl เมื่อทำการคอมไพล์ ครั้งแรก ในระบบปฏิบัติการที่คล้าย Unix เส้นทางทั่วไป ได้แก่/usr/lib/perl5 , /usr/local/lib/perl5และไดเร็กทอรีย่อยต่างๆ ของไดเร็กทอรีเหล่านั้น

Perl มาพร้อมกับชุดโมดูลหลัก จำนวนเล็กน้อย โมดูล เหล่านี้บางส่วนทำหน้าที่บูตสแตรป เช่น ExtUtils::MakeMaker [ 6 ]ซึ่งใช้ในการสร้างMakefileสำหรับการสร้างและติดตั้งโมดูลส่วนขยายอื่นๆ ส่วนโมดูลอื่นๆ เช่น List::Util [ 7 ]เป็นเพียงโมดูลที่ใช้กันทั่วไป

จุดประสงค์หลักของ CPAN คือการช่วยให้นักโปรแกรมค้นหาโมดูลและโปรแกรมที่ไม่ได้รวมอยู่ในชุดการแจกจ่ายมาตรฐานของ Perl โครงสร้างของ CPAN เป็นแบบกระจายศูนย์ ผู้เขียนดูแลและปรับปรุงโมดูลของตนเอง การ Fork และการสร้างโมดูลที่แข่งขันกันเพื่อภารกิจหรือจุดประสงค์เดียวกันนั้นเป็นเรื่องปกติ มีระบบติดตามข้อบกพร่องของบุคคลที่สามซึ่งตั้งค่าโดยอัตโนมัติสำหรับการแจกจ่ายที่อัปโหลด แต่ผู้เขียนอาจเลือกใช้ระบบติดตามข้อบกพร่องอื่น เช่นGitHubในทำนองเดียวกัน แม้ว่า GitHub จะเป็นสถานที่ยอดนิยมในการจัดเก็บซอร์สโค้ดสำหรับการแจกจ่าย แต่ผู้เขียนอาจจัดเก็บไว้ที่ใดก็ได้ที่ต้องการ หรืออาจไม่สามารถเข้าถึงได้โดยสาธารณะเลย ผู้ดูแลอาจให้สิทธิ์แก่ผู้อื่นในการดูแลหรือรับช่วงต่อโมดูลของตน และผู้ดูแลระบบอาจให้สิทธิ์แก่ผู้ที่ต้องการรับช่วงต่อโมดูลที่ถูกทิ้งร้าง เวอร์ชันก่อนหน้าของการแจกจ่ายที่อัปเดตแล้วจะยังคงอยู่ใน CPAN จนกว่าผู้ที่อัปโหลดจะลบออก และเครือข่ายมิเรอร์รองที่เรียกว่า BackPAN จะเก็บรักษาการแจกจ่ายไว้แม้ว่าจะถูกลบออกจาก CPAN แล้วก็ตาม[ 8 ]นอกจากนี้ ประวัติทั้งหมดของ CPAN และโมดูลทั้งหมดก็มีให้ใช้งานในรูปแบบโครงการ GitPAN [ 9 ]ซึ่งช่วยให้สามารถดูประวัติทั้งหมดของโมดูลทั้งหมดได้อย่างง่ายดายและบำรุงรักษา forks ได้ง่าย CPAN ยังใช้ในการเผยแพร่ Perl เวอร์ชันใหม่ รวมถึงโครงการที่เกี่ยวข้อง เช่นParrotและRakuด้วย

โครงสร้าง

ไฟล์บน CPAN เรียกว่า " ดิสทริบิวชัน" ดิสทริบิว ชันอาจประกอบด้วยโมดูล ไฟล์เอกสาร หรือโปรแกรมอย่างน้อยหนึ่งรายการที่บรรจุอยู่ในรูปแบบการจัดเก็บทั่วไป เช่น ไฟล์เก็บถาวร แบบ gzip tarหรือ ไฟล์ ZIPดิสทริบิวชันมักจะมีสคริปต์การติดตั้ง (โดยปกติเรียกว่าMakefile.PLหรือBuild.PL ) และสคริปต์ทดสอบที่สามารถเรียกใช้เพื่อตรวจสอบว่าเนื้อหาของดิสทริบิวชันทำงานได้อย่างถูกต้อง ดิสทริบิวชันใหม่จะถูกอัปโหลดไปยังเซิร์ฟเวอร์อัปโหลดของผู้เขียน Perl หรือ PAUSE (ดูส่วน " การอัปโหลดดิสทริบิวชันด้วย PAUSE ")

ในปี 2546 การแจกจ่ายเริ่มรวมไฟล์เมตาเดตาที่เรียกว่าMETA.ymlซึ่งระบุชื่อการแจกจ่าย เวอร์ชัน การพึ่งพา และข้อมูลที่เป็นประโยชน์อื่นๆ อย่างไรก็ตาม ไม่ใช่ทุกการแจกจ่ายจะมีเมตาเดตา เมื่อไม่มีเมตาเดตาในการแจกจ่าย ซอฟต์แวร์ของ PAUSE จะพยายามวิเคราะห์โค้ดในการแจกจ่ายเพื่อค้นหาข้อมูลเดียวกัน ซึ่งอาจไม่น่าเชื่อถือมากนัก ในปี 2553 ได้มีการสร้างข้อกำหนดเวอร์ชัน 2 [ 10 ]เพื่อใช้ผ่านไฟล์ใหม่ที่เรียกว่าMETA.jsonโดยมักจะรวมไฟล์รูปแบบ YAML ไว้ด้วยเพื่อความ เข้ากันได้กับ เวอร์ชัน ก่อนหน้า

เนื่องจากมีโมดูลจำนวนมากนับพัน CPAN จึงจำเป็นต้องมีโครงสร้างเพื่อให้ใช้งานได้อย่างมีประสิทธิภาพ ผู้เขียนมักจัดเรียงโมดูลของตนตามลำดับชั้นของชื่อโมดูล Perl (เช่น หรือApache::DBI) Lingua::EN::Inflectตามวัตถุประสงค์หรือขอบเขตการใช้งาน แม้ว่าจะไม่ได้มีการบังคับใช้ก็ตาม

โดยปกติแล้ว ชื่อไฟล์ของโมดูลใน CPAN จะอยู่ในรูปแบบCGI-Application-3.1 (โดยที่::ในชื่อโมดูลถูกแทนที่ด้วยเครื่องหมายขีดกลาง และมีการเพิ่มหมายเลขเวอร์ชันต่อท้ายชื่อ) แต่เป็นเพียงธรรมเนียมปฏิบัติเท่านั้น ไฟล์แจกจ่ายที่มีชื่อเสียงหลายไฟล์ไม่ได้ปฏิบัติตามธรรมเนียมนี้ โดยเฉพาะอย่างยิ่งไฟล์ที่ประกอบด้วยหลายโมดูล ข้อจำกัดด้านความปลอดภัยทำให้ไม่สามารถเปลี่ยนชื่อไฟล์แจกจ่ายให้เหมือนกันได้ ดังนั้นชื่อไฟล์แจกจ่ายเกือบทั้งหมดจึงมีหมายเลขเวอร์ชัน รวมอยู่ ด้วย

ส่วนประกอบ

โครงสร้างพื้นฐานการกระจายของ CPAN ประกอบด้วยเครือข่ายมิเรอร์ทั่วโลกมากกว่า 250 แห่งในกว่า 60 ประเทศ[ 11 ]มิเรอร์แต่ละแห่งมีข้อมูล ประมาณ 36 กิกะไบต์[ 12 ]

มิเรอร์ส่วนใหญ่จะอัปเดตตัวเองทุกชั่วโมง ทุกวัน หรือสองวันต่อครั้งจากไซต์หลักของ CPAN [ 13 ]บางไซต์เป็นเซิร์ฟเวอร์ FTP หลักที่มิเรอร์ซอฟต์แวร์อื่นๆ จำนวนมาก แต่บางไซต์ก็เป็นเพียงเซิร์ฟเวอร์ที่บริษัทต่างๆ เป็นเจ้าของซึ่งใช้ Perl อย่างหนัก มีมิเรอร์อย่างน้อยสองแห่งในทุกทวีป ยกเว้นทวีปแอนตาร์กติกา

มีการเขียนโปรแกรมค้นหาหลายตัวเพื่อช่วยให้โปรแกรมเมอร์ Perl คัดกรอง CPAN ได้search.cpan.org อย่างเป็นทางการประกอบด้วยการค้นหาข้อความ ดัชนีโมดูลที่ สามารถ เรียกดูได้ และสำเนาที่แยกออกมาจากการแจกจ่ายทั้งหมดที่ มีอยู่ใน CPAN ในปัจจุบัน เมื่อวันที่ 16 พฤษภาคม 2018 มูลนิธิ Perl ได้ประกาศว่า search.cpan.org จะปิดตัวลงในวันที่ 29 มิถุนายน 2018 (หลังจากดำเนินการมา 19 ปี) เนื่องจากโค้ดเบสที่เก่าและภาระในการบำรุงรักษา ผู้ใช้จะถูกเปลี่ยนเส้นทางไปยัง MetaCPAN ซึ่งเป็นทางเลือกของบุคคลที่สาม[ 14 ] [ 15 ]

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

ผู้เขียนสามารถอัปโหลดเวอร์ชันใหม่ไปยัง CPAN ผ่านทางPerl Authors Upload Server (PAUSE) ได้ โดยต้องขอสร้างบัญชี PAUSE ก่อนจึงจะทำได้

เมื่อลงทะเบียนแล้ว พวกเขาสามารถใช้เว็บอินเทอร์เฟซที่pause.perl.orgหรืออินเทอร์เฟซFTP เพื่ออัปโหลดไฟล์ไปยังไดเร็กทอรีของตนเองและลบไฟล์ได้ โมดูลในการอัปโหลดจะถูกจัดทำดัชนีเป็นแบบมาตรฐานก็ต่อเมื่อชื่อโมดูลนั้นยังไม่เคยถูกใช้มาก่อน (โดยให้สิทธิ์แก่ผู้ที่อัปโหลด ก่อน ) หรือหากผู้ที่อัปโหลดมีสิทธิ์สำหรับชื่อนั้น และหากโมดูลนั้นเป็นเวอร์ชันที่สูงกว่ารายการที่มีอยู่[ 16 ]สามารถระบุสิ่งนี้ได้ผ่านเว็บอินเทอร์เฟซของ PAUSE

CPAN.pm, CPANPLUS และ cpanminus

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

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

มีการพัฒนาทางเลือกที่ทันสมัยและมีขนาดเล็กกว่าสำหรับตัวติดตั้ง CPAN เหล่านั้น โดยเรียกว่า cpanminus cpanminus ถูกออกแบบมาให้ใช้หน่วยความจำน้อยกว่ามาก ซึ่งมักจำเป็นในสภาพแวดล้อมที่มีหน่วยความจำจำกัด และสามารถใช้งานได้ในฐานะสคริปต์แบบสแตนด์อโลน โดยสามารถติดตั้งตัวเองได้โดยต้องการเพียงชุดโมดูล Perl หลักที่คาดหวังไว้เท่านั้น นอกจากนี้ยังสามารถดาวน์โหลดได้จาก CPAN ในรูปแบบโมดูล App::cpanminus ซึ่งจะติดตั้ง สคริปต์ cpanm cpanminus ไม่เก็บรักษาหรือพึ่งพาการกำหนดค่าแบบถาวร แต่จะถูกกำหนดค่าโดยสภาพแวดล้อมและตัวเลือกบรรทัดคำสั่งเท่านั้น cpanminus ไม่มีส่วนประกอบเชลล์แบบโต้ตอบ มันรู้จักรูปแบบ cpanfile สำหรับการระบุข้อกำหนดเบื้องต้น ซึ่งมีประโยชน์ในโครงการ Perl เฉพาะกิจที่อาจไม่ได้ออกแบบมาสำหรับการติดตั้ง CPAN นอกจากนี้ cpanminus ยังมีความสามารถในการถอนการติดตั้งการแจกจ่ายได้อีกด้วย

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

อิทธิพล

โปรแกรมเมอร์ Perl ที่มีประสบการณ์มักแสดงความคิดเห็นว่าพลังครึ่งหนึ่งของ Perl อยู่ใน CPAN มันถูกเรียกว่าเป็นแอปพลิเคชันสังหารของ Perl [ 17 ]มันเทียบเท่ากับComposerสำหรับPHP ; ที่เก็บ PyPI (Python Package Index) สำหรับPython ; RubyGemsสำหรับRuby ; CRANสำหรับR ; npmสำหรับNode.js ; LuaRocksสำหรับLua ; MavenสำหรับJava ; และHackageสำหรับHaskellการใช้เนมสเปซแบบอนุญาโตตุลาการ ระบบการทดสอบ และรูปแบบเอกสารที่กำหนดไว้อย่างดีของ CPAN ทำให้มันมีเอกลักษณ์

เนื่องจากความสำคัญต่อชุมชนนักพัฒนา Perl ทำให้ CPAN ทั้งมีส่วนในการกำหนดและได้รับอิทธิพลจากวัฒนธรรมของ Perl Jarkko Hietaniemiผู้ซึ่งเรียกตัวเองว่าเป็น "บรรณารักษ์หลัก" มักมีส่วนร่วมใน เรื่องตลก วันเอพริลฟูลส์เมื่อวันที่ 1 เมษายน 2545 เว็บไซต์นี้ถูกเปลี่ยนชื่อชั่วคราวเป็นCJANโดยที่ "J" ย่อมาจาก "Java" ในปี 2546 www.cpan.orgชื่อโดเมนถูกเปลี่ยนเส้นทางไปยังMatt's Script Archiveซึ่งเป็นเว็บไซต์ที่โด่งดังในชุมชน Perl ในเรื่องการเขียนโค้ดที่ไม่ดี[ 18 ] [ 19 ] [ 20 ]

โมดูลบางส่วนใน CPAN ถูกแจกจ่ายในลักษณะตลกขบขันAcme::ลำดับชั้นถูกสงวนไว้สำหรับโมดูลตลกๆ ตัวอย่างเช่น โมดูลหนึ่งAcme::Don'tเพิ่มdon'tฟังก์ชันที่ไม่รันโค้ดที่กำหนดให้ (เพื่อเสริมฟังก์ชันdoในตัวที่รันโค้ด) แม้แต่ภายนอกAcme::ลำดับชั้น โมดูลบางส่วนก็ยังเขียนขึ้นเพื่อความบันเทิงเป็นหลัก ตัวอย่างเช่น โมดูลหนึ่งLingua::Romana::Perligataที่สามารถใช้เขียนโปรแกรม Perl ด้วยภาษาละตินบางส่วนได้

ในปี 2005 กลุ่มนักพัฒนา Perl ที่สนใจJavaScriptได้รวมตัวกันสร้างJSANหรือ JavaScript Archive Network JSAN เป็นการนำโครงสร้างพื้นฐานของ CPAN มาปรับใช้กับภาษา JavaScript โดยตรง ซึ่งตลอดช่วงชีวิตส่วนใหญ่ของภาษา JavaScript นั้นไม่มี "ชุมชน" ที่เหนียวแน่น

ในปี 2008 หลังจากได้พบกับAdam Kennedy ผู้ดูแลระบบ CPAN โดยบังเอิญ ในงาน Open Source Developers Conference Rusty Russell นักพัฒนาเคอร์เนล Linux จึงได้สร้าง CCAN หรือ Comprehensive C Archive Network ขึ้นมา CCAN เป็นการนำสถาปัตยกรรมของ CPAN มาปรับใช้กับภาษา Cโดยตรง

CRAN ซึ่งเป็นเครือข่ายคลังเก็บข้อมูล R ที่ครอบคลุม เป็นชุดของเซิร์ฟเวอร์สำรองที่จัดเก็บ การแจกจ่าย ภาษา Rเอกสารประกอบ และส่วนขยายที่พัฒนาโดยชุมชน[ 21 ]

ดูเพิ่มเติม

  • เว็บไซต์อย่างเป็นทางการแก้ไขข้อมูลนี้ได้ที่วิกิดาต้า
  • เมตาซีพีเอ็น
  • รายชื่อเซิร์ฟเวอร์มิเรอร์อย่างเป็นทางการของ CPANพร้อมสถานะของเซิร์ฟเวอร์มิเรอร์
  • ZCAN - "ปรัชญาเซนแห่งเครือข่ายคลังข้อมูลแบบครบวงจร" - เอกสารที่มุ่งอธิบายว่า CPAN ประสบความสำเร็จได้อย่างไรและเพราะเหตุใด รวมถึงวิธีการที่จะทำซ้ำในโครงการที่คล้ายคลึงกัน (9 มกราคม 2546 โดยJarkko Hietaniemi )

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=CPAN&oldid=1354137448 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ซีพีเอ็น

เครือ ข่ายเก็บถาวร Perl ที่ครอบคลุม ( CPAN [ 1 ] : xvii ) เป็น คลังซอฟต์แวร์ ที่มี โมดูลซอฟต์แวร์ มากกว่า 220,000 โมดูล และเอกสารประกอบสำหรับ 45,500 การแจกจ่าย ซึ่งเขียนด้วย...

ประวัติศาสตร์

CPAN ถูกคิดค้นขึ้นในปี 1993 และเปิดใช้งานออนไลน์ตั้งแต่เดือนตุลาคม 1995 [ 4 ] โดยอิงตาม แบบจำลอง CTAN และเริ่มต้นจากการเป็นสถานที่สำหรับรวมโครงสร้างของคลังข้อมูล Perl ที่กระจัดกระจาย [ 5 ]

บทบาท

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

โครงสร้าง

ไฟล์บน CPAN เรียกว่า " ดิสทริบิวชัน" ดิสทริบิว ชันอาจประกอบด้วยโมดูล ไฟล์เอกสาร หรือโปรแกรมอย่างน้อยหนึ่งรายการที่บรรจุอยู่ในรูปแบบการจัดเก็บทั่วไป เช่น ไฟล์เก็บถาวร แบบ gzip tar หรือ ไฟล์ ZIP ดิสทริบิวชันมักจะมีสคริปต์การติดตั้ง (โดยปกติเรียกว่า Makefile.