Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
en:manual:contrib:package_creation [2024/08/15 13:07] throgh [Creating packages for Hyperbola] |
en:manual:contrib:package_creation [2024/08/19 16:44] (current) throgh [The decisions behind: Are there disadvantages?] |
||
---|---|---|---|
Line 11: | Line 11: | ||
* knowledge about file-handling and folder-structures under GNU/Linux / UNIX | * knowledge about file-handling and folder-structures under GNU/Linux / UNIX | ||
* knowledge about handling configuration-files and commenting in or out their values | * knowledge about handling configuration-files and commenting in or out their values | ||
- | * handling privileges for users and groups under GNU/ Linux / UNIX | + | * handling privileges for users and groups under GNU/Linux / UNIX |
+ | * handling services and especially setup a webserver under GNU/Linux / UNIX (//for your own repository// | ||
If you do not have any knowledge within those named fields, this guide is not meant for you at this moment. | If you do not have any knowledge within those named fields, this guide is not meant for you at this moment. | ||
- | <note warning> | + | <note warning> |
+ | |||
+ | ===== The decisions behind: Are there disadvantages? | ||
+ | |||
+ | You may ask for sure: Do I really need all of this and manage packaging? The clear answer here is surely: No, you do not need to. But in fact you will also have to manage all the compiled and installed data on your own. Minimizing that effort is to create as said clear packaged software and data for you to install, remove, up- or downgrade all the time again on your own will with the clear point of knowledge what you are doing and what data is next added to your system running. | ||
+ | |||
+ | Are there disadvantages? | ||
===== Generic overview for the usage ===== | ===== Generic overview for the usage ===== | ||
Line 459: | Line 466: | ||
Those split definitions are only possible and needed when the software itself supports different definitions at time building and you have the intention to offer also those as dedicated package. | Those split definitions are only possible and needed when the software itself supports different definitions at time building and you have the intention to offer also those as dedicated package. | ||
+ | |||
===== Setup for a clean build-environment ===== | ===== Setup for a clean build-environment ===== | ||
Line 511: | Line 519: | ||
You can change this back after the creation of your chroot-environment. | You can change this back after the creation of your chroot-environment. | ||
</ | </ | ||
+ | |||
+ | We have now possible environments named **x86_64** and **i686**. At this point it is needed to mention that you can clearly choose also different names for your environments when creating them. Those are only first recommendations resulting from the experiences made. | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | You can update and synchronize your chroot-enviroments with the following commands: | ||
+ | |||
+ | < | ||
+ | doas librechroot -n i686 update | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | doas librechroot -n i686 sync | ||
+ | </ | ||
+ | |||
+ | We recommend doing this regular especially when you are using **testing** as your base. | ||
+ | |||
+ | Now having one or more environments you can again start with creating your package but from now on with the command following that syntax, as example within our created chroot-environment named **i686**: | ||
+ | |||
+ | < | ||
+ | doas libremakepkg -n i686 | ||
+ | </ | ||
+ | |||
+ | ===== Creating your own repository ===== | ||
+ | |||
+ | You can create your complete own repository for local or remote usage. The difference in between is for sure that local usage means only yourself as user for packages while remote usage includes everyone else. So let's assume that you have created now two packages: | ||
+ | |||
+ | < | ||
+ | ls | ||
+ | armagetronad | ||
+ | </ | ||
+ | |||
+ | In every folder listed is a compiled package ready for its further usage. For armagetronad this may be: | ||
+ | |||
+ | < | ||
+ | armagetronad-0.2.9.1.0-1-i686.pkg.tar.lz | ||
+ | </ | ||
+ | |||
+ | Let's copy all package-files to a newly created folder where our database will reside: | ||
+ | |||
+ | < | ||
+ | cp ./ | ||
+ | </ | ||
+ | |||
+ | We enter now the folder for our new repository: | ||
+ | |||
+ | < | ||
+ | cd / | ||
+ | </ | ||
+ | |||
+ | And afterwards create our package-database: | ||
+ | |||
+ | < | ||
+ | repo-add mypkgs.db.tar.lz *.pkg.tar.lz | ||
+ | </ | ||
+ | |||
+ | Example for resulting output: | ||
+ | |||
+ | < | ||
+ | # repo-add mypkgs.db.tar.lz *.pkg.tar.lz | ||
+ | ==> adding package ' | ||
+ | -> Computing checksums... | ||
+ | -> Creating ' | ||
+ | -> Creating ' | ||
+ | ==> adding package ' | ||
+ | -> Computing checksums... | ||
+ | -> Creating ' | ||
+ | -> Creating ' | ||
+ | ==> Creating updated database file ' | ||
+ | </ | ||
+ | |||
+ | Now you can add your own repository to your // | ||
+ | |||
+ | < | ||
+ | [mypkgs] | ||
+ | Server = file:/// | ||
+ | </ | ||
+ | |||
+ | Or you can share this via HTTPS / HTTP: | ||
+ | |||
+ | < | ||
+ | [mypkgs] | ||
+ | Server = https://< | ||
+ | </ |