Manjaro update - pacman (6.0.0-1) breaks dependency ‘pacman<5.3′ required by package-query

Mittwoch, 14. Juli, 2021

Der grafische Software-Manager wollte pacman nicht aktualisieren … und wegen jenes Konflikts alle möglichen Pakete auch nicht.

Dann aktualisere ich halt “pamac upgrade pacman” von Hand und schaue, was passiert.

axel@mypc~> pamac upgrade pacman
(...)
   vulkan-intel                      21.1.4-1 
(21.1.2-1)                  extra      2.3 MB
   vulkan-radeon                     21.1.4-1 
(21.1.2-1)                  extra      1.7 MB
   wireless-regdb                    2021.04.21-1 
(2020.11.20-1)              core       10.3 kB
Wird installiert (10):
   syndication 5.84.0-1                                              
extra 1.0 MB
   electron12 12.0.14-1                                             
community 50.7 MB
   layer-shell-qt 5.22.3-1                                              
extra 23.1 kB
   ksystemstats 5.22.3-1                                              
extra 162.9 kB
   pahole 1.21-1                                                extra 
262.9 kB
   nodejs-nopt 5.0.0-2                                               
community 13.4 kB
   libpamac                          11.0.1-3 (Ersetzt: 
pamac-common)     extra      818.4 kB
   kio-fuse 5.0.1-1                                               extra 
70.3 kB
   fakeroot 1.25.3-2                                              core
   bison 3.7.6-1                                               core
Zu erstellen (2):
   package-query                     1.12-1 (1.10-1)                    AUR
   zoom                              5.7.1-1 (5.6.7-1)                   AUR
Wird entfernt (1):
   pamac-common                      10.0.6-2 (Konflikt mit: libpamac)

Download-Größe gesamt: 2.3 GB
Gesamtgröße installiert: 269.3 MB
Gesamtgröße entfernt: 9.5 MB

Build-Dateien bearbeiten : [e]
Transaktion durchführen ? [e/j/N] j

Warning: installing pacman (6.0.0-1) breaks dependency 'pacman<5.3' 
required by package-query
Add package-query to remove
Fehler: Failed to prepare transaction:
could not satisfy dependencies:
- removing package-query breaks dependency 'package-query>=1.9' required 
by yaourt,
- if possible, remove yaourt and retry

Leider nein.

Beim Lesen von “installing pacman (6.0.0-1) breaks dependency ‘pacman<5.3' " dachte ich schon fast: oh, ein Henne-Ei-Problem?
Aber ich bin einfach dem letzten Rat gefolgt und habe yaourt entfernt.

axel@mypc~ [1]> pamac remove yaourt
Vorbereitung...
Abhängigkeiten werden überprüft...

Wird entfernt (1):
   yaourt  1.9-2

Gesamtgröße entfernt: 849.9 kB

Transaktion durchführen ? [j/N] j
Removing yaourt (1.9-2)... [1/1]
Vorgang erfolgreich abgeschlossen.

Und nun nochmal der Versuch eines Updates …

axel@mypc~> pamac upgrade pacman
...

… hurra, nun klappt es!

weiterführende Links:

  1. manjaro.org (en)

Linux: Kommando unter einem anderen User starten

Donnerstag, 8. Juli, 2021

Um die Frage des Titels zu beantworten, kommt man schnell auf ein … als root startet man

su - [USERNAME] -c [KOMMANDO]

Und wenn der User, unter dem ich das Kommando starten will, keine Shell hat? Tja, dann kommt eine Fehlermeldung der Art

This account is currently not available.

Wirklich sehr lange habe ich mir beholfen, dass ich dem User in der /etc/passwd eine Shell gegeben habe - das /usr/bin/nologin oder /bin/false wurde durch ein /bin/bash o.ä. ersetzt. Jaja, ganz generell fördern man [Kommando] oder [Kommando] –help hilfreiche Dinge zutage. Aber das ist völlig unnötig. Der “Trick” ist, dass man bei su mit dem Parameter -s eine Shell vorgibt, z.B. die /bin/sh.

su - [USERNAME] -c [KOMMANDO] -s /bin/bash

Um die Parameter wegzulassen und optisch zu vereinfachen, kann man auch eine kleine Funktion in sein Skript setzen:

# run a command as another posix user (even if it does not have a shell)
#
# example:
# runas www-data "/some/where/mysript.sh"
#
# param  string  username
# param  string  command to execute. Needs to be quoted.
# param  string  optional: shell (default: /bin/sh)
function runas(){
    local _user=$1
    local _cmd=$2
    local _shell=$3
    test -z "$_shell" && _shell=/bin/sh

    su $_user -s $_shell -c "$_cmd"
}

Dann kann man im Skript etwas kürzer schreiben:

runas [USERNAME] [KOMMANDO]

weiterführende Links:

  1. man7.org: Manpage für su