lodosgroup / lpm Goto Github PK
View Code? Open in Web Editor NEWan experimental package manager for operating systems
Home Page: https://lpm.lodosgroup.org
License: GNU General Public License v2.0
an experimental package manager for operating systems
Home Page: https://lpm.lodosgroup.org
License: GNU General Public License v2.0
Lpm must able to build/run without any 3rd party dependency due to design choices, maintainability reasons and security concerns.
Current 3rd party dependencies:
Provide a protective feature that can prevent the packages from deleting or updating.
Since #7 is done, now delete & update-upgrade operations could be implemented to the lpm.
implement cross testing for official modules on CI
json
works fine without any problem as it replaced serde
and serde_json
. It just needs some refactoring on duplicated blocks.
json
was made for replacing 3rd party json deserializer dependencies, so I didn't put much effort on performance in order to have extra time on focusing other tasks. Since json
crate successfully replaced serde
and finished it's first goal, now, optimizing and benchmarking it's performance is the next important goal.
Creating development related documentations in repository level, and writing doc comments all around the rust source code.
When a package is installed, save the relevant information on the package into the database. Right now, package update/delete operations can not be implemented to lpm since program can not find the necessary informations to update/delete packages.
Dump all lpm context from database, which can be used to recover all packages/states on fresh/newly installed systems.
Create table versioning mechanism using PRAGMA user_version.
Provide virtual playground environment in some container so people can experience lpm in there without needing distro or lpm installation on their system.
The package specification have been updated. So package installation in lpm has to be updated as well. The updated specification is all about checksum validations. meta/checksums.json
is renamed to meta/files.json
. And the schema of the file is entirely changed as well. Sample data can be found here.
TODOs:
Checksum
related names/data-types should be updated into something related with File
.meta/files.json
and do the checksum validation(for each file) before copying them into system.Require user confirmation on operations like install, delete, update, etc.
Create SQL builder to avoid using raw statements in codebase. This will reduce the maintainability difficulty of the project and prevent potential bugs that could be hard to debug and detect.
On extraction process, currently both ar
and tar
are involved. Consider removing ar
and extract everything from the package in single time. This requires changes in build files.
Create dynamic module infrastructure that are loadable at runtime.
Create cli module to deal with command line arguments.
Provide backup(snapshot the current version of the pkg) functionality that gets triggered from the cmd arg.
Add new field enable_backup
or enable_backup_snapshot
(cmd arg overrides this value, so this should only work in case if cmd arg isn't provided) to pkg metadata.
Enhance LPM to support the installation of packages in a temporary form that gets purged on system poweroff and reboots.
Example usage: lpm --install(or -i) --tmp(or -t) $pkg_name
Implement and use openssl bindings for tls transports and package sign verification(assuming they are signed from the builder server).
CD pipeline needed with following actions:
create app context that get's initialized on lpm execution
for the start context will include:
Rollback all performed package operations when an error occurs during the package operations.
Implement package handling from linked repository and dependency resolver.
Blocked by not having any repository deployed and that is also blocked by not having builder plugin.
Currently, we can only install one package at a time. Improve core::install
to make lpm capable of installing multiple packages (e.g., lpm -i lzip gc ed
).
P.S.: parser already reads all values
lpm/lpm/cli_parser/src/install.rs
Lines 2 to 3 in 848b7b4
requires changes on build files
Instead of returning an error, print an info msg and gracefully exit the program.
Allow installing external packages from 3rd party repository or filesystem rather than official/signed repositories via enabling a flag.
lpm
should be capable of installing packages by building them from source.
e.g., usage: lpm --install --from-source(or --compile maybe?) lzip
Following functions must require permissions from cmd or configuration file.
Support stage1
scripts that supposed to be executed before or after the package operations.
(first provide sample of the specifications in assets about this feature)
https://github.com/foss-lodpm/assets/tree/main/packaging/ripgrep/stage1
simulate and test package install, delete and update operations
A configuration file needed for managing lpm features/options such as package protection, plugin management, repositories, etc.
implement new log type for printing success messages with green color
If the package lists of running operations aren't the same, user should able to run multiple lpm instances at a time.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.