Du bist nicht angemeldet.

#1 06.09.2020 23:13:24

pam_ux
Gast

Pacman: error: target not found

Hallo zusammen!

Ich schreibe aktuell ein Shellscript, um mir die vielen Installationen, die auf Dauer zusammenkommen etwas einfacher zu machen.
Bei der Installation von zusaetzlichen Paketen mittels:

PKGS=(

    # additional packages --------------------------------------------------

      'vim'       # Tab completion for Bash
      
)
for PKG in "${PKGS[@]}"; do
    echo "INSTALLING: ${PKG}"
    sudo pacman -S "$PKG" --noconfirm
done

Bekomme ich von pacman:

error: target not found:

Dabei habe ich davor das System mit "sudo pacman -Syu" auf den neuesten Stand gebracht.

Habt ihr vielleicht einen Tipp was ich falsch mache?


LG Marcel

#2 07.09.2020 00:08:58

yaiSho5o
Gast

Re: Pacman: error: target not found

Warum verwendest du im Aufruf

sudo pacman -S "$PKG" --noconfirm

die Variable nicht genau so wie zuvor in

echo "INSTALLING: ${PKG}"

?

Durch die Anführungszeichen wird die Variable zu einem Literal

#3 07.09.2020 00:32:10

Dirk
Moderator

Re: Pacman: error: target not found

pam_ux schrieb:

error: target not found:

Geht die Fehlermeldung noch weiter?

Offline

#4 07.09.2020 09:53:25

pam_ux
Gast

Re: Pacman: error: target not found

@yaiSho5o Du hast Recht, das habe ich uebersehen.
@Dirk Nein, es kommt lediglich in einer Zeile "error: target not found:"

Mit dem berarbeitetem Code

PKGS=(

    # TERMINAL UTILITIES --------------------------------------------------

      'vim'       # Tab completion for Bash
      
)

for PKG in "${PKGS[@]}"; do
    echo "INSTALLING: ${PKG}"
    sudo pacman -S ${PKG} --noconfirm
done

bekomme ich nun (wieder nur eine Zeile) diese Fehlermeldung:

error: no targets specified (use -h for help)

'Vim' dabei in doppelte Anfuehrungszeichen zu setzen hat das Ergebniss nicht veraendert.


LG Marcel

#5 07.09.2020 13:05:47

schard
Moderator

Re: Pacman: error: target not found

pam_ux schrieb:

@yaiSho5o Du hast Recht, das habe ich uebersehen.
@Dirk Nein, es kommt lediglich in einer Zeile "error: target not found:"

Mit dem berarbeitetem Code

PKGS=(

    # TERMINAL UTILITIES --------------------------------------------------

      'vim'       # Tab completion for Bash
      
)

for PKG in "${PKGS[@]}"; do
    echo "INSTALLING: ${PKG}"
    sudo pacman -S ${PKG} --noconfirm
done

bekomme ich nun (wieder nur eine Zeile) diese Fehlermeldung:

error: no targets specified (use -h for help)

'Vim' dabei in doppelte Anfuehrungszeichen zu setzen hat das Ergebniss nicht veraendert.


LG Marcel

Das ist in der Tat extrem merkrürdig, denn die erste Zeile der Ausgabe sollte mit

INSTALLING: 

beginnen.
Wie führst du das Skript aus?
Wie lautet das vollständige Kommando und die vollständige Ausgabe?
Bitte gib zusätzlich die Ausgabe von

$ env
$ echo -$IFS-

an.

Offline

#6 07.09.2020 15:38:28

pam_ux
Gast

Re: Pacman: error: target not found

Hallo Schard,

Der gesammte Abschnitts des Scripts ist wie folgt:

echo "-----------------------------------------------"
echo "--           Updating system           --"
echo "-----------------------------------------------"

sudo pacman -Syu

echo "-----------------------------------------------"
echo "--   Install additional packages    --"
echo "-----------------------------------------------"

PKGS=(

    # TERMINAL UTILITIES --------------------------------------------------

      "vim"      # Tab completion for Bash
      
)

for PKG in "${PKGS[@]}"; do
    echo "INSTALLING: ${PKG}"
    sudo pacman -S ${PKG} --noconfirm
done

echo "--------------------------------------"

Und der gesammte Output lautet:

-----------------------------------------------
--           Updating system           --
-----------------------------------------------
:: Synchronizing package databases...
 core is up to date
 extra is up to date
 community is up to date
:: Starting full system upgrade...
 there is nothing to do
-----------------------------------------------
--   Install additional packages    --
-----------------------------------------------
INSTALLING:
error: no targets specified (use -h for help)
--------------------------------------

"ifs"-output:

-
-

"env"-output:

HOME=/root
USER=root
SHELL=/usr/bin/zsh
TERM=linux
PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
MAIL=/var/spool/mail/root
LOGNAME=root
MOTD_SHOWN=pam
XDG_SESSION_ID=1
XDG_RUNTIME_DIR=/run/user/0
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus
XDG_SESSION_TYPE=tty
XDG_SESSION_CLASS=user
XDG_SEAT=seat0
XDG_VTNR=1
SHLVL=1
PWD=/root/aai
OLDPWD=/root
LANG=en_US.UTF-8
EDITOR=vim
PAGER=less
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
LESS_TERMCAP_mb=[01;31m
LESS_TERMCAP_md=[01;31m
LESS_TERMCAP_me=[0m
LESS_TERMCAP_se=[0m
LESS_TERMCAP_so=[01;44;33m
LESS_TERMCAP_ue=[0m
LESS_TERMCAP_us=[01;32m
COLORTERM=yes
LC_MESSAGES=
_=/usr/bin/env

Mein Vorgehen:

1.) Ich bringe die Repos auf den neuesten Stand und installiere git: "pacman -Syy git"
2.) Ich hole mir das Script mittels git
3.) Ich wechsle in den Ordner des Scripts: cd aai ("aai" steht für "automatic arch installation")
4.) Ich mache das Script ausführbar: chmod +x install.sh
5.) Ich führe es aus: ./install.sh

Nachdem das Script die erste Hälfte in dem ISO-Environment erledigt (z.B. Partitionierung, Fstab generieren und Installation von Basispaketen mittels pacstrap) steht die zweite Hälfte in folgender Syntax (EOF) um in dem gerade erstellten System ausgeführt zu werden (z.B Konfiguration des Bootloaders und Systems, und Installation weiterer Pakete mittels pacman):

arch-chroot /mnt /bin/bash <<EOF

...
...

echo "Setting user account"
sed -i 's/^# %wheel ALL=(ALL) ALL/%wheel ALL=(ALL) ALL/' /etc/sudoers
useradd -m -g users -G wheel $user
echo "$user:$user_password" | chpasswd

# Add sudo no password rights
sed -i 's/^# %wheel ALL=(ALL) NOPASSWD: ALL/%wheel ALL=(ALL) NOPASSWD: ALL/' /etc/sudoers

su $user

sudo pacman -Syu

echo "--------------------------------------"
echo "--   Install additional packages    --"
echo "--------------------------------------"

PKGS=(

    # TERMINAL UTILITIES --------------------------------------------------

      "vim"      # Tab completion for Bash
      
)

for PKG in "${PKGS[@]}"; do
    echo "INSTALLING: ${PKG}"
    sudo pacman -S ${PKG} --noconfirm
done

...
...

sudo sed -i 's/^%wheel ALL=(ALL) NOPASSWD: ALL/# %wheel ALL=(ALL) NOPASSWD: ALL/' /etc/sudoers
EOF

Gerade fällt mir auf, dass mein Script mit "#!/usr/bin/env bash" startet, wobei in der Arch-ISO scheinbar die zhs der Standard ist. Daran liegt es aber m.M.n nicht, da der Rest des Scriptes einwandfrei aufgeführt wird.


LG Marcel

#7 07.09.2020 15:56:01

schard
Moderator

Re: Pacman: error: target not found

Die zsh ist weitgehend zur bash kompatibel.
Ich kann dein Problem mit dem von dir geposteten Skript weder mit der bash, noch in der zsh nachvollziehen.
Ist es möglich dass du während mit dem Git-Klon eine veraltete Version des Skripts mit Bugs darin lädst?

Offline

#8 07.09.2020 17:33:06

wirr
Mitglied

Re: Pacman: error: target not found

Zeig mal die Ausgabe von:

$ bash -xv deinscript.sh

Offline

#9 07.09.2020 20:29:26

pam_ux
Gast

Re: Pacman: error: target not found

wirr schrieb:

Zeig mal die Ausgabe von:

$ bash -xv deinscript.sh

Das startet lediglich das Script.

@Schard Das ist ausgeschlossen, da ich mir das Script vorher immer mit cat anschaue. Ich bin mittlerweile davon überzeugt, dass dieses

arch-chroot /mnt /bin/bash <<EOF
...
EOF

nicht in der Lage ist solche Befehle über mehrere Zeilen hinweg auszuführen, da ich zum einen sehr wohl in der Lage bin ins installierte System zu chrooten, und dort ein Script mit folgendem Inhalt zu erstellen uns erfolgreich auszuführen:

PKGS=(

    # TERMINAL UTILITIES --------------------------------------------------

      "vim"      # Tab completion for Bash
      
)

for PKG in "${PKGS[@]}"; do
    echo "INSTALLING: ${PKG}"
    sudo pacman -S ${PKG} --noconfirm
done

Und zweitens kann ich auch "arch-chroot /mnt pacman -S git" erfolgreich ausführen, was mich Beides darauf schließen lässt, dass der Fehler mit diesem EOF Here Document zusammenhängt.

Ehrlich gesagt kenne ich mich mit diesem Befehl aber nicht weiter aus, und bin auch nicht in der Lage weiere (nützliche) Infos in diese Richtung zu finden.

Daher würde ich mich sehr freuen, wenn mir jemand, der sich damit besser auskennt erklärt wo es tatsächlich hakt?

Bis dahin werde ich das Problem wohl mit einem zweiten Script lösen, welches von dem ersten in die neue Umgebung kopiert und anschließend gestartet wird.


LG Marcel

#10 07.09.2020 23:29:55

wirr
Mitglied

Re: Pacman: error: target not found

`bash -xv` zeigt dir an, was passiert.

Wenn du auf der ersten Zeile "EOF" schreibst, funktioniert es:

# arch-chroot mnt /bin/bash -xv <<"EOF"
PKGS=(

    # TERMINAL UTILITIES --------------------------------------------------

      "vim"      # Tab completion for Bash

)

for PKG in "${PKGS[@]}"; do
    echo "INSTALLING: ${PKG}"
    pacman -S ${PKG} --noconfirm
done
EOF                    
PKGS=(

    # TERMINAL UTILITIES --------------------------------------------------

      "vim"      # Tab completion for Bash
      
)
+ PKGS=("vim")

for PKG in "${PKGS[@]}"; do
    echo "INSTALLING: ${PKG}"
    pacman -S ${PKG} --noconfirm
done
+ for PKG in "${PKGS[@]}"
+ echo 'INSTALLING: vim'
INSTALLING: vim
+ pacman -S vim --noconfirm
resolving dependencies...
looking for conflicting packages...
...

Sonst werden die Variablen vorher expandiert und sind darum leer:

# arch-chroot mnt /bin/bash -xv <<EOF
PKGS=(                                                                                             
    
    # TERMINAL UTILITIES --------------------------------------------------                        
      
      "vim"      # Tab completion for Bash
                                          
)     

for PKG in "${PKGS[@]}"; do  
    echo "INSTALLING: ${PKG}"   
    pacman -S ${PKG} --noconfirm
done                            
EOF                                                                                              
PKGS=(

    # TERMINAL UTILITIES --------------------------------------------------

      "vim"      # Tab completion for Bash
      
)
+ PKGS=("vim")

for PKG in ""; do
    echo "INSTALLING: "
    pacman -S  --noconfirm
done
+ for PKG in ""
+ echo 'INSTALLING: '
INSTALLING: 
+ pacman -S --noconfirm
error: no targets specified (use -h for help)

Offline

#11 08.09.2020 18:16:58

sanni
Mitglied

Re: Pacman: error: target not found

Meine Bash-Programmierkenntnisse sind nicht die Besten, aber mir fällt auf, dass im Start der Schleife die Variable 'PKGS' benutzt wird, während in der Schleife in der pacman-Zeile lediglich steht 'PKG'.
Liegt es vielleicht daran?

Offline

#12 08.09.2020 19:51:49

pam_ux
Gast

Re: Pacman: error: target not found

Vielen Dank wirr
Damit funktioniert es auch bei mir, du hast mir echt eine Menge Arbeit erspart!

Aktuell bedrückt mich allerdings noch etwas.

Das Script ist (stark vereinfacht) folgendermaßen aufgebaut:

#!/binbash

...
...

disk=sda
hostname=arch-pc

...
...

sgdisk -n 2:0:0 ${disk}

...
...

arch-chroot mnt /bin/bash -xv <<"EOF"

echo $hostname > /etc/hostname

EOF

Während Variablen, die auserhalb des chroots genutzt werden (z.B "disk" für  die Festplatte) einwandfrei funktionieren, sind genau diese Variablen für die Kommandos innerhalb des chroots nicht mehr verfuegbar (z.B "hostname" - in meinem Fall ist die Datei danach einfach leer).

Ist es möglich diese bereits vorhandenen Variablen, für den Code des chroots, zu implementieren?


LG Marcel

#13 08.09.2020 19:55:04

pam_ux
Gast

Re: Pacman: error: target not found

sanni schrieb:

Meine Bash-Programmierkenntnisse sind nicht die Besten, aber mir fällt auf, dass im Start der Schleife die Variable 'PKGS' benutzt wird, während in der Schleife in der pacman-Zeile lediglich steht 'PKG'.
Liegt es vielleicht daran?

Nein, das müsste stimmen. "PKGS" ist sozusagenen die Gruppe. Und wir sagen: Für Mitglieder der Gruppe PKGS (also die einzelnen "PKG"s) führe "pacman -S $PKG" aus.


LG Marcel

#14 09.09.2020 03:39:12

wirr
Mitglied

Re: Pacman: error: target not found

Du kannst die Variablen exportieren, dann gelten sie auch in der neu gestarteten shell.

Offline

Schnellantwort auf dieses Thema

Schreibe deinen Beitrag und versende ihn
Deine Antwort

Fußzeile des Forums