Slides for the talk dependency-and-deployment at yapc-eu-2009
Dependency
and deployment
management
-
Matt S Trout
-
Shadowcat Systems Limited
http://shadowcat.co.uk/
-
North West
England
-
Web Development
Consultancy
-
Catalyst
DBIx::Class
Moose
-
perl5 is
my VM
-
CPAN is my
language
-
cpan Foo
-
Couldn't
find Bar.pm
-
cpan Bar
-
ARGH
-
Makefile.PL
-
grep | xargs | cpan
-
ARGH
-
make installdeps
-
cpan .
-
Many
versions
-
JSON 2.0
-
ARGH
-
cpan2dist
-
one system
multiple
deployments
-
JSON 2.0
-
ARGH
-
chroots
-
app
+
deps
-
PAR
-
debugging
-
zip file
-
ARGH
-
local::lib
-
commit it?
-
multiple
architectures
-
.... ARGH
-
but
-
local::lib
per deployment
-
fixed set
of system
packages
-
works
ok.
-
can we
do better?
-
only.pm
-
only.pm
PAR
-
stat()
-
stat()
stat()
stat()
stat()
-
ARGH
-
coderef
in @INC
-
Module::Pluggable
-
ARGH
-
*CORE::require
-
shuffle
@INC
-
perl thinks
it's lucky
-
tests
-
PERL5OPT
-
-T
-
ARGH
-
perl -MFoo t/foo.t
-
system()
-
ARGH
-
*CORE::system
-
system { $zero } $program;
-
ARGH
-
$^X
-
fakeperl
-
exec $realperl, '-MFoo', @ARGV;
-
Foo.pm
-
$^X = $fakeperl;
-
requires
-
configure_requires
build_requires
test_requires
requires
-
configure_requires
may imply requires
-
build_requires
doesn't exist
in MakeMaker
-
(CPAN.pm guesses,
CPANPLUS doesn't)
-
test_requires
doesn't exist
... at all ...
-
ARGH
-
just ship
everything
-
'make test'
on target
system GOOD
-
though ...
-
if we own
require ...
-
anyway ...
-
requires
-
package
+version
-
package
<->
dist
-
packages
can move
dists
-
ARGH
-
record
feature
lists
-
record
dist
lists
-
built
against
-
tested
against
-
Module::Compile
-
ARGH
-
recursive
verification
-
first
target?
-
binary builds of
Task::Kensho
-
watch
these
spaces
-
http://enlightenedperl.org/
http://lists.scsys.co.uk/
these slides will be on
http://shadowcat.co.uk/