{"id":18765225,"url":"https://github.com/technetos/upackage","last_synced_at":"2025-12-07T16:30:13.485Z","repository":{"id":74868732,"uuid":"46587093","full_name":"technetos/uPackage","owner":"technetos","description":"A generic linux package manager in C++","archived":false,"fork":false,"pushed_at":"2017-12-28T10:00:01.000Z","size":278,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-12-29T05:43:56.565Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/technetos.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":"2015-11-20T21:12:22.000Z","updated_at":"2017-12-28T10:00:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"98c77570-a24a-47b3-bf54-4ead4fd303df","html_url":"https://github.com/technetos/uPackage","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technetos%2FuPackage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technetos%2FuPackage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technetos%2FuPackage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/technetos%2FuPackage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/technetos","download_url":"https://codeload.github.com/technetos/uPackage/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239663290,"owners_count":19676553,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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-11-07T18:33:17.505Z","updated_at":"2025-12-07T16:30:13.185Z","avatar_url":"https://github.com/technetos.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# uPackage - Pronounced (\"ooopackage\")\n---------\n\n### uPackage is a general purpose package manager for linux.  \n\n# The Problem\n\n\u003e   The linux distribution I favor the most is called Slackware.  Its old, minimal,\nand rock soid.  The SlackWare package manager is called slackpkg.  Slackpkg\nis written mostly in bash and handles the slackware package base very well.  To that\nend, slackpkg is a good package manager.  \n\n__**Where slackpkg falls short is when you dont have a prebuilt package or a SlackBuild.**__\n\n\u003e   SlackBuilds are bash scripts that use other extra files and a source tarball to build a\npackage.  If you dont have a precreated SlackBuild from slackbuilds.org or somewhere else\nthen you have to write one yourself.  \n\n__**To install a package that is not prepackaged you have to write a small program.**__\n\n\u003e   That sucks!  It takes alot of time to write a package, time that could be spent using\nthe software your trying so hard to install.  \n\n__*uPackage solves these problems and more*__\n# Data Design\n\n\u003e   uPackage defines the following directories underneath a main root directory:\n\n\u003e   The man root directory path is defined as /opt/upackage by default.  The\nenvironment variable UPACKAGE_ROOT is used to change where the root path is defined.\n\n##### ubuild/\n\n\u003e   This directory is for the ubuild files that dictate how a package should\nbe compiled.  \n\n##### tarballs/\n\n\u003e   This directory is for the archived sources for packages that are going to\nbe built.  \n\n##### packages/\n\n\u003e   This is where the package tracking files go.  Each file contains the full\npath of every file installed by a package.  Each package has one tracking file\nand the filename is the name of the package + the version.\n\n##### /tmp/uPackage-build/\n\n\u003e   This is where the source is compiled and the compiled package is placed.  \n\n# Algorithm\n\u003e   uPackage is broken up into multiple C++ classes.  Each class uses its own\nalgorithm during execution.  \n\n#### config\n\n    `config.h` `config.cpp`\n    Depends on global\n    The config class is used to do initial setup and processing of global (system wide) options.  \n#### global\n\n    `global.h` `global.cpp`\n    The global functions are basic convience functions to make things easier\n#### build routine\n\n    `build_routine.h` `build_routine.cpp`\n    Depends on global, config, package_config\n    The build_routine function is used orchestrate the configure, make, make install process for a source.  \n##### package config\n\n    `package_config.cpp` `package_config.h` \n    Depends on global, config \n    The package_config class is used to parse the ubuild for a package.  \n\n# It doesnt work yet....\n\n\u003e   uPackage will compile a package given a ubuild and a source archive, but thats all so far.  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechnetos%2Fupackage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftechnetos%2Fupackage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechnetos%2Fupackage/lists"}