From 2a73cc71391da67d8208d7994cfbf81f86f11e66 Mon Sep 17 00:00:00 2001 From: jgresham Date: Mon, 6 May 2024 16:32:13 -0700 Subject: [PATCH] add uninstall for distros. ubuntu22 specific install script --- .github/workflows/podman-install-linux.yml | 2 +- src/main/podman/install/installOnLinux.ts | 6 ++++++ src/main/podman/install/ubuntu22InstallScript.ts | 14 ++++++++++++++ src/main/podman/uninstall/pacmanUninstallScript.ts | 1 + src/main/podman/uninstall/uninstallOnLinux.ts | 7 +++++++ src/main/podman/uninstall/zypperUninstallScript.ts | 2 ++ 6 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 src/main/podman/install/ubuntu22InstallScript.ts create mode 100644 src/main/podman/uninstall/pacmanUninstallScript.ts create mode 100644 src/main/podman/uninstall/zypperUninstallScript.ts diff --git a/.github/workflows/podman-install-linux.yml b/.github/workflows/podman-install-linux.yml index 187da96dd..4663dc30e 100644 --- a/.github/workflows/podman-install-linux.yml +++ b/.github/workflows/podman-install-linux.yml @@ -19,7 +19,7 @@ jobs: "fedora:39", "manjarolinux/base", "archlinux:latest", - "opensuse/leap:latest" + "opensuse/tumbleweed:latest" ] container: diff --git a/src/main/podman/install/installOnLinux.ts b/src/main/podman/install/installOnLinux.ts index 885d7e3fd..781d5f66e 100644 --- a/src/main/podman/install/installOnLinux.ts +++ b/src/main/podman/install/installOnLinux.ts @@ -12,6 +12,8 @@ import { script as dnfInstallScript } from './dnfInstallScript'; import { script as pacmanInstallScript } from './pacmanInstallScript'; import { script as yumInstallScript } from './yumInstallScript'; import { script as zypperInstallScript } from './zypperInstallScript'; +// to be deprecated in the future +import { script as ubuntu22InstallScript } from './ubuntu22InstallScript'; // const UBUNTU_INSTALL_SCRIPT = 'installOnUbuntuScript'; /** @@ -33,6 +35,10 @@ const installOnLinux = async (): Promise => { const pkgManager: PackageManager = await findPackageManager(); if (pkgManager === 'dpkg') { installScript = aptInstallScript; + // to be deprecated in the future + if(distro.includes('buntu') && release.includes('22.')) { + installScript = ubuntu22InstallScript; + } } else if (pkgManager === 'dnf') { installScript = dnfInstallScript; } else if (pkgManager === 'yum') { diff --git a/src/main/podman/install/ubuntu22InstallScript.ts b/src/main/podman/install/ubuntu22InstallScript.ts new file mode 100644 index 000000000..738a57815 --- /dev/null +++ b/src/main/podman/install/ubuntu22InstallScript.ts @@ -0,0 +1,14 @@ +// Same script as on https://podman.io/docs/installation, except the 'sudo' is removed as +// sudo-prompt will not execute a command with sudo +export const script = `apt-get -y update -qq +apt-get -y -qq install curl +mkdir -p /etc/apt/keyrings +curl -fsSL https://download.opensuse.org/repositories/devel:kubic:libcontainers:unstable/xUbuntu_22.04/Release.key \ + | gpg --dearmor \ + | tee /etc/apt/keyrings/devel_kubic_libcontainers_unstable.gpg > /dev/null +echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/devel_kubic_libcontainers_unstable.gpg]\ + https://download.opensuse.org/repositories/devel:kubic:libcontainers:unstable/xUbuntu_22.04/ /" \ + | tee /etc/apt/sources.list.d/devel:kubic:libcontainers:unstable.list > /dev/null +apt-get update -qq +apt-get -qq -y install podman`; diff --git a/src/main/podman/uninstall/pacmanUninstallScript.ts b/src/main/podman/uninstall/pacmanUninstallScript.ts new file mode 100644 index 000000000..09519377e --- /dev/null +++ b/src/main/podman/uninstall/pacmanUninstallScript.ts @@ -0,0 +1 @@ +export const script = 'pacman -Rs podman'; diff --git a/src/main/podman/uninstall/uninstallOnLinux.ts b/src/main/podman/uninstall/uninstallOnLinux.ts index af619fa74..b3eb0986d 100644 --- a/src/main/podman/uninstall/uninstallOnLinux.ts +++ b/src/main/podman/uninstall/uninstallOnLinux.ts @@ -8,7 +8,9 @@ import { } from '../../nn-auto-updater/findPackageManager.js'; import { script as aptUninstallScript } from './aptUninstallScript'; import { script as dnfUninstallScript } from './dnfUninstallScript'; +import { script as pacmanUninstallScript } from './pacmanUninstallScript'; import { script as yumUninstallScript } from './yumUninstallScript'; +import { script as zypperUninstallScript } from './zypperUninstallScript'; /** * Uninstall podman by removing binaries and various configuration files @@ -28,9 +30,14 @@ const uninstallOnLinux = async (): Promise => { uninstallScript = aptUninstallScript; } else if (pkgManager === 'dnf') { uninstallScript = dnfUninstallScript; + } else if (pkgManager === 'pacman') { + uninstallScript = pacmanUninstallScript; } else if (pkgManager === 'yum') { uninstallScript = yumUninstallScript; + } else if (pkgManager === 'zypper') { + uninstallScript = zypperUninstallScript; } + const { stdout, stderr } = await execAwait(uninstallScript, { log: true, sudo: true, diff --git a/src/main/podman/uninstall/zypperUninstallScript.ts b/src/main/podman/uninstall/zypperUninstallScript.ts new file mode 100644 index 000000000..c19858b2d --- /dev/null +++ b/src/main/podman/uninstall/zypperUninstallScript.ts @@ -0,0 +1,2 @@ +// biome-ignore lint/style/noUnusedTemplateLiteral: less diff for future changes +export const script = `zypper remove -y podman`;