summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--universalpackagemanager.mdwn74
1 files changed, 37 insertions, 37 deletions
diff --git a/universalpackagemanager.mdwn b/universalpackagemanager.mdwn
index c6fd2b09..cd37bb41 100644
--- a/universalpackagemanager.mdwn
+++ b/universalpackagemanager.mdwn
@@ -23,6 +23,7 @@ There can be both aproaches
One goal is obviously choice of packaging and hence availability of more packages. Also this gives maintainers a chioce to continue builing packages for GNU in the format they are already familiar with. The second goal is to demonstrate the flexibility GNU offers in implementing functionality in filesystems (open/read/write interface).
## Why?
+
* The GNU Hurd provides a lot of advanced features and functionalities. We aim to exploit those features.
* Combining translators with UnionFS gives a very exciting package manager.
* We could use the good features of existing packaging systems like deb, rpm, ebuilds, ports ... plus unionfs and hurd translator is a compelling compination.
@@ -30,35 +31,38 @@ One goal is obviously choice of packaging and hence availability of more packag
With the increased flexibility in implementing filesystems as per the requirements, we can implement the functionality similar to apt-get, emerge or yum... (dependency tracking, versions tracking...) in the filesystem itself.
## What?
+
* Have a basic filesystem based package manager
* Write translators to convert between GNU's packaging format and the existing one's like rpm, deb ...
## How?
+
* Installtion of a package is just drag the pacakage (be it a tgz, rpm, deb or an exe) and drop it to the package manager.
* apt-cache search vim --> ls -al /packages/meta/ |grep vim
* apt-get install vim --> install vim
Just a sample script.
-<pre>
-$ cd /packages/meta/vim/current/depends
-$ for i in `ls *`
-$ do
-$ if [ -f /packages/binary/$i ]
-$ then
-$ echo "$i is installed"
-$ else
-$ install $i
-$ fi
-$ done
-</pre>
+
+ $ cd /packages/meta/vim/current/depends
+ $ for i in `ls *`
+ $ do
+ $ if [ -f /packages/binary/$i ]
+ $ then
+ $ echo "$i is installed"
+ $ else
+ $ install $i
+ $ fi
+ $ done
The same can be achieved using any of the languages or front ends or even manual copying.
If all the dependencies are there
-$ cp -r /ftp/ftp.gnu.org/packages/binary/vim/7.0 /packages/binary/vim/7.0
+
+ $ cp -r /ftp/ftp.gnu.org/packages/binary/vim/7.0 /packages/binary/vim/7.0
## Implementation Details
+
Lets take the example of rpm, it is simply a cpio archive with software and
meta data as its contents. Just extract it to stow directory with a name
package-version. When apt-get or yum asks for information about already
@@ -69,38 +73,35 @@ in the way it wants using a translator. So support for a new format is
just writing the new translator.
## Initial idea
+
A bit complex than the earlier scheme but it is more exciting and we can look at this schem seriously once we have the simple scheme working.
-All packages are installed at
-<pre>
-/packages/binary/<packagename>/<packageversion>
-</pre>
+All packages are installed at
+`/packages/binary/<packagename>/<packageversion>`.
For eaxmple vim 6.4 version can be installed from source like
-<pre>
-# cd vim64
-# ./configure --prefix=/packages/binary/vim/6.4
-# make
-# make install
-</pre>
+
+ # cd vim64
+ # ./configure --prefix=/packages/binary/vim/6.4
+ # make
+ # make install
Now if you have another vim version, say 7.0 then just follow the steps
-<pre>
-# cd /packages/source/vim
-# CP /<pathtovimtarball>/vim-7.0.tar.bz2
-# tar -jxvf vim-7.0.tar.bz2
-# mv vim70 7.0
-# ./configure --prefix=/packages/binary/vim/7.0
-# make
-# make install
-</pre>
+
+ # cd /packages/source/vim
+ # CP /<pathtovimtarball>/vim-7.0.tar.bz2
+ # tar -jxvf vim-7.0.tar.bz2
+ # mv vim70 7.0
+ # ./configure --prefix=/packages/binary/vim/7.0
+ # make
+ # make install
You have 2 versions of vim and how can you sepcify which one is the current version? You can symlink the current version to select the version you would like to see as default
-<pre>
-# ln -s /packages/binary/vim/7.0 /packages/vim/current
-</pre>
+
+ # ln -s /packages/binary/vim/7.0 /packages/vim/current
## Metadata: /packages/meta
+
Dependency information is stored as a symbolic link to the required packages in a subdirectory called depends.
## Requirement
@@ -138,11 +139,10 @@ v. Add your name below and give a shout in the list.
Add your comments here
## Interesting?
+
To join the project just list your name below.
1. PraveenA
2. IsaacPraveen
3. VikramVincent
4. MaheshM
-
--- Main.PraveenA - 15 May 2006