diff --git a/Android.bp b/Android.bp
index bda36c2..3a8e978 100644
--- a/Android.bp
+++ b/Android.bp
@@ -72,7 +72,6 @@
     ],
 
     static_libs: [
-        "libc++fs",
         "libinstall",
         "librecovery_fastboot",
         "libminui",
@@ -96,7 +95,6 @@
     ],
 
     shared_libs: [
-        "libfusesideload",
         "librecovery_ui",
     ],
 }
diff --git a/install/include/install/install.h b/install/include/install/install.h
index bef23e9..87d43ab 100644
--- a/install/include/install/install.h
+++ b/install/include/install/install.h
@@ -63,7 +63,3 @@
 // pre-device and serial number (if presents). A/B OTA specific checks: pre-build version,
 // fingerprint, timestamp.
 bool CheckPackageMetadata(const std::map<std::string, std::string>& metadata, OtaType ota_type);
-
-// Ensures the path to the update package is mounted. Also set the |should_use_fuse| to true if the
-// package stays on a removable media.
-bool SetupPackageMount(const std::string& package_path, bool* should_use_fuse);
diff --git a/install/install.cpp b/install/install.cpp
index 1c9bf2f..4bb0903 100644
--- a/install/install.cpp
+++ b/install/install.cpp
@@ -30,7 +30,6 @@
 #include <atomic>
 #include <chrono>
 #include <condition_variable>
-#include <filesystem>
 #include <functional>
 #include <limits>
 #include <mutex>
@@ -642,49 +641,3 @@
   }
   return true;
 }
-
-bool SetupPackageMount(const std::string& package_path, bool* should_use_fuse) {
-  CHECK(should_use_fuse != nullptr);
-
-  if (package_path.empty()) {
-    return false;
-  }
-
-  *should_use_fuse = true;
-  if (package_path[0] == '@') {
-    auto block_map_path = package_path.substr(1);
-    if (ensure_path_mounted(block_map_path) != 0) {
-      LOG(ERROR) << "Failed to mount " << block_map_path;
-      return false;
-    }
-    // uncrypt only produces block map only if the package stays on /data.
-    *should_use_fuse = false;
-    return true;
-  }
-
-  // Package is not a block map file.
-  if (ensure_path_mounted(package_path) != 0) {
-    LOG(ERROR) << "Failed to mount " << package_path;
-    return false;
-  }
-
-  // Reject the package if the input path doesn't equal the canonicalized path.
-  // e.g. /cache/../sdcard/update_package.
-  std::error_code ec;
-  auto canonical_path = std::filesystem::canonical(package_path, ec);
-  if (ec) {
-    LOG(ERROR) << "Failed to get canonical of " << package_path << ", " << ec.message();
-    return false;
-  }
-  if (canonical_path.string() != package_path) {
-    LOG(ERROR) << "Installation aborts. The canonical path " << canonical_path.string()
-               << " doesn't equal the original path " << package_path;
-    return false;
-  }
-
-  constexpr const char* CACHE_ROOT = "/cache";
-  if (android::base::StartsWith(package_path, CACHE_ROOT)) {
-    *should_use_fuse = false;
-  }
-  return true;
-}
diff --git a/recovery.cpp b/recovery.cpp
index 9747aae..e4b8e45 100644
--- a/recovery.cpp
+++ b/recovery.cpp
@@ -687,11 +687,7 @@
         ensure_path_mounted(update_package);
       }
 
-      bool should_use_fuse = false;
-      if (!SetupPackageMount(update_package, &should_use_fuse)) {
-        LOG(INFO) << "Failed to set up the package access, skipping installation";
-        status = INSTALL_ERROR;
-      } else if (install_with_fuse || should_use_fuse) {
+      if (install_with_fuse) {
         LOG(INFO) << "Installing package " << update_package << " with fuse";
         status = InstallWithFuseFromPath(update_package, ui);
       } else if (auto memory_package = Package::CreateMemoryPackage(
diff --git a/tests/Android.bp b/tests/Android.bp
index 640bb04..e49d966 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -93,7 +93,6 @@
     "libbinderthreadstate",
     "liblp",
     "libtinyxml2",
-    "libc++fs",
 ]
 
 cc_test {
diff --git a/tests/unit/install_test.cpp b/tests/unit/install_test.cpp
index ecf1c9a..370fbdc 100644
--- a/tests/unit/install_test.cpp
+++ b/tests/unit/install_test.cpp
@@ -34,7 +34,6 @@
 #include "install/install.h"
 #include "install/wipe_device.h"
 #include "otautil/paths.h"
-#include "otautil/roots.h"
 #include "private/setup_commands.h"
 
 static void BuildZipArchive(const std::map<std::string, std::string>& file_map, int fd,
@@ -514,30 +513,3 @@
       "\n");
   TestCheckPackageMetadata(metadata, OtaType::AB, true);
 }
-
-TEST(InstallTest, SetupPackageMount_package_path) {
-  load_volume_table();
-  bool install_with_fuse;
-
-  // Setup should fail if the input path doesn't exist.
-  ASSERT_FALSE(SetupPackageMount("/does_not_exist", &install_with_fuse));
-
-  // Package should be installed with fuse if it's not in /cache.
-  TemporaryDir temp_dir;
-  TemporaryFile update_package(temp_dir.path);
-  ASSERT_TRUE(SetupPackageMount(update_package.path, &install_with_fuse));
-  ASSERT_TRUE(install_with_fuse);
-
-  // Setup should fail if the input path isn't canonicalized.
-  std::string uncanonical_package_path = android::base::Join(
-      std::vector<std::string>{
-          temp_dir.path,
-          "..",
-          android::base::Basename(temp_dir.path),
-          android::base::Basename(update_package.path),
-      },
-      '/');
-
-  ASSERT_EQ(0, access(uncanonical_package_path.c_str(), R_OK));
-  ASSERT_FALSE(SetupPackageMount(uncanonical_package_path, &install_with_fuse));
-}
