Welcome ======= Welcome to manup.mreschke.net/README.html README Created by mReschke on 2013-08-20 Updated 2014-07-22 Copyright (c) 2012, Matthew Reschke Introduction ============ Manup which stands for "Manage Unix Ports" or "Unix Port Manager" is a simple and generic package manager written in python and bash. Packages use a custom `PORTBUILD` bash file to script installation. It uses the MIT license so anyone can build their own manup server, custom repositories and ports. This program is a work in progress and is not tested extremely well. I use it for my own personal script/file delivery system. The advanced features like dependencies, optional dependencies... are not tested thoroughly. Nothing will hurt your system thought, all uninstall/install is tested well, it won't delete / on unisntall, at least it hasn't yet, but that also depends on your own `PORTBUILD` files, you can do whatever you want in those. I wrote manup in early 2013 because I have 50+ computers at home and work. On each one I have the same bash profiles and custom bash functions and custom scripts for various purposes... Each computer has different OS's, Windows/Cygwin, Mac, FreeBSD, and all flavors of linux. I needed a simple script/file delivery system, a package manager. A package manager that I could easily install/run on any OS and system. I didn't want to make custom .deb's or custom .rpm files for all my stuff. I needed a simple generic format, so I created my own `PORTBUILD` system and the manup python client to go with it. Manup is a client/server application. The manup server is simply a folder structure of ports, code, files and simple bash helper scripts. This folder must be web accessible and in an exact format listed below (or browse manup.mreschke.net). Once you have this web accessible folder structure you can simply download and install the manup python client, edit its `/etc/manup/manup.conf` file with your web accessible repository urls, run `manup sync` then `manup search` and start installing your own packages! The manup client does keep track of files that were installed by each port. When you uninstall the port it uninstalles each and every file that it originally installed. You can define 'config' files in your `PORTBUILD` that will not be overwritten when you upgrade your port (instead a `/etc/yourport/yourconfig.manupnew` file will be copied in its place). You can define dependencies in your `PORTBUILD` which will be automatically installed with your port. The simple bash helper scripts (buildtree, create, package...) on the server side really help you build your ports quickly and easily. You can have your own manup server and repos with several of your own custom ports in minutes. If you do copy this server folder structure to make your own server, be sure to edit all of the bash scripts with your URL and information. How to Install the Manup Client =============================== If you have created your own manup server, then you should modify your install bash script and of course substitute manup.mreschke.net below with your URL On your linux/bsd/mac/cygwin computer simply run: curl -LSs http://manup.mreschke.net/install | bash sudo manup sudo manup sync sudo manup install manup/manup Running manup for the first time creates a default `/etc/manup/manup.conf` file. Edit that config file with your repo URLs and settings then run `sudo manup sync` and `sudo manup search` to view your available packages. You can of course use my repos which are defaulted in the config or can be viewed at manup.mreschke.net. Most of these repos are for my own personal use so use at your own risk. The Server File Structure and URLs ================================== All files are contained in one manup root directory. This directory contains some bash helper scripts for building the tree and packages along with folders for each of your repos. In these examples my repo is named lfs. Port that is made up of some one elses source code -------------------------------------------------- ./lfs/gnutls/PORTBUILD ./lfs/gnutls/gnutls-3.0.9.tar.gz ./lfs/gnutls/package (symlink to manups ./package bash script) The package script in this gnutls example would be run if you add a new upgraded tar.gz file. Once you add the file, you then manually edit the `PORTBUILD` with at least the new version number and reset the rel (release) to blank. Then run `./package` which will update the `PORTBUILDS` filesize, fileurl and md5sum for you. Port that is made up of your own custom scripts and files --------------------------------------------------------- I code all my custom ports right in its manup directory, so it contains all the source code of my project. The package bash script will notice the `source/myapp-1.0` directory and create the .tar.gz file from it. ./lfs/myapp/PORTBUILD ./lfs/myapp/myapp-1.0.tar.gz ./lfs/myapp/package (symlink to manups ./package bash script) ./lfs/myapp/source ./lfs/myapp/source/myapp-1.0 ./lfs/myapp/source/myapp-1.0/wherever scripts/files/folder you have By running the packages script in this `./lfs/myapp/` directory it will read the PORTBUILD, find that you are on version 1.0, then look for `source/myapp-1.0`, if it exists it will tar.gz `source/myapp-1.0/` contents, this is your port package. Like all other linux source code tar.gz, the `myapp-1.0` is the base of the tar, so if you export the tar in `/tmp` folder, a `myapp-1.0` folder is made with the contents inside. Web Accessible URLs ------------------- The main manup root folder should be web accessible, which means your repo folders should be directly visible at http://manup.yourdomain.com/yourfirstrepo/ These are the URLs that you enter in your `/etc/manup/manup.conf` file, one line for each repo you want to use. Contributing ============ Thank you for considering contributing to manup! Fork and pull! License ======= Manup is open-sourced software licensed under the [MIT license](http://mreschke.com/license/mit)