Files
pm/README.md
T
2025-07-16 17:45:49 +07:00

213 lines
4.2 KiB
Markdown

# 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:
```bash
sudo make install
```
### Manual Installation
Copy the `src/pm` script to `/usr/bin/pm` and ensure it's executable:
```bash
sudo cp src/pm /usr/bin/pm
sudo chmod +x /usr/bin/pm
```
## Usage
### Basic Commands
```bash
# 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
```bash
# 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
```bash
make package
```
### Clean Build Files
```bash
make clean
```
### Uninstall
```bash
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](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.