Costruzione automatica e installazione di pacchetti da AUR per Arch Linux all'interno di Docker con yaourt e> makepkg-4.2.0

Sto utilizzando Docker e Arch Linux all'interno del Docker-Container. Introducendo makepkg-4.2.0 il mio command di installazione con yaourt è stato rotto come descritto qui: https://github.com/archlinuxfr/yaourt/issues/67

Il problema è che yaourt dovrebbe essere eseguito come utente non root. Ma poiché yaourt vuole anche installare il pacchetto in each caso, dopo averlo costruito, è necessario un utente root o un utente che abbia il permesso di installare i pacchetti.

Quindi la mia domanda è come risolvere questo problema? Voglio installare un pacchetto da AUR all'interno del Docker, perché non esiste ancora un pacchetto ufficiale.

Finora uso Arch Linux, pacman e yaourt.

Così il Comando,

RUN yaourt -S --noconfirm aur/taskd 

che installa taskd, ha lavorato prima di makepkg-4.2.0:

Con la nuova versione di makepkg che costruisce il Docker non riesce con il seguente errore da yaourt:

 makepkg: invalid option '--asroot' 

Se cambio l'utente a un utente non radente e provo ad installare il pacchetto, ottengo un prompt dei comandi nella mia build automatizzata che chiede alla Root-Password di installare effettivamente il pacchetto.

 Password: su: Authentication information cannot be recovered Password: su: Authentication information cannot be recovered Password: su: Authentication information cannot be recovered The command [/bin/sh -c yaourt -S --noconfirm aur/taskd] returned a non-zero code: 1 

Senza inquinare a molte linee offtopic distribuite su due Dockerfiles, l'interessante porzione del Dockerfile sembra:

 FROM kaot/arch_linux_base:latest MAINTAINER Kaot RUN useradd --no-create-home --shell=/bin/false yaourt && usermod -L yaourt RUN yaourt -S --noconfirm aur/taskd ENTRYPOINT ["/controlcenter/controlcenter.sh"] CMD ["cc:start"] 

Se è stata trovata una soluzione che consente a yaourt di scaricare solo le informazioni su come creare il pacchetto, invocare il makepkg stesso, sia con un utente non radice e successivamente installare il pacchetto build con l'utente principale e il pacman. La porzione del Dockerfile sembra così

 RUN mkdir -p /tmp/Package/ && chown yaourt /tmp/Package USER yaourt RUN cd /tmp/Package && pwd && ls -al && yaourt --getpkgbuild aur/taskd && cd taskd && makepkg --pkg taskd USER root RUN pacman -U --noconfirm /tmp/Package/taskd/taskd-1.1.0-1-x86_64.pkg.tar.xz 

Con alcune variables, ulteriori miglioramenti potrebbero essere raggiunti, ma in principio questo funziona.