fix: fix Aur packages installation
This commit is contained in:
@ -52,13 +52,21 @@ def detect_active_user() -> str | None:
|
||||
|
||||
def _user_env(user: str) -> dict:
|
||||
pw = pwd.getpwnam(user)
|
||||
return {
|
||||
uid = pw.pw_uid
|
||||
env = {
|
||||
"HOME": pw.pw_dir,
|
||||
"USER": user,
|
||||
"LOGNAME": user,
|
||||
"XDG_RUNTIME_DIR": f"/run/user/{pw.pw_uid}",
|
||||
"XDG_RUNTIME_DIR": f"/run/user/{uid}",
|
||||
"PATH": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
|
||||
# Évite que sudo bloque sans TTY si le helper essaie d'appeler sudo pacman
|
||||
"SUDO_ASKPASS": "/bin/false",
|
||||
}
|
||||
# Socket DBUS de session (requis par paru/yay pour le build)
|
||||
dbus_socket = Path(f"/run/user/{uid}/bus")
|
||||
if dbus_socket.exists():
|
||||
env["DBUS_SESSION_BUS_ADDRESS"] = f"unix:path={dbus_socket}"
|
||||
return env
|
||||
|
||||
|
||||
def check_aur_updates(user: str, helper: str) -> list[Package]:
|
||||
|
||||
@ -265,6 +265,18 @@ class Daemon:
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
async def _aur_pending_loop(self):
|
||||
"""Réessaie l'installation AUR toutes les 5 min si des paquets sont en attente.
|
||||
|
||||
Nécessaire car le cycle AUR au démarrage échoue souvent (aucun utilisateur
|
||||
connecté), et le prochain cycle horaire est trop tardif.
|
||||
"""
|
||||
while self._running:
|
||||
await asyncio.sleep(300)
|
||||
if self._state.get("pending_aur"):
|
||||
logger.info("Paquets AUR en attente — nouvelle tentative d'installation")
|
||||
await self.aur_cycle()
|
||||
|
||||
async def run(self):
|
||||
if SOCKET_PATH.exists():
|
||||
SOCKET_PATH.unlink()
|
||||
@ -290,6 +302,8 @@ class Daemon:
|
||||
await asyncio.sleep(FIRST_RUN_DELAY_SECONDS)
|
||||
await self.update_cycle()
|
||||
|
||||
asyncio.create_task(self._aur_pending_loop())
|
||||
|
||||
while self._running:
|
||||
await asyncio.sleep(UPDATE_INTERVAL_SECONDS)
|
||||
await self.update_cycle()
|
||||
|
||||
Reference in New Issue
Block a user