{"id":19379542,"url":"https://github.com/mardem1/perl-bulk-module-installer","last_synced_at":"2026-06-11T22:31:18.514Z","repository":{"id":240268697,"uuid":"492565444","full_name":"mardem1/perl-bulk-module-installer","owner":"mardem1","description":"install multiple perl modules with some logic to make this more efficient","archived":false,"fork":false,"pushed_at":"2025-07-19T12:22:26.000Z","size":368,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-19T15:01:28.321Z","etag":null,"topics":["perl","perl5","script"],"latest_commit_sha":null,"homepage":"","language":"PowerShell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mardem1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-15T18:06:36.000Z","updated_at":"2025-07-19T12:22:29.000Z","dependencies_parsed_at":"2024-05-21T11:48:25.872Z","dependency_job_id":"37daac8e-719b-467b-b127-05815bfcbaed","html_url":"https://github.com/mardem1/perl-bulk-module-installer","commit_stats":null,"previous_names":["mardem1/perl-bulk-module-installer"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mardem1/perl-bulk-module-installer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mardem1%2Fperl-bulk-module-installer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mardem1%2Fperl-bulk-module-installer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mardem1%2Fperl-bulk-module-installer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mardem1%2Fperl-bulk-module-installer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mardem1","download_url":"https://codeload.github.com/mardem1/perl-bulk-module-installer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mardem1%2Fperl-bulk-module-installer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34221150,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["perl","perl5","script"],"created_at":"2024-11-10T09:10:29.061Z","updated_at":"2026-06-11T22:31:18.509Z","avatar_url":"https://github.com/mardem1.png","language":"PowerShell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Perl Bulk Modules Installer\n\nInstall perl modules in bulk with some logic to make this more efficient.\n\n## VISION / PURPOSE\n\n1. get a portable Windows-Perl from [Strawberry](https://strawberryperl.com/releases.html)\n\n2. open Perl-Location with `portableshell.bat`\n\n3. update all current (base) modules\n\n   ```\n   cmd.exe /c cpanm App::cpanoutdated\n   cmd.exe /c cpan-outdated -p\n   cmd.exe /c cpan-outdated -p | cpanm\n   ```\n\n4. install required modules\n\n   ```\n   cmd.exe /c cpanm Carp Carp::Always Data::Dumper\n   ```\n\n5. run bulk-installer to add all wanted modules\n\n   ```\n   perl InstallCpanModules.pl [ --only-all-updates | --all-updates ] filepath_install [ filepath_dont_try ]\n   ```\n   ```\n   perl InstallCpanModules.pl test-module-lists\\SingleModuleExample.txt test-module-lists\\_dont_try_modules.txt\n   ```\n\n6. have a portable Windows-Perl with all wanted modules :)\n\n## DESCRIPTION\n\nOne problem with cpanm is that it don't save/cache a failed installation state.\nIf a module needs a module which was already tried cpanm will try it again\nIf you install many modules, and not all are working correctly it will waste\nmuch time, and the installation of modules is already not fast :(\n\nSo the main enhancement of this script should be this cache of failed\nor not-found dependencies to speed up a bootstrap installation of many modules.\n\nFor every external process call (perl/cpanm) there will be a logfile in the\nlog-subfolder with the call information, start/end time, exitcode and the\ncomplete output.\n\nLogfiles:\n\n* `DATE`_`TIME`_perl_detail_info.log\n    * Perl-System-Information `perl -V`\n* `DATE`_`TIME`_installed_modules_found.log\n    * Perl-Modules found via `cpan -l`\n* `DATE`_`TIME`_modules_to_install_from_file.log\n    * Modules listed in the given file to install.\n* `DATE`_`TIME`_modules_install_already.log\n    * Modules from file already installed.\n* `DATE`_`TIME`_modules_need_to_install.log\n    * Modules from files needs to be installed.\n* `DATE`_`TIME`_modules_with_available_updates.log\n    * list of modules with an update available, analyzed by `cpan-outdated --exclude-core -p`\n* `DATE`_`TIME`_modules_install_not_found.log\n    * list of modules which are not found, via cpan.\n* `DATE`_`TIME`_modules_install_failed.log\n    * list of modules where the installation failed.\n* `DATE`_`TIME`\\_fetch_dependency__`MODULENAME`.log\n    * output of list dependency call `cpanm --no-interactive --showdeps MODULENAME`\n* `DATE`_`TIME`\\_install_module__`MODULENAME`__`install|update`-`success|failed|failed-start`.log\n    * output of install/update call. Type and result are in filename. \n    * Installed via `cpanm --verbose --no-interactive MODULENAME`\n\nScript process:\n\n1. import module list - if not update-only\n2. search for installed modules\n3. search for available update of installed modules - if not no-updates\n4. now the installation loop foreach module in the list\n    1. search dependency modules\n    2. foreach missing dependency module\n       1. check if dependency module failed - than mark module as failed as well and continue loop \n       2. reenter with missing dependency module \n    3. try to install module\n    4. mark this module als installed or failed.\n    5. repeat loop\n\n## BUG REPORTS\n\nPlease report bugs on GitHub.\n\nThe source code repository can be found\nat [https://github.com/mardem1/perl-bulk-module-installer](https://github.com/mardem1/perl-bulk-module-installer)\n\n## AUTHOR\n\nMarkus Demml, mardem@cpan.com\n\n## LICENSE AND COPYRIGHT\n\nCopyright (c) 2025, Markus Demml\n\nThis library is free software; you can redistribute it and/or modify it\nunder the same terms as the Perl 5 programming language system itself.\nThe full text of this license can be found in the LICENSE file included\nwith this module.\n\n## DISCLAIMER\n\nThis package is distributed in the hope that it will be useful, but WITHOUT\nANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS\nFOR A PARTICULAR PURPOSE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmardem1%2Fperl-bulk-module-installer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmardem1%2Fperl-bulk-module-installer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmardem1%2Fperl-bulk-module-installer/lists"}