Hi, when using fakeroot (and fakechroot) to execute foreign binaries with qemu user mode emulation, a foreign libfakeroot-sysv.so is required as well. multiarch would be an easy way to install such a foreign shared library, given that additionally to the original fakeroot package (containing the /usr/bin scripts and manpages and by that being Architecture: all) a libfakeroot package is created (containing the shared library only and marked as Multi-Arch: same) making fakeroot multiarch would also remove all of the mess that is currently going on in debian/rules which does lib32 and lib64 builds. I can prepare a patch for you that converts fakeroot to multiarch if you like/want me to and dont have time? making fakeroot multiarch would also solve #624724 cheers, josch
Yes. Just keep in mind that the fakeroot source should still be functional on other platforms, please.
Hi, I attached a tarball of my ./debian directory which converts the package to multiarch but still uses debhelper. I didnt come to converting this to not require debhelper yet but thought it would make sense to document my current status anyway. cheers, josch
It is quite simple, only touches debian/rules, the result passes the tests when those are not run under fakeroot, and the resulting deb can build debs. However, I was not able to build the package as is, it fails when trying to gzip localized manpages - I had to comment out the gzip call for my final test. Is there something missing in the git repo ? Maybe in the bootstrap script ?
It is quite simple, only touches debian/rules, the result passes the tests when those are not run under fakeroot, and the resulting deb can build debs. However, I was not able to build the package as is, it fails when trying to gzip localized manpages - I had to comment out the gzip call for my final test. Is there something missing in the git repo ? Maybe in the bootstrap script ?
Hm, I just realized my patch shares a bit defect with the original
one: the fakeroot script includes the name of the multiarch dir, which
makes it different for all archs and violates the multiarch principle.
So if we cannot rely on the ld.so conf because of the subdirectory, I
guess the only way out is to make a special case in the script: if
dpkg-architecture is there and knows about multiarch, derive PATHS
from this, or else do like we do today.
That is, something like (untested):
diff --git a/scripts/fakeroot.in b/scripts/fakeroot.in
index 324a9dc..262a157 100755
--- a/scripts/fakeroot.in
+++ b/scripts/fakeroot.in
@@ -35,7 +35,17 @@ FAKEROOT_BINDIR=@bindir@
USEABSLIBPATH=@LDPRELOADABS@
LIB=lib@fakeroot_transformed@@DLSUFFIX@
-PATHS=@libdir@:${FAKEROOT_PREFIX}/lib64/libfakeroot:${FAKEROOT_PREFIX}/lib32/libfakeroot
+
+MULTIARCH=
+if command -v dpkg-architecture >/dev/null 2>&1; then
+ MULTIARCH=`dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null`
+fi
+if [ -z "$MULTIARCH" ]; then
+ PATHS=@libdir@:${FAKEROOT_PREFIX}/lib64/libfakeroot:${FAKEROOT_PREFIX}/lib32/libfakeroot
+else
+ PATHS="$MULTIARCH"
+fi
+
FAKED=${FAKEROOT_BINDIR}/@faked_transformed@
FAKED_MODE="unknown-is-root"
Hm, I just realized my patch shares a bit defect with the original
one: the fakeroot script includes the name of the multiarch dir, which
makes it different for all archs and violates the multiarch principle.
So if we cannot rely on the ld.so conf because of the subdirectory, I
guess the only way out is to make a special case in the script: if
dpkg-architecture is there and knows about multiarch, derive PATHS
from this, or else do like we do today.
That is, something like (untested):
diff --git a/scripts/fakeroot.in b/scripts/fakeroot.in
index 324a9dc..262a157 100755
--- a/scripts/fakeroot.in
+++ b/scripts/fakeroot.in
@@ -35,7 +35,17 @@ FAKEROOT_BINDIR=@bindir@
USEABSLIBPATH=@LDPRELOADABS@
LIB=lib@fakeroot_transformed@@DLSUFFIX@
-PATHS=@libdir@:${FAKEROOT_PREFIX}/lib64/libfakeroot:${FAKEROOT_PREFIX}/lib32/libfakeroot
+
+MULTIARCH=
+if command -v dpkg-architecture >/dev/null 2>&1; then
+ MULTIARCH=`dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null`
+fi
+if [ -z "$MULTIARCH" ]; then
+ PATHS=@libdir@:${FAKEROOT_PREFIX}/lib64/libfakeroot:${FAKEROOT_PREFIX}/lib32/libfakeroot
+else
+ PATHS="$MULTIARCH"
+fi
+
FAKED=${FAKEROOT_BINDIR}/@faked_transformed@
FAKED_MODE="unknown-is-root"
Well... someone less sleepy than I was yesterday may still have noticed the obvious: this second patch *does not* remove the arch-variant @libdir@ substitution. Now that I'm looking at it, I realize that the default "make install" does install libfakeroot.so directly in $prefix/lib/ - this brings me back to the question of why we need to get it out of the standard ld.so search path, especially if anyone installing from source get it in that very search path. Let's keep in mind that if we do the same, there is no problem to be solved for PATHS: this variable won't be useful at all any more, since ld.so would do for us that job it does well for others ;) But if we still need that libfakeroot/ dir, looks like we need something to make sure we have a fixed string where we currently have @libdir@ - an auxiliary @scriptlibdir@ would do the trick. A configure flag to toggle multiarch mode, which would also check dpkg-architecture and set @libdir@ and @scriptlibdir@ accordingly. In the long run we will surely want to support multiarch on other platforms than debian, but for now we don't really have to be more generic. Is that plan OK ?
Well... someone less sleepy than I was yesterday may still have noticed the obvious: this second patch *does not* remove the arch-variant @libdir@ substitution. Now that I'm looking at it, I realize that the default "make install" does install libfakeroot.so directly in $prefix/lib/ - this brings me back to the question of why we need to get it out of the standard ld.so search path, especially if anyone installing from source get it in that very search path. Let's keep in mind that if we do the same, there is no problem to be solved for PATHS: this variable won't be useful at all any more, since ld.so would do for us that job it does well for others ;) But if we still need that libfakeroot/ dir, looks like we need something to make sure we have a fixed string where we currently have @libdir@ - an auxiliary @scriptlibdir@ would do the trick. A configure flag to toggle multiarch mode, which would also check dpkg-architecture and set @libdir@ and @scriptlibdir@ accordingly. In the long run we will surely want to support multiarch on other platforms than debian, but for now we don't really have to be more generic. Is that plan OK ?
Hi, What is the reasoning behind using the libfakeroot/ directory? For example as fakeroot is not yet installed into the multiarch /usr/lib/<triplet>/ directory, to make qemu find it when emulating foreign architectures, I will manually download the foreign fakeroot deb package and copy libfakeroot-sysv.so into /usr/lib/<triplet>/. The linker will NOT search in /usr/lib/<triplet>/libfakeroot and I tried playing with LD_PRELOAD but wasnt able to instruct it to look into the libfakeroot/ subdirectory as well. I'm probably overlooking the obvious but unless someone knows how to make it automatically look into /usr/lib/<triplet>/libfakeroot as well it would certainly be better to have libfakeroot-sysv.so in the standard path /usr/lib/<triplet>/. This is where my foreign libfakeroot-sysv.so currently resides and it works well. just my two cents. What is the status on multiarch-ing fakeroot? cheers, josch
Hi, What is the reasoning behind using the libfakeroot/ directory? For example as fakeroot is not yet installed into the multiarch /usr/lib/<triplet>/ directory, to make qemu find it when emulating foreign architectures, I will manually download the foreign fakeroot deb package and copy libfakeroot-sysv.so into /usr/lib/<triplet>/. The linker will NOT search in /usr/lib/<triplet>/libfakeroot and I tried playing with LD_PRELOAD but wasnt able to instruct it to look into the libfakeroot/ subdirectory as well. I'm probably overlooking the obvious but unless someone knows how to make it automatically look into /usr/lib/<triplet>/libfakeroot as well it would certainly be better to have libfakeroot-sysv.so in the standard path /usr/lib/<triplet>/. This is where my foreign libfakeroot-sysv.so currently resides and it works well. just my two cents. What is the status on multiarch-ing fakeroot? cheers, josch
I'm not sure. Maybe it was to discourage anyone linking against libfakeroot.
We believe that the bug you reported is fixed in the latest version of fakeroot, which is due to be installed in the Debian FTP archive: fakeroot_1.18.2-1.debian.tar.gz to main/f/fakeroot/fakeroot_1.18.2-1.debian.tar.gz fakeroot_1.18.2-1.dsc to main/f/fakeroot/fakeroot_1.18.2-1.dsc fakeroot_1.18.2-1_amd64.deb to main/f/fakeroot/fakeroot_1.18.2-1_amd64.deb fakeroot_1.18.2.orig.tar.bz2 to main/f/fakeroot/fakeroot_1.18.2.orig.tar.bz2 A summary of the changes between this version and the previous one is attached. Thank you for reporting the bug, which will now be closed. If you have further comments please address them to 636192@bugs.debian.org, and the maintainer will reopen the bug report if appropriate. Debian distribution maintenance software pp. Clint Adams <clint@debian.org> (supplier of updated fakeroot package) (This message was generated automatically at their request; if you believe that there is a problem with it please contact the archive administrators by mailing ftpmaster@debian.org) Format: 1.8 Date: Wed, 30 Nov 2011 22:37:00 -0500 Source: fakeroot Binary: fakeroot Architecture: source amd64 Version: 1.18.2-1 Distribution: unstable Urgency: low Maintainer: Clint Adams <clint@debian.org> Changed-By: Clint Adams <clint@debian.org> Description: fakeroot - tool for simulating superuser privileges Closes: 636192 641200 641503 646405 Changes: fakeroot (1.18.2-1) unstable; urgency=low . * German translation from Chris Leick. closes: #646405. * Initial multiarch support from Yann Dirson. closes: #636192. * Improved build robustness from Yann Dirson. closes: #641503. * Improved fakeroot-tcp robustness from Thomas Schwinge. closes: #641200. * Add build-arch and build-indep targets. Checksums-Sha1: e9e0dff0581fdc0a4606120b64ec3b205d8c802e 1965 fakeroot_1.18.2-1.dsc 0bfcceb0cc8648cbb57a817b3a87c4d1d68efbe2 303775 fakeroot_1.18.2.orig.tar.bz2 3cbe89b00c4e07dd03038e1df656e4a44f2e79d5 51457 fakeroot_1.18.2-1.debian.tar.gz 02e1328e1bd419782dadd838f6cc026bcf274171 107904 fakeroot_1.18.2-1_amd64.deb Checksums-Sha256: 56ea3a09bd39979a37fb97072d06d732a3fdc0f00baecba4e090fb6c5d49f5ca 1965 fakeroot_1.18.2-1.dsc 9dc942e3ef2ec83c6e6fe59de05da6ab54f39948be64803f37721adab4c6aed8 303775 fakeroot_1.18.2.orig.tar.bz2 a9d964fc09d7feb4d109e82434481909203d857488c59758d53030d2dabf39ff 51457 fakeroot_1.18.2-1.debian.tar.gz 9b701ed0174ca24471a4660ed6c343091c5d63e2b9c5099c624636f789bd2071 107904 fakeroot_1.18.2-1_amd64.deb Files: 1846884f78aa5ee52f712c37dc403633 1965 utils optional fakeroot_1.18.2-1.dsc 79f32331358ad58499704ea5e19fd0ae 303775 utils optional fakeroot_1.18.2.orig.tar.bz2 88825a6494a45a484c8dfd21518fe9d4 51457 utils optional fakeroot_1.18.2-1.debian.tar.gz d4280ad86488de0356d1f50e9387c10b 107904 utils optional fakeroot_1.18.2-1_amd64.deb iQIcBAEBCgAGBQJO1wBMAAoJEFWSMx4ZnTioKhcQAKagm8/L2k/fg5f2/xhXXo7x z2YqZzgHqOdx0OWAqdgami5gKW5qdXV+NcMkdu6bvdbQ60n/7qpGQIIEWcqLSlE4 HkgBhJUzCcjdQqp72nNQ69M9QJxvr1Dw05wCzY1OCL2YF1VEZFddMKZ/XezUsluE Zt9irn3d2Sf0NuSyvOGzKXPGQp4/nU7QT1V0TkWZMrlVWuEeVv7cXyG1BHD9C49X QNxH3r82kgZinyyr2mcDrhhKyxXYzDF0xkvmI1VRk6NVnUhlQpaq8gHuAXzaK7hm X88T4dq5AjfwdMtm3Qi0Fc72NBJFFcjA6x5yUdwxqnZJL/Q1SeBjCldwBwoUPjg/ 14HQdDgtR3CW7S6SoHNQBMrnbO6O9lqWGeuJl4cIS1FTRkJNLfp9OO9y6h8FT0ws DnEn3wF3qlYBw/dP4cSjennP55cYZYPfolJBLCAJykdmEJkKxY2l4wO25KBTRLPd sN8O4S9DWOfMyoaguXQbM4nHtVeveVL6X4VkJi+l727AVAi/bhvrAzzFi+nOPr/1 Z5JuOuvbmsarL1Q/f4O/eD8VkeoTYjTHmoHiGzpRJhZ2juHd5+dyorBRkEy3rdun YT0dLM3NgZBL00Cwf3fRZwrmztdx163Y2HmRrKDFOKni3Ilnu7F3BDiYF3aL9wde xnBFlsLx+GU4iVd7/Vc8 =VQka -----END PGP SIGNATURE-----
1.18.2-1 did not actually add multiarch support; it only moved the libraries around. And because the biarch libraries were removed, it’s also a regression over 1.18.1-1. $ sudo apt-get install fakeroot:amd64 fakeroot:i386 … The following packages have unmet dependencies: fakeroot : Conflicts: fakeroot:i386 but 1.18.2-1 is to be installed fakeroot:i386 : Conflicts: fakeroot but 1.18.2-1 is to be installed E: Unable to correct problems, you have held broken packages. The package needs to be marked ‘Multi-Arch: same’ before dpkg will even consider installing multiple architectures of the package together on the same system. But that won’t work yet for this package, because most of the files are different on different architectures: $ dpkg -x fakeroot_1.18.2-1_amd64.deb amd64 $ dpkg -x fakeroot_1.18.2-1_i386.deb i386 $ diff -qr amd64 i386 Files amd64/usr/bin/faked-sysv and i386/usr/bin/faked-sysv differ Files amd64/usr/bin/faked-tcp and i386/usr/bin/faked-tcp differ Files amd64/usr/bin/fakeroot-sysv and i386/usr/bin/fakeroot-sysv differ Files amd64/usr/bin/fakeroot-tcp and i386/usr/bin/fakeroot-tcp differ Only in i386/usr/lib: i386-linux-gnu Only in amd64/usr/lib: x86_64-linux-gnu Files amd64/usr/share/man/de/man1/faked-sysv.1.gz and i386/usr/share/man/de/man1/faked-sysv.1.gz differ Files amd64/usr/share/man/de/man1/faked-tcp.1.gz and i386/usr/share/man/de/man1/faked-tcp.1.gz differ Files amd64/usr/share/man/de/man1/fakeroot-sysv.1.gz and i386/usr/share/man/de/man1/fakeroot-sysv.1.gz differ Files amd64/usr/share/man/de/man1/fakeroot-tcp.1.gz and i386/usr/share/man/de/man1/fakeroot-tcp.1.gz differ Files amd64/usr/share/man/es/man1/faked-sysv.1.gz and i386/usr/share/man/es/man1/faked-sysv.1.gz differ Files amd64/usr/share/man/es/man1/faked-tcp.1.gz and i386/usr/share/man/es/man1/faked-tcp.1.gz differ Files amd64/usr/share/man/es/man1/fakeroot-sysv.1.gz and i386/usr/share/man/es/man1/fakeroot-sysv.1.gz differ Files amd64/usr/share/man/es/man1/fakeroot-tcp.1.gz and i386/usr/share/man/es/man1/fakeroot-tcp.1.gz differ Files amd64/usr/share/man/fr/man1/faked-sysv.1.gz and i386/usr/share/man/fr/man1/faked-sysv.1.gz differ Files amd64/usr/share/man/fr/man1/faked-tcp.1.gz and i386/usr/share/man/fr/man1/faked-tcp.1.gz differ Files amd64/usr/share/man/fr/man1/fakeroot-sysv.1.gz and i386/usr/share/man/fr/man1/fakeroot-sysv.1.gz differ Files amd64/usr/share/man/fr/man1/fakeroot-tcp.1.gz and i386/usr/share/man/fr/man1/fakeroot-tcp.1.gz differ Files amd64/usr/share/man/man1/faked-sysv.1.gz and i386/usr/share/man/man1/faked-sysv.1.gz differ Files amd64/usr/share/man/man1/faked-tcp.1.gz and i386/usr/share/man/man1/faked-tcp.1.gz differ Files amd64/usr/share/man/man1/fakeroot-sysv.1.gz and i386/usr/share/man/man1/fakeroot-sysv.1.gz differ Files amd64/usr/share/man/man1/fakeroot-tcp.1.gz and i386/usr/share/man/man1/fakeroot-tcp.1.gz differ Files amd64/usr/share/man/nl/man1/faked-sysv.1.gz and i386/usr/share/man/nl/man1/faked-sysv.1.gz differ Files amd64/usr/share/man/nl/man1/faked-tcp.1.gz and i386/usr/share/man/nl/man1/faked-tcp.1.gz differ Files amd64/usr/share/man/nl/man1/fakeroot-sysv.1.gz and i386/usr/share/man/nl/man1/fakeroot-sysv.1.gz differ Files amd64/usr/share/man/nl/man1/fakeroot-tcp.1.gz and i386/usr/share/man/nl/man1/fakeroot-tcp.1.gz differ Files amd64/usr/share/man/sv/man1/faked-sysv.1.gz and i386/usr/share/man/sv/man1/faked-sysv.1.gz differ Files amd64/usr/share/man/sv/man1/faked-tcp.1.gz and i386/usr/share/man/sv/man1/faked-tcp.1.gz differ Files amd64/usr/share/man/sv/man1/fakeroot-sysv.1.gz and i386/usr/share/man/sv/man1/fakeroot-sysv.1.gz differ Files amd64/usr/share/man/sv/man1/fakeroot-tcp.1.gz and i386/usr/share/man/sv/man1/fakeroot-tcp.1.gz differ These conflicting files either need to be made identical somehow (e.g. the manpages could be gzipped with -n), or moved into a separate non-multiarch package. Alternatively, the libraries could be moved into a separate multiarch package while the main fakeroot package remains non-multiarch. Anders
The attached set of patches splits off the shared libraries into
libfakeroot which is made Multi-Arch: same. A change to the fakeroot
script causes all paths of the co-installed libfakeroot libraries to be
found and put into the LD_LIBRARY_PATH.
I have successfully tested that this works correctly on an amd64 system
with both i386 and amd64 binaries. (With version 1.19-2, the i386
binaries would not get fakerooted.)
With my patch, this is how fakeroot finds the different multiarch paths:
find /usr/lib -mindepth 1 -maxdepth 1 -type d -name '*-*-gnu*'| sed 's,$,/libfakeroot,' | tr '\n' ':'
I consider this to be somewhat of a hack. Perhaps something along the
lines of
( dpkg --print-architecture; dpkg --print-foreign-architectures ) |\
xargs -i dpkg-architecture -a{} -qDEB_HOST_MULTIARCH
would be more appropriate...
Cheers,
-Hilko
block 694827 by 636192 thanks As far as fakeroot doesn't support multiarch, this bug for fakechroot can't be fixed. fakechroot supported multiarch for long time. I'm wondering why author of fakeroot can't implement it for a months even if he'd got a proper patch in this bug report #636192 Regards,
Running find on every invocation is pretty annoying, but I'll take a look shortly.
2013/11/27 Clint Adams <clint@debian.org>:
There is another possibility: use the default dynamic linker feature
and simply add the path to fakeroot library to /etc/ld.so.conf.d so it
should work with empty LD_LIBRARY_PATH
binary_arch:
# ...
echo /usr/lib/$(DEB_HOST_MULTIARCH)/libfakeroot >
debian/libfakeroot/etc/ld.so.conf.d/fakeroot-$(DEB_HOST_MULTIARCH).conf
You can see the difference between fakeroot and fakechroot:
(sid)dexter@sony-vaio-sve1112m1ep:/$ fakeroot env | grep LD | sort
LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/libfakeroot:/usr/lib64/libfakeroot:/usr/lib32/libfakeroot
LD_PRELOAD=libfakeroot-sysv.so
(sid)dexter@sony-vaio-sve1112m1ep:/$ fakechroot env | grep LD | sort
LD_LIBRARY_PATH=
LD_PRELOAD=libfakechroot.so
(sid)dexter@sony-vaio-sve1112m1ep:/$ cat
/etc/ld.so.conf.d/fakechroot-x86_64-linux-gnu.conf
/usr/lib/x86_64-linux-gnu/fakechroot
(sid)dexter@sony-vaio-sve1112m1ep:/$ cat
/etc/ld.so.conf.d/fakechroot-i386-linux-gnu.conf
/usr/lib/i386-linux-gnu/fakechroot
Each architecture adds own ld.so.conf config so dynamic linker can
load proper file by itself.
Regards,
Doesn't that defeat the purpose of having a separate directory? If so we might as well put libfakeroot into /usr/lib/$triple and be done with it.
2013/11/27 Clint Adams <clint@debian.org>: There is a reason to put it separately. I think it doesn't mess with gcc because libfakeroot.so or libfakechroot.so are not intended to linking by compile time. I'm afraid that such shared library in standard directory would also violate the Debian Policy because it hadn't proper symlink (libfakeroot.so.0 or something) and archive file (libfakechroot.a).
We believe that the bug you reported is fixed in the latest version of
fakeroot, which is due to be installed in the Debian FTP archive.
A summary of the changes between this version and the previous one is
attached.
Thank you for reporting the bug, which will now be closed. If you
have further comments please address them to 636192@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.
Debian distribution maintenance software
pp.
Clint Adams <clint@debian.org> (supplier of updated fakeroot package)
(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@ftp-master.debian.org)
Format: 1.8
Date: Thu, 28 Nov 2013 14:01:01 -0500
Source: fakeroot
Binary: fakeroot libfakeroot
Architecture: source amd64
Version: 1.20-2
Distribution: unstable
Urgency: low
Maintainer: Clint Adams <clint@debian.org>
Changed-By: Clint Adams <clint@debian.org>
Description:
fakeroot - tool for simulating superuser privileges
libfakeroot - tool for simulating superuser privileges - shared libraries
Closes: 636192 708959
Changes:
fakeroot (1.20-2) unstable; urgency=low
.
* Patch from Hilko Bengen to hardcode path to setcap
in the test suite. closes: #708959.
* Patches from Hilko Bengen and Piotr Roszatycki for
multiarch support. closes: #636192.
Checksums-Sha1:
d214e04c3811dbfa13816785d4b8415ff3be7a05 2045 fakeroot_1.20-2.dsc
3b933cc218c9d968c6b8a2f6776ec8c3efa70335 24921 fakeroot_1.20-2.debian.tar.gz
e66c8ae874e727a2351a6ba185d280df2434669d 77458 fakeroot_1.20-2_amd64.deb
fe7604a250ddf30d3454927be5780112f192e801 44406 libfakeroot_1.20-2_amd64.deb
Checksums-Sha256:
eea04c335d32ff42ff0ded5a8d27d6db10762dd2ba30e19b42a7ea4c1fa86038 2045 fakeroot_1.20-2.dsc
18b6b42c5982544176eb8fe1eb96cc7a0064ed03a9225afe1b984723228a949c 24921 fakeroot_1.20-2.debian.tar.gz
747ae01fe36bc0908948b8faef7e3bf294bd8f2c6526fbdf36120c0e8ed8db72 77458 fakeroot_1.20-2_amd64.deb
ed44f1f2f7ac77bb5e82e3e75ab5062361f5dfacd33db8f731a0bc72e725943a 44406 libfakeroot_1.20-2_amd64.deb
Files:
a226ade65985e5cc747a3640f45adc0b 2045 utils optional fakeroot_1.20-2.dsc
d9f800d362f4f0b9a7ef42ba24b75d7d 24921 utils optional fakeroot_1.20-2.debian.tar.gz
9dce22437436c7543d3df299469109fd 77458 utils optional fakeroot_1.20-2_amd64.deb
ea012202b657baaf9225fa946dcaa927 44406 utils optional libfakeroot_1.20-2_amd64.deb
iQIcBAEBCgAGBQJSl5RUAAoJEFWSMx4ZnTioOKQP/AjYqukKHMa2zZyfQlnbUgxm
T4d4tBPKWI4QQl9wF22lgdMAYBkP8phh+xP74huhl5ERr1aGWy9HkH0rTITBL3d0
KZJKnOcTxPhvzFSO9pOl585+apTtGeJXKZQfayXKcyz2UmdLBYOyxDmWbkllqdj+
cxE1LyO91n4TFpYb+EFjYJVl+Dm3GzAASJSqkzov7SZe6eEffGKAoWG7E4T3BRqE
/1y/7iRScksUGVl5rnHQEBTKLl1249jzQ87mqmD5MC52dszWIasHuXOtK2tQSpvT
a11l8gUaPzaTTjgvUuIUojhBx3h7KPxxDCzRYYRv6jNqxuHXn5A2o9OuH3vJLLS8
rknwk3jaJ7cQnEGxWTgurPS+qY+FX7a8iIahBy1Mm++QBUVMfROiuRc5EHhtjAO6
irJ4dEUG7HOPNCQDFIfv5/xw0HP3iUqF2agrnUse1WK6KOh5gwAYreoZnwWJ+WdM
L/iXOgrUwHNOo3z0t2K8hTOizENREtLZiqZkj2SdKgN2lhX2TAr6MQq6BvUcD0lI
wQnGDYw4yIiEHOShrHmQeTJ6kajSUy9UMqYaN5PEg5m/mRHXR9YHEbBPCk1sBxcZ
XyT+vGIdAD9Tm/EKeVepTizyMoNpg0fUIN2HE6/Y+BIs10CSKgXRHDyiJedXna7O
Zwh7FhJDEPO8Ol4S4cKn
=2hft
-----END PGP SIGNATURE-----
Hi Clint,
There seems to be a remaining problem, because libfakeroot is built
two times with the same libtool output, and ldconfig doesn't seem to
like that :
$ ls -l /usr/lib/x86_64-linux-gnu/libfakeroot/
total 108
lrwxrwxrwx 1 root root 18 Feb 14 00:12 libfakeroot-0.so -> libfakeroot-tcp.so
-rw-r--r-- 1 root root 50016 Nov 29 17:40 libfakeroot-sysv.so
-rw-r--r-- 1 root root 54192 Nov 29 17:40 libfakeroot-tcp.so
$ sudo ldconfig -v 2>/dev/null | grep libfakeroot
/usr/lib/i386-linux-gnu/libfakeroot:
libfakeroot-0.so -> libfakeroot-tcp.so
/usr/lib/x86_64-linux-gnu/libfakeroot:
libfakeroot-0.so -> libfakeroot-tcp.so
$ LD_LIBRARY_PATH="" LD_PRELOAD="libfakeroot-0.so" /bin/echo
$ LD_LIBRARY_PATH="" LD_PRELOAD="libfakeroot-sysv.so" /bin/echo
ERROR: ld.so: object 'libfakeroot-sysv.so' from LD_PRELOAD cannot be
preloaded: ignored.
I dont know if it's related but debootstraping i386 on amd64 doesn't
work here ...
$ fakeroot fakechroot debootstrap --variant=fakechroot --arch=i386
testing testing_i386 http://http.debian.net/debian/
[...]
: Failure trying to run: chroot /home/nlecam/testing_i386 dpkg
--force-depends --install
/var/cache/apt/archives/base-passwd_3.5.28_i386.deb
W: See /home/nlecam/testing_i386/debootstrap/debootstrap.log for details
$ cat /home/nlecam/testing_i386/debootstrap/debootstrap.log
gpgv: Signature made Thu Feb 13 21:55:28 2014 CET using RSA key ID 46925553
gpgv: Good signature from "Debian Archive Automatic Signing Key
(7.0/wheezy) <ftpmaster@debian.org>"
ERROR: ld.so: object 'libfakeroot-sysv.so' from LD_PRELOAD cannot be
preloaded: ignored.
dpkg: error while loading shared libraries: libselinux.so.1: cannot
open shared object file: No such file or directory
regards,
Forgive me if I'm mistaken, but fakeroot still does not appear to work across architectures (at least the i386 version): $ dpkg -s fakeroot | grep ^Arch Architecture: i386 $ dpkg -s ascii | grep ^Arch Architecture: amd64 $ fakeroot-sysv ascii -v ERROR: ld.so: object 'libfakeroot-sysv.so' from LD_PRELOAD cannot be preloaded: ignored. ascii 3.14 Maybe I'm wrong, but I think that the invocation of find in the assignment to $PATH was meant to be at runtime, but was instead done at compile-time. Replacing the hardcoded path list with the `find` command from Hilko's patch did the trick for me: $ fakeroot-sysv ascii -v ascii 3.14
* Frédéric Brière: You will also need libfakeroot:amd64. Cheers, -Hilko
$ dpkg -s libfakeroot:amd64 | grep ^Status
Status: install ok installed
The library is there; its directory is simply not present in the list
assigned to $PATHS (line 38):
PATHS=/usr/lib/i386-linux-gnu/libfakeroot:${FAKEROOT_PREFIX}/lib64/libfakeroot:${FAKEROOT_PREFIX}/lib32/libfakeroot
Dear Customer, We could not deliver your item. Please, open email attachment to print shipment label. Warm regards, Manuel Sexton, Sr. Station Manager.
Dear Customer, This is to confirm that one or more of your parcels has been shipped. Shipment Label is attached to email. Kind regards, Darren Schafer, Sr. Support Manager.
Dear Customer, Courier was unable to deliver the parcel to you. Please, download Delivery Label attached to this email. Regards, Arnold Donovan, Sr. Delivery Manager.
Dear Customer, This is to confirm that one or more of your parcels has been shipped. Delivery Label is attached to this email. Yours faithfully, Dustin Long, Operation Manager.
Dear Customer, Courier was unable to deliver the parcel to you. Delivery Label is attached to this email. Yours sincerely, Lonnie Kirk, Sr. Operation Agent.
Dear Customer, Courier was unable to deliver the parcel to you. You can review complete details of your order in the find attached. Yours trully, Jorge Goff, Operation Agent.
Dear Customer, Courier was unable to deliver the parcel to you. You can review complete details of your order in the find attached. Yours faithfully, Tim Sanchez, FedEx Delivery Agent.
Dear Customer, We could not deliver your item. Please, open email attachment to print shipment label. Thanks and best regards, Terrance Arthur, FedEx Support Agent.
Dear Customer, We could not deliver your item. Shipment Label is attached to this email. Regards, Johnnie Parker, FedEx Operation Agent.
Dear Customer, This is to confirm that one or more of your parcels has been shipped. Shipment Label is attached to email. Kind regards, Lance Denton, Delivery Manager.
Dear Customer, We could not deliver your item. You can review complete details of your order in the find attached. Yours faithfully, Billy Hagen, FedEx Support Manager.
Dear Customer, We could not deliver your item. You can review complete details of your order in the find attached. Yours trully, Charles Barlow, FedEx Support Manager.
Dear Customer, We could not deliver your parcel. Please, open email attachment to print shipment label. Sincerely, Robert Nielsen, Station Manager.
Dear Customer, We could not deliver your parcel. Delivery Label is attached to this email. Kind regards, Dustin Simon, Station Agent.
Dear Customer, Your parcel has arrived at October 29. Courier was unable to deliver the parcel to you. Please, download Delivery Label attached to this email. Kind regards, Ricky Waters, Sr. Operation Manager.
Dear Customer, Your parcel has arrived at October 29. Courier was unable to deliver the parcel to you. You can review complete details of your order in the find attached. Sincerely, Jared Neal, Operation Manager.
Dear Customer, We could not deliver your item. Please, download Delivery Label attached to this email. Regards, George Summers, Sr. Delivery Manager.
Dear Customer, Courier was unable to deliver the parcel to you. Shipment Label is attached to email. Sincerely, Rafael Kelly, Station Manager.
Dear Customer, We could not deliver your item. Shipment Label is attached to this email. Yours trully, Jeffery Gregory, Operation Manager.
Dear Customer, This is to confirm that one or more of your parcels has been shipped. Shipment Label is attached to email. Thank you for choosing FedEx, Aaron Hubbard, Sr. Delivery Manager.
Dear Customer, We could not deliver your item. Shipment Label is attached to email. Yours sincerely, Bernard Cantrell, FedEx Support Manager.
Dear Customer, We could not deliver your parcel. Shipment Label is attached to this email. Yours sincerely, Mario Riggs, Sr. Station Agent.
Dear Customer, Courier was unable to deliver the parcel to you. Shipment Label is attached to email. Kind regards, Jim Hampton, FedEx Support Manager.
Indeed, that is the problem. To recap on that patch: Clint's objection was that running find could be rather expensive. Well, it would make fakeroot depend on dpkg-dev which is rather undesirable. I think the solution is for each libfakeroot:$ARCH to add its directory to fakeroot's search path via a configuration file. Actually, those already exist, namely the /etc/ld.so.conf.d/fakeroot-*.conf files. So how about the patch below?
Hi. We published A Global Market Outlook Report on Automatic Wafer Production Lines and Machines 2022 for You and Competitors. If you have further interest in this report or related reports, we would be happy to share the sample report for your reference. The following manufacturers are covered: Bühler Hebenstreit NEFAMAK Kehua Foodstuff Forma Makina SAN SAMCI Coral FoodStuff Gocmen MYBAKE Apex Machinery & Equipment Tanis Food Lafer Packaging Shanghai Waifan Gemni International Ambaji Automations ...... Automatic Wafer Production Lines and Machines Breakdown Data by Type Wafer Production Line Packaging Machine Feeding System Automatic Wafer Production Lines and Machines Breakdown Data by End Users SMEs Large Enterprises Maybe it will be helpful to the marketing department or the person in charge of your company. We would be grateful if you could forward it. Best Regards Fendi Zhang | Sales Manager QYResearch INC. Phone: +86 137 6333 8542(7*24H), +1-626 2952 442(US) E-mail: fendi@qyresearch.com
This ignored MR fixes this issue completely, despite the irrelevant waffle about some other package. https://salsa.debian.org/clint/fakeroot/-/merge_requests/28