Что самый легкий путь состоит в том, чтобы установить недостающий модуль Perl?

В Java все переменные, которые вы объявляете, на самом деле являются «ссылками» на объекты (или примитивы), а не самими объектами.

При попытке выполнить один метод объекта , ссылка просит живой объект выполнить этот метод. Но если ссылка ссылается на NULL (ничего, нуль, void, nada), то нет способа, которым метод будет выполнен. Тогда runtime сообщит вам об этом, выбросив исключение NullPointerException.

Ваша ссылка «указывает» на нуль, таким образом, «Null -> Pointer».

Объект живет в памяти виртуальной машины пространство и единственный способ доступа к нему - использовать ссылки this. Возьмем этот пример:

public class Some {
    private int id;
    public int getId(){
        return this.id;
    }
    public setId( int newId ) {
        this.id = newId;
    }
}

И в другом месте вашего кода:

Some reference = new Some();    // Point to a new object of type Some()
Some otherReference = null;     // Initiallly this points to NULL

reference.setId( 1 );           // Execute setId method, now private var id is 1

System.out.println( reference.getId() ); // Prints 1 to the console

otherReference = reference      // Now they both point to the only object.

reference = null;               // "reference" now point to null.

// But "otherReference" still point to the "real" object so this print 1 too...
System.out.println( otherReference.getId() );

// Guess what will happen
System.out.println( reference.getId() ); // :S Throws NullPointerException because "reference" is pointing to NULL remember...

Это важно знать - когда больше нет ссылок на объект (в пример выше, когда reference и otherReference оба указывают на null), тогда объект «недоступен». Мы не можем работать с ним, поэтому этот объект готов к сбору мусора, и в какой-то момент VM освободит память, используемую этим объектом, и выделит другую.

178
задан 16 revs, 5 users 43% 4 March 2015 в 20:46
поделиться

13 ответов

На Unix:

обычно Вы запускаете cpan в Вашей оболочке:

# cpan

и тип

install Chocolate::Belgian

или в краткой форме:

cpan Chocolate::Belgian

В Windows :

при использовании ActivePerl в Windows, страница в минуту (Диспетчер пакетов Perl) имеет большую часть той же функциональности как CPAN.pm.

Пример:

# ppm
ppm> search net-smtp
ppm> install Net-SMTP-Multipart

видят , Как я устанавливаю модули Perl? в CPAN FAQ

Много дистрибутивов поставляют много модулей жемчуга как пакеты.

  • Debian/Ubuntu: apt-cache search 'perl
  • Дуга Linux: pacman -Ss '^perl-'
  • хинду: категория dev-perl

Вы должны всегда , предпочитают их, поскольку Вы извлекаете выгоду из автоматического (безопасность) обновления и простота [1 141] удаление . Это может быть довольно хитро с сам инструмент cpan .

Для хинду существует хороший инструмент, названный g-cpan, который создает/устанавливает модуль из CPAN и создает хинду пакет ( ebuild) для Вас.

  • Дуга Linux: pacman -Ss '^perl-'
  • хинду: категория dev-perl
  • Вы должны всегда , предпочитают их, поскольку Вы извлекаете выгоду из автоматического (безопасность) обновления и простота [1 141] удаление . Это может быть довольно хитро с сам инструмент cpan .

    Для хинду существует хороший инструмент, названный g-cpan, который создает/устанавливает модуль из CPAN и создает хинду пакет ( ebuild) для Вас.

    214
    ответ дан Benedikt Waldvogel 23 November 2019 в 20:15
    поделиться

    В Windows с распределением ActiveState Perl используйте команда ppm.

    1
    ответ дан brian d foy 23 November 2019 в 20:15
    поделиться

    На Fedora можно использовать

    # yum install foo
    

    , пока Fedora имеет существующий пакет для модуля.

    3
    ответ дан Bruce Alderman 23 November 2019 в 20:15
    поделиться

    2 способа, о которых я знаю:

    ИСПОЛЬЗУЯ PPM:

    С [1 117] Windows (ActivePerl) I использовали ppm

    от типа командной строки ppm. При подсказке ppm...

    ppm> install foo
    

    или

    ppm> search foo
    

    для получения списка доступных модулей нечто. Справка типа для всех команд

    ИСПОЛЬЗУЯ CPAN:

    можно также использовать CPAN как это ( *nix системы ):

    perl -MCPAN -e 'shell'
    

    получает Вас подсказка

    cpan>
    

    при подсказке...

    cpan> install foo  (again to install the foo module)
    

    тип h для получения списка команд для cpan

    3
    ответ дан JWHEAT 23 November 2019 в 20:15
    поделиться

    Много рекомендации для CPAN.pm, который является большим, но если Вы используете Perl 5.10 тогда, Вы также получили доступ к CPANPLUS.pm, который похож CPAN.pm, но лучше.

    И, конечно, это доступно на CPAN людям, все еще использующим более старые версии Perl. Почему бы не попробовать:

    $ cpan CPANPLUS
    
    6
    ответ дан serenesat 23 November 2019 в 20:15
    поделиться

    Также см. Да, даже можно использовать CPAN. Это показывает, как можно использовать CPAN, не имея корня или sudo доступа.

    10
    ответ дан Corion 23 November 2019 в 20:15
    поделиться

    Otto сделал хорошее предложение . Это работает на Debian также, а также любую другую производную Debian. Недостающая часть - то, что сделать, когда поиск способного кэша не находит что-то.

    $ sudo apt-get install dh-make-perl build-essential apt-file
    $ sudo apt-file update
    

    Тогда каждый раз, когда у Вас есть случайный модуль, Вы хотите установить:

    $ cd ~/some/path
    $ dh-make-perl --build --cpan Some::Random::Module
    $ sudo dpkg -i libsome-random-module-perl-0.01-1_i386.deb
    

    Это даст Вам deb пакет, который можно установить для получения Некоторых:: Случайный:: Модуль. Одно из больших преимуществ здесь является страницами справочника, и демонстрационные сценарии в дополнение к самому модулю будут помещены в предпочтительное местоположение Вашего дистрибутива. Если дистрибутив когда-нибудь выпускает официальный пакет для более новой версии Некоторых:: Случайный:: Модуль, это будет автоматически установлено, когда Вы склонный - получите обновление.

    8
    ответ дан Community 23 November 2019 в 20:15
    поделиться

    sudo perl -MCPAN -e 'install Foo'

    11
    ответ дан dreeves 23 November 2019 в 20:15
    поделиться

    Несколько человек упомянули cpan утилиту, но она больше, чем только запускает оболочку. Просто дайте ему модули, которые Вы хотите установить, и позволять ему сделать это - работа.

    $prompt> cpan Foo::Bar
    

    , Если Вы не даете ему аргументов, это запускает оболочку CPAN.pm. Это работает над Unix, Mac, и должно быть очень хорошо в Windows (особенно Земляничный Perl).

    существует несколько других вещей, которые можно сделать с cpan инструментом также. Вот сводка текущих функций (который мог бы быть более новым, чем тот, который идет с CPAN.pm и жемчугом):

    -a
    Creates the CPAN.pm autobundle with CPAN::Shell->autobundle.
    
    -A module [ module ... ]
    Shows the primary maintainers for the specified modules
    
    -C module [ module ... ]
    Show the Changes files for the specified modules
    
    -D module [ module ... ]
    Show the module details. This prints one line for each out-of-date module (meaning,
    modules locally installed but have newer versions on CPAN). Each line has three columns:
    module name, local version, and CPAN version.
    
    -L author [ author ... ]
    List the modules by the specified authors.
    
    -h
    Prints a help message.
    
    -O
    Show the out-of-date modules.
    
    -r
    Recompiles dynamically loaded modules with CPAN::Shell->recompile.
    
    -v
    Print the script version and CPAN.pm version.
    
    16
    ответ дан jww 23 November 2019 в 20:15
    поделиться

    Если Вы находитесь на Ubuntu, и Вы хотите установить предварительно упакованный модуль жемчуга (например, гео-:: ipfree), пробуют это:

        $ apt-cache search perl geo::ipfree
        libgeo-ipfree-perl - A look up country of ip address Perl module
    
        $ sudo apt-get install libgeo-ipfree-perl
    
    25
    ответ дан Otto 23 November 2019 в 20:15
    поделиться

    Я отмечаю некоторых людей, предлагающих один выполненный cpan под sudo. Это раньше было необходимо для установки в системный каталог, но современные версии оболочки CPAN позволяют Вам настраивать его для использования sudo всего для установки. Это намного более безопасно, так как это означает, что тесты не работают как корень.

    , Если у Вас есть старая оболочка CPAN, просто установите новый cpan ("устанавливают CPAN"), и когда Вы перезагружаете оболочку, это должно предложить Вам настраивать эти новые директивы.

    В наше время, когда я нахожусь в системе со старым CPAN, первая вещь, я делаю обновить оболочку, и настраивать его, чтобы сделать это так я могу сделать большую часть своей работы cpan как обычный пользователь.

    кроме того, я настоятельно рекомендовал бы, чтобы пользователи Windows занялись расследованиями земляника Perl . Это - версия Perl, который прибывает упакованный с предварительно сконфигурированной оболочкой CPAN, а также компилятором. Это также включает некоторые твердые к компиляции модули Perl с их внешними зависимостями библиотеки C, особенно XML:: Синтаксический анализатор. Это означает, что можно сделать то же самое как любой пользователь Perl когда дело доходит до установки модулей, и вещи склоняются к "просто работе" намного чаще.

    29
    ответ дан Dave Rolsky 23 November 2019 в 20:15
    поделиться

    Безопасное решение

    Много ответов упоминают использование cpan утилита (который использует CPAN.pm), без слов на безопасности. По умолчанию, CPAN 2.27 и ранее настраивает urllist для использования http URL (а именно, http://www.cpan.org/ ), который позволяет нападения на MITM, таким образом небезопасно. Это - то, что используется для загрузки эти CHECKSUMS файлы, так, чтобы это было изменено на безопасный URL (например, https://www.cpan.org / ).

    Так, после выполнения cpan и принятия конфигурации по умолчанию, необходимо изменить сгенерированный MyConfig.pm файл (полный путь производится), следующим образом. Замена

    'urllist' => [q[http://www.cpan.org/]],
    

    [1 115]

    'urllist' => [q[https://www.cpan.org/]],
    

    Примечание: https не достаточен; Вам также нужен веб-сайт, которому можно доверять. Так, будьте осторожны, если Вы хотите выбрать некоторое произвольное зеркало.

    Тогда можно использовать cpan обычным способом.

    Мой отчет об ошибках на rt.cpan.org о небезопасном URL.

    0
    ответ дан 23 November 2019 в 20:15
    поделиться

    Попробуйте App::cpanminus:

    # cpanm Chocolate::Belgian
    

    Это отлично подходит для простой установки программ. Он не предоставляет более сложных функций CPAN или CPANPLUS, поэтому его легко использовать, если вы знаете, какой модуль вы хотите установить. Если у вас еще нет cpanminus, просто введите:

    # cpan App::cpanminus
    

    чтобы установить его.

    Его также можно установить вообще без использования cpan. Основная процедура начальной загрузки следующая:

    curl -L http://cpanmin.us | perl - --sudo App::cpanminus
    

    Для получения дополнительной информации перейдите на страницу App::cpanminus и просмотрите раздел об установке.

    62
    ответ дан 23 November 2019 в 20:15
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: