2025-07-16 17:45:49 +07:00
2025-01-20 15:58:34 +07:00
2025-07-16 17:45:49 +07:00
2025-05-19 17:17:35 +07:00
2025-01-20 18:45:13 +07:00
2025-07-16 17:45:49 +07:00

PM - Package Manager for Simple Linux

A lightweight, shell-based package manager designed for simple Linux systems. PM provides essential package management functionality with minimal dependencies and a straightforward command-line interface.

Features

  • Lightweight: Written in pure shell script with minimal dependencies
  • Simple: Easy-to-use command-line interface
  • Flexible: Supports local and remote package installation
  • Portable: Works on any POSIX-compliant system
  • Efficient: Fast package operations with local caching

Installation

From Source

  1. Clone or download the repository
  2. Run the installation command:
sudo make install

Manual Installation

Copy the src/pm script to /usr/bin/pm and ensure it's executable:

sudo cp src/pm /usr/bin/pm
sudo chmod +x /usr/bin/pm

Usage

Basic Commands

# Install a package
pm add package-name

# Download package without installing
pm down package-name

# Install from local package file
pm unpack /path/to/package.pkg.gz

# Remove a package
pm del package-name

# List files in a package
pm list package-name

# Search for packages
pm search package-name

# Show installed packages
pm query

# Show help
pm help

Examples

# Install pfetch package
pm add pfetch

# Download busybox without installing
pm down busybox

# Install from local package
pm unpack ./custom-package.pkg.gz

# Remove pfetch
pm del pfetch

# List all files in busybox package
pm list busybox

# Search for packages containing "fetch"
pm search fetch

Directory Structure

PM uses the following directory structure:

/
├── etc
│   └── pm
│       └── repo              # Repository configuration
├── tmp                       # Temporary files
├── usr
│   ├── bin
│   │   └── pm               # Main PM executable
│   └── share
│       └── pm
│           ├── packages     # Package metadata
│           ├── query        # Query cache
│           └── repos        # Repository data
│               └── localhost
│                   └── query
└── var
    └── cache
        └── pm
            └── pkg          # Cached package files

Package Format

PM packages use a simple archive format with the following structure:

package-name.pkg.gz
├── list                     # List of files in package
├── deps                     # Package dependencies
├── post_install            # Post-installation script (optional)
└── usr/                    # Package files
    └── bin/
        └── executable

Package Files

  • list: Contains a list of all files included in the package
  • deps: Lists package dependencies (one per line)
  • post_install: Optional script executed after installation
  • Package files: The actual files to be installed

Example Package Structure (pfetch)

pfetch.pkg.gz
├── list
├── deps
├── post_install
└── usr
    └── bin
        └── pfetch

list file:

usr/bin/pfetch

deps file:

busybox

Creating Packages

To create a package for PM:

  1. Create a directory with your package name
  2. Add your files in the appropriate directory structure
  3. Create a list file with all file paths
  4. Create a deps file with dependencies
  5. Optionally add a post_install script
  6. Archive with gzip: tar -czf package.pkg.gz package-dir/

Building

Build Package

make package

Clean Build Files

make clean

Uninstall

sudo make uninstall

Requirements

  • POSIX-compliant shell (bash, dash, etc.)
  • Basic Unix utilities (tar, gzip, etc.)
  • Root privileges for installation/removal

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test thoroughly
  5. Submit a pull request

License

This project is licensed under the MIT License - see the LICENSE file for details.

Author

Tola Mironcenko

Version

Current version: 1.0.0


PM is designed to be simple, efficient, and reliable. For bug reports or feature requests, please open an issue in the project repository.

S
Description
Package manager for SimpleLinux
Readme
170 KiB
20250110-1
Latest
2025-01-10 17:24:59 +07:00
Languages
Shell 92.3%
Makefile 7.7%