packø - The "pacco" package manager.
packø is a package manager inspired by FreeBSD ports and Gentoo Portage which aims to be even more flexible and easy to work with.
How to install
To install packo just clone the repo, build the gem and install it.
$ git clone git://github.com/distro/packo.git
$ cd packo
$ gem build *spec
# gem install *gem
And then install the adapter you want to use, to get a list of adapters do
$ gem list --remote "dm-.*-adapter"
Then modify the PACKO_DATABASE
env variable and you're ready to use packo.
At this point you should install sandbox
which is developed by Gentoo devs
and fakeroot
which is developed by Debian devs.
How to setup
$ packo repository remote add https://github.com/distro/remotes/raw/master/official.yml
$ packo repository add source/universe
$ packo repository add binary/universe/linux/core2
This adds two repositories and gives you some packages.
How to use
Let's start with some simple usage examples
$ packo repository search "(library)"
This searches all packages that have library as tag.
To get more informations about packages do
$ packo repository info "(library)"
This will give a lot of informations about the package.
You can also build packages into .pko files.
$ packo build package fluxbox
This will build fluxbox.
To get a list of packø's environment variables just do:
$ packo env show
To install a package just do:
$ packo install package
It should build and install the package or download the binary package and install it.
If you have a local .pko file you can install it directly:
$ packo install package.pko
Problems?
Common problems
-
If you get a huge error message about
sandbox
it means it tried to access some place it wasn't supposed to, so sandbox killed the process to prevent damages, if you're sure you wanted it to access that place configuresandbox
to be able to do so. Readsandbox
's documentation to know how. -
If you can't install
sandbox
andfakeroot
you can use packo anyway, just don't use the protected syntax (packo<command>
) but usepacko-<command>
which is the not secure way. I suggest gettingsandbox
andfakeroot
anyway because packages could do something harmful by mistake or on purpose, you can never know.
It's slow as hell :(
Actually it isn't, it's slow at starting because it has to require lot of stuff and the models have to be checked when required, so majority of the time is spent there. I'll probably implement a server/client thingy to speed things up.
Installation isn't slow, sqlite is slow at changing data in the db (mainly related to deletetion), so choose another adapter and you'll get it fast, remember that sqlite is fast at selecting, so searches of packages/files/whatever will be fast and updates/installations will be slow, choose the adapter that better suits your needs.
I've worked hard on improving speed so theoretically now it's a lot faster with all the data changing, as long as the adapter supports transactions.