.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Pinto::Manual::Installing 3pm" .TH Pinto::Manual::Installing 3pm "2014-07-20" "perl v5.18.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Pinto::Manual::Installing \- Tips for installing Pinto .SH "VERSION" .IX Header "VERSION" version 0.097 .SH "SYNOPSIS" .IX Header "SYNOPSIS" For the impatient... .PP .Vb 2 \& curl \-L http://getpinto.stratopan.com | bash \& source ~/opt/local/pinto/etc/bashrc .Ve .PP And then possibly... .PP .Vb 1 \& echo source ~/opt/local/pinto/etc/bashrc >> ~/.bashrc .Ve .SH "APPLICATION VERSUS LIBRARY VERSUS SERVER" .IX Header "APPLICATION VERSUS LIBRARY VERSUS SERVER" For most situations, Pinto is more like an \fIapplication\fR than a \fIlibrary\fR. It is a tool that you use to develop and manage your code, but Pinto itself is not \fIpart of\fR your code. Pinto also has a lot of dependencies, some of which may conflict with or complicate your code. .PP Pinto can also serve as the backend supporting a daemonized Starman server exposed to the wilds of the internet. Doing so opens the door to many additional security concerns. We suggest below some practices we hope will serve to minimize the risks of doing so. .SH "INSTALLING AS AN APPLICATION" .IX Header "INSTALLING AS AN APPLICATION" For the reasons above, I recommend installing Pinto as a stand-alone application in its own sandbox. That way, it doesn't pollute your environment with its dependencies. Nor will you pollute Pinto with changes to your environment, so Pinto will function even when your other environment dependencies are broken. And hopefully, you can use Pinto to help fix whatever broke! .SS "Step 1: Run the pinto installer script" .IX Subsection "Step 1: Run the pinto installer script" The installer script at is mostly just a wrapper around cpanm, which installs pinto in a self-contained directory: .PP .Vb 2 \& # If you use curl... \& curl \-L http://getpinto.stratopan.com | bash \& \& # If you use wget... \& wget \-O \- http://getpinto.stratopan.com | bash .Ve .PP All the dependent modules will come from a curated repository on Stratopan . These aren't always the latest versions of things, but they are versions that I know will work. .SS "Step 2: Set up the pinto environment" .IX Subsection "Step 2: Set up the pinto environment" The pinto installer generates a setup script for you. By default, it is located at \fI~/opt/local/pinto/etc/bashrc\fR. To load that setup into your current shell, just give this command: .PP .Vb 1 \& source ~/opt/local/pinto/etc/bashrc .Ve .PP To make these settings part of your everyday shell environment, just add that last command to your \fI~/.profile\fR or \fI~/.bashrc\fR or whatever setup file is appropriate for your shell. .PP If you wish to customize any of the other environment variables that pinto uses, you can place those commands in \fI~/.pintorc\fR. If that file exists, the setup script will source them as well. See pinto for a list of the relevant environment variables. .SH "INSTALLING AS A SERVER" .IX Header "INSTALLING AS A SERVER" If you will be running the pintod daemon exposed to the internet, it is suggested that you assume root privileges and proceed as follows: .PP (1) create a pinto user like so: .PP .Vb 2 \& adduser \-\-system \-\-home /opt/local/pinto \-\-shell /bin/false \e \& \-\-disabled\-login \-\-group pinto .Ve .PP (2) set some environmental variables: .PP .Vb 2 \& export PINTO_HOME=/opt/local/pinto \& export PINTO_REPOSITORY_ROOT=/var/pinto .Ve .PP check that the exports took with `env`. .PP (3) run the installer as described above, and source the environmental variables to facilitate the steps of setting up the repository. .PP (4) choose an authentication backend and install it like so: .PP .Vb 1 \& cpanm \-L $PINTO_HOME Authen::Simple::Kerberos .Ve .PP to review your options see Authen::Simple. .PP (5) choose an appropriate startup script and install it: .PP .Vb 1 \& cp $PINTO_HOME/etc/init.d/pintod.debian /etc/init.d/pintod \& \& update\-rc.d pintod start 50 2 3 4 5 . stop 20 0 1 6 . .Ve .SS "\s-1AN IMPORTANT NOTE ABOUT SECURITY\s0" .IX Subsection "AN IMPORTANT NOTE ABOUT SECURITY" Currently daemonizing the pintod server will run the starman workers as root. We hope to soon have the pintod daemon drop its privileges after initiating the master and before spawning the workers, so that the workers will run as the pinto user. Until that feature is in place, pinto repository administrators are urged to keep their installations safely behind firewalls, protected from the potentially hostile user. .SH "INSTALLING AS A LIBRARY" .IX Header "INSTALLING AS A LIBRARY" If you're going to be hacking on Pinto itself, or want to try building on the \s-1API\s0 directly, then you can install Pinto straight into your development environment, just like you would do for any other module. .PP Just beware that Pinto has lots of dependencies. And if you subsequently upgrade any of those dependencies to something that breaks Pinto, then you might find yourself in a pickle. The whole point of Pinto is to help you manage your dependencies, so if you break Pinto, it won't be able to help you. .SH "OTHER INSTALLATION OPTIONS" .IX Header "OTHER INSTALLATION OPTIONS" Naturally, installation procedures will vary from one environment to another. If this procedure doesn't work for you, or if you'd like to suggest a procedure for a different environment (e.g. Windows, Perlbrew, Strawberry Perl, etc.), then please contact me. Your contributions would be greatly appreciated. .SH "SEE ALSO" .IX Header "SEE ALSO" Pinto::Manual::QuickStart .PP Pinto::Manual::Tutorial .PP Pinto (the library) .PP pinto (the command) .SH "AUTHOR" .IX Header "AUTHOR" Jeffrey Ryan Thalhammer .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" This software is copyright (c) 2013 by Jeffrey Ryan Thalhammer. .PP This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.