Skip to content
Branch: master
Go to file

Latest commit


Failed to load latest commit information.
Latest commit message
Commit time


Pakku - A Package Manager for Raku




When she become a fully grown butterfly. currently Pakku is at larva.0 version and growing. She can do basic stuff but still little clumsy!


Light as a 🦋, Colorful as a 🦋


Pakku installs herself in a custom CompUnit::Repository outside of Raku's default repos.

Requires git to be available in $PATH

git clone

cd Pakku

# install to home directory

# or to different destination
# ./tools/install-pakku.raku --dest=/path/to/pakku

# if you prefer a ready to use distribution:
# wget
# tar xf Pakku-larva.0.txz  # Pakku location: .pakku/bin/pakku


  • Add distribution
  • Remove distribution
  • List distribution
  • Build distribution
  • Test distribution
  • Download distribution


Pakku is shy butterfly, she is a bug of little words, So every Pakku command result will be one of:

  • Ofun - Desired operation completed successfully
  • Nofun - Desired operation did not complete successfully
  • All Good - Nothing to be done (eg. removing uninstalled distribution)

Of course unless Pakku panicked and she doesn't know what to do, then you will be greeted with an Exception

However Pakku can be really talkative when need be. She suggests her new friends set the verbosity level to at least info specially when adding a Distribution with many dependencies or multiple Distributions at once.


Add distribution

pakku add MyModule
pakku add nodeps MyModule
pakku add notest MyModule
pakku add into   /opt/MyApp MyModule
pakku add force  into home  MyModule1 MyModule2


deps            → add dependencies
nodeps          → dont add dependencies
deps requires   → add required dependencies only
deps recommends → add required and recommended dependencies
deps only       → add dependencies only
build           → build distribution
nobuild         → bypass build
test            → test distribution
notest          → bypass test
force           → force add distribution even if installed
noforce         → no force
into <repo>     → add distribution to repo <home site vendor core /path/to/MyApp>

Remove distribution

pakku remove MyModule


from <repo> → remove distribution from provided repo only

List distribution

pakku list
pakku list MyModule
pakku list local   MyModule
pakku list remote  MyModule
pakku list details MyModule
pakku list repo home
pakku list repo /opt/MyApp MyModule


local       → list local
remote      → list remote
details     → list details
repo <name> → list repo

Build distribution

pakku build MyModule
pakku build .

Test distribution

pakku test MyModule
pakku test ./MyModule

Pakku Options

pakku update   add MyModule
pakku noupdate add MyModule
pakku dont     add MyModule
pakku nopretty add MyModule
pakku verbose  trace  add    MyModule
pakku pretty   please remove MyModule


update          → update ecosystem to get latest before adding distribution
pretty          → colorfull butterfly
nopretty        → no color
dont            → do everything but dont do it
verbose <level> → verbose level <silent trace debug info warn error fatal>
please          → be nice to the butterfly, she will be nice to you (TBD)

Check distribution (download)

pakku check MyModule

Print Help

pakku add
pakku help
pakku help list
pakku help help

Feeling Perlish Today?

Most of Pakku commands and options can be written in shorter form, for example:

add    → a     update  → u     noupdate → nu    silent → «S 0»
remove → r     pretty  → p     nopretty → np    trace  → «T 1»
list   → l     deps    → d     nodeps   → nd    debug  → «D 2»
build  → b     force   → f     noforce  → nf    info   → «I 3»
test   → t     verbose → v     details  → d     warn   → «W 4»
check  → c     local   → l     local    → l     error  → «E 5»
help   → h     remote  → r     remote   → r     fatal  → «F 6»

So this is a valid Pakku command:

pakku nu vD a f nt MyModule

Did I mention that the below are Pakku commands as well?

pakku 𝛒 ⟳ ↓ 🔗 🔨 MyModule
pakku 👓 🦋 ↑ MyModule
pakku ↪ 🌎
pakku ❓

Can you guess what they do? A full list is here,You can add you favourite ones too if you like.


All options can be set in command line or in the config file pakku.cnf in installtion dir. Config file example is provided below:

### Pakku Config

# <pakku>
#   update           # update ecosystem
#   pretty           # colors
#   verbose info     # < 0 1 2 3 4 5 6 >
#   dont             # dont do it (dry run)
# <add>
#   deps       # add deps as well < deps nodeps only requires recommends >
#   build      # build            < build nobuild >
#   test       # test             < test notest >
#   force      # force install    < force noforce >
#   into  home # install into specific repo 
# <remove>
#   from home  # remove from specific repo
# <list>
#   local   # local  dists
#   remote  # remote dists
#   details # list   details
# custom Log colors, also override unicode
# if symbols not showing
# <log>
#   trace name T:
#   debug name D:
#   info  name I:
#   warn  name W:
#   error name E:
#   fatal name F:
#   trace color reset
#   debug color green
#   info  color blue
#   warn  color yellow
#   error color magenta
#   fatal color red

# Add your own source provided it contains
# a valid list of distributions meta files


Pakku ecosystem source is a github file that contains available modules in p6c and cpan. Its LTA, slow and doesn't scale well (needs to download the file and parse it).

Ideally there need to be an online Recommendation Manager service which can be used by Raku's package managers to send a request for a Distribution and get back json contains the Distribution's META along with it's dependencies. Working on such online Recommendation Manager will take time and I wanted to release Pakku sooner. I might work on such Recommendation Manager after Pakku becomes little more stable.

Known Issues

  • %?RESOURCES is not available inside a custom repo during the testing phase, might cause test failure for some modules, see here for more info. as temporary workaround you can bypass tests if it failed in custom repo installation.

  • There is version of File::Directory::Tree:ver<0.000.001> in the ecosystem it's source-url points to a different version File::Directory::Tree:ver<*>, This causes an issue for Pakku if File::Directory::Tree:ver<*> is already installed, first Pakku will see a different version, but when get source-url and start installing an error will be thrown that this version is already installed. as a temp workaround use force


  • Write more tests
  • Fix bugs
  • Redo things if a better way revealed to me
  • Improve the performance to live up to the motto


Currently Pakku Works on GNU/Linux, Unfortunately I don't have access to Windows or Mac machine to test and make it compatible with different Operating Systems. However, PRs are very welcome :)


Thanks to Panda and Zef, for Pakku inspiration. also Thanks for the nice #perl6 and #raku community.


Haytham Elganiny elganiny.haytham at


Copyright 2019 Haytham Elganiny

This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.


Package Manager for Raku




No releases published


You can’t perform that action at this time.