Compare commits
34
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1fb1d40acc | ||
|
|
755df2c2c1 | ||
|
|
a8c4a287eb | ||
|
|
29d7ea9d66 | ||
|
|
ef47824b17 | ||
|
|
e05c7bba21 | ||
|
|
950f6bc0b3 | ||
|
|
0c7652fe09 | ||
|
|
291761f074 | ||
|
|
42da0fb84f | ||
|
|
73750d289b | ||
|
|
96d820ece0 | ||
|
|
fa04c30d6c | ||
|
|
d1164975e3 | ||
|
|
dcdd2ea51a | ||
|
|
b93e6153af | ||
|
|
0d15808a6f | ||
|
|
2dfdf91528 | ||
|
|
20ca8e49ee | ||
|
|
26b9d8118e | ||
|
|
f14d5866f3 | ||
|
|
fc2d7e7915 | ||
|
|
feded5e14e | ||
|
|
fb463d418d | ||
|
|
9f0f903c5e | ||
|
|
106ae39803 | ||
|
|
758b247438 | ||
|
|
55623e13db | ||
|
|
f9c7e6b8d6 | ||
|
|
a05836abfd | ||
|
|
256dd28e05 | ||
|
|
b75fc8a68a | ||
|
|
db0e243794 | ||
|
|
6e8bdba73f |
+2
-1
@@ -1,3 +1,4 @@
|
||||
pm.pkg
|
||||
pm.pkg.gz
|
||||
rootfs
|
||||
rootfs
|
||||
package
|
||||
@@ -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.
|
||||
@@ -2,52 +2,51 @@ DESTDIR=/
|
||||
|
||||
|
||||
install:
|
||||
if [ ! -d ${DESTDIR}/etc/pm ]; then \
|
||||
mkdir -pv ${DESTDIR}/etc/pm; \
|
||||
touch ${DESTDIR}/etc/pm/repo; \
|
||||
@if [ ! -d ${DESTDIR}/etc/pm ]; then \
|
||||
mkdir -p ${DESTDIR}/etc/pm; \
|
||||
fi
|
||||
if [ ! -d ${DESTDIR}/tmp ]; then \
|
||||
mkdir -pv ${DESTDIR}/tmp; \
|
||||
@if [ ! -d ${DESTDIR}/tmp ]; then \
|
||||
mkdir -p ${DESTDIR}/tmp; \
|
||||
fi
|
||||
if [ ! -d ${DESTDIR}/usr/bin ]; then \
|
||||
mkdir -pv ${DESTDIR}/usr/bin; \
|
||||
@if [ ! -d ${DESTDIR}/usr/bin ]; then \
|
||||
mkdir -p ${DESTDIR}/usr/bin; \
|
||||
fi
|
||||
if [ ! -d ${DESTDIR}/usr/share/pm ]; then \
|
||||
mkdir -pv ${DESTDIR}/usr/share/pm/{packages,repos}; \
|
||||
touch ${DESTDIR}/usr/share/pm/query; \
|
||||
@if [ ! -d ${DESTDIR}/usr/share/pm ]; then \
|
||||
mkdir -p ${DESTDIR}/usr/share/pm/{packages,repos}; \
|
||||
fi
|
||||
if [ ! -d ${DESTDIR}/var/cache/pm/pkg ]; then \
|
||||
mkdir -pv ${DESTDIR}/var/cache/pm/pkg; \
|
||||
@if [ ! -d ${DESTDIR}/var/cache/pm/pkg ]; then \
|
||||
mkdir -p ${DESTDIR}/var/cache/pm/pkg; \
|
||||
fi
|
||||
cp -v src/pm ${DESTDIR}/usr/bin/pm;
|
||||
@cp src/pm ${DESTDIR}/usr/bin/pm;
|
||||
|
||||
uninstall:
|
||||
if [ -d ${DESTDIR}/etc/pm ]; then \
|
||||
rm -rv ${DESTDIR}/etc/pm; \
|
||||
@if [ -d ${DESTDIR}/etc/pm ]; then \
|
||||
rm -r ${DESTDIR}/etc/pm; \
|
||||
fi
|
||||
if [ -d ${DESTDIR}/usr/share/pm ]; then \
|
||||
rm -rv ${DESTDIR}/usr/share/pm; \
|
||||
@if [ -d ${DESTDIR}/usr/share/pm ]; then \
|
||||
rm -r ${DESTDIR}/usr/share/pm; \
|
||||
fi
|
||||
if [ -d ${DESTDIR}/var/cache/pm ]; then \
|
||||
rm -rv ${DESTDIR}/var/cache/pm; \
|
||||
@if [ -d ${DESTDIR}/var/cache/pm ]; then \
|
||||
rm -r ${DESTDIR}/var/cache/pm; \
|
||||
fi
|
||||
if [ -f ${DESTDIR}/usr/bin/pm ]; then \
|
||||
rm -v ${DESTDIR}/usr/bin/pm; \
|
||||
@if [ -f ${DESTDIR}/usr/bin/pm ]; then \
|
||||
rm ${DESTDIR}/usr/bin/pm; \
|
||||
fi
|
||||
|
||||
package:
|
||||
mkdir -pv pm.pkg/usr/bin
|
||||
mkdir -pv pm.pkg/etc/pm
|
||||
mkdir -pv pm.pkg/var/cache/pm/pkg
|
||||
mkdir -pv pm.pkg/usr/share/pm/{repos,packages}
|
||||
echo usr/bin/pm > pm.pkg/list
|
||||
cp -v src/pm pm.pkg/usr/bin/pm
|
||||
tar -czvf pm.pkg.gz pm.pkg
|
||||
@mkdir -p pm.pkg/usr/bin
|
||||
@mkdir -p pm.pkg/etc/pm
|
||||
@mkdir -p pm.pkg/var/cache/pm/pkg
|
||||
@mkdir -p pm.pkg/usr/share/pm/{repos,packages}
|
||||
@echo usr/bin/pm > pm.pkg/list
|
||||
@echo busybox > pm.pkg/deps
|
||||
@cp src/pm pm.pkg/usr/bin/pm
|
||||
@tar -czf pm.pkg.gz pm.pkg
|
||||
|
||||
clean:
|
||||
if [ -d pm.pkg ]; then \
|
||||
rm -rv pm.pkg; \
|
||||
@if [ -d pm.pkg ]; then \
|
||||
rm -r pm.pkg; \
|
||||
fi
|
||||
@if [ -f pm.pkg.gz ]; then \
|
||||
rm pm.pkg.gz; \
|
||||
fi
|
||||
if [ -f pm.pkg.gz ]; then \
|
||||
rm -v pm.pkg.gz; \
|
||||
fi
|
||||
@@ -0,0 +1,11 @@
|
||||
pkgname=pm
|
||||
pkgver=1.1
|
||||
pkgrel=1
|
||||
# srcdir=/home/tola/Documents/linux/pm
|
||||
gitsource="https://gitea.home.com:3000/TolaMironcenko/pm.git"
|
||||
deps="busybox"
|
||||
|
||||
package() {
|
||||
cd $srcdir
|
||||
make install DESTDIR=$pkgdir
|
||||
}
|
||||
@@ -1,41 +1,213 @@
|
||||
# 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
|
||||
└── usr
|
||||
└── bin
|
||||
└── pfetch
|
||||
```
|
||||
|
||||
## Example list file (pfetch for example)
|
||||
|
||||
**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.
|
||||
Reference in New Issue
Block a user