LoginSignup
1
2

More than 5 years have passed since last update.

Perl6のモジュールインストール(zef版)

Posted at

Perl6のモジュールをインストールするpanda:panda_face:コマンドがDEPRECATEDになり、代わりにzefというコマンドを使うようになりました。

今回はその zef の使い方を紹介します。
panda の使い方はこちら

使い方

$ zef
Zef - Perl6 Module Management

USAGE

    zef [flags|options] command [args]


COMMANDS

    install                 Install specific dependencies by name or path
    uninstall               Uninstall specified distributions
    test                    Run tests on a given module's path
    fetch                   Fetch and extract module's source
    build                   Run the Build.pm in a given module's path
    look                    Fetch followed by shelling into the module's path
    update                  Update package indexes for repositories
    upgrade (BETA)          Upgrade specific distributions (or all if no arguments)
    search                  Show a list of possible distribution candidates for the given terms
    info                    Show detailed distribution information
    list                    List known available distributions, or installed distributions with `--installed`
    rdepends                List all distributions directly depending on a given identity
    locate                  Lookup installed module information by short-name, name-path, or sha1 (with --sha1 flag)
    smoke                   Run smoke testing on available modules
    nuke                    Delete directory/prefix containing matching configuration path or CURLI name

OPTIONS

    --install-to=[name]     Short name or spec of CompUnit::Repository to install to
    --config-path=[path]    Load a specific Zef config file

VERBOSITY LEVEL (from least to most verbose)
    --error, --warn, --info (default), --verbose, --debug

FLAGS
    --depsonly              Install only the dependency chains of the requested distributions
    --force                 Continue each phase regardless of failures
    --dry                   Run all phases except the actual installations
    --serial                Install each dependency after passing testing and before building/testing the next dependency

    --/test                 Skip the testing phase
    --/build                Skip the building phase

    --/depends              Do not fetch runtime dependencies
    --/test-depends         Do not fetch test dependencies
    --/build-depends        Do not fetch build dependencies

CONFIGURATION /usr/local/Cellar/rakudo-star/2017.01/share/perl6/site/resources/C2537734F744EDFED0E1CF62B481DC8145E63E2F.json
    Enable or disable plugins that match the configuration that has field `short-name` that matches <short-name>

    --<short-name>  # `--cpan`  Enable plugin with short-name `cpan`
    --/<short-name> # `--/cpan` Disable plugin with short-name `cpan`

(BETA) とのことですが、upgradeがうれしいですね。

インストール済モジュール一覧

出力が panda と全然違いますが、どのディレクトリにインストールされたのか判るようになって助かります。
普段使いでは--verboseは不要でしょう。

$ zef list --installed --verbose
===> Found via /usr/local/Cellar/rakudo-star/2017.01/share/perl6/site
Template::Mojo:ver('0.1')
#   Template::Mojo
Template::Mustache:auth('github:softmoth')
#   Template::Mustache
Terminal::ANSIColor:ver('0.2')
#   Terminal::ANSIColor
SVG::Plot
#   SVG::Box
#   SVG::Plot
#   SVG::Plot::AxisPosition
#   SVG::Plot::Pie
NativeHelpers::Blob:ver('0.1.10'):auth('github:salortiz')
#   MoarVM::Guts::REPRs
#   NativeHelpers::Blob
#   NativeHelpers::CStruct
#   NativeHelpers::Pointer
PSGI:ver('1.2.0')
#   PSGI
HTTP::Easy:ver('1.1.0')
#   HTTP::Easy
#   HTTP::Easy::PSGI
File::Which
#   File::Which
#   File::Which::MacOSX
#   File::Which::Unix
#   File::Which::Win32
OpenCV:ver('0.0.5'):auth('github:azawawi')
#   OpenCV
#   OpenCV::Highgui
#   OpenCV::Mat
#   OpenCV::NativeCall
#   OpenCV::Photo
URI:ver('0.1.2')
#   IETF::RFC_Grammar
#   IETF::RFC_Grammar::IPv6
#   IETF::RFC_Grammar::URI
#   URI
#   URI::DefaultPort
#   URI::Escape
Grammar::Debugger
#   Grammar::Debugger
#   Grammar::Tracer
LWP::Simple:ver('0.090'):auth('Cosimo Streppone')
#   LWP::Simple
Shell::Command
#   Shell::Command
panda:ver('2016.02')
#   Panda
#   Panda::App
#   Panda::Builder
#   Panda::Bundler
#   Panda::Common
#   Panda::Ecosystem
#   Panda::Fetcher
#   Panda::Installer
#   Panda::Project
#   Panda::Reporter
#   Panda::Tester
p6doc
#   Perl6::Documentable
#   Perl6::Documentable::Registry
#   Perl6::Type
#   Perl6::TypeGraph
#   Perl6::TypeGraph::Viz
#   Pod::Convenience
#   Pod::Htmlify
#   Pod::To::SectionFilter
File::Find:ver('0.1')
#   File::Find
Pod::To::BigPage:ver('0.2.1'):auth('Wenzel P. P. Peppmeyer')
#   Pod::To::BigPage
Pod::To::HTML:ver('0.3.7')
#   Pod::To::HTML
Linenoise:ver('0.1.1'):auth('Rob Hoelz')
#   Linenoise
XML::Writer
#   XML::Writer
Digest::MD5:ver('0.05'):auth('Cosimo Streppone')
#   Digest::MD5
JSON::RPC:ver('0.17.1'):auth('Pawel Pabian')
#   JSON::RPC::Client
#   JSON::RPC::Server
#   X::JSON::RPC
LibraryMake:ver('1.0.0'):auth('github:retupmoca')
#   LibraryMake
zef:auth('github:ugexe')
#   Zef
#   Zef::Build
#   Zef::CLI
#   Zef::Client
#   Zef::Config
#   Zef::Distribution
#   Zef::Distribution::DependencySpecification
#   Zef::Distribution::Local
#   Zef::Extract
#   Zef::Fetch
#   Zef::Identity
#   Zef::Repository
#   Zef::Repository::Ecosystems
#   Zef::Repository::LocalCache
#   Zef::Repository::MetaCPAN
#   Zef::Service::FetchPath
#   Zef::Service::Shell::Build
#   Zef::Service::Shell::PowerShell
#   Zef::Service::Shell::PowerShell::download
#   Zef::Service::Shell::PowerShell::unzip
#   Zef::Service::Shell::Test
#   Zef::Service::Shell::curl
#   Zef::Service::Shell::git
#   Zef::Service::Shell::p5tar
#   Zef::Service::Shell::prove
#   Zef::Service::Shell::tar
#   Zef::Service::Shell::unzip
#   Zef::Service::Shell::wget
#   Zef::Service::TAP
#   Zef::Shell
#   Zef::Test
#   Zef::Utils::FileSystem
#   Zef::Utils::SystemInfo
#   Zef::Utils::URI
File::Temp
#   File::Temp
Debugger::UI::CommandLine
#   Debugger::UI::CommandLine
Test::Mock:ver('1.3')
#   Test::Mock
DBIish:ver('0.5.9')
#   DBDish
#   DBDish::Connection
#   DBDish::ErrorHandling
#   DBDish::Oracle
#   DBDish::Oracle::Connection
#   DBDish::Oracle::Native
#   DBDish::Oracle::StatementHandle
#   DBDish::Pg
#   DBDish::Pg::Connection
#   DBDish::Pg::Native
#   DBDish::Pg::StatementHandle
#   DBDish::SQLite
#   DBDish::SQLite::Connection
#   DBDish::SQLite::Native
#   DBDish::SQLite::StatementHandle
#   DBDish::StatementHandle
#   DBDish::TestMock
#   DBDish::TestMock::Connection
#   DBDish::TestMock::StatementHandle
#   DBDish::mysql
#   DBDish::mysql::Connection
#   DBDish::mysql::Native
#   DBDish::mysql::StatementHandle
#   DBIish
#   DBIish::Common
#   DBIish::CommonTesting
#   NativeLibs
MIME::Base64:ver('1.2'):auth('github:retupmoca')
#   MIME::Base64
#   MIME::Base64::Perl
Grammar::Profiler::Simple:ver('0.01'):auth('Jonathan Scott Duff')
#   Grammar::Profiler::Simple
JSON::Tiny
#   JSON::Tiny
#   JSON::Tiny::Actions
#   JSON::Tiny::Grammar
SVG
#   SVG
Native::Resources:ver('0.1.0'):auth('Rob Hoelz')
#   Native::Resources
#   Native::Resources::Build
File::Directory::Tree:auth('labster')
#   File::Directory::Tree
HTTP::Status
#   HTTP::Status
TAP::Harness::Prove6:ver('0.0.1'):auth('Leon Timmermans')
JSON::Fast:ver('0.7')
#   JSON::Fast
===> Found via /usr/local/Cellar/rakudo-star/2017.01/share/perl6
CORE:ver('6.c'):auth('perl')
#   CompUnit::Repository::Staging
#   NativeCall
#   NativeCall::Compiler::GNU
#   NativeCall::Compiler::MSVC
#   NativeCall::Types
#   Pod::To::Text
#   TAP
#   Test
#   experimental
#   newline

インストールされたファイルの場所

たとえば、LWP::Simpleモジュールはどこか というとき。

$ zef locate LWP::Simple

ホストされているモジュール一覧

$ zef list

ホストされているモジュールの検索

たとえば MongoDB というモジュールがあるか調べるとき。

$ zef search MongoDB
===> Found 1 results
------------------------------------------------------------------------
ID|From                            |Package              |Description
------------------------------------------------------------------------
1 |Zef::Repository::Ecosystems<p6c>|MongoDB:ver('0.37.0')|MongoDB driver
------------------------------------------------------------------------

ありました。

モジュールのインストール

たとえばColorというモジュールをインストールするとき。

$ zef install Color
===> Searching for: Color
===> Fetching: Color
===> Testing: Color:ver('1.001001')
# Short 3-hex
# Short 4-hex
# Full 6-hex
t/01-new-key-value.t .........1/?# Full 8-hex
# RGB tuple
# RGB tuple (decimal form)
# RGBA tuple
t/01-new-key-value.t .........4/?# RGBA tuple (decimal form)
# CMYK tuple
# HSL tuple
# HSV tuple
t/01-new-key-value.t ......... ok
# Short 3-hex
# Short 4-hex
# Full 6-hex
t/02-new-short-form.t ........1/?# Full 8-hex
# RGB tuple
# CMYK tuple
t/02-new-short-form.t ........ ok
t/03-new-overflows.t ......... ok
t/04-new-invalid.t ...........1/?# Key-value forms
t/04-new-invalid.t ........... ok
t/05-methods.t ............... ok
# Operator tests on rgb nums
# Operator tests (alpha-math turned off on rgba nums)
t/06-operators.t .............1/?# Try again with enabled alpha math
# Try again with enabled alpha math
# Our fancy-pants unicode ops
t/06-operators.t ............. ok
t/07-bugs-and-regressions.t .. ok
All tests successful.
Files=7, Tests=62,  13 wallclock secs
Result: PASS
===> Testing [OK] for Color:ver('1.001001')
===> Installing: Color:ver('1.001001')

おわり

おわりです:whale:

参考と注釈

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2