Forum

Wed Feb 28 14:42:19 2024 UTC
Cards: The Package Manager
Re: Extremely slow download speed
Sun Feb 25 23:31:04 2024 UTC
Cards: The Package Manager
Extremely slow download speed
Sat Feb 24 03:36:33 2024 UTC
General
Re: Shutdown issues
Sun Feb 18 19:09:11 2024 UTC
General
Re: Shutdown issues
Sun Feb 18 12:29:38 2024 UTC
General
Re: Wireguard Package Request
Sun Feb 18 11:03:40 2024 UTC
General
Re: Shutdown issues
Sat Feb 17 19:58:32 2024 UTC
General
Re: Shutdown issues
Sat Feb 17 11:02:14 2024 UTC
General
Re: Shutdown issues
Sat Feb 17 04:58:06 2024 UTC
General
Shutdown issues
Wed Feb 14 06:37:03 2024 UTC
General
Re: Wireguard Package Request [SOLVED]

Mon May 13 13:19:39 2024 UTC

A little lexicon for NuTyX users

Cards

Cards, which stands for 'Create, Add, Remove and Download System' packages, is a set of utilities to manage the installed software on your NuTyX Linux system.

Cards can manage dependencies for compilation and handles runtime dependencies on its own. This means that in 95% of all cases, runtime dependencies for a working app do not need to to be specified in the build recipe.

A package

A package is an archive containing a set of files of various types. It might include libraries, command line applications, graphical user interfaces, commands, configuration information, etc...

When the package is installed on your NuTyX system, it will be handled by the package manager cards.

Package archive name syntax
  • name: (port-name)
  • .group-name: only if it is a group package archive. See configuration: 'PKGMK_GROUPS'
  • or
  • .locale-name: only if it is a locale package archive. See configuration: 'PKGMK_LOCALES'
  • build-version: 10-digit Unix timestamp of the archive build time. See also 'PKGMK_BUILDVER'
  • architecture: "any" or the required system architecture: e.g. ("$(uname -m)" x86_64).
  • .extension: the predefined package archive reference extension without compression.
  • .compression-extension: only if it is a compressed archive. see configuration: 'PKGMK_COMPRESS_PACKAGE'


Examples of Packages archive names:
cards1462695664x86_64.cards.tar name: cards, no group
buildvers: 1462695664
arch: x86_64
ext: cards.tar, uncompressed
cards.devel1462695664x86_64.cards.tar name: cards,group: devel
buildvers: 1462695664
arch: x86_64
ext: cards.tar, uncompressed
cards.man1462695664any.cards.tar name: cards, group: man
buildvers: 1462695664
arch: any
ext: cards.tar, uncompressed
acl.fr1462707691any.cards.tar.xz name: acl, locale: fr
buildvers: 1462707691
arch: any
ext: cards.tar, compressed
acl1462707691x86_64.cards.tar.xz name: acl, no group
buildvers: 1462707691
arch: x86_64
ext: cards.tar, compressed

A group of packages

A group of packages is made of a set of packages providing a specific usage, for example the devel group provides tools for compilation.

In a group, it's the part of the name after the dot which specifies the group.

For example, the gcc.devel package is part of the devel group.

Each locale is a group as well.

Most of available packages are split into such groups.

Current groups include: devel, man, doc, lib and service and each available locale fr, de, da, it, pt, tr, ru, sv, nn, es, nl, fi, etc.

A set of packages

A set of packages add a major functionality to the system like a graphical interface.

Examples of a NuTyX package sets:
  • printer
  • enlightenment
  • lxde
  • xfce4
  • mate
  • kde6
  • xorg


Most of the case a set of package is a graphical interface.

To know the list of available package sets:
cards list --sets

A collection of packages

A collection is a collection of all the packages that provide a particular set of functions.

When you install a base system from the MINI ISO or with the installation scripts, you install the base collection.

The gui collection, for example, allows you to install a graphical user interface. For such a graphical user interface, you can choose your favorite windows manager.

Under NuTyX, we currently have the base, cli (command-line interface), cli-extra, gui and gui-extra collections.

Even if it's not realy usefull, it's possible to install a collection. For example the command:
get gui
will install the complete gui collection and all the dependencies.

A category of packages

A category defines a set of applications which have similar functions. A typical example of a category is "Internet", which includes browsers, irc and mail clients, etc.

A dependency of a package

A dependency is a package AAA needed either for running or for compiling another package BBB.

A good example of a dependency is the qt6-base package which is used by many packages of the kde6 collection.

The base system

The NuTyX 'base system' defines the minimum set of packages that will never be removed.

The list of packages to keep when we want to return to a base system is defined in the /etc/cards.conf file. The keyword at the beginning of the line is: base.

A script

A script is used (like a cinema script) to define each action that has to be executed by the interpreter. The scripts described here specify the actions to be executed for the construction of a package. See recipe.

A script can also be used for installing NuTyX Linux from another Linux distribution, or from an already installed NuTyX Linux system.

A recipe

A recipe is a special script which defines the construction of a package. Under NuTyX, the recipe of a package is located in the Pkgfile file.

A port

In NuTyX, a port is a folder which contains all necessary files for the construction of a package. It will at least contain a file named Pkgfile.

The port can also contain other required files (e.g. patch files) or port metafiles.

Port Metafile Syntax
  • name: (port-name)
  • .group-name: only if it is a group package archive. see configuration: 'PKGMK_GROUPS'
  • .locale-name: only if it is a locale package archive. see configuration: 'PKGMK_LOCALES'
    Followed by one of these file extentions:

  • .pre-install, or : TODO add more info: what it does, when is this script executed.
  • .post-install: TODO add more info: what it does, when is this script executed.
  • .README: a file describing various options, actions, configurations of the port.


EXAMPLE: Meta files port: lxdm
| Meta File Name    | 
| ------------------|
| lxdm.pre-install  |
| lxdm.post-install |
| lxdm.README       |


EXAMPLE: Meta files port: cards
| Meta File Name                | 
| ------------------------------|
| cards.devel.post-install      |
| cards.fr.README               |


The term port refers to a remote repository containing ports which can be downloaded with a suitable client program.

The 'Pkgfile' file

A Pkgfile is a script file. It contains the recipe for the construction of a package which can be installed with the package manager cards

The content of this file follows a common schema and is composed of three parts:
  1. `Pkgfile-Header`: (optional but highly recommended) general information about the package: Description, URL, Developer(s), Packager(s), dependencies
  2. `Mandatory information`: for the construction of the package: The name and the version.
  3. `Required build function`: The "build" function defines the construction itself of the package


It is highly recommended to put the Pkgfile file in a folder with the same name as the name variable defined in the Pkgfile. The folder name will be treated as the default name of the base binary package if it is not (re)defined by the name variable.

Example of a Pkgfile located in the mypackage folder:
description='My first package'
url='http://downloads.nutyx.org'

license="GPL2"

packager="tnut <tnut@nutyx.org>"

makedepends=(glib atk)
run=(gtk-update-icon-cache)


name=mypackage
version=1.0

source=(${url}/files/$name-$version.tar.xz)

build() {
cd ${name}-$version
./configure --prefix=/usr \
--disable-static
make
make DESTDIR=$PKG install
}

Branchs

  • The "testing" branch
    This is the testing version of NuTyX.
    Packages are frequently updated.

  • The "rolling" branch
    The update process is done on a week based. A larger update takes place between 1 and 3 months maximum. Updates comes from the "testing" branch and are normally reliable.

A chroot

A chroot is a way of isolating the working environment while using the recipes coming from various ports.
It is also needed to ensure that no dependency will be installed from the host operating system.

Levels

When cards compiles a package, it needs to know the level of compilation of that package.
Each package may or may not contain dependencies.
If a package named AAAA does not contain any dependencies, it will be at the first level: level 0 (zero).
If a package named BBBB contains a dependency named AAAA, this package will be at second level: level 1 (one).
The list of dependencies for the compilation of a package is defined by the line:
makedepends=(glib atk pango gtk xorg-libx11)
in a Pkgfile.

Alias

Some commands are actually aliases used to simplify things. An alias is a kind of shortcut to the original command. To know all the aliases available to you, just type alias in your terminal:
alias
If you want to modify a defined alias in your NuTyX, you need to edit the .bashrc file located in your home directory.
Example extract of /root/.bashrc:
if [ -f "/etc/bashrc" ] ; then
  source /etc/bashrc
fi
if [ $EUID -eq 0 ]; then
         alias del='cards remove'
         alias get='cards install'
         alias up='cards install -u'
         alias check='cards diff'
else
         alias del='sudo cards remove'
         alias get='sudo cards install'
         alias up='sudo cards install -u'
         alias check='sudo cards diff'
fi
alias search='cards search'
alias ll='ls -l'
alias l='ls -alh'
alias duh='du -h --max-depth=1'
alias dfh='df -h'
alias pkgfind='cards list| grep -i'
# End ~/.bashrc