From 1be510f9529cb082f802408b472a77d074b394c0 Mon Sep 17 00:00:00 2001 From: Nicolas Vigier Date: Sun, 14 Apr 2013 13:46:12 +0000 Subject: Add zarb MLs html archives --- zarb-ml/mageia-dev/2012-July/017450.html | 160 +++++++++++++++++++++++++++++++ 1 file changed, 160 insertions(+) create mode 100644 zarb-ml/mageia-dev/2012-July/017450.html (limited to 'zarb-ml/mageia-dev/2012-July/017450.html') diff --git a/zarb-ml/mageia-dev/2012-July/017450.html b/zarb-ml/mageia-dev/2012-July/017450.html new file mode 100644 index 000000000..7f15b9727 --- /dev/null +++ b/zarb-ml/mageia-dev/2012-July/017450.html @@ -0,0 +1,160 @@ + + + + [Mageia-dev] puppet and the urpmi config + + + + + + + + + +

[Mageia-dev] puppet and the urpmi config

+ Olivier Thauvin + nanardon at nanardon.zarb.org +
+ Wed Jul 18 14:29:06 CEST 2012 +

+
+ +
Hello,
+
+As sys admin I use puppet to push config to servers.
+
+It is very simple, puppet detect a file is not the same than the
+reference, copy the file, restart the daemon or trigger a command if
+need.
+
+Here come urpmi, can you push by force the urpmi.cfg and make it work
+using some --force and --do-it-even-it-is-really-not-clean but each time
+an urpmi command is called the config file written again.
+
+Then the file is changed, making puppet updating the urpmi.cfg again and
+again.
+
+To avoid this problem I wrote the attached script: it take as argument
+the path to an urpmi.cfg and synchronize the config found with the real
+urpmi.cfg.
+- removed media are removed properly
+- the media.cfg used as template is unchanged
+- urpmi.update is called to update the index
+- urpmi base is locked to avoid race condition
+
+In cases this can be usefull.
+
+Ideas and patches welcome.
+
+-- 
+
+Olivier Thauvin
+CNRS  -  LATMOS
+♖ ♘ ♗ ♕ ♔ ♗ ♘ ♖
+-------------- next part --------------
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use urpm;
+use urpm::cfg;
+use urpm::media;
+use urpm::args;
+use urpm::download;
+use Getopt::Long;
+use Pod::Usage;
+
+GetOptions(
+    help => sub { pod2usage() },
+);# or pod2sage(1);
+
+my ($config) = @ARGV;
+
+my $template = urpm::cfg::load_config($config);
+
+{
+my $urpm = urpm->new_parse_cmdline or exit(1);
+
+my $_urpmi_lock = urpm::lock::urpmi_db(
+    $urpm,
+    'exclusive',
+    wait => 1,
+);
+
+urpm::media::read_config($urpm);
+
+my %media_to_update = ();
+
+foreach my $medium (@{ $urpm->{media} || [] }) {
+    my ($tlpmedia) = (grep { $_->{name} eq $medium->{name} }
+        @{ $template->{media} || [] });
+    if (! $tlpmedia) {
+        my @selected = urpm::media::select_media_by_name($urpm, [ $medium->{name} ],
+            !$urpm->{options}{fuzzy});
+        urpm::media::remove_media($urpm, \@selected);
+    } else {
+        %{ $medium } = ();
+        %{ $medium } = %{ $tlpmedia };
+    }
+}
+foreach my $medium (@{ $template->{media} || [] }) {
+    if (!grep { $_->{name} eq $medium->{name} } 
+        (@{ $urpm->{media} || [] })) {
+        push(@{ $urpm->{media} }, $medium);
+    }
+}
+
+$urpm->{modified} = 1;
+urpm::media::write_config($urpm);
+
+}
+system('/usr/sbin/urpmi.update', '-a', '-q');
+-------------- next part --------------
+A non-text attachment was scrubbed...
+Name: not available
+Type: application/pgp-signature
+Size: 197 bytes
+Desc: not available
+URL: </pipermail/mageia-dev/attachments/20120718/16773ec7/attachment.asc>
+
+ + + + + + + + + + +
+

+ +
+More information about the Mageia-dev +mailing list
+ -- cgit v1.2.1