On Friday, January 4, 2013 10:39:53 AM UTC+1, magi...@gmail.com wrote:
>
> I understand exactly what source packages do, if it makes it easier for 
> you I'll call them tar.gz files.
> Also, I don't find your comparison valid, as the result of package 
> installation be it yum or ./configure && make && make install is the same: 
> software being installed.
>
> My meaning is that compiling from source will always be with us, and it's 
> the prominent way of releasing new software.
>

When all the required features of a source build & install environment are 
met, like uninstalling, upgrading, listing, you end up with a new type of 
package provider. As you don't want a split between OS-provided software 
(libraries your source file depends on), it's easier to use the provider 
your OS comes with.

The requirements for building source are often many. You'll need a compiler 
and a toolchain, at least. Many don't want all of these tools installed on 
their (virtual) production servers, because they consume space, require 
updates, and because they facilitate exploits. Less software means less 
work and less risk. 

Building software on a separate system and deploying the resulting binaries 
and documentation to production systems is one step up from compiling on 
your production systems.

Many of us used to compile from source earlier in our careers, so don't 
asume we don't know about anything but ready made packages ;-)

Now for a quick hack to address your problem:

Why don't you try to do a ./configure --prefix=/usr/local --specialopts && 
make && make install on a clean system and create a tar file of /usr/local/ 
afterwards?  Missing dependencies can be met by installing OS packages on 
your test system. The installation on your target system can be a hack like 
this:

# dependencies
package { [ "dep1", "dep2", "dep3", ]: ensure => installed, }

file { "/var/tmp/curl-custom-version.tar.gz":
  ensure => file,
  source => "puppet:///module/curl-custom-version.tar.gz",
  notify => Exec["unpackcurl"],
}

exec { "unpackcurl": 
  command => "tar -C /usr/local -xzf /var/tmp/curl-custom-version.tar.gz",
  creates => "/usr/local/bin/curl",
  path => "/usr/sbin:/usr/bin:/sbin:/bin",
  logoutput => true,
  refreshonly => false,
}

If possible, use packages, but if you can't meet your deadline this way, 
try the above (and discover the wonderful world of packaging anyway at a 
later time).

Best,

Hans

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/puppet-users/-/dprmfK80yh8J.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to