БпСстСтС 15% ΠΎΡ‚ всички хостинг услуги

ВСствай умСнията си ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠžΡ‚ΡΡ‚ΡŠΠΏΠΊΠ° Π·Π° всСки хостинг ΠΏΠ»Π°Π½

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ΄: Skills Π—Π° Π½Π°Ρ‡Π°Π»ΠΎ
Заглавия
Linux

Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½Π΅ Π½Π° 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-perl

RHEL/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 β€” ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ трябва Π΄Π° сС Ρ‚Ρ€Π΅Ρ‚ΠΈΡ€Π° ΠΊΠ°Ρ‚ΠΎ инфраструктура, Π° Π½Π΅ ΠΊΠ°Ρ‚ΠΎ второстСпСнна Π·Π°Π΄Π°Ρ‡Π°.

ΠŸΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡ΠΈΡ‚Π΅Π»Π΅Π½ производствСн Ρ€Π°Π±ΠΎΡ‚Π΅Π½ процСс:

  1. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ cpanfile, Π·Π° Π΄Π° Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π°Ρ‚Π΅ всички зависимости с ограничСния Π·Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° вСрсия.
  2. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ cpanm --installdeps . Π² скрипта си Π·Π° внСдряванС.
  3. ЀиксирайтС вСрсиитС Π½Π° ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΈΡ‚Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Π·Π° Π΄Π° ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π½Π΅ΠΎΡ‡Π°ΠΊΠ²Π°Π½ΠΈ надстройки.
  4. Π˜Π·ΠΏΡŠΠ»Π½ΡΠ²Π°ΠΉΡ‚Π΅ make test ΠΈΠ»ΠΈ cpanm --test-only Π² CI Ρ‚Ρ€ΡŠΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄Π° си ΠΏΡ€Π΅Π΄ΠΈ внСдряванС.
  5. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ 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 към ΠΏΡ€Π°Π²ΠΈΠ»Π½Π°Ρ‚Π° дирСктория ΠΏΡ€Π΅Π΄ΠΈ изпълнСниС Π½Π° скрипта.