dir2sfs utility for SFS package manager
As posted about recently, I am working toward the EasyOS Package
Manager based on SFS mega-packages, not on individual PET, DEB, or
whatever, packages. This has tremendous advantages and is very
container-friendly, see this post:
http://bkhome.org/news/201810/package-management-based-on-sfs-mega-packages.html
SFS packages will require some enhancements, including a new
package-database format. I have extended the Puppy-standard package
database format, and (mostly) written a utility 'dir2sfs', which will
convert a folder into a SFS file.
There will be various meta-data inside the SFS file, that is a story
for later. Regarding the extended database format, the 'dir2sfs' utility
will bring up this GUI window:
It will generate a one-line database entry, just like the Puppy
database format, but with more fields, and some fields redefined.
Notice that the URL for the SFS package is hard-coded. I decided to
do it this way, as it makes it easy for anyone who wants to contribute
SFS packages to Easy and host them somewhere of their choosing. In the
case of ibiblio, where there may be mirrors, I might introduce a
notation to indicate "ibiblio mirror".
An SFS package will normally be downloaded and installed in a
container. There are decisions to be made here, hence lots of little "?"
buttons to provide guidance. The SFS will be in one container, but
could have more than one app and hence more than one icon on the
desktop. Container install mode is "individual", "desk", or "terminal"
-- the latter two will create a single icon on the desktop.
Note, the above snapshot is just to illustrate the GUI. In practice,
the 'devx' SFS would be a development environment, so Install mode of
"desk" or "terminal" would be appropriate.
Notice in the above snapshot, the dependency is "q&eq0.9.7". This
is just an example. It means that the container must have 'q.sfs'
version 0.9.7 as the bottom layer.
Another example, "rust&ge4.5,q", which means the 'rust' SFS
version 4.5, and q.sfs underneath -- if no version given, then it is
just the current version in EasyOS.
These SFS packages do not have to be EasyOS packages, they could be
Puppy Linux, even some other Linux distro, as long as a base-SFS
dependency is available.
Notice the naming of SFS files. In the above snapshot it is
"devx_0.9.7-r0_pyro64.sfs". I have adopted the DEB naming, which is
"<name>_<version>-<release>_<arch>.sfs".
There is a lot more to do, this is just a progress report.
EDIT 2018-11-02:
Many changes, see updated dir2sfs here:
http://bkhome.org/news/201811/dir2sfs-take-2.html
Tags: easy