[arch-general] difference between arch-nspawn and mkarchroot?
Devs, DeveloperWiki:Building_in_a_Clean_Chroot notes that updating the chroot is now done by: arch-nspawn $CHROOT/root pacman -Syu instead of mkarchroot -u $CHROOT/root Checking the help for both files I note (1) the -u option is dropped from mkarchroot, and (2) the help output for both arch-nspawn and mkarchroot are identical. So what is the difference between the two? -- David C. Rankin, J.D.,P.E.
On Thu, Jan 16, 2014 at 11:55 PM, David C. Rankin <drankinatty@suddenlinkmail.com> wrote:
Devs,
DeveloperWiki:Building_in_a_Clean_Chroot notes that updating the chroot is now done by:
arch-nspawn $CHROOT/root pacman -Syu
instead of
mkarchroot -u $CHROOT/root
Checking the help for both files I note (1) the -u option is dropped from mkarchroot, and (2) the help output for both arch-nspawn and mkarchroot are identical. So what is the difference between the two?
-- David C. Rankin, J.D.,P.E.
In the process of reorganizing the code, mkarchroot was split into two binaries with complementing functionality. arch-nspawn is a thin wrapper around systemd-nspawn, doing some pacman-specific stuff like copying config from the host and binding the cache. mkarchroot (which now just builds the chroot instead of also providing chrooting functionality) makes use of arch-nspawn, as do makechrootpkg and archbuild.
On 01/16/2014 05:08 PM, Jan Alexander Steffens wrote:
In the process of reorganizing the code, mkarchroot was split into two binaries with complementing functionality.
arch-nspawn is a thin wrapper around systemd-nspawn, doing some pacman-specific stuff like copying config from the host and binding the cache.
mkarchroot (which now just builds the chroot instead of also providing chrooting functionality) makes use of arch-nspawn, as do makechrootpkg and archbuild.
Thank you Jan, Did the ability to use the $CHROOT/root/repo as a CHROOT repository change? I am updating the PKGBUILDs for TDE and rebuilding it, and my earlier method of placing dependency packages in $CHROOT/root/repo, updating $CHROOT/root/etc/pacman.conf with: [local] Server = file:///repo Creating the index with: repo-add local.db.tar.gz *.xz Then building the first package with a stub PKGBUILD containing: <snip> depends=('apetag-git' 'libkarma' 'libnjb' 'libutempter' 'mt-daapd' 'musepack-tools-svn' 'tde-tqt3' 'wv2' 'xmedcon') no longer works. Attempting to build the stub package to install the dependencies, with 'sudo makechrootpkg -c -r $CHROOT' I get: 20:31 phoinix:/dat_f/tde/stub> sudo makechrootpkg -r $CHROOT ==> Making package: tde-stub 0.1-1 (Thu Jan 16 20:31:13 CST 2014) ==> WARNING: Using a PKGBUILD without a package() function is deprecated. ==> Retrieving sources... ==> Making package: tde-stub 0.1-1 (Thu Jan 16 20:31:13 CST 2014) ==> WARNING: Using a PKGBUILD without a package() function is deprecated. ==> Checking runtime dependencies... warning: database file for 'local' does not exist ==> Installing missing dependencies... warning: database file for 'local' does not exist error: target not found: apetag-git error: target not found: libkarma error: target not found: libnjb error: target not found: mt-daapd error: target not found: musepack-tools-svn error: target not found: tde-tqt3 error: target not found: wv2 error: target not found: xmedcon ==> ERROR: 'pacman' failed to install missing dependencies. ==> ERROR: Build failed, check /dat_e/ch14/david/build The error at issue is: warning: database file for 'local' does not exist, however, I have never seen that before. Especially with: 21:10 phoinix:/dat_e/tmp> l1 /dat_e/ch14/root/repo/ apetag-git-1.13-1-x86_64.pkg.tar.xz libkarma-0.1.2-1-x86_64.pkg.tar.xz libnjb-2.2.7-3-x86_64.pkg.tar.xz libutempter-1.1.6-2-x86_64.pkg.tar.xz local.db local.db.tar.gz mt-daapd-0.2.4.2-7-x86_64.pkg.tar.xz musepack-tools-svn-r484-1-x86_64.pkg.tar.xz tde-tqt3-14.0.0-1-x86_64.pkg.tar.xz tde-tqt3-docs-14.0.0-1-x86_64.pkg.tar.xz wv2-0.4.2-3-x86_64.pkg.tar.xz xmedcon-0.13.0-1-x86_64.pkg.tar.xz What is now preventing the build from finding the 'local.db' in /dat_e/ch14/root/repo/? -- David C. Rankin, J.D.,P.E.
On 01/16/2014 09:12 PM, David C. Rankin wrote:
==> ERROR: 'pacman' failed to install missing dependencies. ==> ERROR: Build failed, check /dat_e/ch14/david/build
The error at issue is: warning: database file for 'local' does not exist, however, I have never seen that before. Especially with:
21:10 phoinix:/dat_e/tmp> l1 /dat_e/ch14/root/repo/ apetag-git-1.13-1-x86_64.pkg.tar.xz libkarma-0.1.2-1-x86_64.pkg.tar.xz libnjb-2.2.7-3-x86_64.pkg.tar.xz libutempter-1.1.6-2-x86_64.pkg.tar.xz local.db local.db.tar.gz <snip>
It seems the following in $CHROOT/root/etc/pacman.conf # By default, pacman accepts packages signed by keys that its local keyring # trusts (see pacman-key and its man page), as well as unsigned packages. SigLevel = Required DatabaseOptional LocalFileSigLevel = Optional Were preventing the build from seeing the local repository files, because of the lack of a key on a ring provided by the packages. So to make the build use the files I had just built, I had to add an option to my local repository definition: [local] SigLevel = Never Server = file:///repo Now building can resume in a somewhat normal manner - I hope... Removing all the content from Building in a Clean Chroot#Handling Major Rebuilds concerning this process in exchange for the [staging] recipe may not have been a good trandeoff ;p -- David C. Rankin, J.D.,P.E.
participants (2)
-
David C. Rankin
-
Jan Alexander Steffens