update framework
am 20.07.2007 15:20:20 von hendedav
Gang,
I am working on a project and would like to incorporate an (auto)
update feature. Does anyone know of an update framework that
currently exists for perl? If not, would anyone have any suggestions
on how to accomplish this? My thoughts are to send a request to an
http server like:
http://url.com/update.cgi?appname=&version=
and then parse the results. Any ideas would greatly be appreciated.
Thanks,
Dave Henderson
Re: update framework
am 20.07.2007 15:35:05 von Tim Southerwood
hendedav@gmail.com wrote:
> Gang,
>
> I am working on a project and would like to incorporate an (auto)
> update feature.
Could you elaborate more please on what you are updating.
Cheers
Tim
Re: update framework
am 20.07.2007 22:57:32 von hendedav
On Jul 20, 9:35 am, Tim Southerwood wrote:
> hende...@gmail.com wrote:
> > Gang,
>
> > I am working on a project and would like to incorporate an (auto)
> > update feature.
>
> Could you elaborate more please on what you are updating.
>
> Cheers
>
> Tim
Thanks for the reply Tim. I am building my own application and am
trying to incorporate an update feature for it. Thats why I was
wondering if anyone has built a generic "update framework". If nobody
has, then I will need to build my own, in which case I was going to
see if anyone here knew of a perl module that would be able to send
and receive http requests (combined with wget could make an update
framework). Hope this clears it up.
Dave
Re: update framework
am 21.07.2007 10:21:15 von Tim Southerwood
hendedav@gmail.com coughed up some electrons that declared:
> On Jul 20, 9:35 am, Tim Southerwood wrote:
>> hende...@gmail.com wrote:
>> > Gang,
>>
>> > I am working on a project and would like to incorporate an (auto)
>> > update feature.
>>
>> Could you elaborate more please on what you are updating.
>>
>> Cheers
>>
>> Tim
>
>
> Thanks for the reply Tim. I am building my own application and am
> trying to incorporate an update feature for it. Thats why I was
> wondering if anyone has built a generic "update framework". If nobody
> has, then I will need to build my own, in which case I was going to
> see if anyone here knew of a perl module that would be able to send
> and receive http requests (combined with wget could make an update
> framework). Hope this clears it up.
>
> Dave
Not come across one - but that does not mean there isn't.
So I guess you want to query a website for:
a) Some data indicating current version of your app and urls of the various
bits needed to transition between two versions (deltas) - or url of the new
complete version.
b) Fetch various binary blobs (zip or tar files maybe), then install them
locally to update either data or the app itself.
It wouldn't be daft to drive wget via system or IPC::Run(3). Certainly
simple.
Also the data in a) needn't be HTML - it could be any parseable text at your
convenience. If XML, then the XML::Simple module is really easy to use.
If you want to talk to web servers directly, this is a reasonable and mature
module:
http://search.cpan.org/~gaas/libwww-perl-5.806/lib/LWP.pm
and there's this one too:
http://search.cpan.org/~gaas/libwww-perl-5.806/lib/Net/HTTP. pm
Sorry - I can't give any help with how to do the update as I don't know what
your app looks like. File::Copy may be of use.
But I would say - if you are updating core app binaries or critical data,
try to have a way where you can install an updated version in parallel to
the running version. Then if anything goes wrong, the user has a fall back
to a version that still works. This is particularly true of updates that
have so many parameters outside of you control (your webserver might crash,
the internet falls over betwixt you and your user, their machine crashes
(or gets turned off!) mid update.
Cheers
Tim
Re: update framework
am 21.07.2007 21:04:30 von hendedav
On Jul 21, 4:21 am, Tim Southerwood wrote:
> hende...@gmail.com coughed up some electrons that declared:
>
>
>
> > On Jul 20, 9:35 am, Tim Southerwood wrote:
> >> hende...@gmail.com wrote:
> >> > Gang,
>
> >> > I am working on a project and would like to incorporate an (auto)
> >> > update feature.
>
> >> Could you elaborate more please on what you are updating.
>
> >> Cheers
>
> >> Tim
>
> > Thanks for the reply Tim. I am building my own application and am
> > trying to incorporate an update feature for it. Thats why I was
> > wondering if anyone has built a generic "update framework". If nobody
> > has, then I will need to build my own, in which case I was going to
> > see if anyone here knew of a perl module that would be able to send
> > and receive http requests (combined with wget could make an update
> > framework). Hope this clears it up.
>
> > Dave
>
> Not come across one - but that does not mean there isn't.
>
> So I guess you want to query a website for:
>
> a) Some data indicating current version of your app and urls of the various
> bits needed to transition between two versions (deltas) - or url of the new
> complete version.
>
> b) Fetch various binary blobs (zip or tar files maybe), then install them
> locally to update either data or the app itself.
>
> It wouldn't be daft to drive wget via system or IPC::Run(3). Certainly
> simple.
>
> Also the data in a) needn't be HTML - it could be any parseable text at your
> convenience. If XML, then the XML::Simple module is really easy to use.
>
> If you want to talk to web servers directly, this is a reasonable and mature
> module:
>
> http://search.cpan.org/~gaas/libwww-perl-5.806/lib/LWP.pm
>
> and there's this one too:
>
> http://search.cpan.org/~gaas/libwww-perl-5.806/lib/Net/HTTP. pm
>
> Sorry - I can't give any help with how to do the update as I don't know what
> your app looks like. File::Copy may be of use.
>
> But I would say - if you are updating core app binaries or critical data,
> try to have a way where you can install an updated version in parallel to
> the running version. Then if anything goes wrong, the user has a fall back
> to a version that still works. This is particularly true of updates that
> have so many parameters outside of you control (your webserver might crash,
> the internet falls over betwixt you and your user, their machine crashes
> (or gets turned off!) mid update.
>
> Cheers
>
> Tim
Tim you have provided some good information and I will take a look
into the modules you spoke of. Regarding the updating in parrallel,
what about doing the following:
1) download the entire update archive in /tmp dir (in tar.gz format)
- this would eliminate any problems from failed webserver or
update not completely downloading
2) untar contents and run tar.sh/tar.pl script to tar all the matching
files that will be installed over
- this would preserve the users original files and give him/her
the ability to roll back if neccessary
3) run install.sh/install.pl to perform the acutal installation of the
update
Do these steps seem reasonable and seem to eliminate most of the
problems associated with updating an app?
Thanks,
Dave