Schrift
[thread]7001[/thread]

PAR Problem...

Leser: 2


<< |< 1 2 >| >> 11 Einträge, 2 Seiten
zipster
 2005-05-18 11:38
#55031 #55031
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Hi,

ich hatte gerade vor mein Servicescript mit Par zu ner Exe zu verpacken aber wenn ich sie ausführen möchte bekomme ich folgende Fehlermeldung.
Code: (dl )
1
2
3
4
5
Can't locate loadable object for module Win32::Daemon in @INC (@INC contains: CO
DE(0xd4b068) CODE(0xe39f98) .) at ../blib/lib/PAR/Heavy.pm line 101
Compilation failed in require at script/Server_servicepart_ver2.40.pl line 6.
BEGIN failed--compilation aborted at script/Server_servicepart_ver2.40.pl line 6
.

Das läßt ja darauf schließen das er Win32::Daemon nicht findet. Darauf hin hab ich die Exe mal entpackt aber das Modul ist drin, ich frag mich was er hat.


Könnt ihr mir vieleicht sagen wo der Fehler ist?
Dubu
 2005-05-18 14:26
#55032 #55032
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Das Moduol Win32::Daemon braucht wohl noch eine Library ("loadable object"), die nicht automatisch eingebunden wurde. Das kann meiner Erfahrung nach schon mal passieren, laesst sich aber normalerweise ueber irgendwelche Kommandozeilenoptionen von pp beheben (-l /pfad/zur/library? -M Modulname?). Ich kann Win32::Daemon nicht auf CPAN finden (nur Win32::Daemon::Simple), daher weiss ich auch nicht, was da noch zu gehoert.
zipster
 2005-05-18 15:04
#55033 #55033
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Win32::Daemon bekommst du so...
Code: (dl )
perl ppm.pl install http://www.roth.net/perl/packages/win32-daemon.ppd


Stammt von dieser Seite http://www.roth.net/
Was ist ein "Library ("loadable object")"??? Könntest du mir das vieleicht genauer erklären?
Dubu
 2005-05-18 15:21
#55034 #55034
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Eine Codebibliothek. Eine Sammlung von Objektcode, der zu einem Programm entweder statisch waehrend der Linkphase hinzugefuegt wird oder beim Programmstart / waehrend des Programmlaufs dynamisch hinzugeladen und gelinkt wird. In Windows-Speak werden dynamische Bibliotheken - und um eine solche geht es hier - oft einfach "DLL", "Dynamic Link Library" genannt.
zipster
 2005-05-18 15:23
#55035 #55035
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Supi und wie kann ich nun festellen was fehlt?
pKai
 2005-05-18 15:25
#55036 #55036
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
dll = Library
Quote
ppm> unins Win32-Daemon
====================
Remove 'Win32-Daemon' version 0.2003.06.17 from ActivePerl 5.8.6.811.
====================
unlink C:\Perl\site\lib\Win32\DAEMON.PM
unlink C:\Perl\site\lib\Win32\daemon\AutoStart.pl
unlink C:\Perl\site\lib\Win32\daemon\Callback.pl
unlink C:\Perl\site\lib\Win32\daemon\Callback2.pl
unlink C:\Perl\site\lib\Win32\daemon\Create.pl
unlink C:\Perl\site\lib\Win32\daemon\Daemon_Template.pl
unlink C:\Perl\site\lib\Win32\daemon\Remove.pl
unlink C:\Perl\site\lib\Win32\daemon\Security.pl
unlink C:\Perl\site\lib\Win32\daemon\Win32-daemon.ppd
unlink C:\Perl\site\lib\Win32\daemon\autostart.ini
unlink C:\Perl\site\lib\Win32\daemon\daemon.htm
unlink C:\Perl\site\lib\Win32\daemon\daemon.pl
unlink C:\Perl\site\lib\auto\Win32\daemon\daemon.DLL
unlink C:\Perl\site\lib\auto\Win32\Daemon\.packlist
Successfully removed Win32-Daemon version 0.2003.06.17 from ActivePerl 5.8.6.811
.
ppm> install 1
Package 1:
====================
Install 'http://www.roth.net/perl/packages/Win32-Daemon.ppd' version 0.2003.06.17 in ActivePerl 5.8.6.811.
====================
Downloaded 59860 bytes.
Extracting 13/13: blib/lib/Win32/DAEMON.PM
Installing C:\Perl\site\lib\auto\Win32\daemon\daemon.DLL
Files found in blib\arch: installing files in blib\lib into architecture depende
nt library tree
Installing C:\Perl\site\lib\Win32\DAEMON.PM
Installing C:\Perl\site\lib\Win32\daemon\autostart.ini
Installing C:\Perl\site\lib\Win32\daemon\AutoStart.pl
Installing C:\Perl\site\lib\Win32\daemon\Callback.pl
Installing C:\Perl\site\lib\Win32\daemon\Callback2.pl
Installing C:\Perl\site\lib\Win32\daemon\Create.pl
Installing C:\Perl\site\lib\Win32\daemon\daemon.htm
Installing C:\Perl\site\lib\Win32\daemon\daemon.pl
Installing C:\Perl\site\lib\Win32\daemon\Daemon_Template.pl
Installing C:\Perl\site\lib\Win32\daemon\Remove.pl
Installing C:\Perl\site\lib\Win32\daemon\Security.pl
Installing C:\Perl\site\lib\Win32\daemon\Win32-daemon.ppd
Successfully installed Win32-Daemon version 0.2003.06.17 in ActivePerl 5.8.6.811
.
ppm>

Hallo??
package kaputt?

Edit: Bin blind. Dachte er hätte beim Neuinstallieren die DLL nicht hineinkopiert :blush:\n\n

<!--EDIT|pKai|1116415973-->
I sense a soul in search of answers.
renee
 2005-05-18 15:30
#55037 #55037
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Versucht mal das Modul von CPAN: http://search.cpan.org/~daveroth/Win32-Scheduler_v20000702/

Wie man's installiert: http://wiki.perl-community.de/bin....inModul\n\n

<!--EDIT|renee|1116415845-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
pKai
 2005-05-18 15:40
#55038 #55038
User since
2005-02-18
357 Artikel
BenutzerIn
[default_avatar]
Scheduler?

Die Doku ist die von Daemon, das Modul ist aber ein anderes!?
I sense a soul in search of answers.
zipster
 2005-05-18 16:33
#55039 #55039
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Achtung jetzt kommt der Witz...
lib\auto\Win32\daemon\daemon.DLL war vorher schon enthalten. Jetzt hab ich die Exe nochmal neu packen lassen mit
Code: (dl )
pp -l C:\Perl\site\lib\auto\Win32\daemon\daemon.DLL -M Win32::Daemon vE:\Daten\Arbeit\Perl-Scripte\Go_Back!up\RC_2.0\Server_servicepart_ver2.40.pl

und nun funktioniert es Problemlos...

ALSO VIELEN DANK AN ALLE!
zipster
 2005-06-06 17:27
#55040 #55040
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Hi,

ich hab mal den alten Thread wieder rausgesucht da ich mal wieder ein Fehler mit Par habe... vieleicht kann mir mal jemand weiter helfen.

Wenn ich es mit PAR verpacke läßt sich der Dienst nicht mehr starten, wenn ich es als pl laufen lasse funktioniert es einwandfrei.


Vieleicht hat jemand von euch mal Zeit es zu testen oder hat eine Idee woran es liegen könnte...

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#! perl
use File::Spec;
use IO::Socket;
use IO::Select;
use Win32::API;
use Win32;
use Win32::Daemon;
use Par::Heavy;
use strict;
use warnings;
#use POSIX qw(:signal_h);

my $programmpfad = $0;
$programmpfad =~ s/[^\\]*?$//;
use Win32::Daemon::Simple
Service => 'Go Back!Up',
Name => 'Go Back!Up Service',
Version => 'RC2.0',
Info => {
display => 'Go Back!Up Service RC2.0',
description => 'Backup Programm',
interactive => '1',
},
Params => {
Tick => 0,
Talkative => 0,
Interval => 1,
LogFile => "GoBackUp.log",
Description => <<'*END*',
Tick : (0/1) controls whether the service writes a "tick" message to
the log once a minute if there's nothing to do
Talkative : controls the amount of logging information
Interval : how often does the service look for new or modified files
(in minutes)
LogFile : the path to the log file
...
*END*
},
param_modify => {
#LogFile => sub {File::Spec->rel2abs($_[0])},
#tAlkative => sub {undef}
};

ServiceLoop(\&doSomething);
exit;
sub doSomething
{
$SIG{'CHLD'} = 'IGNORE';
my $pid = fork();
if($pid == 0)
{
my $server = IO::Socket::INET->new(
LocalPort => 2005,
type => SOCK_STREAM,
Reuse => 1,
Listen => 10
) or die "Server läuft nicht: $@\n";
my $select = IO::Select->new($server);
while(my @readable = $select->can_read)
{
foreach my $socket (@readable)
{
if($socket == $server)
{
my $client = $socket->accept;
print "New client connects\n";
$select->add($client);
#$client->print("process still running\n");
}
else
{
my $computername = $socket->getline;
$computername =~ s!\r?\n$!!g; # Zeilenumbruch entfernen
if (defined $computername)
{
chomp $computername;
my $WindowAvailable ="";
$WindowAvailable = FindWindow("$computername");
print "$WindowAvailable\n";
if ($WindowAvailable == 0)
{
#$client->print ("Window ist nicht vorhanden\n");

system "start \"$computername\" \"E:\\Daten\\Arbeit\\Perl-Scripte\\Go_Back!up\\RC_2.0\\Server_ver2.01.pl\"";
#$socket->print("reconnect\n");
$socket->print("port=12346\n");
delete_socket($select, $socket);
}
else
{
$socket->print("process still running\n");
}
}
else
{
print "Client says: [$computername]\n";
delete_socket($select, $socket);
}
}
}


sub FindWindow
{
my $WindowName = shift(@_);
chomp $WindowName;
print "$WindowName";
my $FindWindow = new Win32::API('user32', 'FindWindow', ['P','P'], 'N');# or die print "$!";
my $name = 'Telnet 127.0.0.1';
my $class = 0;
my $topHwnd = $FindWindow->Call($class, $WindowName);
print "$topHwnd\n";
return $topHwnd;
}

sub delete_socket
{
my ($sel, $sock) = @_;
$sel->remove($sock);
$sock->close;
}
}
}
else
{
if (Win32::Daemon::State() == SERVICE_STOP_PENDING)
{
kill 'SIGKILL', $pid;
Win32::Daemon::State(SERVICE_STOPPED);
Win32::Daemon::StopService();
exit 0;
}
}
}


Habe es mit diesem Befehl verpackt.
Code: (dl )
pp -l C:\Perl\site\lib\auto\Win32\daemon\daemon.DLL -M Win32::Daemon -M Win32:Daemon::Simple E:\Daten\Arbeit\Perl-Scripte\Go_Back!up\RC_2.0\Server_servicepart_ver2.40.pl
\n\n

<!--EDIT|zipster|1118064475-->
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2005-05-18 11:38.