diff --git a/platypush/install/scripts/arch/PKGCMD b/platypush/install/scripts/arch/PKGCMD
index 6d32b41eb..eb711b620 100644
--- a/platypush/install/scripts/arch/PKGCMD
+++ b/platypush/install/scripts/arch/PKGCMD
@@ -1 +1 @@
-pacman -S --noconfirm
+pacman -S --noconfirm --needed
diff --git a/platypush/utils/manifest.py b/platypush/utils/manifest.py
index 0ab2ed800..f8aef8a37 100644
--- a/platypush/utils/manifest.py
+++ b/platypush/utils/manifest.py
@@ -55,6 +55,11 @@ class PackageManager:
 
     executable: str
     """ The executable name. """
+    default_os: str
+    """
+    The default distro whose configuration we should use if this package
+    manager is detected.
+    """
     install: Iterable[str] = field(default_factory=tuple)
     """ The install command, as a sequence of strings. """
     uninstall: Iterable[str] = field(default_factory=tuple)
@@ -70,18 +75,21 @@ class PackageManagers(Enum):
         executable='apk',
         install=('apk', 'add', '--update', '--no-interactive', '--no-cache'),
         uninstall=('apk', 'del', '--no-interactive'),
+        default_os='alpine',
     )
 
     APT = PackageManager(
         executable='apt',
         install=('apt', 'install', '-y'),
         uninstall=('apt', 'remove', '-y'),
+        default_os='debian',
     )
 
     PACMAN = PackageManager(
         executable='pacman',
-        install=('pacman', '-S', '--noconfirm'),
+        install=('pacman', '-S', '--noconfirm', '--needed'),
         uninstall=('pacman', '-R', '--noconfirm'),
+        default_os='arch',
     )
 
     @classmethod