{"id":16032912,"url":"https://github.com/dimkr/packlad","last_synced_at":"2026-07-15T17:31:48.568Z","repository":{"id":31763073,"uuid":"35329301","full_name":"dimkr/packlad","owner":"dimkr","description":"A small, efficient and secure package manager; orphaned in favor of packlim","archived":false,"fork":false,"pushed_at":"2015-05-09T13:39:46.000Z","size":272,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-19T07:55:12.555Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://rlsd.dimakrasner.com","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dimkr.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-05-09T13:20:30.000Z","updated_at":"2022-12-07T14:30:05.000Z","dependencies_parsed_at":"2022-09-10T09:31:00.218Z","dependency_job_id":null,"html_url":"https://github.com/dimkr/packlad","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dimkr/packlad","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimkr%2Fpacklad","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimkr%2Fpacklad/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimkr%2Fpacklad/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimkr%2Fpacklad/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dimkr","download_url":"https://codeload.github.com/dimkr/packlad/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dimkr%2Fpacklad/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35515230,"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-07-15T02:00:06.706Z","response_time":131,"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":[],"created_at":"2024-10-08T21:41:11.504Z","updated_at":"2026-07-15T17:31:48.549Z","avatar_url":"https://github.com/dimkr.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"                  _    _           _\n _ __   __ _  ___| | _| | __ _  __| |\n| '_ \\ / _` |/ __| |/ / |/ _` |/ _` |\n| |_) | (_| | (__|   \u003c| | (_| | (_| |\n| .__/ \\__,_|\\___|_|\\_\\_|\\__,_|\\__,_|\n|_|\n\nOverview\n========\n\npacklad is a lightweight, permissively-licensed package manager for Linux\n(https://www.kernel.org/) distributions.\n\nIt tries to combine:\n  - The speed and robustness of pacman (https://www.archlinux.org/pacman/)\n  - Digitally-signed packages, as with major package managers, but without bloat\n  - Easy creation of repositories, as with createrepo\n    (http://createrepo.baseurl.org/) and PPM (http://bkhome.org/woof/ppm.htm)\n  - The \"autoremove\" feature of Apt (https://wiki.debian.org/Apt)\n  - The ability to extract PPM's (http://bkhome.org/woof/ppm.htm) PET packages\n    on any distribution (using standard command-line tools), despite of their\n    custom format\n\npacklad is the successor to packdude (https://github.com/dimkr/packdude). It's\nsimpler, since it uses old-fashioned text files instead of SQLite\n(https://sqlite.org/) databases.\n\nIn addition, it's more secure, since it supports digitally-signed packages.\n\nFeatures\n========\n\n  - Package download and installation, with recursive dependencies resolution\n  - Package removal, with automatic cleanup of unneeded packages\n  - Support for digitally-signed packages, with quick verification\n  - Support for multiple compression algorithms\n\nLacking Features\n================\n\n  - Support for multiple repositories - packlad is designed for small\n    distributions with one repository per architecture\n\nDependencies\n============\n\n  - libarchive (http://libarchive.org/) with support for:\n    - lzip (http://www.nongnu.org/lzip/lzip.html)\n    - XZ (http://tukaani.org/xz/)\n    - gzip (https://www.gnu.org/software/gzip/)\n  - libcurl (http://curl.haxx.se/)\n  - zlib (http://www.zlib.net/)\n  - Ed25519 (https://github.com/orlp/ed25519)\n\nBuilding\n========\n\nTo generate a key pair:\n  make genkeys\n\nTo build packlad:\n  make\n\nTo create packages, use dir2pkg with the keys under keys/.\n\nUsage\n=====\n\n  - Build packlad.\n  - To create packages, place their files in directories and run dir2pkg for\n    each. The keys you should use are the ones under keys/.\n  - Then, create a package list with lines in the following format:\n\n      packlad|1.0|A package manager|packlad-1.0.pkg|x86_64|libarchive curl zlib\n\n    If you don't understand how to create this package list, see\n    doc/internals.txt.\n  - Upload the packages and the package list to a server (which speaks any\n    protocol supported by libcurl). Make sure the package list is named\n    \"available\".\n  - Distribute packlad to the end-user, with the repository URL under the \"REPO\"\n    environment variable. Make sure you keep the private key to yourself.\n\nDirectory Structure\n===================\n\n  - \"doc\" contains documentation\n  - \"compat\" contains compatibility and portability code\n  - \"keys\" contains packlad's private and public keys and a key generator\n  - \"pkgsign\" contains a package signing tool\n  - \"dir2pkg\" contains a script that generates a signed package from a directory\n  - \"core\" contains packlad's core: low-level package manager building blocks\n  - \"logic\" contains packlad's high-level, complex operations, built on top of\n    multiple modules of the core\n  - \"packlad\" contains packlad itself, a command-line tool that wraps all logic\n\nFAQ\n===\n\n  'packlad'? Are you serious?\n  ----------------------------\n\n  Yes. It's like pacman (https://www.archlinux.org/pacman/) and packdude\n  (https://github.com/dimkr/packdude), but smaller and younger.\n\n  Why write another package manager?\n  ----------------------------------\n\n  packlad was written for RLSD (http://rlsd.dimakrasner.com/), because it needs\n  a small package manager that is easy to work with, secure, lightweight and\n  straight-forward, without unneeded questions.\n\n  How does packlad work?\n  ----------------------\n\n  See doc/internals.txt.\n\n  What's so bad about packdude?\n  -----------------------------\n\n  - It's complicated. I mean, the code.\n  - Databases are binary and cannot be edited by hand.\n  - packdude's repositories contain a database. This database is created using\n    a tool that converts a CSV file to a SQLite database. Keeping the\n    human-readable CSV file in sync with the database is simply annoying and\n    error-prone.\n  - It doesn't support signed packages.\n  - It doesn't allow the user when to update the package database.\n  - It supports only XZ compression.\n  - It doesn't play nicely with luufs (https://github.com/dimkr/luufs), since\n    all the package data is contained in one file.\n  - Its dependency resolution is inefficient.\n\n  What was good about packdude?\n  ---------------------------\n\n  - It was small and fast. Package installation was quick.\n  - The automatic cleanup feature worked amazingly well.\n  - Its package format was great. tar and XZ Utils handle archiving and\n    compression pretty well, so using existing technologiesw was a good choice.\n    Also, the package header was located after a XZ-compressed tar archive, so\n    it was possible to extract packdude's packages with xz and tar. That was\n    pretty convenient. This is definitely a keeper.\n\nCredits and Legal Information\n=============================\n\npacklad is licensed under a 2-clause BSD license, see COPYING for the license\ntext. For a list of its authors and contributors, see AUTHORS.\n\nThe ASCII art logo at the top was made using FIGlet (http://www.figlet.org/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdimkr%2Fpacklad","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdimkr%2Fpacklad","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdimkr%2Fpacklad/lists"}