Saturday, May 4, 2024
 Popular · Latest · Hot · Upcoming
2
rated 0 times [  2] [ 0]  / answers: 1 / hits: 1028  / 1 Year ago, sun, march 19, 2023, 2:14:09

I'm attempting to build a package using pbuilder, and would prefer to not install build dependencies on my host computer so I can keep it clean. Whenever It try to build a package, I get the following output because I don't have the dependencies installed.



$ pbuilder-dist saucy i386 build nautilus_3.8.2-0ubuntu1.dsc
I: Logging to /home/notgary/pbuilder/saucy-i386_result/last_operation.log
I: using fakeroot in build.
I: Current time: Tue Jul 23 20:52:19 BST 2013
I: pbuilder-time-stamp: 1374609139
I: Building the build Environment
I: extracting base tarball [/home/notgary/pbuilder/saucy-i386-base.tgz]
I: creating local configuration
I: copying local configuration
W: --override-config is not set; not updating apt.conf Read the manpage for details.
I: mounting /proc filesystem
I: mounting /dev/pts filesystem
I: Mounting /var/cache/pbuilder/ccache
I: policy-rc.d already exists
I: Obtaining the cached apt archive contents
I: Setting up ccache
I: Installing the build-deps
Traceback (most recent call last):
File "/usr/bin/gdebi", line 80, in <module>
debi = GDebiCli(options)
File "/usr/share/gdebi/GDebi/GDebiCli.py", line 53, in __init__
"--print-architecture"], stdout=PIPE).communicate()[0]
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
E: pbuilder-satisfydepends failed.
I: Copying back the cached apt archive contents
I: unmounting /var/cache/pbuilder/ccache filesystem
I: unmounting dev/pts filesystem
I: unmounting proc filesystem
I: cleaning the build env
I: removing directory /var/cache/pbuilder/build//9113 and its subdirectories


How do I update pbuilder so it will resolve the dependencies automatically within it's own environment?


More From » development

 Answers
4

Looking at the source for /usr/share/gdebi/GDebi/GDebiCli.py we see that the pbuilder-dist script is dying when gdebi tries to exec dpkg. As it happens, we can get the strange OSError: [Errno 2] No such file or directory when trying to exec a 32-bit executable on a 64-bit system without libc6:i386 installed.



Investigating further into /usr/lib/pbuilder/pbuilder-satisfydepends-gdebi, we find that gdebi satisfies the dependencies from outside the chroot by executing dpkg inside the chroot,



INSTALL=$(/usr/bin/gdebi --quiet --root $CHROOT --apt-line $NO_RECOMMENDS $DEBIAN_CONTROL)
$CHROOTEXEC /usr/bin/apt-get install -y "${APTGETOPT[@]}" $INSTALL


So without the multiarch libraries necessary to execute a 32-bit dpkg on a 64-bit host, this is going to fail. Another option is to use the aptitude resolver, which works inside the chroot, so shouldn't have problems either way.


[#30232] Monday, March 20, 2023, 1 Year  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
bathtusain

Total Points: 380
Total Questions: 124
Total Answers: 111

Location: Trinidad and Tobago
Member since Sat, Apr 9, 2022
2 Years ago
bathtusain questions
Sun, Jul 17, 22, 03:13, 2 Years ago
Sun, Oct 3, 21, 00:24, 3 Years ago
Sat, Apr 22, 23, 00:24, 1 Year ago
Fri, Jul 22, 22, 12:01, 2 Years ago
Sun, Jun 27, 21, 02:31, 3 Years ago
;