UmVirt LFS Packages

How it works?

Service Environment

Environment is simple:

Service Web-application

Application contain three parts:

Database

Database is storage for all packages information:

  1. source package file (typicaly "%package_name%.tar.gz"),
  2. source package directory (directory with source package files, can be not trivial to define),
  3. patches (source code fixes which not included in package),
  4. addons (extra downloads, additional files),
  5. dependances (packages which chould be installed before),
  6. comments (useful information from maintainer)
  7. nestings (link to other packages which contents can be build separately from current package but installed with this package and have common source code. Instaling some of servers (postgresql-server) can lead to instaling clients (postgresql-client).)
  8. configure command(s) (typicaly "./configure --prefix=/usr"),
  9. build command(s) (typicaly "make"),
  10. install commands(s) (typicaly "make install")

In order to work with different versions of packages they splited on releases. Release is set of packages with specific versions. Version 0.1 contain packages of LFS v. 8.3.

File storage

All source packages are stored localy with splitting by releases.

All packages files within release directory are also splited by folders:

Site

Site is brain of application it get data from other aplication parts and produce HTML-pages, JSON-files, XML-files, and produce install scripts for packages.

Client

Environment

Client environment is Linux From Scratch with next assumptions:

Directory Structure

/sources
	.cleanup

/var
	cache/
		ulfs-packages/
			%packagename%
	log/
		ulfs-packages/
			%packagename%/
				start.time
				download.time
				[cleanup.time]
				unpack.time
				configure.time
				build.time
				install.time
				finish.time

				files.txt

/sources/

This directory is used to store source packages archives and directories.

.cleanup - empty file which force directory remove before unpacking source package.

/var/cache/ulfs-packages/

This directory is used as database of installed packages.

%packagename% - Each empty file represent package with same name.

Installation script check file existance to make decission to install dependances or not. If file was deleted installation script perform it reinstallation.

/var/log/ulfs-packages/

This directory used to store information about source packages installation proccess.

%packagename%/ - Each folder represent package with same name.

Timestamp files used for search installed files and can be used for profiling:

files.txt - list of installed files

Autonomous installation Directory Structure (Off-line disk)

/mnt/umvirt/
	files/
		%release%/
			packages/
			patches/
	packages/
		%release%/
			%packagename%.sh

/mnt/umvirt/ - directory or symlink to directory which contain local installation data

files/ - directory which contain umvirt lfs files

files/%release%/packages/ - directory which contain source package files within specific release

files/%release%/patches/ - directory which contain source package patches within specific release

packages/ - directory which contain installation scripts.

packages/%release%/%packagename%.sh - each file represent package with same name within specific release.

Packages and patches can be download from UmVirt LFS site. Also you can download packages from BLFS mirrors and developers' sites.

Installation scripts generated by UmVirt LFS Packages service. You can download scripts from UmVirt LFS site or generate your own.