diff --git a/debian-build.cabal b/debian-build.cabal
--- a/debian-build.cabal
+++ b/debian-build.cabal
@@ -1,5 +1,5 @@
 name:                debian-build
-version:             0.10.0.0
+version:             0.10.1.0
 synopsis:            Debian package build sequence tools
 description:         This package provides build sequence functions
                      for debian package, and includes on-the-fly
@@ -38,7 +38,6 @@
                      , directory
                      , transformers
                      , split
-                     , Cabal
 
   hs-source-dirs:      src
   ghc-options:       -Wall
diff --git a/src/Debian/Package/Build/Cabal.hs b/src/Debian/Package/Build/Cabal.hs
--- a/src/Debian/Package/Build/Cabal.hs
+++ b/src/Debian/Package/Build/Cabal.hs
@@ -10,23 +10,22 @@
 -- This module wraps cabal library interfaces to keep sparse dependency to it.
 module Debian.Package.Build.Cabal
        ( findDescriptionFile
+       , fillSetupHs
 
        , setupCmd, clean, sdist
        , configure, build, install, register
        )  where
 
 import Control.Applicative ((<$>))
-import Control.Monad (filterM)
+import Control.Monad (filterM, when)
 import Control.Monad.Trans.Class (lift)
-import Data.Maybe (listToMaybe)
+import Data.Maybe (listToMaybe, isJust)
 import Data.List (isSuffixOf)
 import System.FilePath ((</>))
 import System.Directory (getDirectoryContents, doesFileExist)
-import System.Environment (withArgs)
 
-import Distribution.Simple (defaultMain)
-
-import Debian.Package.Build.Monad (Trace, traceCommand)
+import Debian.Package.Build.Monad (Trace)
+import Debian.Package.Build.Command (rawSystem')
 
 
 -- | Find .cabal file
@@ -40,10 +39,21 @@
         where suf = ".cabal"
   fmap (dir </>) . listToMaybe <$> filterM find fs
 
+findSetupHs :: FilePath -> IO (Maybe FilePath)
+findSetupHs dir =
+  listToMaybe <$>
+  filterM (doesFileExist . (dir </>)) ["Setup.hs", "Setup.lhs"]
+
+fillSetupHs :: FilePath -> IO ()
+fillSetupHs dir = do
+  found <- isJust <$> findSetupHs dir
+  when (not found) . writeFile (dir </> "Setup.hs") $
+    unlines ["import Distribution.Simple", "main = defaultMain"]
+
 setup :: [String] -> Trace ()
-setup args =  do
-  traceCommand (unwords $ "<cabal>" : args)
-  lift $ args `withArgs` defaultMain
+setup args = do
+  setupHs  <-  maybe (fail "Setup.hs or Setup.lhs is not found.") id <$> lift (findSetupHs ".")
+  rawSystem' "runghc" $ setupHs : args
 
 -- | Call cabal library defaultMain like Setup.hs
 setupCmd :: String -> [String] -> Trace ()
diff --git a/src/Debian/Package/Build/Sequence.hs b/src/Debian/Package/Build/Sequence.hs
--- a/src/Debian/Package/Build/Sequence.hs
+++ b/src/Debian/Package/Build/Sequence.hs
@@ -220,6 +220,10 @@
                     -> [String]                                     -- ^ Optional arguments of cabal-debian command
                     -> Build ((FilePath, FilePath), HaskellPackage) -- ^ Result package informations of generated source
 cabalAutogenSources hname mayRev cdArgs = do
+  {- Fill Setup.hs to make cabal-debian can detect.
+     Newer cabal-debian generates `DEB_SETUP_BIN_NAME = cabal' line,
+     which causes home directory access errors at build time. -}
+  liftIO . Cabal.fillSetupHs =<< askBaseDir
   debDir   <-  cabalAutogenDebianDir mayRev cdArgs
   pkg      <-  liftTrace . dpkgParseChangeLog $ debDir </> "changelog"
   let hpkg =   haskellPackageFromPackage hname pkg
