diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,21 @@
 # Revision history for staversion
 
+## 0.2.3.1  -- 2019-04-20
+
+* Support the following major versions of dependencies.
+
+    * base-4.12
+    * yaml-0.9
+    * yaml-0.10
+    * yaml-0.11
+    * containers-0.6
+    * http-client-0.6
+    * megaparsec-7.0
+    * Cabal-2.4
+    * QuickCheck-2.12
+    * QuickCheck-2.13
+
+
 ## 0.2.3.0  -- 2018-07-10
 
 * Now it reads "stack.yaml" file as a query (#4).
diff --git a/src/Staversion/Internal/EIO.hs b/src/Staversion/Internal/EIO.hs
--- a/src/Staversion/Internal/EIO.hs
+++ b/src/Staversion/Internal/EIO.hs
@@ -8,12 +8,14 @@
        ( EIO,
          runEIO,
          toEIO,
+         toEIOShow,
          loggedElse,
          maybeToEIO,
          eitherToEIO
        ) where
 
 import Control.Monad.Trans.Except (runExceptT, ExceptT(..))
+import qualified Data.Bifunctor as Bi
 
 import Staversion.Internal.Log (Logger, logWarn)
 import Staversion.Internal.Query (ErrorMsg)
@@ -25,6 +27,9 @@
 
 toEIO :: IO (Either ErrorMsg a) -> EIO a
 toEIO = ExceptT
+
+toEIOShow :: Show e => IO (Either e a) -> EIO a
+toEIOShow = toEIO . fmap (Bi.first show)
 
 loggedElse :: Logger
            -> EIO a -- ^ first action tried.
diff --git a/src/Staversion/Internal/Megaparsec.hs b/src/Staversion/Internal/Megaparsec.hs
--- a/src/Staversion/Internal/Megaparsec.hs
+++ b/src/Staversion/Internal/Megaparsec.hs
@@ -9,6 +9,10 @@
        ( module Text.Megaparsec,
          Parser,
 
+#if MIN_VERSION_megaparsec(7,0,0)
+         anyChar,
+#endif
+
 #if MIN_VERSION_megaparsec(6,0,0)
          module Text.Megaparsec.Char,
          string,
@@ -53,3 +57,9 @@
 
 #endif
 
+#if MIN_VERSION_megaparsec(7,0,0)
+
+anyChar :: Parser Char
+anyChar = anySingle
+
+#endif
diff --git a/src/Staversion/Internal/StackConfig.hs b/src/Staversion/Internal/StackConfig.hs
--- a/src/Staversion/Internal/StackConfig.hs
+++ b/src/Staversion/Internal/StackConfig.hs
@@ -21,7 +21,7 @@
 import Data.Char (isSpace)
 import Data.List (isSuffixOf)
 import Data.Monoid ((<>))
-import Data.Yaml (FromJSON(..), Value(..), (.:), decodeEither)
+import Data.Yaml (FromJSON(..), Value(..), (.:), decodeEither')
 import Data.Text (Text, pack)
 import qualified Data.Text as T
 import qualified Data.ByteString as BS
@@ -32,7 +32,7 @@
   ( shell, readCreateProcessWithExitCode
   )
 
-import Staversion.Internal.EIO (EIO, toEIO, runEIO, eitherToEIO)
+import Staversion.Internal.EIO (EIO, toEIO, runEIO, eitherToEIO, toEIOShow)
 import Staversion.Internal.Log (Logger, logWarn, logDebug)
 import Staversion.Internal.Query (Resolver, ErrorMsg)
 import Staversion.Internal.Megaparsec (Parser, runParser, satisfy, space)
@@ -74,7 +74,7 @@
   parseJSON _ = empty
 
 readStackYaml :: FilePath -> EIO StackYaml
-readStackYaml file = toEIO $ fmap (fmap setPath . decodeEither) $ BS.readFile file
+readStackYaml file = toEIOShow $ fmap (fmap setPath . decodeEither') $ BS.readFile file
   where
     setPath sy = sy { stackYamlPath = file }
 
diff --git a/staversion.cabal b/staversion.cabal
--- a/staversion.cabal
+++ b/staversion.cabal
@@ -1,5 +1,5 @@
 name:                   staversion
-version:                0.2.3.0
+version:                0.2.3.1
 author:                 Toshio Ito <debug.ito@gmail.com>
 maintainer:             Toshio Ito <debug.ito@gmail.com>
 license:                BSD3
@@ -56,24 +56,24 @@
                         Staversion.Internal.HTTP,
                         Staversion.Internal.Megaparsec,
                         Staversion.Internal.EIO
-  build-depends:        base >=4.8 && <4.12,
+  build-depends:        base >=4.8 && <4.13,
                         unordered-containers >=0.2.3 && <0.3,
                         aeson >=0.8.0 && <1.5,
                         text >=0.11.3 && <1.3,
                         bytestring >=0.10.0 && <0.11,
-                        yaml >=0.8.3 && <0.9,
+                        yaml >=0.8.3 && <0.12,
                         filepath >=1.3.0 && <1.5,
                         directory >=1.2.0 && <1.4,
                         optparse-applicative >=0.11.0 && <0.15,
-                        containers >=0.5.5 && <0.6,
-                        http-client >=0.4.18 && <0.6,
+                        containers >=0.5.5 && <0.7,
+                        http-client >=0.4.18 && <0.7,
                         http-client-tls >=0.2.2 && <0.4,
                         http-types >=0.8.6 && <0.13,
                         transformers >=0.3.0 && <0.6,
                         transformers-compat >=0.4.0 && <0.7,
-                        megaparsec >=4.2.0 && <6.6,
+                        megaparsec >=4.2.0 && <7.1,
                         semigroups >=0.18.0.1 && <0.19,
-                        Cabal >=1.22.6.0 && <2.3,
+                        Cabal >=1.22.6.0 && <2.5,
                         pretty >=1.1.2.0 && <1.2,
                         ansi-wl-pprint >=0.6.7.3 && <0.7,
                         process >=1.2.3.0 && <1.7
@@ -110,7 +110,7 @@
   build-depends:        base, staversion, text, filepath, bytestring,
                         Cabal, semigroups,
                         hspec >=2.1.7,
-                        QuickCheck >=2.8.1 && <2.12,
+                        QuickCheck >=2.8.1 && <2.14,
                         heredoc >=0.2.0.0 && <0.3
 
 flag network-test
diff --git a/test/NetworkTest.hs b/test/NetworkTest.hs
--- a/test/NetworkTest.hs
+++ b/test/NetworkTest.hs
@@ -124,7 +124,8 @@
                          commQueries = [QueryName "base"],
                          commAllowNetwork = True,
                          commAggregator = Nothing,
-                         commFormatConfig = defFormatConfig
+                         commFormatConfig = defFormatConfig,
+                         commStackCommand = "stack"
                        }
     [ret] <- processCommand comm
     (resultSourceQueried . resultIn) ret `shouldBe` SourceStackage "lts-3"
@@ -145,7 +146,8 @@
                          commQueries = [QueryName "base"],
                          commAllowNetwork = True,
                          commAggregator = Nothing,
-                         commFormatConfig = defFormatConfig
+                         commFormatConfig = defFormatConfig,
+                         commStackCommand = "stack"
                        }
     [ret] <- processCommand comm
     (resultSourceQueried . resultIn) ret `shouldBe` SourceHackage
