الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال Perl: كيف يتم تثبيت ال Modules الجديدة على ويندوز بشكل صحيح؟

بدأه Xacker في 8 أكتوبر 2008 · 20 رد · 7,891 مشاهدة · في لغة Perl
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

صراحة سئمت، عدة أيام مضت وأنا أحاول فهم كيف يتم حل المشكلة وكل ما احتاجه هو فك تشفير string لأعرف ما بداخله من خلال استخدام Crypt::Simple مع هاش باسوورد أولي.

المشكلة أن مكتبة Crypt لا تحوي على شئ صراحة (استخدم ActivePerl) لذلك قمت بتحميل بعض الملفات الاخرى الضرورية مثل Blowfish و CBC الخ الخ التي أحتاجها.

المشكلة اني لا اعرف الطريقة الصحيحة للتثبيت فأنا أقوم بسحب ملفات *.pm ووضعها في المسار المناسب لكن غالبا ما ينتج أخطاء .. نقص ملفات او مسارات خاطئة أو ما شابه.

فما الحل؟ الطريقة المذكورة في الملفات المساعدة تبدو أنها للينوكس. وأنا أستخدم winXP.

أرجو المساعدة أو حد يتكفل بفك تشفير الـ string لكن الخيار الأول أفضل لأني سأحتاج إلى إجراء بعض الاختبارات بنفسي.

شكراً

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#2

ماهو نوع التشفير .

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#3

السلام عليكم و رحمة الله و بركاته

بإمكانك نسخ المكتبة ,الملف pm, في المجلد libالتابع لمجلد تنصيب البيرل ثم استدعائه في الشفرة بإستخدام الكلمة المفتاح use

مثال:

use Net::FTP; 

$ftp=Net::FTP->new("FTPServerName",Timeout=>240) || die("remote server not found"); 
  print "Connected\n";

النتيجة:

post-91400-1223552199_thumb.png
#4
SIFE كتب:
ماهو نوع التشفير .

Blowfish، كما كتبت في الأعلى.

بن العيد كتب:
السلام عليكم و رحمة الله و بركاته

بإمكانك نسخ المكتبة ,الملف pm, في المجلد libالتابع لمجلد تنصيب البيرل ثم استدعائه في الشفرة بإستخدام الكلمة المفتاح use

ليس هذه هي المشكلة، أيضا ذكرت أني أقوم بنسخ الملفات بصيغة pm إلى المجلد المطلوب لكن غالبا ما ترجع أخطاء.

بعض الأراشيف التي اقوم بتحميلها تحتوي على مجلدات مثلا باسم "t" وأحيانا مجلدات بأسماء أخرى، لا أدري ما الغرض منها. أرجو التوضيح.

هذا تبسيط لما كتبته وهو الجزء الذي لا ينجح عند تنفيذ decrypt

use Crypt::Simple passphrase => 'shay'.'229asd'.'s1s24d';  


	my %dec_dataora = ();
	$enc_dataora = "JvgEDoOhuSh9yjz93x6/fXHcDRRVZPVXf8Zj1ZCiaIsQA9FbR4IIOELoBQ6Y5UTDj6XVehWfmdAQMVuH5V3BlEvfAuQtzPUisDIL
HoPoiDJbIoo5+iVzoDrgKLuhv5lN";

	%dec_dataora = decrypt($enc_dataora);

المكتبات الموجودة في Crypt هي:

Simple.pm

SSLeay.pm

CBC.pm

Blowfish.pm

في lib لدي:

FreezeThaw.pm

وبقية المكتبات التي تستخدمها Simple كلها موجودة في أماكنها.

الخطأ:

Can't locate auto/Crypt/Blowfish/init.al in @INC (@INC contains: C:/Perl/site/lib C:/Perl/lib .) at C:/Perl/lib/Crypt/Blowfish.pm line 44
BEGIN failed--compilation aborted at t.pl line 1.

ما هي هذا الـ *.al < ?

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#5

السلام عليكم

جرب تحميل المكتبةinit.pm من هنا و أضفها للمجلد lib

#6

جربت، نفس الخطأ.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#7

ما فهمته من الموضوع (اول شىء) انك تريد فك التشفير والبيرل وسيله وليست غايه .. صحيح ؟

#8

صحيح لكن لا أضمن ان كانت المكتبة المستخدمة في التشفير كقيم ابتدائية قياسية بمعنى هي نفسها في أي مكان آخر.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#9

كويس مادام ال Perl حاليا فيها مشكله جرب ال PHP ...هناك ال Mcrypt Extension ويتضمن ال Blowfish

#10

لا استنى وبالراحة عليا يا ASDen :D

perl فيها API وتخاطب مع النظام أستطيع أن أستفيد منها.. إن كنت فقط سأستخدم PHP في محاولة فك تشفير النص فبالله عليك جرب أنت أن تقوم بفكّه لأنه من المستحيل تقريباً علي أن أستطيع تحميل apache الآن أو ما شابه حتى أستطيع أن أقوم بتشغيل ملفات PHP.

حملت ActivePerl وطلعت روحي على اتصالي هذا. ثم أنا شايف رايح اتعلم CGI بعد شوي كمان عشان الموضوع ده :lol:

تم تعديل هذه المشاركة بواسطة Xacker في 9 أكتوبر 2008 في 23:34

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#11

وتحمل Apache ليه ياعم

ابحث عن استضافه مجانيه تدعم ال mcrypt واشتغل :D (ملحوظه لم اجرب هذا الموضوع قد تتعب قليلا فى البحث ولكن مبدأيا جرب 110mb.com , freehostia.com , ueuo.com )

#12

حرام عليك انت عاوزني أوسخ ايديا بالـ PHP ليه.. ليه يا ظالمني.

طيب إن شاء الله سوف أنظر إلى أين سينتهي هذا الموضوع، ربما غداً أبدأ رحلة البحث عن الحقيقة، اليوم الاتصال زفت.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#13

وجدت Wamp لدي، لكن احتاج Pointers اين استطيع ان اجد مرجع جيد لما تكلمت عنه لا اريد ان اضيع الوقت في امر بسيط لا احتاجه كثيراً.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#14
Xacker كتب:
وجدت Wamp لدي، لكن احتاج Pointers اين استطيع ان اجد مرجع جيد لما تكلمت عنه لا اريد ان اضيع الوقت في امر بسيط لا احتاجه كثيراً.

php manual يحتوي على شرح لمكتباته .

''‏اللهم إني أسالك إيمانا دائما وأسألك قلبا خاشعا وأسألك علما ‏نافعا وأسألك يقينا صادقا وأسألك دينا قيما وأسألك العافية من كل ‏بلية''

'‏اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء ‏منهم و الأموات'

www.it-scoop.com

#16

Xacker: المكتبة موجودة عندي (mcrypt) مع حزمة WAMP إذا بدك ياها خبرني

#17

لدي مشكلة في PHP الآن، سأفتح موضوع مغاير. شكراً لجميع الردود.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#18

خذ هذا الموقع

http://webnet77.com/cgi-bin/helpers/blowfish.pl

Blowfish encrypt / decrypt

هذا لحل مشكلة فك التشفير

أما عن تثبيت المكتبات الجديدة

شاهد هذه الفيديو http://www.scriptsocket.com/videotutorial.php?CBbGFCrGmY8

و نصيحة إذا أردت تعلم البيرل

هذا الموقع مليئ بالفيديوهات من الصفر الى الاحتراف

http://www.scriptsocket.com/videos.php

تحياتي

سلاآم

#19

السلام عليكم ورحمة الله تعالى وبركاته...

:happy: والله فرحت عندما تم فتح هدا القسم الخاص بperl..

المهم حسب ما فهمت أنك بإختصار تريد تتبيت الموديل Simple .

أولا حسب الخطأ الدي أوضحته لنا نجد هده المصفوفة INC@

هده المصفوفة تحتوي على directories- path- مسارات او أدلة خاصة ب Perl ،يتم اللجوء لهده المصفوفة للبحث عن Modules أو أي ملف ضروري من أجل تنفيد تعليمات التالية do,requireأوuse .

ثانيا إدا أردت إضافت PATH جديد إلى INC@ :

مثلا لدينا هدا الموديل البسيط

اقتباس

; package P1

;use warnings

;use strict

}($)sub gg

; @_=my $s

;my $l=$s+1

;"print "$s + 1=$l \n

;1

{

الأن سوف نقوم بإستدعائه

اقتباس

c:\perl\bin\perl.exe!#

;use warnings

;use strict

;"use lib "C:\\file

;("unshift (@INC,"C:\\file#

;use P1

;"print "@INC \n

;my $k=8

;(P1::gg($k &

;"!print "oooooooooooooooooooooooooook

;"system "pause

من هدا كله مايهمنا هو ;"use lib "C:\\file و ;("unshift (@INC,"C:\\file

الدالة unshift عملها هو إضافة C:\\file إلى أول المصفوفة INC@

لكن عند إستعمال هده الطريقة نستعمل require p1 بدل use P1 السبب يرجع إلى ترتيب الكود فاuse تنفد هي الأولى عند فتح البرنامج أما require فتقرأ حسب موقعها في سطر الكود .

أحسن طريقة هي إستعمال ; "use lib "c:\\file

ملاحظة موديل نضعه فيP1.pm-- <--- file<---c

كلما غيرت مكان الموديل غير المسار في البرنامج من c:\\file إلى المسار الدي غيرت

لكن هده الطريقة ربما لاتعمل إدا كان الموديل تم تحميله متلا -في الأغلب- من cpan لأن يكون العمل ضخم أي يكون دو صلة بملفات أخرة ولهدا سنتعلم الأن طريقة تتبيت الموديل في winXP :

------

عند تنزيل الموديل المطلوب قم بفك ضغطه بستعمال الوينرار متلا ثم قم بنسخ محتواه إلى path التالي C:\Perl\lib

هدا ليس كل شيئ فقط لنستفيد سنتبت الموديل جماعتا إتفقنا ..

أولا إدهب إلى /http://search.cpan.org/~kasei/Crypt-Simple لتحميله

أو إدهب إلى google وبحث عن Crypt::Simple المهم بعد تحميله لنقم بفك ضغطه سنحصل على ملف إسمه كالتالي Crypt-Simple-0.06 لنقم بفتحه ونسخ مابه. حتى الأن كل شيء واضح .

أتسأل الأن أين سنضع هده الأشياء التي نسخنا . هنا سنقف بعض الشيء

لاحظ إسم الملف هو كالتالي Crypt-Simple-0.06 أليس كدلك ، هدا الإسم يعني أنه يلزمك نسخ محتوى هدا الملف في هدا المسار C:\Perl\lib\Crypt . نستنتج من هدا أننا من إسم الملف نعرف المسار الدي سنضع فيه محتوى الملف

ملف Crypt ربما يكون في bin إن لم يكن موجود قم بإنشأ ملف وسميه Crypt

بختصار Crypt-Simple يقابلها في لغة بيرل use Crypt::Simple ستأتي الفرصة لشرح المزيد حول ::

تدكر لاتقم بنسخ الملفCrypt-Simple-0.06 إلى C:\Perl\lib\Crypt لكن فقط محتواه هو الدي سننقله إلى C:\Perl\lib\Crypt ،حتى الأن تمام .

نحن طبعا تبتنا سابقا ActivePerl 5.8.8 Build 824 أو أي إصدار قريب له ،ضمن هدا الأخير موجود برنامج صغير إسمه Perl Package Manager يختصر بي ppm.

الأن نبدأ في المرحلة التانية :

نفتح cmd أو مايقال عليه الدوس DOS

ونكتب فيه

ppm install Crypt-Simple

وبهدا نكون قد أنهينا عملية التتبيت بنجاح

ملاحظة : لاتكتب Crypt::Simple فهدا خطأ .

أرجو أن أكون قد وفقت في الشرح...

سلام

EX_perl.rar

#20

:happy: السلام عليكم ورحمة الله

ربما لم يكن الشرح واضح سأحاول أن أوضح أكثر:

- قبل أي شيء يلزمنا تتبيت ActivePerl.

اقتباس
مقتبس من Mo7eb_Alrasool

بالنسبة لل windows xp فاذهب الى لصفحة التالية http://downloads.activestate.com/ActivePerl/Windows/5.8/

وأختر أخر أصدا او أضغط علي هذا الرابط للتحميل http://downloads.activestate.com/ActivePer...-x86-274739.msi

- لتتبيت موديلModule لدينا طريقتين مثلا Crypt-Simple-0.06

1 :

المرحلة الأولى يكون فيها الإتصال بالويب ملزما .

مراحلها كالتالي:

قم بفتح ppm-shell.bat ستجده هنا C:\Perl\bin\ppm-shell.bat

* أكتب

ppm>install Crypt-Simple

ثم إضغط على entr

سيتم البحث في http://ppm4.activestate.com/MSWin32-x86/5.8/824/package.xml الدي يكون معروف لدا ppm مسبقا ويسمى Repository . - يتم تعريفه عند تتبيت ActivePerl أطوماتيكيا -

إدا تم إجاد الموديل سيتبت الموديل Simple في جهازك مباشرة بدون أي تدخل منك كما حصل عندي.

كملاحظ نحن نطلب تتبيت Simple فقط لكن سيتبت معاه Blowfish بشكل تلقائي .

هدا كل شيء

* في حال أننا نريد إضافة Repository جدبد نقوم بالتالي

ملاحظة لا تنسا نحن نعمل في ppm-shell.bat كما في فوق

أكتب

ppm>rep add Roth http://www.roth.net/perl/packages

ثم إضغط على entr

ملاحظة: يمكننا أن نضيف أكتر من Repository

إذا تم دلك بنجاح نكتب التالي

ppm>search Roth

ثم إضغط على entr

ليبحث على كل الموديلات التي فيه ، وجدت مثلا عند إنتهاء البحث Win32-Daemon . ثم نكتب

ppm>install Win32-Daemon

الكتابة العامة لإظافة Repository هي

rep add name url

مثال أخر

 
ppm>rep add trouchelle.com http://trouchelle.com/ppm/package.xml

هنا تقريبا أنهينا الطريقة الأولى.

- الطريقة التانية:

هنا سنتعلم كيف نتبت الموديل بالرغم من أننا ليس متصلين بالأنترنيت

ما يلزمنا هنا هو:

طبعا ActivePerl ،

والقيام بتنزيل الموديل الدي تريد من الأنترنيت متلا Crypt-Simple-0.06.tar.gz

يلزمنا أيضا nmake.exe ستجده هنا http://download.microsoft.com/download/vc1...-US/Nmake15.exe

الأن سنبدأ

قم بنسخ كلا من nmake.exe و nmake.err إلى C:\Perl\bin ثم قم بالضغط على nmake.exe لتنفيده بعدها ستظهر لك واجهة الدوس وبها رسالة ، إظغط على y للقبول.nmake_err.rar

الأن إذهب إلى الملف الدي به الموديل متلا Crypt-Simple-0.06.tar.gz وقم بفك ضغطه بستعمال WinZip أو ماشابه ،بعدها سنحصل على ملف إسمه Crypt-Simple-0.06 بداخله ملف له نفس الإسم.

نقوم الأن بفتح نافدة الدوس cmd و ليس ppm-shell.bat

نكتب في cmd

 
cd C:\Crypt-Simple-0.06\Crypt-Simple-0.06

تم نضغط على entr

الأن نحن داخل ملف C:\Crypt-Simple-0.06\Crypt-Simple-0.06

سنكتب

 
perl Makefile.pl

تم نضغط على entr

ملاحظة : Makefile.pl دائما ستجده مرفق مع الموديل الدي أنزلت من الأنترنيت لأنه ضروري.

ليعمل Makefile.pl يجب أن تكون قمت بالمرحلة السابقة الخاصة ب nmake.exe

الأن نكتب

مازلنا نعمل في cmd

 
nmake

تم نضغط على entr

وبعد ذلك ننفد التالي

 
nmake test

بعدها نكتب

 
nmake install

تم نضغط على entr

وبهدا نكون قد أنهينا تتبيت الموديل Crypt::Simple

ستجد معلومات حول عملية تتبيت الموديلات بها هنا C:\Perl\lib/perllocal.pod

ستجد الموديل Simple موجود هنا C:\Perl\site\lib\Crypt

ستجد هدا الملف packlist. هنا C:\Perl\site\lib\auto\Crypt\Simple إدا قمت بفتحه ستجد فيه :

(C:/Perl/html/site/lib/Crypt/Simple.html

C:/Perl/site/lib/Crypt/Simple.pm)

ليعمل الموديل Simple يجب أن تقوم بتتبيت Blowfish

لو قمت بتنزيل Blowfish من http://search.cpan.org وفككت ضغطه لوجدت بالإظافة للملفات الإعتيادية ملفات بصيغة c.

لتتبيت Blowfish سنقوم بنفس الشيء لكن يلزمنا مترجم c أنظر لهده الصفحة ربما تفيدك http://www.perlmonks.org/?node_id=642002

بهذا نكون قد إنتهينا .

إلى اللقاء...

#21

:happy: السلام عليكم ورحمة الله

لكي تعم الفائدة لنا جميعا سنتطرق لكيفية تثبيت موديلBlowfish بدون إتصال بالانترنيت، إتفقنا

ملاحظة: قم بتثبيت الموديلا التالي Crypt-CBC-2.30 لأن Blowfish يحتاجه.

سنتبع نفس المراحل التي عملنا بها سابقا أي قم بالتالي:

أولا قم بفك ضغط الملف الدي به الموديل Crypt-CBC-2.30 مثلا بالوينرار ضع الملف المسمى بCrypt-CBC-2.30 مثلا في \:C

ملاحظة : نحن الأن سنعمل في نافدة الدوس cmd

أكتب

Cd  C:\Crypt-CBC-2.30

ثم إضغط على Entr

ثم أكتب

Perl makefile.pl

ثم إضغط على Entr

بعدها أكتب

nmake

ثم إضغط على Entr

ثم

Nmake test

ثم إضغط على Entr

أخيرا أكتب

Nmake install

ثم إضغط على Entr

بهذا نكون قد أنهينا عملية تثبيت Crypt-CBC

هذا كله إن صح التعبير كمراجعة لما سبق رغم أن الموديل الذي عملنا عليه الأن من الأفضل تثبيته لأنه مهم لBlowfish .

.......................................................... المهم الأن سنبدأ بتثبيت Blowfish.................................................................

يلزمنا Microsoft Visual Studio 2005 أو فقط MS Visual C++ 2005 Express

إعلم أننا سنحتاج Microsoft .NET Framework SDK v2.0 . في الأغلب يأتي مع Microsoft Visual Studio

إن كان شيء ناقص فيجب أن تقوم بتثبيته على جهازك.

ملاحظة : نحن الأن لن نعمل في نافدة الدوس cmd مباشرة بل سنعمل في SDK Command ستجده هنا

Démarrer -->tous les programmes---> Microsoft .NET Framework SDK v2.0----> SDK Command

الآن فكك ضغط الملف الذي به الموديل Crypt-Blowfish مثلا بالوينرار -في \:c مثلا-

إفتح SDK Command Prompt

سنعمل عادي كما في ما سبق

أكتب

Cd  C:\Crypt-Blowfish-2.10

ثم Entr

ثم

Perl makefile.pl

ثم Entr

ثم

nmake

ثم Entr

* هنا ربما تصادف هذا الخطأ –إ ن لم تصادفه تجاوز هده المرحلة -:

C:\Perl\bin\perl.exe C:\Perl\lib\ExtUtils\xsubpp  -typemap C:\Perl\lib\E
xtUtils\typemap -typemap typemap  Blowfish.xs > Blowfish.xsc && C:\Perl\bin\perl
.exe -MExtUtils::Command -e mv Blowfish.xsc Blowfish.c
		cl -c	-nologo -GF -W3 -MD -Zi -DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_ST
RICT -DHAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE -DPRIVLIB_LAST_IN_INC
-DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX -
MD -Zi -DNDEBUG -O1	-DVERSION=\"2.10\"  -DXS_VERSION=\"2.10\"  "-IC:\Perl\lib
\CORE"   Blowfish.c
Blowfish.c
c:\perl\lib\core\win32.h(61) : fatal error C1083: Cannot open include file: 'win
dows.h': No such file or directory
NMAKE : fatal error U1077: '"c:\Program Files\Microsoft Visual Studio 8\VC\bin\c
l.EXE"' : return code '0x2'
Stop.

هدا يبن أن بعض Header التي يحتاجها win32.h ناقصة. لتجاوز هدا المشكل قم بالتالي:

إذهب إلى هدا المسار

C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include

وقم بنسخ كل ما فيه إلى المسار التالي

C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\include

الآن سنعيد المحاولة ونكتب:

nmake

ثم Entr

* هنا في هده المحاولة الثانية ربما تصادف أيضا هذا الخطأ –إ ن لم تصادفه تجاوز هده المرحلة -:

cl -c	-nologo -GF -W3 -MD -Zi -DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_ST
RICT -DHAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE -DPRIVLIB_LAST_IN_INC
-DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX -
MD -Zi -DNDEBUG -O1	-DVERSION=\"2.10\"  -DXS_VERSION=\"2.10\"  "-IC:\Perl\lib
\CORE"   Blowfish.c
Blowfish.c
Blowfish.c(48) : warning C4101: 'RETVAL' : unreferenced local variable
		cl -c	-nologo -GF -W3 -MD -Zi -DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_ST
RICT -DHAVE_DES_FCRYPT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE -DPRIVLIB_LAST_IN_INC
-DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX -
MD -Zi -DNDEBUG -O1	-DVERSION=\"2.10\"  -DXS_VERSION=\"2.10\"  "-IC:\Perl\lib
\CORE"   _blowfish.c
_blowfish.c
_blowfish.c(428) : warning C4013: 'strcpy' undefined; assuming extern returning
int
Running Mkbootstrap for Crypt::Blowfish ()
		C:\Perl\bin\perl.exe -MExtUtils::Command -e chmod 644 Blowfish.bs
		C:\Perl\bin\perl.exe -MExtUtils::Mksymlists  -e "Mksymlists('NAME'=>\"Cr
ypt::Blowfish\", 'DLBASE' => 'Blowfish', 'DL_FUNCS' => {  }, 'FUNCLIST' => [], '
IMPORTS' => {  }, 'DL_VARS' => []);"
		link -out:blib\arch\auto\Crypt\Blowfish\Blowfish.dll -dll -nologo -nodef
aultlib -debug -opt:ref,icf  -libpath:"C:\Perl\lib\CORE"  -machine:x86 Blowfish.
obj _blowfish.obj   C:\Perl\lib\CORE\perl58.lib oldnames.lib kernel32.lib user32
.lib gdi32.lib winspool.lib  comdlg32.lib advapi32.lib shell32.lib ole32.lib ole
aut32.lib  netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib  version.lib odbc3
2.lib odbccp32.lib msvcrt.lib -def:Blowfish.def
LINK : fatal error LNK1181: cannot open input file 'user32.lib'
NMAKE : fatal error U1077: '"c:\Program Files\Microsoft Visual Studio 8\VC\bin\l
ink.EXE"' : return code '0x49d'
Stop.

لو لاحظنا لتبين أن هناك نقص في بعض البيانات ذات الصيغة Object File Library ) .Lib)

لتجاوز هذا المشكل قم بالتالي:

أنسخ كل ما بداخل المسار التالي

C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Lib

إلى هذا المسار:

C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Lib

الآن سنحاول مرة آخرة ونكتب:

nmake

ثم Entr

الأن تمكنا من إنجاز هده المرحلة بنجاح ، تم فيها إنشاء الملف التالي Blowfish.dllوملفات أخرة ستجدها هنا

C:\Crypt-Blowfish-2.10\blib\arch\auto\Crypt\Blowfish

سننتقل الأن لإنجاز المرحلة الثالثة و الخاصة بالتجربة. هل كل المتطلبات والمراحل قد تم إنجازها؟

ملاحظة : نحن لازلنا نعمل فيSDK Command

أكتب

nmake test

ثم Entr

* ربما في هذه المرحلة تحصل على هذا الخطأ –إ ن لم تصادفه تجاوز هده المرحلة –:

C:\Perl\bin\perl.exe "-Iblib\lib" "-Iblib\arch" test.pl
Can't load 'blib\arch/auto/Crypt/Blowfish/Blowfish.dll' for module Crypt::Blowfi
sh: load_file:Le module spلcifiل est introuvable at C:/Perl/lib/DynaLoader.pm li
ne 229.
 at C:/Perl/lib/DynaLoader.pm line 131
		DynaLoader::croak('Can\'t load \'blib\arch/auto/Crypt/Blowfish/Blowfish.
dll\' fo...') called at C:/Perl/lib/DynaLoader.pm line 229
		DynaLoader::bootstrap('Crypt::Blowfish') called at test.pl line 10
NMAKE : fatal error U1077: 'C:\Perl\bin\perl.exe' : return code '0x2'
Stop.

لم يتمكن من تحميل الملفات التي تم إنشاؤها

لحل هدا المشكل سنقوم بالتالي :

قم بفتح أي Editor مثلا note-pad وأكتب التالي:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
				  version="0.0.0.0"
				  processorArchitecture="X86"
				  name="Perl"
				  type="win32"
				/>
<description>Perl</description>
<dependency>
	<dependentAssembly>
	  <assemblyIdentity 
		  type="win32"
		  processorArchitecture="x86" 
		  name="Microsoft.VC80.CRT"
		  publicKeyToken="1fc8b3b9a1e18e3b"
		  version="8.0.50727.42" 
		   >
	  </assemblyIdentity>
	</dependentAssembly>
  </dependency>
</assembly>

وسميه perl.exe.manifest

ملاحظة: لاتكتبperl.exe.manifest.xml وإنما أكتب perl.exe.manifest

بعدها أنقله إلى الملف الدي يوجد به perl.exe عادتا يكون هنا C:\Perl\bin

لنتأكد أكتب مرة أخرة

nmake test

ثم Entr

وبهذا نكون قد حللنا المشكل الذي يحدث الخطأ السابق.

كل شيء تمام؟ إذا لننتقل للمرحلة الثالية:

ملاحظة : نحن لازلنا نعمل في SDK Command

أكتب

nmake install

ثم Entr

وبهذا نكون قد إنتهينا من عملية تتبيت Blowfish بنجاح

بعض الملاحظات:

--- نفرض أنك لم تقم بتثبيت Crypt-CBC في الأول. في هذه الحالة ستحصل على خطأ عند تنفيد nmake install

ويمكن أن نقول على هدا الخطأ تذكير بأن تقوم بتتبيت CBC.pm

C:\Perl\bin\perl.exe "-Iblib\lib" "-Iblib\arch" test.pl
1..11
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
ok 10

Running standard mode speed tests.. encrypting with non-cached cipher
5,000 cycles:  0 wallclock secs ( 0.41 usr +  0.00 sys =  0.41 CPU)

Running standard mode speed tests.. decrypting with non-cached cipher
5,000 cycles:  1 wallclock secs ( 0.39 usr +  0.00 sys =  0.39 CPU)

Running standard mode speed tests.. encrypting with cached cipher
10,000 cycles:  0 wallclock secs ( 0.05 usr +  0.00 sys =  0.05 CPU)

Running standard mode speed tests.. decrypting with cached cipher
10,000 cycles:  0 wallclock secs ( 0.05 usr +  0.00 sys =  0.05 CPU)

Testing Cipher Block Chaining..
Error (probably harmless):
Can't locate Crypt/CBC.pm in @INC (@INC contains: blib\lib blib\arch C:/Perl/sit
e/lib C:/Perl/lib . . .. ../lib ../../lib ../../../lib) at (eval 4) line 2.
BEGIN failed--compilation aborted at (eval 4) line 2
.

هده الرسالة لاتعني أن هناك خلل قد وقع في عملية تثبيت Blowfish إنما هي تقول لك أنه كل شيء تمام ماعدا أنه لم يتم العثور على CBC.pm في أي من المسارات التي توجد في INC@.

إذا فعملية تتبيت Blowfish تمت بنجاح وبقي لك أن تثبت CBC.pm .

أما إذا كنت قد قمت بتتبيت CBC.pm سيظهر لك التالي:

C:\Perl\bin\perl.exe "-Iblib\lib" "-Iblib\arch" test.pl
1..11
ok 1
ok 2
ok 3
ok 4
ok 5
ok 6
ok 7
ok 8
ok 9
ok 10

Running standard mode speed tests.. encrypting with non-cached cipher
5,000 cycles:  1 wallclock secs ( 0.64 usr +  0.05 sys =  0.69 CPU)

Running standard mode speed tests.. decrypting with non-cached cipher
5,000 cycles:  1 wallclock secs ( 0.77 usr +  0.02 sys =  0.78 CPU)

Running standard mode speed tests.. encrypting with cached cipher
10,000 cycles:  0 wallclock secs ( 0.09 usr +  0.00 sys =  0.09 CPU)

Running standard mode speed tests.. decrypting with cached cipher
10,000 cycles:  0 wallclock secs ( 0.08 usr +  0.00 sys =  0.08 CPU)

Testing Cipher Block Chaining..
ok 11 - CBC Mode

يبين هدا أنه كل شيئ تمام .

------الملاحظة الثانية: بالنسبة لحاجتك لnmake

* إدا كنت تعمل في SDK Command لن تحتاج له أو إضافته إلى c:\perl\bin لأنه في الأصل موجود لكن موجود في هدا المسار

C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin

* في حالة أنك أردت العمل في الدوس cmd فيجب عليك تحميلnmake من الانترنيت ووضعه في المسار التالي c:\perl\bin تم نفده

* هناك إمكانية أن تضعه في المسار التالي أيضا C:\WINDOWS\system32 بدل C:\perl\bin ثم نفده أي اضغط عليه مرتين ثم اضغط علىy .

* من الأفضل العمل دائما في SDK Command لتثبيت موديل Blowfish والشبيه له الذي يحتاج مترجم C .

----- الملاحظة الثالثة بالنسبة للملف الذي أعطيناه الاسم التالي: perl.exe.manifest:

* في عملية تثبيت موديل ما يتطلب أن يكون perl.exe له معرفة أو اتصال أو إن صح التعبير أن يكون MSVCR80.dll ظاهر لPerl.exe ، وهدا هو عمل perl.exe.manifest حيت نعرف فيه MSVCR80 مع جميع المعلومات الخاصة به

* MSVCR80.dll ستجده لو تبعت هذا المسار

C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd

* بشكل عام من اسم الملف الذي به MSVCR80.dll يمكن أن نستنتج منه

processorArchitecture و Name و publicKeyToken و Version

لاحظ معي إسم الملف

x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd

يمكن أن نفسره بالشكل التالي

لاأعلم_لاأعلم_processorArchitecture_ Name_publicKeyToken _ Version

.....................................................إنتهى.........

لا تنسونا من خالص دعائكم..................................... فالدعاء من أجمل العبادات........................................

:wink: إلى القاء

مواضيع مشابهة