update README and added LICENSE

This commit is contained in:
wt
2025-07-16 17:45:49 +07:00
parent 96d820ece0
commit 73750d289b
2 changed files with 201 additions and 16 deletions
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2025 Tola Mironcenko
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+180 -16
View File
@@ -1,33 +1,138 @@
# PM - package manager for simple linux
# PM - Package Manager for Simple Linux
## Filetree
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
├── tmp
│ └── repo # Repository configuration
├── tmp # Temporary files
├── usr
│ ├── bin
│ │ └── pm
│ │ └── pm # Main PM executable
│ └── share
│ └── pm
│ ├── packages
│ ├── query
│ └── repos
│ ├── packages # Package metadata
│ ├── query # Query cache
│ └── repos # Repository data
│ └── localhost
│ └── query
└── var
└── cache
└── pm
└── pkg
└── pkg # Cached package files
```
## Package structure (pfetch for example)
## Package Format
PM packages use a simple archive format with the following structure:
```
pfetch.pkg
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
@@ -36,14 +141,73 @@ pfetch.pkg
└── pfetch
```
## Example list file (pfetch for example)
**list file:**
```
usr/bin/pfetch
```
## Example deps file (pfetch for example)
**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.