update: bunch of changes incoming
This commit is contained in:
parent
6273a33a72
commit
501f723edd
@ -1,6 +1,6 @@
|
||||
{
|
||||
"id": "main",
|
||||
"title": "Welcome to MatterLinux Wiki!",
|
||||
"title": "Welcome to MatterLinux wiki!",
|
||||
"author": "ngn",
|
||||
"date": "06/01/24"
|
||||
"date": "19/06/24"
|
||||
}
|
||||
|
22
wiki/main.md
22
wiki/main.md
@ -10,20 +10,22 @@ edit a page or create a new page, make a [pull request](/wiki/contribute) to [co
|
||||
|
||||
## Packaging
|
||||
| Name | Description |
|
||||
| --------------------------------------- | ---------------------------------------------------------------- |
|
||||
| [Releases](/wiki/release) | Learn about MatterLinux release cycle |
|
||||
| [Repo](/wiki/repo) | Learn about MatterLinux repos and how they work |
|
||||
| [Package](/wiki/package) | Learn about MatterLinux packages |
|
||||
| [Repo Guidelines](/wiki/repo_guide) | Package guidelines for the official repos |
|
||||
| [Create a package](/wiki/create_pkg) | Learn how you can create and add a package to the official repos |
|
||||
| [Package Management](/wiki/package_man) | Learn about MatterLinux package manager |
|
||||
| [Mirrors](/wiki/mirrors) | Discover repo mirrors and learn how you can setup one |
|
||||
| [Working with `mc`](/wiki/mc) | Learn how you can use `mc` to install and package your configs |
|
||||
| --------------------------------------------- | -------------------------------------------------------------------------- |
|
||||
| [Releases](/wiki/releases) | Learn about MatterLinux release cycle |
|
||||
| [Packages](/wiki/packages) | Learn about MatterLinux packages |
|
||||
| [Pools](/wiki/pools) | Learn about MatterLinux package pools |
|
||||
| [Mirrors](/wiki/mirrors) | Discover pool mirros and learn how you can setup your own |
|
||||
| [Pool Guidelines](/wiki/pool_guides) | Package guidelines for the official pools |
|
||||
| [Create a packages](/wiki/create_packages) | Learn how you can create and add a package to the official repos |
|
||||
| [Working with mp](/wiki/mp) | Learn how to manage packages with MatterLinux package manager (`mp`) |
|
||||
| [Working with libmp](/wiki/libmp) | Learn how to use the MatterLinux package library (`libmp`) |
|
||||
| [Understanding MPTP](/wiki/mptp) | Learn about MatterLinux package transfer protocol (MPTP) |
|
||||
| [Working with mc](/wiki/mc) | Learn how to manage your configs MatterLinux configuration manager (`mc`) |
|
||||
|
||||
## Other
|
||||
| Name | Description |
|
||||
| -------------------------------- | ------------------------------------------------------- |
|
||||
| [Chat](/wiki/chat) | Learn how you can contact developers and users |
|
||||
| [Chat](/wiki/chat) | Learn how you can contact developers and contributers |
|
||||
| [Contributing](/wiki/contribute) | Learn how you can contribute to MatterLinux |
|
||||
| [Bugs](/wiki/bugs) | Learn how you can report bugs/issues |
|
||||
| [Licensing](/wiki/licensing) | Licensing for the MatterLinux repositories and software |
|
||||
|
@ -2,5 +2,5 @@
|
||||
"id": "mirrors",
|
||||
"title": "Mirrors",
|
||||
"author": "ngn",
|
||||
"date": "05/05/24"
|
||||
"date": "19/06/24"
|
||||
}
|
||||
|
@ -1,24 +1,24 @@
|
||||
Mirrors are web and FTP servers that mirror repos from the official repo web server.
|
||||
On this page, you will find information about MatterLinux package mirrors.
|
||||
|
||||
# Usage
|
||||
To use a mirror with `mp`, change the repo URI for the target repo in your `mp`
|
||||
# Using different mirrors
|
||||
To use a mirror with `mp`, change the pool URL for the target pool in your `mp`
|
||||
configuration file (`/etc/mp/cfg`).
|
||||
|
||||
### Creating a mirror
|
||||
To create a mirror you can use the `matter-mirror` tool. This tool is a part of the [MatterLinux `tools`
|
||||
project](https://git.matterlinux.xyz/matter/tools). These tools can be installed with the `tools`
|
||||
package in the desktop repo.
|
||||
package in the desktop pool.
|
||||
|
||||
After installing `matter-mirror`, specify an URI and an output directory (files will be downloaded
|
||||
into the output directory). For example to mirror the `base` repo from
|
||||
`https://pkgs.matterlinux.xyz/base` to `base_mirror` directory:
|
||||
After installing `matter-mirror`, specify an URL and an output directory (files will be downloaded
|
||||
into the output directory). For example to mirror the `base` pool from `https://pkgs.matterlinux.xyz/base`
|
||||
to `base_mirror` directory:
|
||||
```
|
||||
$ mkdir base_mirror
|
||||
$ matter-mirror -u https://pkgs.matterlinux.xyz/base -o base_mirror
|
||||
```
|
||||
|
||||
To serve the mirror, you can setup a web server such as `nginx`, or you can setup a FTP
|
||||
server such as `pure-ftpd`.
|
||||
To serve the mirror, you can setup [`pooler`](https://git.matterlinux.xyz/matter/pooler).
|
||||
To learn more about `pooler`, see the [wiki page for pools](/wikş/pools.md).
|
||||
|
||||
You will mostly likely want to update your mirror every once in a while. To do so you can
|
||||
create a cron job. For example to update your mirror every day at 00:00, you can add the
|
||||
@ -27,8 +27,8 @@ following entry to your `/etc/crontab`:
|
||||
0 0 * * * <user> matter-mirror -u <url> -o <output dir path>
|
||||
```
|
||||
|
||||
# List
|
||||
This section contains information about different MatterLinux repo and mirros
|
||||
# Mirror lists
|
||||
This section contains information about different MatterLinux pools and mirros
|
||||
that you can use. To add your mirror to this list get in contact with the maintainer/developers.
|
||||
|
||||
> **Note**
|
||||
@ -38,13 +38,13 @@ that you can use. To add your mirror to this list get in contact with the mainta
|
||||
> **DO NOT USE THAT MIRROR** and report it to the maintainer/developers in order to remove it
|
||||
> from the list.
|
||||
|
||||
### Official repos
|
||||
| Repo | URI | Location |
|
||||
| ------- | -------------------------------------- | ----------- |
|
||||
| base | `https://pkgs.matterlinux.xyz/base` | 🇹🇷 Turkey |
|
||||
| desktop | `https://pkgs.matterlinux.xyz/desktop` | 🇹🇷 Turkey |
|
||||
| base | `https://next.matterlinux.xyz/base` | 🇹🇷 Turkey |
|
||||
| desktop | `https://next.matterlinux.xyz/desktop` | 🇹🇷 Turkey |
|
||||
### Official pools
|
||||
| Pool | MPTP | HTTP(S) | Location |
|
||||
| ------- | -------------------------------------- | ----------------------------------------- | ----------- |
|
||||
| base | `mptp://pkgs.matterlinux.xyz/base` | `https://pkgs.matterlinux.xyz/base` | 🇹🇷 Turkey |
|
||||
| desktop | `mptp://pkgs.matterlinux.xyz/desktop` | `https://pkgs.matterlinux.xyz/desktop` | 🇹🇷 Turkey |
|
||||
| base | `mptp://next.matterlinux.xyz/base` | `https://next.matterlinux.xyz/base` | 🇹🇷 Turkey |
|
||||
| desktop | `mptp://next.matterlinux.xyz/desktop` | `https://next.matterlinux.xyz/desktop` | 🇹🇷 Turkey |
|
||||
|
||||
### Mirrors
|
||||
Currently there are no available mirrors.
|
||||
|
6
wiki/pkg/packages.json
Normal file
6
wiki/pkg/packages.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"id": "packages",
|
||||
"title": "Packages",
|
||||
"author": "ngn",
|
||||
"date": "19/06/24"
|
||||
}
|
@ -1,8 +1,8 @@
|
||||
A MatterLinux package is a compiled files of a software, tool or a library.
|
||||
On this page, you will find information about MatterLinux packages.
|
||||
|
||||
# Format
|
||||
MatterLinux packages uses the **M**atterLinux **P**ackaging **F**ormat, `MPF`. Don't let fancy name
|
||||
mislead you, a basic `MPF` file is just a renamed `TAR GZ` archive. The reason that packages use the
|
||||
mislead you, a basic `MPF` file is just a renamed Gunziped TAR archive. The reason that packages use the
|
||||
`.mpf` extension and not the `.tar.gz` extension is to make it easier to recognize and easier to work
|
||||
with in the scripts and the tools.
|
||||
|
||||
@ -11,11 +11,32 @@ A package is named after the software and the version of that software that it p
|
||||
example package containing `bash` version `5.2.15` is named `bash_5.2.15.mpf`.
|
||||
|
||||
### Structure
|
||||
File structure of a package matches with the MatterLinux root file structure. This is important
|
||||
as a package will most likely be extracted in a MatterLinux root file system.
|
||||
File structure of a package follows this format:
|
||||
```
|
||||
package_1.0.mpf
|
||||
├── DATA
|
||||
├── CHANGES
|
||||
├── INSTALL
|
||||
├── HASHES
|
||||
└── files.tar.gz
|
||||
```
|
||||
Let's break this down:
|
||||
- `DATA`: An `.ini` formatted file, contains information about package name, version, description,
|
||||
dependencies, files to keep (save) during update/removal and SHA256 hash of the `MPF` file.
|
||||
- `CHANGES`: A changelog file, each version's changelog is split with 3 newlines (`\n\n\n`)
|
||||
- `INSTALL`: An optional shell script. If it exists, then should be ran after the installation. This file
|
||||
is also named the "install script".
|
||||
- `HASHES`: Contains MD5 hashes of every file in the `files.tar.gz` archive. Summaries are
|
||||
followed by a white space (` `) and the full file path. These paths do not start with `/`,
|
||||
also they do not end with a `/`.
|
||||
- `files.tar.gz`: The actual files that the package contains, which should be installed.
|
||||
|
||||
For example, we can take a look at the `which` package, to do this you can download the `MPF` file
|
||||
and list its contents with the `tar tf` command:
|
||||
File structure of the `files.tar.gz` archive matches with the MatterLinux root file structure. This is important
|
||||
as this archive will most likely be extracted in a MatterLinux root file system.
|
||||
|
||||
For example, we can take a look at the `which` package, to do this you can download the `MPF` file,
|
||||
extract it in a temporary folder, and list the contents of `files.tar.gz` with the `tar tf files.tar.gz`
|
||||
command:
|
||||
```
|
||||
usr/
|
||||
usr/share/
|
||||
@ -29,53 +50,31 @@ usr/bin/
|
||||
usr/bin/which
|
||||
```
|
||||
|
||||
### Install Scripts
|
||||
Some packages may contain an install script, `install.sh`, this shell script is ran by the
|
||||
### Install scripts
|
||||
Some packages may contain an install script, `INSTALL`, this shell script is ran by the
|
||||
[MatterLinux Package Manager (`mp`)](/wiki/package_man) using the bash shell, right after the
|
||||
extraction.
|
||||
extraction of `files.tar.gz`.
|
||||
|
||||
This script is used to do post-install actions, such as adding users, groups etc.
|
||||
|
||||
This script is located at the root of the package. For example let's take a look
|
||||
at the `systemd` package:
|
||||
```
|
||||
...
|
||||
etc/X11/xinit/
|
||||
etc/X11/xinit/xinitrc.d/
|
||||
etc/X11/xinit/xinitrc.d/50-systemd-user.sh
|
||||
etc/credstore.encrypted/
|
||||
install.sh
|
||||
usr/
|
||||
usr/lib/
|
||||
usr/lib/libudev.so
|
||||
usr/lib/libnss_resolve.so.2
|
||||
...
|
||||
```
|
||||
|
||||
# Usage
|
||||
# Working with packages
|
||||
While installing a package using the [MatterLinux Package Manager (`mp`)](/wiki/package_man), `mp`
|
||||
downloads the target package(s) from the repos, these packages are in the format discussed above.
|
||||
downloads the target package(s) from the pools, these packages are in the format discussed above.
|
||||
After downloading and verifying the target package(s), `mp` extracts the packages using `libarchive`.
|
||||
To learn more about this process see the [page for package management](/wiki/package_man).
|
||||
|
||||
It's also possible to install packages manually. To do this you can grab a package you want
|
||||
and extract it to your the root directory by running: `tar xvf <package_version.mpf> -C /`
|
||||
### Building packages
|
||||
Package are built with the `mp-build` tool. In order to build a package, you will need the source
|
||||
of the package, which can be found in the source tree of the pool which contains the package.
|
||||
|
||||
# Building
|
||||
Package are built with the `mp-repo` tool. In order to build a package, you will need the source
|
||||
for the repo that contains the package. This is because a package itself does not store any metadata,
|
||||
this is all handled by the repo.
|
||||
After obtaining the source, package can be simply built by running:
|
||||
```
|
||||
$ mp-build <package dir>
|
||||
```
|
||||
|
||||
To learn more about the `mp-repo` tool, and how you can use it to build packages, see the
|
||||
[repo package](/wiki/repo).
|
||||
|
||||
### Package Source
|
||||
Source code for a packages can be found in the source code of the repo that the package is in.
|
||||
Source files for a repo will be located under the `src` directory.
|
||||
|
||||
### Package Script
|
||||
### Package scripts
|
||||
Each package source contains a `pkg.sh` shell script. This is the source script that is used to
|
||||
build the package. In the build process, this shell script gets imported by the `mp-repo` tool
|
||||
build the package. In the build process, this shell script gets sourced by the `mp-build` tool
|
||||
using the `source` command.
|
||||
|
||||
Let's take a closer look at a `pkg.sh` file:
|
||||
@ -105,24 +104,29 @@ it provides. Preferably the name should not contain `_` to avoid confusion with
|
||||
- `DESC`: A short description about the software, tool or the library that package provides.
|
||||
Explain what it does, what it contains etc.
|
||||
- `VERSION`: Version of the software, tool or library the package provides. If you are using a
|
||||
git commit version, you can name the version `LAST_VERSION+COMMIT_ID`
|
||||
git commit version, you can name the version `LAST_VERSION+FIRST_7_CHARS_OF_COMMIT_ID`
|
||||
- `FILES`: Upstream files and patches needed to build this package, you can use `http`, `https`
|
||||
or `ftp` protocols.
|
||||
You can also specify multiple files. These files will be downloaded by `mp-repo` in the build
|
||||
You can also specify multiple files. These files will be downloaded by `mp-build` in the build
|
||||
process.
|
||||
- `HASHES`: Hashes for the files you specify. You can use `MD5`, `SHA1`, `SHA256` or `SHA512` sums.
|
||||
- `HASHES`: Hashes for the files you specify. You can use `MD5`, `SHA1`, `SHA256` or `SHA512` hashes.
|
||||
And yes, you need to specify hashes for all the files, using the same order with the `FILES` variable.
|
||||
You can also specify `NOHASH` instead of a hash if you want to skip hash checking for a file.
|
||||
- `DEPENDS`: Package(s) that this package depends on.
|
||||
|
||||
There are also other options that are not present in this example:
|
||||
- `KEEP`: A list of files to keep during the update/removal of the package
|
||||
- `BUILD`: A list packages required for building this package
|
||||
|
||||
Now let's take a look at the `build` function. Each package needs a `build` function, this
|
||||
function is called by `mp-repo` after downloading and verifying all the packages. It will be
|
||||
function is called by `mp-build` after downloading and verifying all the packages. It will be
|
||||
called in the `$ROOTDIR`. This directory will contain all the downloaded files, any files
|
||||
in this directory will be included into the build, so don't forget to cleanup.
|
||||
|
||||
> **Note**
|
||||
>
|
||||
> You don't need to cleanup the downloaded files in the package script,
|
||||
> they will be cleaned by the `mp-repo`.
|
||||
> they will be cleaned by the `mp-build`.
|
||||
|
||||
- `tar xf $NAME-$VERSION.tar.gz`: Extract the downloaded archive file.
|
||||
- `cd $NAME-$VERSION`: Change directory into the extracted directory.
|
||||
@ -133,6 +137,5 @@ also check out [LFS](https://www.linuxfromscratch.org/lfs/view/12.0-systemd/) an
|
||||
into the `$ROOTDIR` and not the root file system.
|
||||
- `cd .. && rm -rf $NAME-$VERSION`: Change directory back into `$ROOTDIR` and clean the extracted archive.
|
||||
|
||||
Check out [`base`](https://git.matterlinux.xyz/Matter/base) and
|
||||
[`desktop`](https://git.matterlinux.xyz/Matter/desktop) repo sources for more
|
||||
example `pkg.sh` scripts.
|
||||
Check out [`base`](https://git.matterlinux.xyz/Matter/base) and [`desktop`](https://git.matterlinux.xyz/Matter/desktop)
|
||||
pool sources for more example `pkg.sh` scripts.
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"id": "package",
|
||||
"title": "Package",
|
||||
"author": "ngn",
|
||||
"date": "06/01/24"
|
||||
}
|
6
wiki/pkg/pool_guides.json
Normal file
6
wiki/pkg/pool_guides.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"id": "pool_guides",
|
||||
"title": "Pool guidelines",
|
||||
"author": "ngn",
|
||||
"date": "19/06/24"
|
||||
}
|
20
wiki/pkg/pool_guides.md
Normal file
20
wiki/pkg/pool_guides.md
Normal file
@ -0,0 +1,20 @@
|
||||
Packages in the official MatterLinux pools (should) follow these guidelines:
|
||||
|
||||
- **Packaged software should be free or/and open source**: Proprietary software won't be included
|
||||
to the pools. No exceptions. If you find a proprietary software package in the official pools,
|
||||
please create an issue or a pull request on the related Git repository to remove the package.
|
||||
- **Packaged software should be stable**: Software known to be unstable will not packaged,
|
||||
if the stability is related to the version of the software, we may package a different/patched
|
||||
version of the software.
|
||||
- **Packaged software should be secure**: Outdated software that has critical vulnerabilities
|
||||
will not be packaged.
|
||||
- **Packaged software should be (somewhat) popular**: No, we are not gonna package some random window
|
||||
manager that only has 3 users and was last updated in 1993.
|
||||
|
||||
The following software packages will **NOT** be added, so do not waste your time with PRs or issues:
|
||||
- DWM or other Suckless tools that are configured using header files
|
||||
- Any Wayland only window managers ("compositors"), status bars, terminals etc. We only have Weston which used for testing the Wayland environment
|
||||
- Other init systems (`dinit`, `runit` etc.)
|
||||
- Non-libre kernel
|
||||
- Other third-party package managers (apt, dnf, pacman etc.), however containerized package managers can
|
||||
be packaged (except for snap, f*%#! snap)
|
6
wiki/pkg/pools.json
Normal file
6
wiki/pkg/pools.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"id": "pools",
|
||||
"title": "Pools",
|
||||
"author": "ngn",
|
||||
"date": "19/06/24"
|
||||
}
|
150
wiki/pkg/pools.md
Normal file
150
wiki/pkg/pools.md
Normal file
@ -0,0 +1,150 @@
|
||||
On this page, you will find information about MatterLinux package pools.
|
||||
|
||||
# Structure
|
||||
A pool contains:
|
||||
|
||||
- [Packages](/wiki/packages) (`.mpf` files)
|
||||
- Package signatures (`.mpf.sig` files)
|
||||
- Pool info file (`INFO`)
|
||||
- Package list file (`LIST`)
|
||||
|
||||
### Package files and signatures
|
||||
MatterLinux pools contain at least two package. Each package also has a PGP signature
|
||||
that can be used to verify the package. These signatures belong to public key fingerprint
|
||||
specified in the pool metadata.
|
||||
|
||||
### Pool info file
|
||||
Pool info file contains information about the pool itself. This information includes
|
||||
- Pool name
|
||||
- Pool size
|
||||
- Pool maintainer
|
||||
- Pool public key (used for package signatures)
|
||||
|
||||
This info file can be found in the at the root of the pool. For example the pool info file
|
||||
for `https://pkgs.matterlinux.xyz/base` is located at `https://pkgs.matterlinux.xyz/base/INFO`.
|
||||
`INI` format is used for this file.
|
||||
|
||||
### Package list file
|
||||
A list containing all the package information can be found in an archive file named `LIST`.
|
||||
This file is located at the root of the pool. For example the package list for `https://pkgs.matterlinux.xyz/base`
|
||||
is located at `https://pkgs.matterlinux.xyz/base/LIST`.
|
||||
|
||||
This archive has the following structure:
|
||||
```
|
||||
list
|
||||
├── package-one_version
|
||||
│ └── DATA
|
||||
├── package-two_version
|
||||
│ └── DATA
|
||||
...
|
||||
```
|
||||
The `DATA` file contains the information for that specific package and it's extracted from packages.
|
||||
To learn more about these please check out the page for [packages](/wiki/packages).
|
||||
|
||||
### Pool sources
|
||||
Source for a pool has a simple structure. It also contains all the source files for all the packages in
|
||||
that pool. For example lets take a look the structure of the [`base`](https://pkgs.matterlinux.xyz/base)
|
||||
pool source:
|
||||
```
|
||||
base
|
||||
├── dist
|
||||
│ ├── acl_2.3.1.mpf
|
||||
│ ├── acl_2.3.1.mpf.sig
|
||||
│ ├── INFO
|
||||
│ ...
|
||||
│ ├── LIST
|
||||
│ ├── sed_4.9.mpf
|
||||
│ ├── sed_4.9.mpf.sig
|
||||
│ ...
|
||||
├── LICENSE.txt
|
||||
├── README.md
|
||||
├── pool.sh
|
||||
├── sign-dist.sh
|
||||
└── src
|
||||
├── acl
|
||||
│ └── pkg.sh
|
||||
├── attr
|
||||
│ └── pkg.sh
|
||||
├── autoconf
|
||||
│ └── pkg.sh
|
||||
├── automake
|
||||
│ └── pkg.sh
|
||||
├── bash
|
||||
│ ├── pkg.sh
|
||||
│ ├── skelprof
|
||||
│ └── skelrc
|
||||
...
|
||||
```
|
||||
Let's break this down:
|
||||
|
||||
- `LICENSE.txt`: License used for the pool. **All the packages in the pool should use a license
|
||||
compatible with this license.**
|
||||
- `README.md`: README file. Contains a small description about the pool.
|
||||
- `pool.sh`: Pool script contains information about the pool, used to build the
|
||||
pool info file.
|
||||
- `src`: Contains package sources (package scripts, extra patches, configuration files etc.)
|
||||
- `dist`: Contains the compiled (built) packages.
|
||||
- `sign-dist.sh`: An extra shell script that you can find in the official pools. It is just a
|
||||
small script that is used to sign all the packages in the `dist` directory if they are built
|
||||
without the signatures.
|
||||
|
||||
# Using different pools
|
||||
MatterLinux releases offer 2 different pools, `base` and `desktop`. There are also development/testing
|
||||
`base` and `desktop` pools (named "next"). URLs for these pools and the mirrors can be found at the [mirrors page](/wiki/mirrors).
|
||||
|
||||
These pools can provide packages for users, these packages can be managed using the
|
||||
[MatterLinux package manager (`mp`)](/wiki/mp).
|
||||
|
||||
### Building an already existing pool
|
||||
To build an already existing pool, such as the `base` or the `desktop` pool, first you will need to
|
||||
download the pool's source. Source for the `base` and the `desktop` pool can be found on [MatterLinux Git Server](https://git.matterlinux.xyz/matter).
|
||||
|
||||
After downloading the pool source, you will need to install the `mp-pool` tool, which is the tool
|
||||
used for building MatterLinux pools. To do so please follow the steps [here](https://git.matterlinux.xyz/Matter/mp-pool#installation).
|
||||
|
||||
Finally to build the pool:
|
||||
```
|
||||
$ mp-pool <pool dir>
|
||||
```
|
||||
|
||||
You will mostly likely want to disable package signing though, as you are probably not the
|
||||
owner of the pool:
|
||||
```
|
||||
$ mp-pool --no-sign <pool dir>
|
||||
```
|
||||
|
||||
### Hosting pools
|
||||
Unlike most of the package managers, `mp` does not use HTTP, FTP or RSYNC to communicate with the pools. It has it's own
|
||||
custom protocol named [MPTP](/wiki/mptp). Pools are hosted over this protocol using [pooler](https://git.matterlinux.xyz/matter/pooler).
|
||||
|
||||
To get host a pool using `pooler`, download and install the `pooler` by following the instructions on the [README](https://git.matterlinux.xyz/matter/pooler). It's also in the official pools so you can install it with `mp` as well.
|
||||
After installing it, you can simply host the pool by running:
|
||||
```
|
||||
$ pooler <pool dir>
|
||||
```
|
||||
This will start the MPTP server on port 0.0.0.0:5858. You can also host multiple pools by specifying them:
|
||||
```
|
||||
$ pooler <pool dir 1> <pool dir 2> <pool dir 3>
|
||||
```
|
||||
Note that each pool needs to have a unique name for in order to host multiple pools using the same
|
||||
pooler instance.
|
||||
|
||||
If you want to change the service address, you can do so by using the `-h` and the `-p` flag:
|
||||
```
|
||||
$ pooler -h 0.0.0.0 -p 5566 <pool dir>
|
||||
```
|
||||
You can also specify host names for your pools:
|
||||
```
|
||||
$ pooler <pool dir 1>::p1.example.com <pool dir 2>::p2.example.com
|
||||
```
|
||||
|
||||
### Creating a new pool
|
||||
If you want to create an unofficial pool, setup the directory structure for the source pool as
|
||||
explained above. Then create a `pool.sh` script, you can copy one from the official pools and
|
||||
edit it.
|
||||
|
||||
After adding your packages and building them with `mp-pool`, you can host it using pooler.
|
||||
I suggest you also host them on a HTTP or a FTP server just to make them easier to access.
|
||||
Doing so will also allow other people to use [`matter-mirror` tool to mirror your pool](/wiki/mirrors).
|
||||
|
||||
Also you can add your unofficial pool to this wiki page [by creating an issue](https://git.matterlinux.xyz/Matter/content/issues).
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"id": "release",
|
||||
"id": "releases",
|
||||
"title": "Releases",
|
||||
"author": "ngn",
|
||||
"date": "05/05/24"
|
||||
"date": "19/06/24"
|
||||
}
|
@ -1,23 +1,22 @@
|
||||
On this page, you will find information about MatterLinux release cycle and
|
||||
version numbering.
|
||||
|
||||
## Release Cycle
|
||||
## Release cycle
|
||||
The release cycle is pretty simple, if there are enough package updates and changes,
|
||||
then you get a new release. So its expected to have a release or two once a month.
|
||||
then you get a new release. So its expected to have a release or once a month.
|
||||
|
||||
### Package Updates
|
||||
### Package updates
|
||||
MatterLinux follows a slow rolling release cycle for all the packages. Packages update every
|
||||
once in a while, generally to fix security issues. Packages get tested on a development repo,
|
||||
[next.matterlinux.xyz](https://next.matterlinux.xyz) before they get pushed into the main repos.
|
||||
This way we can maintain a stable experience.
|
||||
|
||||
### ISOs and Release Archives
|
||||
### ISOs and release archives
|
||||
- ISO: A bootable disk image
|
||||
- Release Archive: An archive used during the installation of a release
|
||||
|
||||
With new release, a new ISO and a release archive will be published. ISO and release
|
||||
archive file for a release may update before the next release to keep the
|
||||
packages in these archive files and the ISOs up-to-date.
|
||||
With new release, a new ISO and a release archive will be published. This way
|
||||
the packages in these ISO and archive files will always be up-to-date.
|
||||
|
||||
### Learn the version you are using
|
||||
You can learn the MatterLinux release version you are using by printing
|
||||
@ -26,7 +25,7 @@ out the `/etc/os-release` file:
|
||||
# cat /etc/os-release
|
||||
```
|
||||
|
||||
## Version Numbering
|
||||
## Version numbering
|
||||
MatterLinux and all it's projects are version numbered after the year.
|
||||
For example MatterLinux release for the year 2024 is versioned "MatterLinux 24".
|
||||
|
||||
@ -36,13 +35,15 @@ MatterLinux 24 ISO would be named "MatterLinux 24.01".
|
||||
Similarly 15th release of the MatterLinux package manager for the year 2024
|
||||
is versioned "24.14".
|
||||
|
||||
## Building Releases
|
||||
You can build an up-to-date ISO and a release archive using MatterLinux [tools](https://git.matterlinux.xyz/matter/tools).
|
||||
These tools can be installed with the `tools` package.
|
||||
## Building releases
|
||||
You can build an up-to-date ISO and a release archives using [MatterLinux tools](https://git.matterlinux.xyz/matter/tools).
|
||||
These tools also can be installed with the `tools` package.
|
||||
|
||||
You should be on a MatterLinux system for a proper build!
|
||||
> **Important**
|
||||
>
|
||||
> You should be on a MatterLinux system for a proper build!
|
||||
|
||||
### Building the Release Archive
|
||||
### Building the release archive
|
||||
To build a release archive, you can use the `matter-base` tool. This tool will create a temporary directory,
|
||||
install all the required base packages into it and then it will archive it all up for the final archive.
|
||||
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"id": "repo",
|
||||
"title": "Repo",
|
||||
"author": "ngn",
|
||||
"date": "21/02/24"
|
||||
}
|
111
wiki/pkg/repo.md
111
wiki/pkg/repo.md
@ -1,111 +0,0 @@
|
||||
A MatterLinux repo is a FTP or web server that contains unique [packages](/wiki/package).
|
||||
|
||||
# Structure
|
||||
A repo contains:
|
||||
|
||||
- Packages (`.mpf`)
|
||||
- Package signatures (`.mpf.sig`)
|
||||
- Repo metadata
|
||||
- Package list
|
||||
|
||||
### Package Files and Signatures
|
||||
MatterLinux repos contain at least two package. Each package also has a PGP signature
|
||||
that can be used to verify the package. These signatures belong to public key fingerprint
|
||||
specified in the repo metadata.
|
||||
|
||||
### Repo Metadata
|
||||
Repo metadata contains information about the repo itself. Such as the repo name,
|
||||
author and the public key used to sign the packages.
|
||||
|
||||
This metadata can be found in the `repo` file at the root of the repo. For example
|
||||
the repo metadata for `https://pkgs.matterlinux.xyz/base` is located at
|
||||
`https://pkgs.matterlinux.xyz/base/repo`. `INI` format is used for this metadata file.
|
||||
|
||||
### Package List
|
||||
A list containing all packages and all the package metadata can be found in an
|
||||
archive file named after the repo. For example the package list for
|
||||
`https://pkgs.matterlinux.xyz/base` is located at `https://pkgs.matterlinux.xyz/base/base.tar.gz`.
|
||||
|
||||
This archive file contains a file named `pkgs`, which contains repo package list in the
|
||||
`INI` format. It contains the package names, descriptions, versions, sums and dependencies.
|
||||
|
||||
### Repo Source
|
||||
Source for a repo has a simple structure that also contains all the source files for the packages.
|
||||
For example lets take a look the structure of the [`base`](https://pkgs.matterlinux.xyz/base)
|
||||
repo source:
|
||||
```
|
||||
├── dist
|
||||
│ ├── acl_2.3.1.mpf
|
||||
│ ├── acl_2.3.1.mpf.sig
|
||||
│ ├── base.tar.gz
|
||||
│ ...
|
||||
│ ├── repo
|
||||
│ ├── sed_4.9.mpf
|
||||
│ ├── sed_4.9.mpf.sig
|
||||
│ ...
|
||||
├── LICENSE.txt
|
||||
├── README.md
|
||||
├── repo.sh
|
||||
├── sign-dist.sh
|
||||
└── src
|
||||
├── acl
|
||||
│ └── pkg.sh
|
||||
├── attr
|
||||
│ └── pkg.sh
|
||||
├── autoconf
|
||||
│ └── pkg.sh
|
||||
├── automake
|
||||
│ └── pkg.sh
|
||||
├── bash
|
||||
│ ├── pkg.sh
|
||||
│ ├── skelprof
|
||||
│ └── skelrc
|
||||
...
|
||||
```
|
||||
Let's break this down:
|
||||
|
||||
- `LICENSE.txt`: License used for the repo. **All the packages in the repo should use a license
|
||||
compatible with this license.**
|
||||
- `README.md`: README file. Contains a small description about the repo.
|
||||
- `repo.sh`: Repo script contains information about the repo, later used to build the
|
||||
repo metadata.
|
||||
- `src`: Contains package sources (package scripts, extra patches, configuration files etc.)
|
||||
- `dist`: Contains the compiled (built) packages.
|
||||
- `sign-dist.sh`: An extra shell script that you can find in the official repos. It is just a
|
||||
small script that is used to sign all the packages in the `dist` directory if they are built
|
||||
without the signatures.
|
||||
|
||||
# Usage
|
||||
MatterLinux releases offer 2 different repos, `base` and `desktop`. There are also development/testing
|
||||
`base` and `desktop` repos ("next repos"). URLs for these repos and the mirrors can be found at the [mirrors page](/wiki/mirrors).
|
||||
|
||||
This repos can provide packages for users, these packages can be managed using the
|
||||
[MatterLinux Package Manager (`mp`)](https://git.matterlinux.xyz/matter/mp). For more information see the page for [package management](/wiki/package_man).
|
||||
|
||||
### Building an already existing repo
|
||||
To build an already existing repo, such as the `base` or the `desktop` repo, first you will need to
|
||||
download the repos source. Source for the `base` and the `desktop` repo can be found on
|
||||
[MatterLinux Git Server](https://git.matterlinux.xyz/matter).
|
||||
|
||||
After downloading the repo source, you will need to install the `mp-repo` tool, which is the tool
|
||||
used for building MatterLinux repos. To do so please follow the steps [here](https://git.matterlinux.xyz/Matter/mp-repo#installation).
|
||||
|
||||
Finally to build the repo:
|
||||
```
|
||||
$ mp-repo <repo dir>
|
||||
```
|
||||
|
||||
You will mostly likely want to disable package signing though, as you are probably not the
|
||||
owner of the repo:
|
||||
```
|
||||
$ mp-repo --no-sign <repo dir>
|
||||
```
|
||||
|
||||
### Creating a new repo
|
||||
If you want to create an unofficial repo, setup the folder structure for the source repo as
|
||||
explained above. Then create a repo script, you can copy one from the official repos and
|
||||
edit it.
|
||||
|
||||
After adding your packages and building them with `mp-repo`, you can host them on an FTP
|
||||
or a web server to make it available to other people. Also you can add this unofficial repo
|
||||
to this wiki page [by creating an issue](https://git.matterlinux.xyz/Matter/content/issues).
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"id": "repo_guide",
|
||||
"title": "Repo Guidelines",
|
||||
"author": "ngn",
|
||||
"date": "23/02/24"
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
Packages in the official MatterLinux repos follow these guidelines:
|
||||
|
||||
- **Packaged software should be free or/and open source**: Proprietary software won't be included
|
||||
to the repos. However, we **may** make exceptions for the drivers.
|
||||
- **Packaged software should be stable**: Software known to be unstable will not packaged,
|
||||
if the stability is related to the version of the software, we may package a different/patched
|
||||
version of the software.
|
||||
- **Packaged software should be secure**: Outdated software that has critical vulnerabilities
|
||||
will not be packaged.
|
||||
- **Packaged software should be (somewhat) popular**: No, we are not gonna package some random
|
||||
ass window manager that only has 3 users and was last updated in 1993
|
||||
|
||||
The following software packages will not be added, so do not waste your time with PRs or issues:
|
||||
- DWM or other Suckless tools that are configured using header files
|
||||
- Any Wayland window managers ("compositors"), we only have Weston which used for testing the Wayland environment
|
||||
- Other init systems (`sysvinit`, `runit` etc.)
|
||||
- Non-libre kernel
|
||||
- Snap
|
Loading…
Reference in New Issue
Block a user