From ecb74aa40641cd322112401a593eaf26458e9d24 Mon Sep 17 00:00:00 2001 From: baude Date: Tue, 30 Jan 2018 09:31:16 -0600 Subject: libpod/runtime.go: runtime path Ubuntu installs runc to /usr/sbin/runc so we now account for that. Also, added small check when creating a new runtime that if we cannot find the runc binary, we bail out. Signed-off-by: baude Closes: #276 Approved by: baude --- libpod/runtime.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'libpod') diff --git a/libpod/runtime.go b/libpod/runtime.go index 20ae2c6fe..afde03904 100644 --- a/libpod/runtime.go +++ b/libpod/runtime.go @@ -77,7 +77,7 @@ var ( StorageConfig: storage.StoreOptions{}, ImageDefaultTransport: DefaultTransport, StateType: SQLiteStateStore, - RuntimePath: "/usr/bin/runc", + RuntimePath: findRuncPath(), ConmonPath: findConmonPath(), ConmonEnvVars: []string{ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", @@ -101,6 +101,15 @@ func findConmonPath() string { return path } +func findRuncPath() string { + path := "/usr/bin/runc" + _, err := os.Stat(path) + if err != nil { + path = "/usr/sbin/runc" + } + return path +} + // NewRuntime creates a new container runtime // Options can be passed to override the default configuration for the runtime func NewRuntime(options ...RuntimeOption) (runtime *Runtime, err error) { @@ -117,6 +126,11 @@ func NewRuntime(options ...RuntimeOption) (runtime *Runtime, err error) { } } + // Check for the existence of the runc binary + if _, err := os.Stat(runtime.config.RuntimePath); err != nil { + return nil, errors.Errorf("unable to find runc binary %s", runtime.config.RuntimePath) + } + // Set up containers/storage store, err := storage.GetStore(runtime.config.StorageConfig) if err != nil { -- cgit v1.2.3-54-g00ecf