diff --git a/scripts/lib/devtool/deploy.py b/scripts/lib/devtool/deploy.py
index 7866cfbaae..6a75538fb0 100644
--- a/scripts/lib/devtool/deploy.py
+++ b/scripts/lib/devtool/deploy.py
@@ -9,7 +9,9 @@
 import logging
 import os
 import shutil
+import shlex
 import subprocess
+import sys
 import tempfile
 
 import bb.utils
@@ -221,10 +223,21 @@ def deploy_no_d(srcdir, workdir, path, strip_cmd, libdir, base_libdir, max_proce
             exec_fakeroot_no_d(fakerootcmd, fakerootenv, path, "rm -rf %s" % recipe_outdir, shell=True)
         exec_fakeroot_no_d(fakerootcmd, fakerootenv, path, "cp -af %s %s" % (os.path.join(srcdir, '.'), recipe_outdir), shell=True)
 
-        oldpath = os.environ['PATH']
-        os.environ['PATH'] = ':'.join([os.environ['PATH'], path or ''])
-        oe.package.strip_execs(args.recipename, recipe_outdir, strip_cmd, libdir, base_libdir, max_process)
-        os.environ['PATH'] = oldpath
+        # Strip under pseudo so that it records any inode replacements made by
+        # the strip tool before the deployment tar reads this directory.
+        strip_script = (
+            'import sys\n'
+            'sys.path[:] = %r\n'
+            'import oe.package\n'
+            'oe.package.strip_execs(%r, %r, %r, %r, %r, %r)\n'
+        ) % (sys.path, args.recipename, recipe_outdir, strip_cmd, libdir,
+             base_libdir, max_process)
+        ret = exec_fakeroot_no_d(
+            fakerootcmd, fakerootenv, path,
+            '%s -c %s' % (shlex.quote(sys.executable), shlex.quote(strip_script)),
+            shell=True)
+        if ret != 0:
+            raise DevtoolError('Failed to strip files for deployment')
 
     filelist = []
     inodes = set({})
