Software Packaging in 2012
Total Page:16
File Type:pdf, Size:1020Kb
Software Packaging in 2012 International PHP Conference 2012 | October, 15th | Arne Blankerts Your Goal? » Share your code » Distribute a library or framework » Release an application » Deploy to a production or stage server » Deploy identically to many servers » ...? sharing experience Share your code » You do not need a packaging system » Use a version control system » Get a github.com account !" sharing experience Distribute a library or framework » #ear » http://pear.php.net » #yrus aka Pear& » http://pear2.php.net » Composer » http://getcomposer.org sharing experience Release an ap lication » #ear » #(# )rchive *#()R" » +S Level Packages » R#- » D./ » ... sharing experience De loy to a production or stage server » #ear » +S Level Packages » 01 sharing experience The choice is yours. And depends on your goal. PE%R » The Legacy Installer » #ackages come as tar.gz file » Package.xml for meta information » Limited Dependency management » 'an install depended #.)R packages » Informs on version / extension mismatches » #ackages are organized in 'hannels sharing experience PE%R - Pirum » ) #.AR Channel Server » http://pirum.sensiolabs.org% » http://github.com/fabpot/Pirum » 0nstalled via #.AR » pear channel-discover pear.pirum-project.org » pear installes pirum/Pirum sharing experience 'reating a pear package » Create a package.3ml » /uild package$ » pear package » )dd to prium$ » pirum add package.tgz sharing experience Pyrus / PEAR 2 » Rewritten #.AR Installer » Same package.3ml » Comes as phar » Seems to be pretty much a dead project sharing experience 'omposer » .asy to install » curl 5s https://getcomposer.org/installer | php » Comes as phar » -akes heavy use of git » )nd github.com » #ackages listed on packagist.org » Limited dependency management sharing experience 'reating a Com oser Package » Create a composer.json » )dd it to your git project » et a github.com account » #ush your code » Register with packagist.org » 1echnically7 composer does not exactly create packages sharing experience GIT » Not e3actly a package either » Can be used for deployment » 'reate empty repository » 'hange configuration to a have working directory » Push to ”empty“ repository » Very limited dependency managament » 01 Submodules sharing experience OS Level Packages » Distribution specific format and handling » Yum on <edora/Redhat%'entOS and derivatives » )pt on Debian/Ubuntu and derivatives » Complete dependency management » )s long as they are available as distro package sharing experience 'reating RPM packages » Create an application.spec file » /uild package$ » rpmbuild -bb application.spec » )dd to repository » createrepo directory » 0nstall » yum install package sharing experience PHAR » )llows for all5in5one packages » Different file formats possible » 8ative » Basically a tar5alike format » ZIP 'ontainer » No dependency management » )ll Dependencies should be bundled sharing experience 'reating a PHAR » .nable #HAR write mode » phar.readonly = ? » For a library » phpab -p -o library.phar src » For an application » phpab --all -p -o application.phar 5t app.php src sharing experience ,anually creating a P-AR package » Use phar cli application » Use =0# » Simply rename the .zip to .phar » )dd a stub as needed sharing experience %nything else? Other ackaging options » Simple tar.gz / tar.bz2 / ... » Windows 0nstaller » =end Server Deployment » +ther proprietary formats sharing experience 'ontact » @eb http://theP(#.cc/ » Mail arne@the#(#.cc team@the#(#.cc » 1witter Aarneblankerts Athe#(#cc sharing experience.