diff --git a/Library/Homebrew/extend/os/linux/requirements/osxfuse_requirement.rb b/Library/Homebrew/extend/os/linux/requirements/osxfuse_requirement.rb
new file mode 100644
index 0000000000000000000000000000000000000000..3fd847bc4b6a854afade62dc60414e03c84b60d3
--- /dev/null
+++ b/Library/Homebrew/extend/os/linux/requirements/osxfuse_requirement.rb
@@ -0,0 +1,39 @@
+require "requirement"
+
+class OsxfuseRequirement < Requirement
+  download "https://github.com/libfuse/libfuse"
+
+  satisfy(build_env: false) do
+    next true if libfuse_formula_exists? && Formula["libfuse"].installed?
+    includedirs = %w[
+      /usr/include
+      /usr/local/include
+    ]
+    next true if (includedirs.map do |dir|
+      File.exist? "#{dir}/fuse.h"
+    end).any?
+    false
+  end
+
+  def message
+    msg = "libfuse is required to install this formula.\n"
+    if libfuse_formula_exists?
+      msg + <<-EOS.undent
+        Run "brew install libfuse" to install it.
+      EOS
+    else
+      msg + super
+    end
+  end
+
+  private
+
+  def libfuse_formula_exists?
+    begin
+      Formula["libfuse"]
+    rescue FormulaUnavailableError
+      return false
+    end
+    true
+  end
+end
diff --git a/Library/Homebrew/extend/os/mac/requirements/osxfuse_requirement.rb b/Library/Homebrew/extend/os/mac/requirements/osxfuse_requirement.rb
new file mode 100644
index 0000000000000000000000000000000000000000..8c898a2726bc068a48c641d6147234088c06b2d5
--- /dev/null
+++ b/Library/Homebrew/extend/os/mac/requirements/osxfuse_requirement.rb
@@ -0,0 +1,34 @@
+require "requirement"
+
+class OsxfuseRequirement < Requirement
+  cask "osxfuse"
+  download "https://osxfuse.github.io/"
+
+  satisfy(build_env: false) { self.class.binary_osxfuse_installed? }
+
+  def self.binary_osxfuse_installed?
+    File.exist?("/usr/local/include/osxfuse/fuse.h") &&
+      !File.symlink?("/usr/local/include/osxfuse")
+  end
+
+  env do
+    ENV.append_path "PKG_CONFIG_PATH", HOMEBREW_LIBRARY/"Homebrew/os/mac/pkgconfig/fuse"
+
+    unless HOMEBREW_PREFIX.to_s == "/usr/local"
+      ENV.append_path "HOMEBREW_LIBRARY_PATHS", "/usr/local/lib"
+      ENV.append_path "HOMEBREW_INCLUDE_PATHS", "/usr/local/include/osxfuse"
+    end
+  end
+end
+
+class NonBinaryOsxfuseRequirement < Requirement
+  fatal true
+  satisfy(build_env: false) { HOMEBREW_PREFIX.to_s != "/usr/local" || !OsxfuseRequirement.binary_osxfuse_installed? }
+
+  def message
+    <<-EOS.undent
+      osxfuse is already installed from the binary distribution and
+      conflicts with this formula.
+    EOS
+  end
+end
diff --git a/Library/Homebrew/extend/os/requirements/osxfuse_requirement.rb b/Library/Homebrew/extend/os/requirements/osxfuse_requirement.rb
new file mode 100644
index 0000000000000000000000000000000000000000..5f56d48c4a01ccadbc58296eab02a17c88d63624
--- /dev/null
+++ b/Library/Homebrew/extend/os/requirements/osxfuse_requirement.rb
@@ -0,0 +1,7 @@
+require "requirements/osxfuse_requirement"
+
+if OS.mac?
+  require "extend/os/mac/requirements/osxfuse_requirement"
+elsif OS.linux?
+  require "extend/os/linux/requirements/osxfuse_requirement"
+end
diff --git a/Library/Homebrew/requirements/osxfuse_requirement.rb b/Library/Homebrew/requirements/osxfuse_requirement.rb
index d5a3415671351084e339300496c44c28256bbf7d..9a07209d432ad29a4cb0246bccc793d95ec7e82d 100644
--- a/Library/Homebrew/requirements/osxfuse_requirement.rb
+++ b/Library/Homebrew/requirements/osxfuse_requirement.rb
@@ -2,34 +2,10 @@ require "requirement"
 
 class OsxfuseRequirement < Requirement
   fatal true
-  cask "osxfuse"
-  download "https://osxfuse.github.io/"
-
-  satisfy(build_env: false) { self.class.binary_osxfuse_installed? }
-
-  def self.binary_osxfuse_installed?
-    File.exist?("/usr/local/include/osxfuse/fuse.h") &&
-      !File.symlink?("/usr/local/include/osxfuse")
-  end
-
-  env do
-    ENV.append_path "PKG_CONFIG_PATH", HOMEBREW_LIBRARY/"Homebrew/os/mac/pkgconfig/fuse"
-
-    unless HOMEBREW_PREFIX.to_s == "/usr/local"
-      ENV.append_path "HOMEBREW_LIBRARY_PATHS", "/usr/local/lib"
-      ENV.append_path "HOMEBREW_INCLUDE_PATHS", "/usr/local/include/osxfuse"
-    end
-  end
 end
 
 class NonBinaryOsxfuseRequirement < Requirement
-  fatal true
-  satisfy(build_env: false) { HOMEBREW_PREFIX.to_s != "/usr/local" || !OsxfuseRequirement.binary_osxfuse_installed? }
-
-  def message
-    <<-EOS.undent
-      osxfuse is already installed from the binary distribution and
-      conflicts with this formula.
-    EOS
-  end
+  fatal false
 end
+
+require "extend/os/requirements/osxfuse_requirement"
diff --git a/Library/Homebrew/test/os/linux/osxfuse_requirement_spec.rb b/Library/Homebrew/test/os/linux/osxfuse_requirement_spec.rb
new file mode 100644
index 0000000000000000000000000000000000000000..c45af2fa794d0b57eeadd46d3e7d92e25fdb36b5
--- /dev/null
+++ b/Library/Homebrew/test/os/linux/osxfuse_requirement_spec.rb
@@ -0,0 +1,9 @@
+require "requirements/osxfuse_requirement"
+
+describe OsxfuseRequirement do
+  subject { described_class.new([]) }
+
+  describe "#message" do
+    its(:message) { is_expected.to match("libfuse is required to install this formula") }
+  end
+end
diff --git a/Library/Homebrew/test/os/mac/osxfuse_requirement_spec.rb b/Library/Homebrew/test/os/mac/osxfuse_requirement_spec.rb
new file mode 100644
index 0000000000000000000000000000000000000000..06d3d885e63d2fffed1c767aabbbc3a02e7773e2
--- /dev/null
+++ b/Library/Homebrew/test/os/mac/osxfuse_requirement_spec.rb
@@ -0,0 +1,36 @@
+require "requirements/osxfuse_requirement"
+
+describe OsxfuseRequirement do
+  subject { described_class.new([]) }
+
+  describe "::binary_osxfuse_installed?" do
+    it "returns false if fuse.h does not exist" do
+      allow(File).to receive(:exist?).and_return(false)
+      expect(described_class).not_to be_binary_osxfuse_installed
+    end
+
+    it "returns false if osxfuse include directory is a symlink" do
+      allow(File).to receive(:exist?).and_return(true)
+      allow(File).to receive(:symlink?).and_return(true)
+      expect(described_class).not_to be_binary_osxfuse_installed
+    end
+  end
+
+  describe "environment" do
+    it "adds the fuse directories to the appropriate paths" do
+      expect(ENV).to receive(:append_path).with("PKG_CONFIG_PATH", any_args)
+      expect(ENV).to receive(:append_path).with("HOMEBREW_LIBRARY_PATHS", any_args)
+      expect(ENV).to receive(:append_path).with("HOMEBREW_INCLUDE_PATHS", any_args)
+      subject.modify_build_environment
+    end
+  end
+end
+
+describe NonBinaryOsxfuseRequirement do
+  subject { described_class.new([]) }
+
+  describe "#message" do
+    msg = /osxfuse is already installed from the binary distribution/
+    its(:message) { is_expected.to match(msg) }
+  end
+end