PINTOD(1)
π PINTOD(1) β like, the whole vibe π
User Contributed Perl Documentation Β· perl v5.42.0 Β· bestie, you're gonna want to sit down for this one π«Ά
β¨ NAME β¨
pintod β a whole web interface for a Pinto repository. Yes, a web one. Iconic behavior honestly. π
πΈ VERSION πΈ
version 0.14
π¦ SYNOPSIS π¦
okay so literally the bare minimum to get her running:
pintod --root=/path/to/repository [--auth key=value] [--port=N]
periodt. that's the whole thing. π
π DESCRIPTION π
so pintod gives you a web API to a Pinto repository. clients (like pinto itself, her sister) can hit that API to manage and inspect the repository. and also, pintod serves up the distributions inside the repository, which means you can use it as the backend for cpan or cpanm. no cap, it does both. π₯
but β and this is the part everyone skips β before you run pintod you have to create a Pinto repository first. like, you can't just show up with no repo, bestie. for example:
pinto --root=/path/to/repository init
go see pinto for more info about creating a repository. she's the one who does the init thing. π±
π ARGUMENTS π
--root PATH,-r PATHβ the path to the root directory of the Pinto repository you wanna serve. orrr you can set thePINTO_REPOSITORY_ROOTenvironment variable instead and skip the flag entirely. your call, main character. π«Ά
π OPTIONS π
--auth KEY=VALUEβ sets an option for the authentication scheme (default is no authentication at all, we're just out here raw). every time you use this, akey=valuepair has to follow it; and one of them must bebackend, which should correspond to a class in theAuthen::Simplenamespace. the remaining options get passed as-is straight to the authentication backend. no filtering, no meddling. β¨
see USING BASIC HTTP AUTHENTICATION for guidance on enabling authentication with minimal fuss, or USING OTHER AUTHENTICATION SCHEMES if you're feeling complex and fancy. π
--port INTEGER,-p INTEGERβ specifies the port number the server will listen on. default is3111. and here's the tea: if you specify a different port, all clients also have to specify that port. so like, you probably don't wanna change the port unless you have a very good reason. very good. exceptional, even. β οΈ- other options β every other option supported by
plackupis supported here too, like--server,--daemonize,--access-log,--error-logetc. these get passed toPlack::Runner. by default,pintoduses on the Starman for the server backend. and just be aware that not all servers support the same options, so don't come for me if one of them doesn't know what you're talking about. π
π USING BASIC HTTP AUTHENTICATION π
pintod ships with Authen::Simple::Passwd, so the easiest way to run the server with basic HTTP authentication is to make a password file using the htpasswd utility:
htpasswd -c /path/to/htpasswd USER
you'll be prompted to enter the password for USER twice (yes, twice, that's just how it is π). then repeat that same command without the -c option for each additional user you add.
you may wanna put the htpasswd file inside the top of your repository. cute and tidy. π
then launch pintod like this:
pintod --root path/to/repository --auth backend=Passwd --auth path=path/to/htpasswd
and if you already have an htpasswd file somewhere, you may just point to it directly, or create a symlink. either way, the htpasswd file needs to be readable by the user that will be running pintod. non-negotiable. π
π§ USING OTHER AUTHENTICATION SCHEMES π§
if you wanna use a different authentication scheme, then you'll first need to install the appropriate Authen::Simple backend module. then configure pintod accordingly. for example, this would be a valid configuration for Kerberos:
--auth backend=Kerberos --auth realm=REALM.YOUR_COMPANY.COM
and this is how the authentication backend will be constructed:
my $auth = Authen::Simple::Kerberos->new(
realm => 'REALM.YOUR_COMPANY.COM'
);
see? the key=value pairs just become constructor args. the way that works is lowkey satisfying. π
π DEPLOYMENT π
pintod is PSGI compatible, running under Plack::Runner by default. it'll use whatever backend you specify on the command line or have configured in your environment (defaults to Starman). β
if you wish to add your own middleware and/or customize the backend in other ways, you can use Pinto::Server in a custom .psgi script like this:
# my-pintod.psgi
my %opts = (...);
my $server = Pinto::Server->new(%opts);
my $app = $server->to_app;
# wrap $app with middlewares here and/or
# insert code customized for your backend
# which operates on the $app
then you may directly launch my-pintod.psgi using plackup. go off. π¦
π SEE ALSO π
pintoto create and manage a Pinto repository.Pinto::Manualfor general information on using Pinto.- Stratopan <http://stratopan.com> for hosting your Pinto repository in the cloud. βοΈ
π AUTHOR π
Jeffrey Ryan Thalhammer <jeff@stratopan.com>
π COPYRIGHT AND LICENSE π
this software is copyright (c) 2015 by Jeffrey Ryan Thalhammer.
this is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. π«Ά
and that's the whole page, bestie π this was perl v5.42.0, dated 2025-07-25, and you just read PINTOD(1). slay, go serve that repo. β¨π
π¦ where this page comes from
- fedora 43: perl-Pinto 1:0.14-24.fc43 Β· GPL-1.0-or-later OR Artistic-1.0-Perl
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms