Difference between revisions of "Buildiso with AUR packages: Using buildpkg"
Views
Actions
Namespaces
Variants
Tools
Buildiso with AUR packages: Using buildpkg (view source)
Revision as of 09:07, 23 September 2017
, 7 years agono edit summary
imported>Fhdk (→Create directories: updated to reflect dropped support for 32-bit arch) |
imported>Fhdk |
||
Line 2: | Line 2: | ||
This tutorial is about creating your own online repository | This tutorial is about creating your own online repository and building a custom package(set) with the help of ''buildpkg''. Later, you can install those packages to your customized Manjaro ISO using '''buildiso'''. | ||
Before you start with this tutorial make sure you have completed the prerequisite steps in [[Build Manjaro ISOs with buildiso]]. | Before you start with this tutorial make sure you have completed the prerequisite steps in [[Build Manjaro ISOs with buildiso]]. | ||
The same XFCE ISO profile will be used as example on this Wiki page. | The same XFCE ISO profile will be used as example on this Wiki page. | ||
==Create directories== | ==Create directories== | ||
The first thing you should probably do is create a directory for your online repository. The online repository is called '''online-repo''' throughout this tutorial and it is located in your home-folder. You however are free to name | The first thing you should probably do is create a directory for your online repository. The online repository is called '''online-repo''' throughout this tutorial and it is located in your home-folder. You however are free to choose name location to your liking. This'll help keep things organized. Your repository consist of only this folder: | ||
~ >>> mkdir ~/online-repo | |||
This online repository is created in your home folder, but you can create it anywhere you want. | This online repository is created in your home folder, but you can create it anywhere you want. | ||
== | ==Create your custom package tree== | ||
Create a folder for the packages you want to build. The name is arbitrary decriptor - you can call it anything you think suitable. | |||
~ >>> mkdir ~/pkgbuild | |||
Clone the relevant package(s) from AUR or from Github. Later you might create them yourself! You can select any package to build but as example we build the package <code>kickshaw</code>. Kickshaw is modern menu editor for among others openbox. First you add it to your pkgubild repo. Do this using git | |||
~ >>> cd ~/pkgbuild | |||
~/pkgbuild >>> git clone https://aur.archlinux.org/kickshaw | |||
Now you have a folder with a <code>PKGBUILD</code> file in your repo | |||
~/pkgbuild >>> ls -R | |||
~/pkgbuild >>> cat kickshaw/PKGBUILD | |||
==Building with buildpkg== | ==Building with buildpkg== | ||
The '''buildpkg''' has some options you need to familiarize yourself with. | |||
~ >>> buildpkg -h | |||
Usage: buildpkg [options] | |||
-p <pkg> Build list or pkg [default: default] | |||
-a <arch> Arch [default: x86_64] | |||
-b <branch> Branch [default: unstable] | |||
-r <dir> Chroots directory | |||
[default: /var/cache/manjaro-tools] | |||
-i <pkgs> Install packages into the working copy of the chroot | |||
-c Recreate chroot | |||
-w Clean up cache and sources | |||
-n Install and run namcap check | |||
-s Sign packages | |||
-u Udev base-devel group (no systemd) | |||
-q Query settings and pretend build | |||
-h This help | |||
Next thing to do is build the package. Please note that you must be located one level above your actual PKGBUILD. Understand this as the <code>-p</code> argument is '''the name of the folder''' holding the PKGBUILD instructionset. | |||
~ >>> buildpkg -p kickchaw | |||
For more examples how to use ''buildpkg'', look [https://wiki.manjaro.org/index.php?title=Manjaro-tools#buildpkg here]. | For more examples how to use '''buildpkg''', look [https://wiki.manjaro.org/index.php?title=Manjaro-tools#buildpkg here]. | ||
The buildpkg script creates a closed environment for building the package. This is done, so not to pollute your system with build artifacts. | |||
==Copy package files to online repository== | ==Copy package files to online repository== | ||
The resulting package is created in this directory on your system: | |||
/var/cache/manjaro-tools/ | /var/cache/manjaro-tools/pkg/<code>$branch</code>/<code>$arch</code> | ||
On a 64-Bit system using the | On a 64-Bit system using the stable branch the exact path is | ||
/var/cache/manjaro-tools/pkg/ | /var/cache/manjaro-tools/pkg/stable/x86_64 | ||
You should see compressed package files. The file name should end with <code>.pkg.tar.xz</code>. | You should see compressed package files. The file name should end with <code>.pkg.tar.xz</code>. | ||
Copy or move your package files to your online repository: | |||
~ >>> cp -r /var/cache/manjaro-tools/pkg/stable ~/online-repo | |||
==Build a .db file== | |||
To keep track of available packages the ''pacman'' package manager uses database files which is downloaded and kept on your computer. You need to create such a database file for your repo. It is crucial that your database filename is the same as your repo name. If your repo is named '''online-repo''' then your database name must be '''online-repo.db.tar.gz'''. | |||
Use the command <code>repo-add</code> to build a database file | |||
~ >>> cd ~/online-repo/x86_64 | |||
~/online-repo/x86_64 >>> repo-add online-repo.db.tar.gz *.pkg.tar.* | |||
~/online-repo/x86_64 >>> ls | |||
kickshaw-0.5-2-x86_64.pkg.tar.xz online-repo.db online-repo.db.tar.gz online-repo.files online-repo.files.tar.gz | |||
repo | |||
Every time you add packages to your online repositories, these commands need to be executed again! Otherwise, ''buildiso'' will complain later about missing packages in your online repository. | Every time you add packages to your online repositories, these commands need to be executed again! Otherwise, ''buildiso'' will complain later about missing packages in your online repository. | ||
==Upload online-repo to Host Server== | ==Upload online-repo to Host Server== | ||
Line 148: | Line 98: | ||
64-Bit Repository | 64-Bit Repository | ||
http://www.myserver.com/repository/online-repo/x86/ | http://www.myserver.com/repository/online-repo/x86/ | ||
==Add online-repo to your iso-profile== | ==Add online-repo to your iso-profile== | ||
Line 165: | Line 111: | ||
Server = http://www.myserver.com/repository/online-repo/$repo/$arch | Server = http://www.myserver.com/repository/online-repo/$repo/$arch | ||
Custom non-online repositories will be added to the resulting pacman.conf. This means AUR packages are best installed from a custom online repository (as demonstrated by <code>[online-repo]</code> in this tutorial). Packages neither available in the Manjaro repositories nor in the AUR are best installed from a custom non-online repository (see <code>[infinality-bundle]</code> as example). | |||
Custom | |||
==Add package names to ISO profile== | ==Add package names to ISO profile== | ||
Line 180: | Line 120: | ||
===Example:=== | ===Example:=== | ||
You can now add <code> | You can now add <code>kickshaw</code> to your package list for your ISO profile. This means your <code>/usr/share/manjaro-tools/iso-profiles/official/xfce/Packages-Xfce</code> file should look exactly like this: | ||
## XFCE Main Packages | ## XFCE Main Packages | ||
Line 197: | Line 137: | ||
## AUR packages | ## AUR packages | ||
''' | '''kickshaw''' | ||
=Cleaning build environment= | =Cleaning build environment= |