ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° Perl ΠΌΠΎΠ΄ΡΠ»ΠΈ: ΠΡΠ»Π½ΠΎ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ
Perl ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅ ΡΠ° ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π½ΠΈ, ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π΅ΠΌΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΎΡ Perl ΠΊΠΎΠ΄, ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Π½ΠΈ Π²ΡΠ² ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Ρ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ .pm, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈ Π΄Π° ΡΠ°Π·ΡΠΈΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ Π΅Π·ΠΈΠΊ Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π·Π° Π·Π°Π΄Π°ΡΠΈ, Π²Π°ΡΠΈΡΠ°ΡΠΈ ΠΎΡ HTTP Π·Π°ΡΠ²ΠΊΠΈ ΠΈ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π΄ΠΎ XML ΠΏΠ°ΡΡΠ²Π°Π½Π΅ ΠΈ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡ. ΠΡΠ°Π²ΠΈΠ»Π½ΠΎΡΠΎ ΠΈΠΌ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ β ΡΡΠ΅Π· CPAN, cpanm ΠΈΠ»ΠΈ ΡΡΡΠ½ΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ β Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ ΡΠΌΠ΅Π½ΠΈΠ΅ Π·Π° Π²ΡΠ΅ΠΊΠΈ Perl ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ΅Π½ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ.
Π’ΠΎΠ²Π° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΎΠ±Ρ Π²Π°ΡΠ° Π² Π΄ΡΠ»Π±ΠΎΡΠΈΠ½Π° Π²ΡΠ΅ΠΊΠΈ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠ΅Π΄ΠΈ Π±Π΅Π· root ΠΏΡΠ°Π²Π°, ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΡΠΈΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° Π²Π΅ΡΡΠΈΠΈ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ»Π΅Π΄ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ β Π΄Π΅ΡΠ°ΠΉΠ»ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΡΠΎΡΠΈ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΏΡΠΎΠΏΡΡΠΊΠ°Ρ.
ΠΠ°ΠΊΠ²ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ Perl ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅ ΠΈ Π·Π°ΡΠΎ ΡΠ° Π²Π°ΠΆΠ½ΠΈ
Perl ΠΌΠΎΠ΄ΡΠ»ΡΡ Π΅ ΠΏΠ°ΠΊΠ΅Ρ Ρ ΠΎΠ±Ρ
Π²Π°Ρ Π½Π° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π°, ΠΊΠΎΠΉΡΠΎ Π΅ΠΊΡΠΏΠΎΡΡΠΈΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΈΠ»ΠΈ ΠΎΠ±Π΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ Π²ΡΠ² Π²Π°ΡΠΈΡ ΡΠΊΡΠΈΠΏΡ. ΠΠΎΠ΄ΡΠ»ΠΈΡΠ΅ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ°Ρ Π² ΠΏΡΡΡ Π·Π° ΡΡΡΡΠ΅Π½Π΅ @INC ΠΈ ΡΠ΅ Π·Π°ΡΠ΅ΠΆΠ΄Π°Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Ρ use ΠΈΠ»ΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Ρ require. Π Π°Π·Π³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π΅ Π²Π°ΠΆΠ½ΠΎ: use Module ΡΠ΅ ΠΎΡΠ΅Π½ΡΠ²Π° ΠΏΡΠ΅Π΄ΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π²Π°ΡΠΈΡ ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΠ΅ΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π»ΠΈΠΏΡΠ²Π°Ρ ΠΌΠΎΠ΄ΡΠ» ΠΏΡΠΈΡΠΈΠ½ΡΠ²Π° Π½Π΅Π·Π°Π±Π°Π²Π½Π° ΡΠ°ΡΠ°Π»Π½Π° Π³ΡΠ΅ΡΠΊΠ°, Π° Π½Π΅ ΠΈΠ·Π½Π΅Π½Π°Π΄Π° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅.
Comprehensive Perl Archive Network (CPAN) Ρ ΠΎΡΡΠ²Π° Π½Π°Π΄ 200 000 Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈ ΠΎΡ Ρ ΠΈΠ»ΡΠ΄ΠΈ ΡΡΡΡΡΠ΄Π½ΠΈΡΠΈ. ΠΡΡΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π° Perl ΡΡΠ΅Π΄Π° β Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π΄Π°Π»ΠΈ ΡΠ°Π±ΠΎΡΠΈ Π½Π° ΡΡΡΠ²ΡΡ Ρ Π³ΠΎΠ»ΡΠΌ ΠΌΠ΅ΡΠ°Π», VPS ΠΈΠ»ΠΈ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° ΡΡΠ΅Π΄Π° β Π·Π°Π²ΠΈΡΠΈ ΠΎΡ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈ.
ΠΠ΅ΡΠΎΠ΄ 1: ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° Perl ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΡΠ΅Π· CPAN ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ°
ΠΠ³ΡΠ°Π΄Π΅Π½ΠΈΡΡ CPAN ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠ΅ Π΄ΠΎΡΡΠ°Π²Ρ Ρ Π²ΡΡΠΊΠ° ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ Π½Π° Perl. Π’ΠΎΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΡΠ°Π·ΡΠ΅ΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ, ΡΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ΡΠΎ.
ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π½Π° CPAN
ΠΠ° Π½ΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΏΡΡΠ²ΠΎΡΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° CPAN ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ° Π·Π°Π΄Π΅ΠΉΡΡΠ²Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π΅Π½ ΡΡΠ²Π΅ΡΠ½ΠΈΠΊ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ. ΠΠ° Π΄Π° Π³ΠΎ Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈΡΠ΅ ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄Π° ΠΏΡΠΈΠ΅ΠΌΠ΅ΡΠ΅ ΡΠ°Π·ΡΠΌΠ½ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅:
perl -MCPAN -e 'CPAN::Shell->install("CPAN")'ΠΠ»ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅ ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ:
perl -MCPAN -e shellΠ ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ Π²ΡΠ΅ΠΊΠΈ ΠΌΠΎΠ΄ΡΠ» ΠΏΠΎ ΠΈΠΌΠ΅:
cpan[1]> install LWP::Simple
cpan[2]> install DBIΠΠ΄Π½ΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½Π° Π½Π΅ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ
ΠΠ° ΡΠΊΡΠΈΠΏΡΠΈΡΠ°Π½ΠΈ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ CI ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄ΠΈ, ΠΏΡΠΎΠΏΡΡΠ½Π΅ΡΠ΅ ΠΈΠ·ΡΡΠ»ΠΎ ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ°:
perl -MCPAN -e 'install("LWP::Simple")'ΠΡΠΈΡΠΈΡΠ΅Π½ Π³ΡΠ°Π½ΠΈΡΠ΅Π½ ΡΠ»ΡΡΠ°ΠΉ: ΠΠΊΠΎ CPAN ΠΈΡΠΊΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π½Π΅ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ (ΡΠ΅ΡΡΠΎ ΡΡΠ΅ΡΠ°Π½ΠΎ Π² Docker ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ ΠΈΠ»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ OS ΠΎΠ±ΡΠ°Π·ΠΈ), ΠΏΡΡΠ²ΠΎ ΠΏΡΠΈΠ½ΡΠ΄Π΅ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ:
perl -MCPAN -e 'my $c = CPAN::HandleConfig->load; CPAN::Shell->install("LWP::Simple")'ΠΠ»ΠΈ Π·Π°Π΄Π°ΠΉΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° ΠΏΡΠ΅Π΄ΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅:
PERL_MM_USE_DEFAULT=1 perl -MCPAN -e 'install("LWP::Simple")'ΠΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°ΠΌΠΈΡ CPAN ΠΊΠ»ΠΈΠ΅Π½Ρ
ΠΡΡΠ°ΡΡΠ» CPAN ΠΊΠ»ΠΈΠ΅Π½Ρ Π΅ ΡΠ΅ΡΡΠ° ΠΏΡΠΈΡΠΈΠ½Π° Π·Π° Π³ΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ TLS ΡΡΠΊΠΎΡΡΠΈΡΠΊΠ°Π½Π΅ ΠΈ ΠΏΠΎΠ²ΡΠ΅Π΄Π΅Π½ΠΈ Π³ΡΠ°ΡΠΈΠΊΠΈ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ. ΠΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΉΡΠ΅ Π³ΠΎ ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΊΠ°ΠΊΠ²ΠΎΡΠΎ ΠΈ Π΄Π° Π΅ Π΄ΡΡΠ³ΠΎ Π½Π° Π½Π°ΡΠ»Π΅Π΄Π΅Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°:
cpan CPANΠΠ΅ΡΠΎΠ΄ 2: cpanm (CPAN Minus) β ΠΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π½ΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ
cpanm Π΅ CPAN ΠΊΠ»ΠΈΠ΅Π½Ρ Π±Π΅Π· ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΊΠΎΠΉΡΠΎ Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎ-Π±ΡΡΠ· ΠΎΡ ΠΏΡΠ»Π½Π°ΡΠ° CPAN ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°. Π’ΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π° ΠΏΠΎ-ΡΠΈΡΡ ΠΈΠ·Ρ
ΠΎΠ΄, ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΠΌΡΠ»ΡΠ°Π»ΠΈΠ²ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ Π²Π΅ΡΠΈΠ³ΠΈ ΠΎΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈ ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ° ΡΠΈΡΡΠΎ Ρ local::lib ΠΈ perlbrew. ΠΠ° Π²ΡΠ΅ΠΊΠΈ ΡΠ΅ΡΠΈΠΎΠ·Π΅Π½ ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ Π½Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅, cpanm Π΅ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡΡ ΠΈΠ·Π±ΠΎΡ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅.
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° cpanm
curl -L https://cpanmin.us | perl - --sudo App::cpanminusΠΠΊΠΎ curl Π½Π΅ Π΅ Π½Π°Π»ΠΈΡΠ΅Π½:
wget -O - https://cpanmin.us | perl - --sudo App::cpanminusΠΠ° ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΊΡΠ΄Π΅ΡΠΎ Π²Π΅ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΡΠ°Π±ΠΎΡΠ΅Ρ CPAN ΠΊΠ»ΠΈΠ΅Π½Ρ:
cpan App::cpanminusΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈ Ρ cpanm
cpanm LWP::Simple
cpanm DBI
cpanm MooseΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° Π²Π΅ΡΡΠΈΡ
Π€ΠΈΠΊΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π²Π΅ΡΡΠΈΠΈ Π΅ ΠΎΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π° Π²ΡΠ·ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΈ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½ΠΈΡ. ΠΠ° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΎΡΠ½ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅:
cpanm GAAS/libwww-perl-6.67.tar.gzΠΠ»ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° @version:
cpanm LWP::Simple@6.67ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ ΠΎΡ cpanfile
ΠΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π½Π° Π½ΠΈΠ²ΠΎ ΠΏΡΠΎΠ΅ΠΊΡ, Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΠΉΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ° ΡΠΈ Π² cpanfile:
requires 'LWP::Simple', '>= 6.00';
requires 'DBI', '>= 1.643';
requires 'Moose';Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ Π²ΡΠΈΡΠΊΠΈ Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ°Π½ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Ρ Π΅Π΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°:
cpanm --installdeps .Π’ΠΎΠ²Π° Π΅ Perl Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΡΡ Π½Π° pip install -r requirements.txt ΠΈΠ»ΠΈ npm install ΠΈ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈ ΠΊΡΠΌ Π²ΡΠ΅ΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ ΡΠΊΡΠΈΠΏΡ Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅.
ΠΠ΅ΡΠΎΠ΄ 3: Π ΡΡΠ½Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ ΠΎΡ ΠΈΠ·Ρ ΠΎΠ΄Π΅Π½ tarball
Π ΡΡΠ½Π°ΡΠ° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Π² ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΈ ΠΎΡ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ ΡΡΠ΅Π΄ΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ Π΄Π°Π΄Π΅Π½ ΠΌΠΎΠ΄ΡΠ» Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ Π² CPAN ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠΈΡΠ΅ ΠΏΠ°ΡΠΎΠ²Π΅ ΠΏΡΠ΅Π΄ΠΈ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ.
Π‘ΡΡΠΏΠΊΠ° 1: ΠΠ·ΡΠ΅Π³Π»Π΅ΡΠ΅ tarball ΡΠ°ΠΉΠ»Π°
ΠΠ·Π²Π»Π΅ΡΠ΅ΡΠ΅ Π°ΡΡ ΠΈΠ²Π° Π½Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΡΠ° ΠΎΡ search.cpan.org ΠΈΠ»ΠΈ metacpan.org, ΠΈΠ»ΠΈ Π³ΠΎ ΠΏΡΠ΅Ρ Π²ΡΡΠ»Π΅ΡΠ΅ ΡΡΡΠ½ΠΎ Π½Π° Π²Π°ΡΠΈΡ ΡΡΡΠ²ΡΡ:
wget https://cpan.metacpan.org/authors/id/G/GA/GAAS/libwww-perl-6.67.tar.gzΠ‘ΡΡΠΏΠΊΠ° 2: Π Π°Π·Π°ΡΡ ΠΈΠ²ΠΈΡΠ°ΠΉΡΠ΅ Π°ΡΡ ΠΈΠ²Π°
tar -xzf libwww-perl-6.67.tar.gz
cd libwww-perl-6.67Π‘ΡΡΠΏΠΊΠ° 3: ΠΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Ρ Makefile.PL ΠΈΠ»ΠΈ Build.PL
ΠΠΎΠ²Π΅ΡΠ΅ΡΠΎ CPAN Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π΅Π΄Π½Π° ΠΎΡ Π΄Π²Π΅ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅. ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ ΠΊΠΎΡ Π΅ Π½Π°Π»ΠΈΡΠ½Π° ΠΏΡΠ΅Π΄ΠΈ Π΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΡΠ΅.
ΠΠ° Makefile.PL (ExtUtils::MakeMaker):
perl Makefile.PL
make
make test
sudo make installΠΠ° Build.PL (Module::Build):
perl Build.PL
./Build
./Build test
sudo ./Build installΠΠ°ΠΊΠ²ΠΎ ΠΏΡΠ°Π²ΠΈ Π²ΡΡΠΊΠ° ΡΡΡΠΏΠΊΠ°:
perl Makefile.PLβ ΠΡΠΎΠ²Π΅ΡΡΠ²Π° Π²Π°ΡΠ°ΡΠ° Perl ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π·Π° Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅Π½ Π·Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ°Makefile.makeβ ΠΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ° Π²ΡΠ΅ΠΊΠΈ XS (C ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅) ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Ρ ΡΠΈΡΡΠΈΡΠ΅ Perl ΡΠ°ΠΉΠ»ΠΎΠ²Π΅.make testβ ΠΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΡΠ΅ΡΡΠΎΠ²ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ Π½Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΡΠ° ΡΠΏΡΡΠΌΠΎ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. ΠΠΈΠΊΠΎΠ³Π° Π½Π΅ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΠΉΡΠ΅ ΡΠ°Π·ΠΈ ΡΡΡΠΏΠΊΠ° Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ; Π½Π΅ΡΡΠΏΠ΅ΡΠ΅Π½ ΡΠ΅ΡΡΠΎΠ² ΠΏΠ°ΠΊΠ΅Ρ Π΅ ΡΡΠ΅Π½ ΡΠΈΠ³Π½Π°Π», ΡΠ΅ Π½Π΅ΡΠΎ Π½Π΅ Π΅ Π½Π°ΡΠ΅Π΄ Ρ Π²Π°ΡΠ°ΡΠ° ΡΡΠ΅Π΄Π° ΠΈΠ»ΠΈ ΡΠ°ΠΌΠΈΡ ΠΌΠΎΠ΄ΡΠ».sudo make installβ ΠΠΎΠΏΠΈΡΠ° ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² ΠΏΡΡΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½Π°ΡΠ° Perl Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°.
ΠΠ»ΠΎΠΏΠΊΠ°: ΠΠΊΠΎ make test ΠΎΡΡΠΈΡΠ° Π³ΡΠ΅ΡΠΊΠΈ, Π½Π΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°ΠΉΡΠ΅ ΠΊΡΠΌ make install. ΠΡΠΎΡΡΠ΅ΡΠ΅ ΠΈΠ·Ρ
ΠΎΠ΄Π° ΠΎΡ ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° t/. ΠΠ½ΠΎΠ³ΠΎ Π³ΡΠ΅ΡΠΊΠΈ ΡΠ° ΠΏΡΠΈΡΠΈΠ½Π΅Π½ΠΈ ΠΎΡ Π»ΠΈΠΏΡΠ²Π°ΡΠΈ Π½Π΅Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈΠ»ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½Π° Π·Π° ΡΡΠ΅Π΄Π°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, Π° Π½Π΅ ΠΎΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΈ Π±ΡΠ³ΠΎΠ²Π΅.
ΠΠ΅ΡΠΎΠ΄ 4: local::lib Π·Π° ΡΡΠ΅Π΄ΠΈ Π±Π΅Π· root ΠΏΡΠ°Π²Π° ΠΈ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ ΡΡΠ΅Π΄ΠΈ
ΠΡΠΈ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ Ρ
ΠΎΡΡΠΈΠ½Π³, ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Π½ΠΈ ΡΡΡΠ²ΡΡΠΈ ΠΈΠ»ΠΈ Π²ΡΡΠΊΠ° ΡΡΠ΅Π΄Π°, Π² ΠΊΠΎΡΡΠΎ Π½ΡΠΌΠ°ΡΠ΅ Π΄ΠΎΡΡΡΠΏ sudo, local::lib ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π° Π²ΡΠΈΡΠΊΠΈ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΠΈ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΊΡΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π² Π΄ΠΎΠΌΠ°ΡΠ½Π°ΡΠ° Π²ΠΈ ΠΏΠ°ΠΏΠΊΠ°. Π’ΠΎΠ²Π° Π΅ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡΡ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ΅Π½ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ β Π½Π΅ Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
ΠΠ°ΡΡΡΠΎΠΉΠ²Π°Π½Π΅ Π½Π° local::lib
ΠΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ΠΊΠ°ΠΊΡΠ²ΡΠΎ ΠΈ Π΄Π° Π΅ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ CPAN:
cpanm --local-lib=~/perl5 local::libΠΠ»ΠΈ ΡΡΠ΅Π· CPAN ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ°:
perl -MCPAN -e 'install("local::lib")'ΠΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ΅Π΄Π°ΡΠ°
ΠΠΎΠ±Π°Π²Π΅ΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ ΠΊΡΠΌ Π²Π°ΡΠΈΡ ~/.bashrc ΠΈΠ»ΠΈ ~/.bash_profile:
eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib=$HOME/perl5)"ΠΡΠ΅Π·Π°ΡΠ΅Π΄Π΅ΡΠ΅ ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ° ΡΠΈ:
source ~/.bashrcΠ’ΠΎΠ²Π° Π·Π°Π΄Π°Π²Π° PERL5LIB, PERL_LOCAL_LIB_ROOT, PERL_MB_OPT, PERL_MM_OPT ΠΈ PATH, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΈ perl, ΠΈ cpanm Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π²Π°ΡΠ°ΡΠ° Π»ΠΎΠΊΠ°Π»Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ.
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈ Π² local::lib
Π‘Π»Π΅Π΄ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅, Π²ΡΠΈΡΠΊΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ Π½Π° cpanm ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Ρ Π² ~/perl5 Π±Π΅Π· Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠ»Π°Π³ΠΎΠ²Π΅:
cpanm LWP::Simple
cpanm MojoliciousΠΠ°ΠΆΠ΅Π½ Π½ΡΠ°Π½Ρ: ΠΠΊΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°ΡΠ΅ Π½Π° VPS Ρ cPanel, cPanel ΡΠΏΡΠ°Π²Π»ΡΠ²Π° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π°ΡΠ° ΡΠΈ Perl ΡΡΠ΅Π΄Π° ΠΎΡΠ΄Π΅Π»Π½ΠΎ ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡ Perl. ΠΠΎΠ΄ΡΠ»ΠΈΡΠ΅, ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡ ΠΏΡΡ, ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ ΡΠ° Π²ΠΈΠ΄ΠΈΠΌΠΈ Π·Π° Perl ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° Π½Π° cPanel. ΠΠΈΠ½Π°Π³ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΉΡΠ΅ ΠΊΠΎΠΉ Perl Π΄Π²ΠΎΠΈΡΠ΅Π½ ΡΠ°ΠΉΠ» ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ which perl ΠΈ perl -V ΠΏΡΠ΅Π΄ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅.
ΠΠ΅ΡΠΎΠ΄ 5: Π‘ΠΈΡΡΠ΅ΠΌΠ΅Π½ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ
ΠΠ° ΡΠΈΡΡΠ΅ΠΌΠΈ Debian/Ubuntu ΠΈ RHEL/CentOS, ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈ CPAN ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΠ° ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ°Π½ΠΈ ΠΊΠ°ΡΠΎ Π½Π°ΡΠΈΠ²Π½ΠΈ OS ΠΏΠ°ΠΊΠ΅ΡΠΈ. Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ° ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΠΈΠ·Π±ΡΠ³Π²Π° ΠΈΠ·ΠΈΡΠΊΠ²Π°Π½ΠΈΡΡΠ° Π·Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅.
Debian/Ubuntu:
sudo apt-get install libwww-perl libdbi-perl libmoose-perlRHEL/CentOS/Fedora:
sudo dnf install perl-LWP-Simple perl-DBI perl-MooseΠΠΎΠ³Π° Π΄Π° ΠΏΡΠ΅Π΄ΠΏΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΏΡΠ΅Π΄ CPAN:
| ΠΡΠΈΡΠ΅ΡΠΈΠΉ | Π‘ΠΈΡΡΠ΅ΠΌΠ΅Π½ ΠΏΠ°ΠΊΠ΅Ρ | CPAN / cpanm |
|---|---|---|
| ΠΠΊΡΡΠ°Π»Π½ΠΎΡΡ Π½Π° Π²Π΅ΡΡΠΈΡΡΠ° | Π§Π΅ΡΡΠΎ ΠΎΡΡΠ°ΡΡΠ»Π° | ΠΠΈΠ½Π°Π³ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π° |
| Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ | Π£ΠΏΡΠ°Π²Π»ΡΠ²Π°Π½ΠΎ ΠΎΡ OS | Π£ΠΏΡΠ°Π²Π»ΡΠ²Π°Π½ΠΎ ΠΎΡ CPAN |
| ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ | ΠΠ΅ | ΠΠ° (Π·Π° XS ΠΌΠΎΠ΄ΡΠ»ΠΈ) |
| ΠΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π·Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ ΡΡΡΠ²ΡΡΠΈ | ΠΠ°, Π·Π° ΡΡΠ°Π±ΠΈΠ»Π½ΠΎΡΡ | ΠΠ°, Ρ ΡΠΈΠΊΡΠΈΡΠ°Π½Π΅ |
| Π Π°Π±ΠΎΡΠΈ Π±Π΅Π· ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ | ΠΠ° (Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΠΎΠ³Π»Π΅Π΄Π°Π»ΠΎ) | ΠΠ·ΠΈΡΠΊΠ²Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΠΎΠ³Π»Π΅Π΄Π°Π»ΠΎ |
| ΠΠ½ΡΠ΅Π³ΡΠΈΡΠ° ΡΠ΅ ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ | ΠΠ° | ΠΠ΅ |
| ΠΠΎΠ΄Π΄ΡΡΠΆΠ° local::lib | ΠΠ΅ | ΠΠ° |
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° Perl ΠΌΠΎΠ΄ΡΠ»ΠΈ
| ΠΠ΅ΡΠΎΠ΄ | ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ root ΠΏΡΠ°Π²Π° | Π‘ΠΊΠΎΡΠΎΡΡ | ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° ΠΎΡΠ»Π°ΠΉΠ½ | Π€ΠΈΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° Π²Π΅ΡΡΠΈΠΈ | ΠΠ°ΠΉ-Π΄ΠΎΠ±ΡΡ ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΡΠΏΠΎΡΡΠ΅Π±Π° |
|---|---|---|---|---|---|
| CPAN ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° | ΠΠ° (ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅) | ΠΠ°Π²Π½Π° | ΠΠ΅ | ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ | ΠΠ°ΡΠ»Π΅Π΄Π΅Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° |
| `cpanm` | ΠΠΎ ΠΈΠ·Π±ΠΎΡ | ΠΡΡΠ·Π° | Π‘ Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΠΎΠ³Π»Π΅Π΄Π°Π»ΠΎ | ΠΠ° | ΠΡΠΈΡΠΊΠΈ ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ ΡΠ°Π±ΠΎΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ |
| Π ΡΡΠ΅Π½ tarball | ΠΠΎ ΠΈΠ·Π±ΠΎΡ | Π ΡΡΠ½Π° | ΠΠ° | ΠΠ° | ΠΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΈ ΡΡΠ΅Π΄ΠΈ, ΠΏΠ°ΡΠ½Π°ΡΠΈ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½ΠΈΡ |
| `local::lib` | ΠΠ΅ | ΠΡΡΠ·Π° (Ρ cpanm) | ΠΠ΅ | ΠΠ° | Π‘ΠΏΠΎΠ΄Π΅Π»Π΅Π½ Ρ ΠΎΡΡΠΈΠ½Π³, Π±Π΅Π· root ΠΏΡΠ°Π²Π° |
| Π‘ΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ | ΠΠ° | ΠΡΡΠ·Π° | ΠΠ° (ΠΊΠ΅ΡΠΈΡΠ°Π½ΠΎ) | ΠΠ΅ | Π‘ΡΡΠ²ΡΡΠΈ, ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ΠΈ ΠΊΡΠΌ ΡΡΠ°Π±ΠΈΠ»Π½ΠΎΡΡ |
ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΌΠΎΠ΄ΡΠ»Π°
Π‘Π»Π΅Π΄ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ΡΠΎ, Π²ΠΈΠ½Π°Π³ΠΈ ΠΏΠΎΡΠ²ΡΡΠΆΠ΄Π°Π²Π°ΠΉΡΠ΅, ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π·Π°ΡΠ΅Π΄ΠΈ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ Π²Π΅ΡΡΠΈΡΡΠ° ΠΌΡ:
perl -MLWPSimple -e 'print $LWP::Simple::VERSION, "n"'ΠΠ° ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ Π΅ΠΊΡΠΏΠΎΡΡΠΈΡΠ°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΡΠΊΠ°Π»Π°Ρ $VERSION, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅:
perl -e 'use LWP::Simple; print "OKn"'ΠΠ° Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΊΡΠ΄Π΅ Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ ΠΌΠΎΠ΄ΡΠ»ΡΡ Π½Π° Π΄ΠΈΡΠΊΠ°:
perl -MLWP::Simple -e 'print $INC{"LWP/Simple.pm"}, "n"'ΠΠ° Π΄Π° ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΡΠ΅ ΠΏΡΠ»Π½ΠΈΡ ΠΏΡΡ Π·Π° ΡΡΡΡΠ΅Π½Π΅ @INC, ΠΊΠΎΠΉΡΠΎ Π²Π°ΡΠΈΡΡ Perl ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°:
perl -e 'print join("n", @INC), "n"'ΠΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΡΠΎ ΡΡΠ΅ΡΠ°Π½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅
ΠΠΈΠΏΡΠ²Π°Ρ C ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ ΠΈΠ»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅
XS ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅ (ΡΠ΅Π·ΠΈ Ρ C ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ) ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ C ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ ΠΈ make. ΠΠ° Debian/Ubuntu:
sudo apt-get install build-essentialΠΠ° RHEL/CentOS:
sudo dnf groupinstall "Development Tools"ΠΠ΅ΡΡΠΏΠ΅ΡΠ½ΠΈ TLS/SSL Π²ΡΡΠ·ΠΊΠΈ ΠΊΡΠΌ CPAN ΠΎΠ³Π»Π΅Π΄Π°Π»Π°
ΠΠΊΠΎ cpanm ΠΈΠ»ΠΈ CPAN ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ° ΡΠ΅ ΠΏΡΠΎΠ²Π°Π»Ρ Ρ SSL Π³ΡΠ΅ΡΠΊΠΈ, ΠΏΡΡΠ²ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ:
sudo cpan Mozilla::CA IO::Socket::SSL LWP::Protocol::httpsΠ’ΠΎΠ²Π° Π΅ ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π°ΠΊΡΡΠ°Π»Π½ΠΎ ΠΏΡΠΈ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° Perl ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ HTTPS ΡΡΠ°ΡΠΈΠΊ β ΡΡΡΠ°ΡΠ° SSL ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°, ΠΊΠΎΡΡΠΎ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π²Π°ΡΠΈΡΠ΅ SSL ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ Π½Π° ΡΠ΅Π± ΡΠ»ΠΎΡ, ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΎΡΡΠ°Π·Π΅Π½Π° Π²ΡΠ² Π²Π°ΡΠ°ΡΠ° Perl ΡΡΠ΅Π΄Π°.
ΠΠΎΠ½ΡΠ»ΠΈΠΊΡΠΈ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ
ΠΠΎΠ³Π°ΡΠΎ Π΄Π°Π΄Π΅Π½ ΠΌΠΎΠ΄ΡΠ» ΠΈΠ·ΠΈΡΠΊΠ²Π° Π²Π΅ΡΡΠΈΡ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ, ΠΊΠΎΡΡΠΎ Π΅ Π² ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ Ρ Π²Π΅ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π°ΡΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΡΠ»Π°Π³Π° --notest Π½Π° cpanm Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ, ΠΈΠ»ΠΈ ΠΈΠ·ΠΎΠ»ΠΈΡΠ°ΠΉΡΠ΅ ΡΡΠ΅Π΄Π°ΡΠ° Ρ local::lib ΠΈΠ»ΠΈ perlbrew:
cpanm --notest Problematic::ModuleΠΠΈΠΊΠΎΠ³Π° Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ --notest Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²ΠΎ, Π±Π΅Π· Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ Π·Π°ΡΠΎ ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ ΠΏΡΠΎΠ²Π°Π»ΡΡ. Π’ΠΎΠ²Π° ΠΏΠΎΡΠΈΡΠΊΠ° Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π°ΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π·Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ Π² ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄Π° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅.
ΠΡΠΊΠ°Π·Π°Π½ Π΄ΠΎΡΡΡΠΏ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅
ΠΠΊΠΎ make install ΡΠ΅ ΠΏΡΠΎΠ²Π°Π»Ρ Ρ Π³ΡΠ΅ΡΠΊΠΈ Π·Π° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ sudo Π½Π΅ Π΅ Π½Π°Π»ΠΈΡΠ΅Π½, ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ΅ΡΠ΅ ΠΊΡΠΌ Π»ΠΎΠΊΠ°Π»Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°:
cpanm --local-lib=~/perl5 LWP::SimpleΠΠΎΠ΄ΡΠ»ΡΡ Π½Π΅ Π΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½ ΡΠ»Π΅Π΄ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅
ΠΠΊΠΎ perl -MModule::Name -e 1 ΡΡΠΎΠ±ΡΠ°Π²Π° βCanβt locateβ, ΠΌΠΎΠ΄ΡΠ»ΡΡ Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ Π² ΠΏΡΡ, ΠΊΠΎΠΉΡΠΎ Π½Π΅ Π΅ Π² @INC. ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅:
perl -V | grep -A 20 '@INC'Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΈΠ»ΠΈ ΠΏΡΠ΅ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ Π² ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡ ΠΏΡΡ, ΠΈΠ»ΠΈ Π·Π°Π΄Π°ΠΉΡΠ΅ PERL5LIB:
export PERL5LIB="$HOME/perl5/lib/perl5:$PERL5LIB"ΠΠ½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° Perl ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΡΡΠ²ΡΡΠ½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°
ΠΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ΠΈ Perl ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ β ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΡΠ΅Π·ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠΈ ΡΡΠ΅ΠΉΠΌΡΡΡΠΊΠΈ ΠΊΠ°ΡΠΎ Mojolicious, Catalyst ΠΈΠ»ΠΈ Dancer2 β ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΡΠ΅ΡΠΈΡΠ° ΠΊΠ°ΡΠΎ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°, Π° Π½Π΅ ΠΊΠ°ΡΠΎ Π²ΡΠΎΡΠΎΡΡΠ΅ΠΏΠ΅Π½Π½Π° Π·Π°Π΄Π°ΡΠ°.
ΠΡΠ΅ΠΏΠΎΡΡΡΠΈΡΠ΅Π»Π΅Π½ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½ ΡΠ°Π±ΠΎΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ:
- ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅
cpanfile, Π·Π° Π΄Π° Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ°ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π·Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° Π²Π΅ΡΡΠΈΡ. - ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅
cpanm --installdeps .Π² ΡΠΊΡΠΈΠΏΡΠ° ΡΠΈ Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅. - Π€ΠΈΠΊΡΠΈΡΠ°ΠΉΡΠ΅ Π²Π΅ΡΡΠΈΠΈΡΠ΅ Π½Π° ΠΊΡΠΈΡΠΈΡΠ½ΠΈΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ, Π·Π° Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΠ΅ Π½Π΅ΠΎΡΠ°ΠΊΠ²Π°Π½ΠΈ Π½Π°Π΄ΡΡΡΠΎΠΉΠΊΠΈ.
- ΠΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΠΉΡΠ΅
make testΠΈΠ»ΠΈcpanm --test-onlyΠ² CI ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄Π° ΡΠΈ ΠΏΡΠ΅Π΄ΠΈ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅. - ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅
local::libΠΈΠ»ΠΈperlbrew, Π·Π° Π΄Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°ΡΠ΅ ΡΡΠ΅Π΄ΠΈΡΠ΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡ Perl.
Perl ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°ΡΠΈ ΡΠ΅Π± Π·Π°ΡΠ²ΠΊΠΈ, ΠΈΠΌΠ΅ΠΉΠ»ΠΈ ΠΈΠ»ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π°ΡΠΈ Ρ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, ΡΠ° ΡΠ΅ΡΡΠΈ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ Π½Π° VPS Ρ
ΠΎΡΡΠΈΠ½Π³ ΠΈ Dedicated ΡΡΡΠ²ΡΡΠΈ. ΠΠ° dedicated ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° ΠΈΠΌΠ°ΡΠ΅ ΠΏΡΠ»Π΅Π½ ΠΊΠΎΠ½ΡΡΠΎΠ» Π²ΡΡΡ
Ρ Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° Perl, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠ° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ ΠΈ ΠΏΡΡΠΈΡΠ°ΡΠ° Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅ β Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ°ΠΉΠΊΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΡΠ°, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ°Π²ΡΡ local::lib Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌ Π² ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ ΡΡΠ΅Π΄ΠΈ.
ΠΠΊΠΎ Π²Π°ΡΠ΅ΡΠΎ Perl ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½ΠΈ ΠΈΠΌΠ΅ΠΉΠ»ΠΈ, ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅ Email::Sender ΠΈΠ»ΠΈ MIME::Lite ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Ρ SMTP ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ°. Π‘ΡΡΠ΅ΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠ²Π° Ρ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ ΠΈΠΌΠ΅ΠΉΠ» Ρ
ΠΎΡΡΠΈΠ½Π³ Π³Π°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ ΠΈΠΌΠ΅ΠΉΠ»ΠΈΡΠ΅ Π½Π° Π²Π°ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½ΡΠΌΠ° Π΄Π° Π±ΡΠ΄Π°Ρ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½ΠΈ ΠΊΠ°ΡΠΎ ΡΠΏΠ°ΠΌ ΠΏΠΎΡΠ°Π΄ΠΈ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π° ΡΠ΅Π»Π΅ΠΉ.
ΠΠΎΠ½ΡΡΠΎΠ»Π΅Π½ ΡΠΏΠΈΡΡΠΊ Π·Π° ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΡΠ°Π·ΠΈ ΠΌΠ°ΡΡΠΈΡΠ°, Π·Π° Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π·Π° Π²Π°ΡΠ°ΡΠ° ΡΠΈΡΡΠ°ΡΠΈΡ:
- ΠΠΌΠ°ΡΠ΅ root Π΄ΠΎΡΡΡΠΏ ΠΈ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΡΠ΅ ΠΎΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΠΌΠΎΠ΄ΡΠ»Π° β ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅
cpanmΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ. - ΠΠ°ΠΌΠΈΡΠ°ΡΠ΅ ΡΠ΅ Π½Π° ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ Ρ
ΠΎΡΡΠΈΠ½Π³ ΠΈΠ»ΠΈ Π½ΡΠΌΠ°ΡΠ΅ sudo β ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅
local::libΡcpanm. - ΠΠ°ΠΌΠΈΡΠ°ΡΠ΅ ΡΠ΅ Π² ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½Π° ΠΎΡ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΈΠ»ΠΈ ΠΎΡΠ»Π°ΠΉΠ½ ΡΡΠ΅Π΄Π° β ΠΠ·ΡΠ΅Π³Π»Π΅ΡΠ΅ tarball ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ ΡΡΡΠ½ΠΎ ΠΈ ΠΈΠ·Π³ΡΠ°Π΄Π΅ΡΠ΅ ΠΎΡ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄.
- ΠΡΠΆΠ΄Π°Π΅ΡΠ΅ ΡΠ΅ ΠΎΡ Π²ΡΠ·ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΈ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½ΠΈΡ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΡΠ²ΡΡΠΈ β ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅
cpanfileΠΈcpanm --installdeps .Π² ΡΡΡΠ±ΠΎΠΏΡΠΎΠ²ΠΎΠ΄Π° ΡΠΈ Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅. - ΠΡΠΆΠ΄Π°Π΅ΡΠ΅ ΡΠ΅ ΠΎΡ ΡΡΠ°Π±ΠΈΠ»Π½ΠΎΡΡ Π½Π° Π½ΠΈΠ²ΠΎ OS ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ β ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ (
apt,dnf) Π·Π° Π΄ΠΎΠ±ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ°Π½ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ. - ΠΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²Π΅ΡΡΠΈΠΈ Π½Π° Perl Π½Π° Π΅Π΄Π½Π° ΠΌΠ°ΡΠΈΠ½Π° β ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅
perlbrewΠ·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Perl ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΠΈΡΠ΅, ΡΠ»Π΅Π΄ ΡΠΎΠ²Π°cpanmΠ² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π²ΡΡΠΊΠ°. - ΠΠ°Π΄Π΅Π½ ΠΌΠΎΠ΄ΡΠ» Π½Π΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΡΠ΅ΡΡΠΎΠ²ΠΈΡ ΡΠΈ ΠΏΠ°ΠΊΠ΅Ρ β ΠΡΠΎΡΡΠ΅ΡΠ΅ ΠΏΡΠ΅Π΄ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅. ΠΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ ΡΡΠ°ΠΊΠ΅ΡΠ° Π·Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π½Π° ΠΌΠΎΠ΄ΡΠ»Π° Π² MetaCPAN.
- Π’ΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° Perl ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° β ΠΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΠΉΡΠ΅
perlbrew+local::libΠ·Π° ΠΏΡΠ»Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ.
Π§Π΅ΡΡΠΎ Π·Π°Π΄Π°Π²Π°Π½ΠΈ Π²ΡΠΏΡΠΎΡΠΈ
ΠΠ°ΠΊΠ²Π° Π΅ ΡΠ°Π·Π»ΠΈΠΊΠ°ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ use ΠΈ require ΠΏΡΠΈ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Perl ΠΌΠΎΠ΄ΡΠ»?
use Module ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ ΠΈ ΡΠ΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈ ΡΠΊΡΠΈΠΏΡΠ° Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ, Π°ΠΊΠΎ ΠΌΠΎΠ΄ΡΠ»ΡΡ Π½Π΅ Π±ΡΠ΄Π΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½. require Module ΡΠ΅ ΠΎΡΠ΅Π½ΡΠ²Π° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΠΉΠΊΠΈ ΡΡΠ»ΠΎΠ²Π½ΠΎ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅. ΠΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΌΠΎΠ΄ΡΠ»ΠΈ use Π΅ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡΡ ΠΈΠ·Π±ΠΎΡ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ»Π°Π²Ρ Π»ΠΈΠΏΡΠ²Π°ΡΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠ΅Π΄ΠΈ Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ.
ΠΠ°ΡΠΎ cpanm ΡΠ΅ ΠΏΡΠΎΠ²Π°Π»Ρ Ρ βSSL verification failedβ Π½Π° Π½ΠΎΠ² ΡΡΡΠ²ΡΡ?
ΠΠ»ΠΈΠ΅Π½ΡΡΡ cpanm ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° LWP::Protocol::https Π·Π° HTTPS Π²ΡΡΠ·ΠΊΠΈ ΠΊΡΠΌ CPAN ΠΎΠ³Π»Π΅Π΄Π°Π»Π°. ΠΡΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° OS ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ SSL Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ (IO::Socket::SSL, Mozilla::CA) ΠΌΠΎΠΆΠ΅ Π΄Π° Π»ΠΈΠΏΡΠ²Π°Ρ. ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ Π³ΠΈ ΠΏΡΡΠ²ΠΎ ΡΡΠ΅Π· ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ: sudo apt-get install libssl-dev, ΠΏΠΎΡΠ»Π΅Π΄Π²Π°Π½ΠΎ ΠΎΡ cpan IO::Socket::SSL.
ΠΠΎΠ³Π° Π»ΠΈ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌ Perl ΠΌΠΎΠ΄ΡΠ»ΠΈ Π±Π΅Π· Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ?
ΠΠ°. ΠΠ·ΡΠ΅Π³Π»Π΅ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΡΠ° .tar.gz ΠΎΡ MetaCPAN Π½Π° ΡΠ²ΡΡΠ·Π°Π½Π° ΠΌΠ°ΡΠΈΠ½Π°, ΠΏΡΠ΅Ρ
Π²ΡΡΠ»Π΅ΡΠ΅ Ρ Π½Π° ΡΠ΅Π»Π΅Π²ΠΈΡ ΡΡΡΠ²ΡΡ ΠΈ ΠΈΠ·Π³ΡΠ°Π΄Π΅ΡΠ΅ ΡΡΡΠ½ΠΎ Ρ perl Makefile.PL && make && make test && sudo make install. ΠΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠΎ Π΄Π° Π½Π°ΡΡΡΠΎΠΈΡΠ΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ CPAN ΠΎΠ³Π»Π΅Π΄Π°Π»ΠΎ Ρ CPAN::Mini Π·Π° ΠΎΡΠ»Π°ΠΉΠ½ Π΄ΠΎΡΡΡΠΏ Π·Π° ΡΠ΅Π»ΠΈΡ Π΅ΠΊΠΈΠΏ.
ΠΠ°ΠΊ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡ ΠΊΠΎΡ Π²Π΅ΡΡΠΈΡ Π½Π° Π΄Π°Π΄Π΅Π½ ΠΌΠΎΠ΄ΡΠ» Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π° Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ°?
ΠΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ perl -MModule::Name -e 'print Module::Name->VERSION, "n"'. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: perl -MLWP::Simple -e 'print $LWP::Simple::VERSION, "n"'. ΠΠ»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ cpanm --info Module::Name, Π·Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° Π½Π°Π»ΠΈΡΠ½Π° Π² CPAN.
ΠΠ°ΠΊΠ²ΠΎ Π΄Π° Π½Π°ΠΏΡΠ°Π²Ρ, Π°ΠΊΠΎ Π΄Π°Π΄Π΅Π½ ΠΌΠΎΠ΄ΡΠ» ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° ΡΡΠΏΠ΅ΡΠ½ΠΎ, Π½ΠΎ ΡΠΊΡΠΈΠΏΡΡΡ ΠΌΠΈ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ Π½Π°ΠΌΠ΅ΡΠΈ?
ΠΠΎΠ΄ΡΠ»ΡΡ Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, ΠΊΠΎΡΡΠΎ Π½Π΅ Π΅ Π² @INC Π½Π° Π²Π°ΡΠΈΡ Perl. ΠΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ perl -V, Π·Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ ΠΏΡΠ»Π½ΠΈΡ ΠΏΡΡ Π·Π° Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ Π³ΠΎ ΡΡΠ°Π²Π½Π΅ΡΠ΅ Ρ ΠΈΠ·Ρ
ΠΎΠ΄Π° ΠΎΡ perl -MModule::Name -e 'print $INC{"Module/Name.pm"}'. ΠΠ»ΠΈ ΠΏΡΠ΅ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ Ρ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈΡ ΠΏΡΠ΅ΡΠΈΠΊΡ, ΠΈΠ»ΠΈ Π΅ΠΊΡΠΏΠΎΡΡΠΈΡΠ°ΠΉΡΠ΅ PERL5LIB, Π·Π° Π΄Π° Π½Π°ΡΠΎΡΠΈΡΠ΅ Perl ΠΊΡΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π½Π°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ ΠΏΡΠ΅Π΄ΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠΊΡΠΈΠΏΡΠ°.
ΠΎΡ Π²ΡΠΈΡΠΊΠΈ Ρ
ΠΎΡΡΠΈΠ½Π³ ΡΡΠ»ΡΠ³ΠΈ