Giter Site home page Giter Site logo

lodosgroup / lpm Goto Github PK

View Code? Open in Web Editor NEW
62.0 62.0 4.0 436 KB

an experimental package manager for operating systems

Home Page: https://lpm.lodosgroup.org

License: GNU General Public License v2.0

Rust 100.00%
linux operating-system package-manager rust source-builder unix

lpm's People

Contributors

lnicola avatar onur-ozkan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

lpm's Issues

rewrite 3rd party dependencies

Lpm must able to build/run without any 3rd party dependency due to design choices, maintainability reasons and security concerns.

Current 3rd party dependencies:

  • [ ] ar (we will no longer need this after #41)
  • tar
  • xz2 (upgraded lz4)
  • serde (replaced)
  • serde_json (replaced)

pkg protection

Provide a protective feature that can prevent the packages from deleting or updating.

provide lpm sdk with C ABI

  • implement logger for sdk
  • implement all package functionality of lpm in sdk
  • compatible error handling from Rust to C ABI
  • provide unified C header for sdk

cross tests

implement cross testing for official modules on CI

benchmark json deserializer and optimize duplicated code

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.

execute db operations on pkg installation

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 snapshot

Dump all lpm context from database, which can be used to recover all packages/states on fresh/newly installed systems.

provide virtual playground environment

Provide virtual playground environment in some container so people can experience lpm in there without needing distro or lpm installation on their system.

pkg installation flow

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.
  • Files(in program directory) should not be directly copied into system no longer. Instead, read the meta/files.json and do the checksum validation(for each file) before copying them into system.

sql builder

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.

consider using single extraction algorithm

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.

backup functionality on pkg upgrade/delete operations

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.

[install] temporary packages

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

openssl implementation

Implement and use openssl bindings for tls transports and package sign verification(assuming they are signed from the builder server).

app context

create app context that get's initialized on lpm execution

for the start context will include:

  • args, flags, etc
  • db connection

allow installing external packages

Allow installing external packages from 3rd party repository or filesystem rather than official/signed repositories via enabling a flag.

build and install from source

lpm should be capable of installing packages by building them from source.

e.g., usage: lpm --install --from-source(or --compile maybe?) lzip

tracking issue for permission required lpm functions

Following functions must require permissions from cmd or configuration file.

  • entry point execution
  • plugins
  • packages sources (repositories, local package file installation, etc)
  • pkg version upgrades (with dependencies, without dependencies)

simulation tests

simulate and test package install, delete and update operations

configuration file

A configuration file needed for managing lpm features/options such as package protection, plugin management, repositories, etc.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.