Yes, I finally sat down and really dug into this problem and it was an 
ordering thing...but it wasn't just ordering. It turned out that the 
dependency issue was with postgresql92-libs. If I installed that by hand 
first then I would get a clean run in puppet with all the other packages 
and the version I wanted installed. The code I used to order was the 
following (though I like your solution a bit better).

Package['postgresql92-libs']->Package['postgresql92-server']->Package['postgresql92-contrib']->Package['postgresql92-devel']
 

$packageList = [ "${postgresBase}",
                   "${postgresBase}-libs",
                   "${postgresBase}-server",
                   "${postgresBase}-contrib",
                   "${postgresBase}-devel", ]

  package { $packageList:
    ensure      => $postgresqlVersion,
  }

So the short of the story was that it was both ordering *and* a missing 
package that was creating my problem. 

On Wednesday, August 13, 2014 1:20:43 PM UTC-4, jcbollinger wrote:
>
>
>
> On Friday, August 8, 2014 10:33:48 AM UTC-5, Mark Rosedale wrote:
>>
>> Hey Matthias, 
>>
>> Thanks for the response. So I do see some additional information that may 
>> help. 
>>
>> So it appears that puppet does successfully install postgresql and 
>> postgresql-server and postgres92, and that explains what did get installed.
>>
>> Notice: /Stage[pre]/Yum::Repo/Exec[refresh-yum-cache]: Triggered 
>> 'refresh' from 1 events
>> Notice: 
>> /Stage[main]/Postgresql::Install/Package[postgresql-8.1.23-10.el5_10]/ensure:
>>  
>> created
>> Notice: 
>> /Stage[main]/Postgresql::Install/Package[postgresql-server-8.1.23-10.el5_10]/ensure:
>>  
>> created
>> Error: Could not update: Execution of '/usr/bin/yum -d 0 -e 0 -y install 
>> postgresql92-server-9.2.8-1PGDG.rhel5' returned 1: postgres
>> ql92-9.2.8-1PGDG.rhel5.x86_64 from vivox-postgresql has depsolving 
>> problems
>>   --> Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is needed 
>> by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-po
>> stgresql)
>> Error: Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is 
>> needed by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-p
>> ostgresql)
>>  You could try using --skip-broken to work around the problem
>>  You could try running: package-cleanup --problems
>>                         package-cleanup --dupes
>>                         rpm -Va --nofiles --nodigest
>> Wrapped exception:
>> Execution of '/usr/bin/yum -d 0 -e 0 -y install 
>> postgresql92-server-9.2.8-1PGDG.rhel5' returned 1: 
>> postgresql92-9.2.8-1PGDG.rhel5.x8
>> 6_64 from vivox-postgresql has depsolving problems
>>   --> Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is needed 
>> by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-po
>> stgresql)
>> Error: Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is 
>> needed by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-p
>> ostgresql)
>>  You could try using --skip-broken to work around the problem
>>  You could try running: package-cleanup --problems
>>                         package-cleanup --dupes
>>                         rpm -Va --nofiles --nodigest
>> Error: 
>> /Stage[main]/Postgresql::Install/Package[postgresql92-server]/ensure: 
>> change from absent to 9.2.8-1PGDG.rhel5 failed: Could n
>> ot update: Execution of '/usr/bin/yum -d 0 -e 0 -y install 
>> postgresql92-server-9.2.8-1PGDG.rhel5' returned 1: postgresql92-9.2.8-1PG
>> DG.rhel5.x86_64 from vivox-postgresql has depsolving problems
>>   --> Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is needed 
>> by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-po
>> stgresql)
>> Error: Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is 
>> needed by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-p
>> ostgresql)
>>  You could try using --skip-broken to work around the problem
>>  You could try running: package-cleanup --problems
>>                         package-cleanup --dupes
>>                         rpm -Va --nofiles --nodigest
>> Error: Could not update: Execution of '/usr/bin/yum -d 0 -e 0 -y install 
>> postgresql92-contrib-9.2.8-1PGDG.rhel5' returned 1: postgre
>> sql92-9.2.8-1PGDG.rhel5.x86_64 from vivox-postgresql has depsolving 
>> problems
>>   --> Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is needed 
>> by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-po
>> stgresql)
>> Error: Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is 
>> needed by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-p
>> ostgresql)
>>  You could try using --skip-broken to work around the problem
>>  You could try running: package-cleanup --problems
>>                         package-cleanup --dupes
>>                         rpm -Va --nofiles --nodigest
>> Wrapped exception:
>> Execution of '/usr/bin/yum -d 0 -e 0 -y install 
>> postgresql92-contrib-9.2.8-1PGDG.rhel5' returned 1: 
>> postgresql92-9.2.8-1PGDG.rhel5.x
>> 86_64 from vivox-postgresql has depsolving problems
>>   --> Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is needed 
>> by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-po
>> stgresql)
>> Error: Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is 
>> needed by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-p
>> ostgresql)
>>  You could try using --skip-broken to work around the problem
>>  You could try running: package-cleanup --problems
>>                         package-cleanup --dupes
>>                         rpm -Va --nofiles --nodigest
>> Wrapped exception:
>> Execution of '/usr/bin/yum -d 0 -e 0 -y install 
>> postgresql92-devel-9.2.8-1PGDG.rhel5' returned 1: 
>> postgresql92-9.2.8-1PGDG.rhel5.x86_64 from vivox-postgresql has depsolving 
>> problems
>>   --> Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is needed 
>> by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-postgresql)
>> Error: Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is 
>> needed by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-postgresql)
>>  You could try using --skip-broken to work around the problem
>>  You could try running: package-cleanup --problems
>>                         package-cleanup --dupes
>>                         rpm -Va --nofiles --nodigest
>> Error: 
>> /Stage[main]/Postgresql::Install/Package[postgresql92-devel]/ensure: change 
>> from absent to 9.2.8-1PGDG.rhel5 failed: Could not update: Execution of 
>> '/usr/bin/yum -d 0 -e 0 -y install postgresql92-devel-9.2.8-1PGDG.rhel5' 
>> returned 1: postgresql92-9.2.8-1PGDG.rhel5.x86_64 from vivox-postgresql has 
>> depsolving problems
>>   --> Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is needed 
>> by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-postgresql)
>> Error: Missing Dependency: postgresql92-libs = 9.2.8-1PGDG.rhel5 is 
>> needed by package postgresql92-9.2.8-1PGDG.rhel5.x86_64 (vivox-postgresql)
>>  You could try using --skip-broken to work around the problem
>>  You could try running: package-cleanup --problems
>>                         package-cleanup --dupes
>>                         rpm -Va --nofiles --nodigest
>> Notice: /Stage[main]/Postgresql::Install/Package[postgresql92]/ensure: 
>> created
>>
>>
>> So here is my install manifest
>> class postgresql::install($version) {
>>   $postgresBase = $version ? {
>>     '8'                 => "postgresql",
>>     default             => "postgresql92",
>>   }
>>
>>   if ( $postgresBase == '8' ) {
>>     $postgresqlVersion = $::lsbdistrelease ? {
>>       '5.10'    => "8.1.23-10.el5_10",
>>       '6.5'     => "8.4.18-1.el6_4",
>>       default   => "8.1.23-10.el5_10",
>>     }
>>   }
>>   else {
>>     $postgresqlVersion = $::lsbdistrelease ? {
>>       '5.10'            => "9.2.8-1PGDG.rhel5",
>>       '6.5'     => "9.2.8-1PGDG.rhel6",
>>       default           => "9.2.8-1PGDG.rhel6",
>>     }
>>   }
>>
>>   if ( $postgresBase != '8' ) {
>>     $removePackageList = [ "postgresql-8.1.23-10.el5_10",
>>                            "postgresql-server-8.1.23-10.el5_10", ]
>>     package { $removePackageList:
>>       ensure    => "purged",
>>     }
>>   }
>>
>>   $packageList = [ "${postgresBase}",
>>                    "${postgresBase}-server",
>>                    "${postgresBase}-contrib",
>>                    "${postgresBase}-devel", ]
>>
>>   package { $packageList:
>>     ensure      => $postgresqlVersion,
>>   }
>> }
>>
>>
>> So we have cloned all of the yum repos we need locally. I'm setting up 
>> all of those repos in stage => 'pre' which is set up to run before any of 
>> the other modules, including postgres. So yum is running and fully set up 
>> before postgres tries to install those packages. 
>>
>> So what is failing is, but completes on the second run is 
>> Notice: 
>> /Stage[main]/Postgresql::Install/Package[postgresql92-server]/ensure: 
>> created
>> Notice: 
>> /Stage[main]/Postgresql::Install/Package[postgresql92-contrib]/ensure: 
>> created
>> Notice: 
>> /Stage[main]/Postgresql::Install/Package[postgresql92-devel]/ensure: created
>>
>> So after 2 runs I finally get all the packages that I needed
>>
>> rpm -qa | grep postgres
>> postgresql92-9.2.8-1PGDG.rhel5
>> postgresql92-devel-9.2.8-1PGDG.rhel5
>> postgresql-libs-8.1.23-10.el5_10
>> postgresql92-libs-9.2.8-1PGDG.rhel5
>> postgresql92-server-9.2.8-1PGDG.rhel5
>> postgresql92-contrib-9.2.8-1PGDG.rhel5
>> postgresql-libs-8.1.23-10.el5_10
>>
>> Thoughts? 
>>
>>
>
> Puppet has a limitation with respect to installing packages that it 
> manages each package separately.  At times that can be a performance 
> issue.  It may be that under certain circumstances it also presents a 
> dependency issue.  Very likely if you try to perform package updates from 
> the command line in the same order that you observe Puppet trying to use, 
> then you will see the same depsolving problems.  That might provide 
> additional insight into the nature of the problem.
>
> Supposing that you cannot / will not repackage postgreSQL, though, the 
> nature of the problem doesn't matter much.  Since evidently there are 
> update orders that work, you can just instruct Puppet that it must manage 
> those package in such an order.  For example:
>
>   $packageList = [
>                    "${postgresBase}-server",
>                    "${postgresBase}-contrib",
>                    "${postgresBase}-devel", ]
>
>   package { ${postgresBase}:
>     ensure      => $postgresqlVersion,
>   }
>
>   ->
>
>   package { $packageList:
>     ensure      => $postgresqlVersion,
>   }
>
>
> The order of the declarations in the file doesn't necessarily matter, but 
> the chaining operator (->) between the delcarations does.  You can also use 
> one of the relational metaparameters ('require' would probably be best) 
> instead of a chain.
>
>
> John
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/b828667f-6654-442f-819c-f46b2af7cf89%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to