Du bist nicht angemeldet.

#26 09.01.2018 19:56:43

tuxnix
Mitglied

Re: Zen Installer - Ein grafischer Installer für Arch Linux

@drcux
genau so etwas wäre es!

Habe mir auch schon einmal einen Entwurf für so ein Skript gemacht.
Hättest du Lust das zusammen auszuarbeiten?

Offline

#27 10.01.2018 18:32:52

drcux
Mitglied

Re: Zen Installer - Ein grafischer Installer für Arch Linux

tuxnix schrieb:

Hättest du Lust das zusammen auszuarbeiten?

Naja, ein Skript für den eigenen Gebrauch zu schreiben ist nicht schwer, aber sobald man "Auswahl" mit einbaut, wird es schwieriger.

Was erwartest du denn von dem Skript?

Schreiben können wir das gerne, bin ja immer froh wenn ich so etwas habe, will ja nicht einrosten.... wink

Offline

#28 10.01.2018 23:31:25

tuxnix
Mitglied

Re: Zen Installer - Ein grafischer Installer für Arch Linux

Zur Idee:
Es sollte ein Skript ohne Menuführung sein.
Man tätigt seine Angaben in einen Konfigurationsabschnitt im Skript ein.

Das Skript selbst kann dadurch sehr einfach gehalten werden.
Auch sieht man sofort was es macht und was nicht.
Es hält sich eng an die Anleitung für Einsteiger.

Der Vorteil wäre dabei, dass es transparent und flexibel bleibt.
Man kann es lesen wie die Wiki-Anleitung.

Ich hab vor kurzem so etwas mal ins Unreine geschrieben aber noch nichts davon getestet.
Wahrscheinlich ist die Hälfte des Codes noch fehlerhaft, aber den Grundgedanken sollte man schon mal erkennen können.

#!/bin/bash
# naad.sh version 0.01 (alpha) Dez. 2017 from tuxnix. 
# With no garanty at all.
#
#
#Start this script only when you know what it is doing.
#Edit "User Configuration Section" seriosly.
#This script follows arch-installation-guid https://wiki.archlinux.org/index.php/Installation_guide.
#
#
#You may need some terminal commands to get values for script configuration:

#(Lan=)
#ip link

#(grafikdriver=)
#lspci |grep VGA
                            
#(keyboard)
#(layout=)
#localectl list-x11-keymap-layouts |less
#(model=)
#localectl list-x11-keymap-models |less
#(variant=)
#localectl list-x11-keymap-variants |less
#(options=)
#localectl list-x11-keymap-options |less
#--------------------------------------------------------Configuration Section-------------------------------------------------------------

BIOS=true
EFI=false 

rootfs=arch
swap=swap

#Internetconnektion
Lan=enp0s7

#intel
Intel-ucode=false

#user_configuration
set_user=false        
root_passwd=123456
user=duda
user_passwd=123456
myhost=duda-pc

#lokales
localtime="Europe/Berlin"
LANG=de_DE
lang=de

#keyboard
layout=de
model=pc105
variant=nodeadkeys
options=caps:numlock

#Desktop
grafikdriver=xf86-video-nouveau            #choose: xf86-video-nouveau, ....
desktop=plasma                    #choose: LXDE, Xfce, LxQt, plasma or GNOME. Start desktop with 'startx'.

#Software applikatins: Edit packageselect (most language-packages will be loaded automaticaly - see end of script)
packageselect="firefox libreoffice-still thunderbird gimp vlc ttf-dejavu hunspell aspell hyphen"


#-----------------------------------------------------------------The Script--------------------------------------------------------------------------
# Make sure you are running as root
if (( `id -u` != 0 )); then { echo "Exit: Sorry, you must be root."; exit; } fi

echo "install basic system"
mount -L $rootfs /mnt
swapon -L $swap
pacstrap /mnt base base-devel

if [   Intel-ucode == true ] ; then
echo "get intel Microcode"
pacstrap /mnt intel-ucode
fi

echo "configer fstab"
genfstab -Lp /mnt > /mnt/etc/fstab
echo "arch-chroot"
arch-chroot /mnt/
echo "set hostname"
echo $myhost > /etc/hostname


#localization
echo "configure locale"
echo LANG=$LANG.UTF-8 > /etc/locale.conf
echo LANGUAGE=$LANG:$lang >> /etc/locale.conf
echo LC_COLLATE=$LANG.UTF-8 >> /etc/locale.conf
echo LC_TIME=$LANG.UTF-8 >> /etc/locale.conf
echo LC_MONETARY=$LANG.UTF-8 >> /etc/locale.conf
echo LC_NUMERIC=$LANG.UTF-8 >> /etc/locale.conf
echo LC_CTYPE=$LANG.UTF-8 >> /etc/locale.conf
echo LC_MESSAGES=$LANG.UTF-8 >> /etc/locale.conf
echo LC_PAPER=$LANG.UTF-8 >> /etc/locale.conf
echo LC_NAME=$LANG.UTF-8 >> /etc/locale.conf
echo LC_ADDRESS=$LANG.UTF-8 >> /etc/locale.conf
echo LC_TELEPHONE=$LANG.UTF-8 >> /etc/locale.conf
echo LC_MEASUREMENT=$LANG.UTF-8 >> /etc/locale.conf
echo LC_IDENTIFICATION=$LANG.UTF-8 >> /etc/locale.conf
echo LC_ALL= >> /etc/locale.conf

echo $LANG.UTF-8 UTF-8 >> /etc/locale.gen
echo $LANG ISO-8859-1 >> /etc/locale.gen
echo $LANG@euro ISO-8859-15 >> /etc/locale.gen
echo en_US.UTF-8 UTF-8 >> /etc/locale.gen

locale-gen

echo "configure vconsole"
echo KEYMAP=$lang-latin1 > /etc/vconsole.conf
echo FONT=lat9w-16 >> /etc/vconsole.conf
ln -sf /usr/share/zoneinfo/$localtime /etc/localtime

echo "configure keyboard"
localectl set-x11-keymap [$layout] [$model] [$variant] [$options]

echo "aktivate all servers on mirrorlist"
"s/#Server/Server/g" /etc/pacman.d/mirrorlist

echo "set Initramfs"
mkinitcpio -p linux

if [[ set_user == true ]] ; then
echo "set rootpasswd and user"
echo -e $rootpasswd'\n'$rootpasswd | (passwd --stdin root)
useradd -p `mkpasswd "$user_passwd"` -d /home/"$user" -m -g users -G wheel,audio,video,games,power -s /bin/bash "$user"
cp /etc/sudoers /etc/sudoers.bak
sed 's/#%wheel ALL=(ALL) ALL /%wheel ALL=(ALL) ALL_/g'` /etc/sudoers
fi

echo "get internet connection and get fresh packages"
dhcpcd $Lan
pacman-key --init
pacman-key --populate archlinux
pacman -Syyu

echo "install grub"
pacman -S grub
grub-mkconfig -o /boot/grub/grub.cfg
if [[ BIOS == true ]] ; then grub-install /dev/sda ; fi
if [[ EFI == true ]] ; then grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub ; fi

echo "install and enable acpid and dbus"
pacman -S acpid dbus
systemctl enable acpid.service
systemctl enable dbus

if [[ "x$grafikdriver" != "x" ]] ; then echo "install x11"
pacman -S xorg-server xorg-xinit
pacman -S $grafikdriver

############Achtung in diesem Abschnitt sollen es Userrechte sein!!!! (Dies muss noch geändert werden)
cp /etc/X11/xinit/xinitrc /home/$user/.xinitrc
sed 's/twm &/# twm &/g'` /home/$user/.xinitrc
sed 's/clock -geometry 50x50-1+1 &/# clock -geometry 50x50-1+1 &/g'` /home/$user/.xinitrc
sed 's/xterm -geometry/# xterm -geometry/g'` /home/$user/.xinitrc
fi

if [[ $desktop == GNOME ]] ; then echo "install $desktop desktop"
    sed 's/exec/# exec/g'` /home/$user/.xinitrc
    echo "exec gnome-session" >>  /home/$user/.xinitrc
    pacman -S mutter gnome-desktop gnome-session networkmanager gnome-themes-standard nm-connection-editor gnome-control-center gnome-shell #gnome
elif [[ $desktop == plasma ]] ; then echo "install $desktop desktop"
    sed 's/exec/# exec/g'` /home/$user/.xinitrc
    echo "exec startkde" >>  /home/$user/.xinitrc
    pacman -S kwin plasma-desktop plasma-wayland-session plasma-nm plasma-pa plasma-nm breeze #plasma-meta networkmanager
elif [[ $desktop == Xfce ]] ; then echo "install $desktop desktop"
    sed 's/exec/# exec/g'` /home/$user/.xinitrc
    echo "exec startxfce4" >>  /home/$user/.xinitrc
    pacman -S openbox  xfce4-session xfce4-panel human-icon-theme xfce4-terminal
elif [[ $desktop == LXDE ]] ; then echo "install $desktop desktop"
    sed 's/exec/# exec/g'` /home/$user/.xinitrc
    echo "exec startlxde" >>  /home/$user/.xinitrc
    pacman -S openbox lxsession lxpanel lxde-common lxde-icon-theme
elif [[ $desktop == LxQt ]] ; then echo "install $desktop desktop"
    sed 's/exec/# exec/g'` /home/$user/.xinitrc
    echo "exec startlxqt" >>  /home/$user/.xinitrc
    pacman -S openbox lxqt-session lxqt-pannel breeze-icons
fi

echo "install software selection"
pacman -S $packageselect

echo "install some language packages"
pacman -S  man-pages-$lang
installed_package='pacman -Qs vim' && if [[ $installed_package == *"vim"* ]] ; then pacman -S vim-spell-$lang ; fi
installed_package='pacman -Qs aspell' && if [[ $installed_package == *"aspell"* ]] ; then pacman -S aspell-$lang ; fi
installed_package='pacman -Qs gimp' && if [[ $installed_package == *"gimp"* ]] ; then pacman -S gimp-help-$lang ; fi
installed_package='pacman -Qs hunspell' && if [[ $installed_package == *"hunspell"* ]] ; then pacman -S hunspell-$lang ; fi
installed_package='pacman -Qs firefox' && if [[ $installed_package == *"firefox"* ]] ; then pacman -S firefox-i18n-$lang ; fi
installed_package='pacman -Qs libreoffice-still' && if [[ $installed_package == *"libreoffice-still"* ]] ; then pacman -S libreoffice-still-$lang ; fi
installed_package='pacman -Qs libreoffice-fresh' && if [[ $installed_package == *"libreoffice-fresh"* ]] ; then pacman -S libreoffice-fresh-$lang ; fi
installed_package='pacman -Qs thunderbird' && if [[ $installed_package == *"thunderbird"* ]] ; then pacman -S thunderbird-i18n-$lang ; fi
installed_package='pacman -Qs plasma-desktop' && if [[ $installed_package == *"plasma-desktop"* ]] ; then pacman -S kde-l10n-$lang ; fi
installed_package='pacman -Qs bluegriffon' && if [[ $installed_package == *"bluegriffon"* ]] ; then pacman -S bluegriffon-i18n-$lang ; fi
installed_package='pacman -Qs hyphen' && if [[ $installed_package == *"hyphen"* ]] ; then pacman -S hyphen-$lang ; fi
installed_package='pacman -Qs kompozer' && if [[ $installed_package == *"kompozer"* ]] ; then pacman -S kompozer-i18n-$lang ; fi

echo "un-chroot"; exit
umount /dev/$disk'1'

echo "this configureation may not be needed: /etc/hosts, /etc/resolv.conf, /etc/modules-load.d/module.conf, /etc/pacman.conf"
echo ""
echo "All done"
echo "Do a reboot now"
echo "Configure BIOS for booting from disk"

exit 0

Offline

#29 12.01.2018 19:59:09

drcux
Mitglied

Re: Zen Installer - Ein grafischer Installer für Arch Linux

tuxnix schrieb:

Zur Idee:
Es sollte ein Skript ohne Menuführung sein.
Man tätigt seine Angaben in einen Konfigurationsabschnitt im Skript ein.

OK

Ich hab vor kurzem so etwas mal ins Unreine geschrieben aber noch nichts davon getestet.
Wahrscheinlich ist die Hälfte des Codes noch fehlerhaft, aber den Grundgedanken sollte man schon mal erkennen können.

Ja, kann man erkennen, erschlägt einen aber ein wenig. Besser Schritt für Schritt sauber umsetzen und testen. Das mounten würde ich weglassen, und nur als Konfig "root=/mnt" mit aufnehmen.

Mal schauen ob ich morgen früh ein wenig Zeit finde.... wink

Offline

#30 12.01.2018 20:19:16

tuxnix
Mitglied

Re: Zen Installer - Ein grafischer Installer für Arch Linux

drcux schrieb:

Besser Schritt für Schritt sauber umsetzen und testen.

Das wird sicher das Beste sein.
Freue mich drauf hier was gemeinsam zu entwerfen.

Offline

#31 13.01.2018 07:27:28

ManfredB
Mitglied

Re: Zen Installer - Ein grafischer Installer für Arch Linux

In den arch-install-scripts gibt es doch das Script "genfstab".

Wie wäre es mit der Entwicklung eines Scripts namens "genlocale"?
Der Befehl könnte dann etwa so aussehen:
genlocale locale.conf-de /mnt > /mnt/etc/locale.conf
genlocale locale.gen-de /mnt > /mnt/etc/locale.gen
genlocale vconsole.conf-de /mnt > /mnt/etc/vconsole.conf

Der Gedanke dahinter ist nur, die in der Anleitung vorgesehenen Konfigurationen
etwas zu erleichtern. Denn beim Abschreiben der dortigen Inhalte können durchaus
leichte Fehler vorkommen, die ein Anfänger danach nicht mehr ohne weiteres lokalisieren kann.

Der Name der jeweiligen *.conf-Datei entspricht dem in der Anleitung beschriebenen.
Und damit die Sprache richtig eingestellt wird, das *-de dahinter, was durch jede andere Sprache ersetzt werden können sollte.

Man müßte nur an das Script genfstab herankommen. Ich habe noch nicht herausgefunden,
wie genau die arch-install-scripts aufgebaut sind.

Was meint ihr dazu?

Gruß
Manfred

Offline

#32 13.01.2018 07:35:43

ManfredB
Mitglied

Re: Zen Installer - Ein grafischer Installer für Arch Linux

Zu den arch-install-scripts gehören
arch-chroot
genfstab
pacstrap

Alle drei sind sehr umfangreich. Ich kenne mich mit solchen Scripts nicht gut genug aus,
um selbst ans Werk gehen zu können, aber die Idee sollte Anreiz sein....

Gruß
Manfred

Beitrag geändert von ManfredB (13.01.2018 08:23:40)

Offline

#33 13.01.2018 08:27:10

ManfredB
Mitglied

Re: Zen Installer - Ein grafischer Installer für Arch Linux

Eine Alternative könnte auch sein:

genlocale-de > /mnt/etc/

genlocale würde alle 3 Scripts intern produzieren und dann nacheinander nach /mnt/etc/ kopieren bzw. einrichten.

Möglicherweise müßte die Endung *-de noch genauer sein: *.de_DE, denn für de gibt es in der locale.gen mehrere verschiedene Ausgaben.
Gruß
Manfred

Offline

#34 13.01.2018 17:40:06

tuxnix
Mitglied

Re: Zen Installer - Ein grafischer Installer für Arch Linux

@ManfredB

Vom Prinzip her ist es auch genau so gedacht. smile
Du kennst auch alle benötigten Befehle aus der Anleitung für Ensteiger

Wenn dort steht:

echo LANG=de_DE.UTF-8 > /etc/locale.conf
echo LANGUAGE=de_DE >> /etc/locale.conf

Ersetzt man das 'de_DE' durch eine Variable. Die nenne ich mal sinniger Weise 'LANG'.
Das kleine Skript dazu sähe dann so aus:

#!/bin/bash

LANG=en_US        #Kommentar: Setze hier deinen Ländercode ein. Z.B. de_DE für Deutschland oder en_US für die USA. 

echo LANG=$LANG.UTF-8 > /etc/locale.conf
echo LANGUAGE=$LANG >> /etc/locale.conf

Beim Ausführen des Skripts werden die zwei Befehlszeilen automatisch ausgeführt, wobei $LANG jeweils durch den zugewiesenen Wert von 'LANG' also hier im Beispiel 'en_US' ersetzt wird.
Ich denke mal, dass wir in etwa auch so anfangen werden. Ich warte aber auch noch gerne damit bis drcux etwas Zeit hat sich der Sache widmen zu können.
Dann können wir das Schritt für Schritt aufbauen.

Edit:
Im Thread #28 hab ich noch einige Ideen mehr dazu skizziert. Allerdings ist es besser klein anzufangen und alles Zeile für Zeile durch zu testen. Der Teufel steckt bekanntlich im Detail.
Auch gehört ein wenig Forschung Arbeit dazu. Schließlich möchte man auch exakt wissen, wie die Einträge in der Datei /etc/locale.conf vereinbart sind. locale.conf

Beitrag geändert von tuxnix (13.01.2018 18:48:26)

Offline

#35 14.01.2018 08:43:09

ManfredB
Mitglied

Re: Zen Installer - Ein grafischer Installer für Arch Linux

Der zeninstaller hat ja ein einfaches System für die Erstellung der locale-Dateien.

Ich habe mir inzwischen auf meiner Daten-Partition ein Verzeichnis eingerichtet mit dem Namen:
ARCHlocale
Darin liegen die eingerichteten Dateien
locale.conf
locale.gen
vconsole.conf

Es ist nun egal, ob ich mit der archinstall-iso oder aus einer bestehenden Installatieo heraus ArchLinux neu installiere.
Ich brauche nur das Verzeichnis öffnen und die drei Dateien herüberkopieren.

Das ist natürlich keine Hilfe für Leute, die ArchLinux ganz neu installieren, zB neben Windows10.

Dabei kam mir aber die Idee: wie aufwändig ist es wohl, Pakete mit den jeweiligen Sprachen
in die repos aufzunehmen. Wahrscheinlich nicht machbar....

Gruß
Manfred

Offline

#36 14.01.2018 10:43:54

tuxnix
Mitglied

Re: Zen Installer - Ein grafischer Installer für Arch Linux

ManfredB schrieb:

Ich brauche nur das Verzeichnis öffnen und die drei Dateien herüber kopieren.

Klar, das klappt. Ist auch interessant zu erfahren wie sich jeder so seine Tricks erarbeitet.

Das ist natürlich keine Hilfe für Leute, die Arch Linux ganz neu installieren,

Ja

Dabei kam mir aber die Idee: wie aufwändig ist es wohl, Pakete mit den jeweiligen Sprachen
in die repos aufzunehmen. Wahrscheinlich nicht machbar....

Gerade das wollte ich dir mit dem kleinen Beispiel oben vermitteln. Es ist gar nicht nötig dutzende Dateien für den gleichen Zweck zu haben.
Jeder Benutzer kann seinen eigenen Ländercode einsetzen und das Skript macht den Rest.
Deshalb heißt die Variable ja auch Variable.
Der Befehl 'echo LANG=de_DE.UTF-8 > /etc/locale.conf' (und die daran folgenden Zeilen) machen im Prinzip dann nichts anderes als du, wenn du die Datei rüber kopierst.
'echo LANG=de_DE.UTF-8' bedeutet: Mache die Ausgabe "LANG=de_DE.UTF-8" und das '> /etc/locale.conf' bedeutet schreibe diese Ausgabe in die Datei /etc/locale.conf.

Man fängt meistens mit dem Skript-Coden an, wenn es Aufgaben gibt die man immer wieder erledigen muss und möchte, dass der Computer dies für einen erledigt.
Im Grunde ist ein Skript nichts anderes als ein Arbeitszettel den der PC selbstständig ausführen kann.
Ich hoffe ich habe bei dir das Interesse daran etwas befördert.
Aber die Grundkenntnisse solltest du dir selbst erarbeiten. Es gibt sehr schöne Anleitungen dazu im Netz.

Der Zeninstaller hat ja ein einfaches System für die Erstellung der locale-Dateien.

Es gibt ja keinen Mangel an Installern die das können. Und hier auf  https://wiki.archlinux.de/title/Arch-Derivate sind sie alle aufgelistet.
Was sie alle nicht können hat Werner sehr schön in einem Satz auf den Punkt gebracht.
Sie erledigen die Installation aber hinterher weiß keiner was der Installer denn eigentlich alles getan hat.

Ein Skript, das man mit 5-6 Variablen an seine Bedürfnisse anpasst hat aber den Vorteil gegenüber grafischen oder halbgrafischen Lösungen, dass man es lesen kann wie ein Wiki-Artikel.
Man hätte also sowohl einen Spickzettel als auch die Möglichkeit es automatisch ausführen zu lassen in einem.
Natürlich ist das keine Lösung für den blutigen Laien. Aber für den gibt es ausreichend andere Möglichkeiten (Manjaro). Es wäre aber für viele Arch Nutzer eine Erleichterung und Zeitersparnis.
Ich z.B. muss auch noch beim 10 mal Arch aufsetzen immer noch in die Wiki schauen, weil ich mir nicht alles merken kann. Da wäre so ein automatischer Spickzettel schon eine Erleichterung.
Soweit meine Motivation so ein Skript zu erstellen.

Beitrag geändert von tuxnix (14.01.2018 12:10:30)

Offline

#37 14.01.2018 13:39:16

ManfredB
Mitglied

Re: Zen Installer - Ein grafischer Installer für Arch Linux

Da gebe ich dir in allem recht.

Ich habe vor Jahren auch mal scripts geschrieben, um Sachen zu testen.
Doch das ist so lange her, daß ich heute wieder bei Null anfangen müßte.

Vor allem ein solches Script, wie es euch hier vorschwebt mit der Möglichkeit,
einen Wunsch einzugeben, und das Script erledigt diese Aufgabe.

Mir fällt gerade ein, daß es zB bei Gentoo das Programm eselect gibt,
zB eselect locale list und dann eselect locale set
Wenn ich eingebe: eselect locale list
wird mir eine lange Liste von Sprachen angezeigt,
aus denen ich die für mich passende auswählen kann.
Diese Sprachen haben Nummern, zb 6 für de-DE oder 9 für de_DE.utf8
Setze ich nun diese Sprache fest:
eselect locale set 6 bzw 9
muß ich anschließend
env-update && source /etc/profile
eingeben, damit ab sofort diese Sprache genutzt wird.

Leider wird hier keine locale.conf, locale.gen oder vconsole.conf
zubereitet.

Aber so könnte es auch laufen, wenn man das ändert.

Gruß
Manfred

Mit eselect locale list wäre es bei ArchLinux vielleicht auch machbar.

Offline

#38 14.01.2018 13:46:24

ManfredB
Mitglied

Re: Zen Installer - Ein grafischer Installer für Arch Linux

So, ich habe dieses eselect-Programm von gentoo eben mal unter ArchLinux installiert.

Dann habe ich eselect locale list eingegeben und folgendes Ergebnis bekommen:

eselect locale list
Available targets for the LANG variable:
  [1]   C
  [2]   de_DE
  [3]   de_DE@euro
  [4]   de_DE.iso88591
  [5]   de_DE.iso885915@euro
  [6]   de_DE.utf8
  [7]   deutsch
  [8]   german
  [9]   POSIX
  [ ]   (free form)

Also zeigt es auch in ArchLinux an, was ich schon beschrieben habe.

Gruß
Manfred

Beitrag geändert von ManfredB (14.01.2018 13:46:51)

Offline

#39 14.01.2018 14:22:11

tuxnix
Mitglied

Re: Zen Installer - Ein grafischer Installer für Arch Linux

@ManfredB
Dazu braust du aber kein gentoo Skript zu. Arch hat das doch alles.

Gib mal: 'cat /etc/locale.gen' auf deiner Konsole ein.

Offline

#40 14.01.2018 21:25:12

drcux
Mitglied

Re: Zen Installer - Ein grafischer Installer für Arch Linux

Ich habe mal für den Anfang etwas gebastelt, so stell ich mir das vor:

#!/bin/bash

# start as root?
if [ $UID -ne 0 ]
    then sudo bash -c "$0 $*"; exit $?
fi

# stop in a clean way
trap cleanupandexit 0 1 2 3 15

# print help message 
usage()
{
cat << EOF 
usage: $0 options

With genlocale you can create needed locale files for arch linux.

 -h             Helpmessage
 -l     LANG    Choose language
 -r     DIR     Root file system
 -x             With XOrg

Example:

genlocale -l de_DE -r /mnt -x

EOF
}

cleanupandexit()
{
echo $message
exit $rc
}

# optargs
while getopts "l:r:xh" OPTION
do
    case $OPTION in
        h)
            usage
            exit 1
            ;;
        l)
            lang=$OPTARG
            ;;
        r)
            rootfs=$OPTARG
            ;;
        x)
            xorg=1
            ;;
    esac
done

# check $rootfs

if [ ! -e "$rootfs/etc/locale.gen" ]
    then
        rc=1; message="Rootfs $rootfs isn't a install directory!"; cleanupandexit
fi

# check $lang

grep "#$lang" "$rootfs/etc/locale.gen" 1> /dev/null
if [ $? != "0" ]
    then
        rc=1; message="Language $lang doesn't exist!"; cleanupandexit
fi

# edit locale.gen

sed -ie "s/#$lang/$lang/g" "$rootfs/etc/locale.gen"


# #### test ####
echo $lang $rootfs $xorg
rc=0; message=OK; cleanupandexit

Beitrag geändert von drcux (14.01.2018 21:28:41)

Offline

#41 14.01.2018 23:04:14

tuxnix
Mitglied

Re: Zen Installer - Ein grafischer Installer für Arch Linux

Alles verstehe ich noch nicht ganz. Aber da muss ich wohl noch dazu lehnen. smile
Ich schau mir erst mal alles an und antworte dir dann konkret.
Mit welchem editor arbeitest du? Kannst du damit auch Dateien vergleichen?
Dann wird es einfacher für uns zu kommunizieren.

P.S.: Ist eine gute Wahl mit der locale.gen anzufangen.

Beitrag geändert von tuxnix (14.01.2018 23:07:18)

Offline

#42 15.01.2018 09:05:32

ManfredB
Mitglied

Re: Zen Installer - Ein grafischer Installer für Arch Linux

Hallo drcux,

wie sollte dieses Script denn gespeichert werden?
genlocale.sh
vielleicht?
Und dann starten mit
sh genlocale.sh
?

Gru0
Manfred

Offline

#43 15.01.2018 09:12:56

tuxnix
Mitglied

Re: Zen Installer - Ein grafischer Installer für Arch Linux

Ich hatte mir das etwas anders  vorgestellt aber...
Klasse, super was du da entworfen hast.

Hatte anfangs Schwierigkeiten damit was du mit genlocal meintest.
Irgendwie hat mich das irritiert. (liegt wohl daran dass es eine local.gen gibt)
Ich hab das dann "verbessert" in test.sh  und erst später kappiert, dass du mit genlocal skript damit benannt hast.

Jedenfalls test.sh läuft einwandfrei.
./test.sh -l de_DE
Habe einiges editiert. Stielfragen hauptsächlich und das Skript etwas weiterentwickelt.
Kommentare in Deutsch sind für dich, und können auch gelöscht werden wenn damit alles o.K. ist.
Die englischen sollten stehen bleiben wenn sie sprachlich passabel sind.
Habe alles einfach frech so gemacht wie ich es dachte.
Denke es ist gut wenn jeder von uns das tut was er am besten findet, der code spricht ja von allein und so kommen wir am besten in die Arbeit.
Wenn was nicht passend ist, muss man sich  halt beschweren.

Habe ein 'sudo pacman -S shellcheck' getätigt und damit das skript auf mögliche Fehler getestet. 'shellcheck test.sh'.
Den "Fehler" in Zeile 59 bekomme ich nicht weg. Vielleicht spinnt hier aber auch nur das Programm shellcheck.
Hier gibt es einen Artikel über das Prog: linuxundich.de

Macht jetzt richtig Spaß auf der Konsole zuzusehen wie die locales sich von allein konfigurieren.
Also, du hast sehr gut gebastel, hoffe dass ich auch ein wenig hinbekommen habe:

#!/bin/bash

# start as root?
if [ $UID -ne 0 ];  then
    sudo bash -c "$0 $*"; exit $?
fi

# stop in a clean way
trap cleanupandexit 0 1 2 3 15

# print help message 
usage()
{
cat << EOF
test.sh  configures locale files for arch linux

usage: $0 <option> <value>
 -l  <la_CO>   set language_COUNTRY code. Example: 'fr_CA' for French in Canada
 -r  <DIR>     Root file system
 -x            With XOrg
 -h            shows this help

Examples:
./test.sh -l en_GB
#Tip: To search for language_COUNTRY codes do 'cat /etc/locale.gen' on terminal.

./test.sh -l de_DE -r /mnt -x

EOF
}

cleanupandexit()
{
echo "$message"
exit 0
}

# optargs
while getopts "l:r:x:h" OPTION
do
    case $OPTION in
        l)  LANG=$OPTARG ;;
        r)  rootfs=$OPTARG ;;
        x) xorg=1 ;;
        h) usage;  exit 1 ;;
        *) echo "usage: $0 [-v] [-r]" >&2;  exit 1 ;; #ergänzt. Shellcheck sagt ansonsten: SC2181
    esac
done

# check $rootfs
if [ ! -e "$rootfs/etc/locale.gen" ]; then
    rc=1; message="Rootfs $rootfs isn't a install directory!" ; cleanupandexit
fi

# reconfigure /etc/locale.gen. # Ist nötig sonst läuft das Skript nicht wenn locale.gen schon einmal zuvor konfiguriert wurde.
sed -ie "/#/!s/^/#/" "$rootfs/etc/locale.gen"  # Fügt # am Anfang jeder Zeile ein, außer es gibt schon eines.

# check $LANG
grep "#$LANG" "$rootfs/etc/locale.gen" 1> /dev/null
if [ $? != "0" ];  then #shellcheck hat hier Probleme und zeigt mehere Fehlercodes.SC1009 SC1073 SC1072
        rc=1; message="Language $lang doesn't exist!"; cleanupandexit
fi

#set lang
lang="${LANG%_*}"

# edit /etc/locale.conf
echo ""
echo "Edit $rootfs/etc/locale.conf..."  # Mit dem $rootsfs hab ich mich mal angepasst. Schauen wir später mal ob wir es überhaubt brauchen werden.
echo "LANG=$LANG.UTF-8" > "$rootfs/etc/locale.conf"
echo "LANGUAGE="$lang":en" >> "$rootfs/etc/locale.conf"    # Def. best and second best language. #siehe: https://www.gnu.org/savannah-checkouts/gnu/gettext/manual/html_node/The-LANGUAGE-variable.html
#echo "LC_COLLATE=C" >> "$rootfs/etc/locale.conf"                # optional: Sorts first little than big letters.
echo "LC_TIME=$LANG.UTF-8" >> "$rootfs/etc/locale.conf"
echo "LC_PAPER=$LANG.UTF-8" >> "$rootfs/etc/locale.conf"
echo "LC_MEASUREMENT=$LANG.UTF-8" >> "$rootfs/etc/locale.conf"
echo "LC_MONETARY=$LANG.UTF-8" >> "$rootfs/etc/locale.conf"
echo "LC_NUMERIC=$LANG.UTF-8" >> "$rootfs/etc/locale.conf"
echo "LC_CTYPE=$LANG.UTF-8" >> "$rootfs/etc/locale.conf"
echo "LC_MESSAGES=$LANG.UTF-8" >> "$rootfs/etc/locale.conf"
echo "LC_NAME=$LANG.UTF-8" >> "$rootfs/etc/locale.conf"
echo "LC_ADDRESS=$LANG.UTF-8" >> "$rootfs/etc/locale.conf"
echo "LC_TELEPHONE=$LANG.UTF-8" >> "$rootfs/etc/locale.conf"
echo "LC_IDENTIFICATION=$LANG.UTF-8" >> "$rootfs/etc/locale.conf"
echo "LC_ALL=" >> "$rootfs/etc/locale.conf"
cat "$rootfs/etc/locale.conf"
echo ""

# edit /etc/locale.gen
sed -ie "s/#$LANG/$LANG/" "$rootfs/etc/locale.gen" # ohne g ersetzt nur das 1. Vorkommen von # pro Zeile
sed -ie "s/#en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/" "$rootfs/etc/locale.gen" #Empfohlen siehe AfE (Anleitung für Einsteiger)
locale-gen
echo ""

# #### test ####
echo "$LANG" "$rootfs" "$xorg"
rc=0; message=OK; cleanupandexit

Wenn du magst schau bitte mal auf die Seite The-LANGUAGE-variable
Wenn ich das richtig verstanden habe, dann muss es z.B.: LANGUAGE=de:en dort heißen und definiert eine Haupt und eine Ersatzsprache falls eine Übersetzung nicht vorhanden ist.
Wenn das stimmt müsste man die Anleitung für Einsteiger in der Arch-Wiki entsprchend anpassen. Dort steht das ein wenig missverständlich.

Update: Kleine Skriptänderung um 16:25

Beitrag geändert von tuxnix (15.01.2018 16:25:52)

Offline

#44 15.01.2018 15:40:33

ManfredB
Mitglied

Re: Zen Installer - Ein grafischer Installer für Arch Linux

Ich habe das Script eben getestet.

Wenn ich den Befehl so eingebe, kommt nur:
keine Berechtigung.

Führe ich es so aus:
sh test.sh -l de_DE
sehe ich auch die Entwicklung der locale.conf.

Super gemacht - großes Lob!

Gruß
Manfred

Offline

#45 15.01.2018 18:58:58

tuxnix
Mitglied

Re: Zen Installer - Ein grafischer Installer für Arch Linux

@ManfredB dank dir für's Lob.

Fehler behoben. # check $LANG... läuft jetzt sauber.

#!/bin/bash

# start as root?
if [ $UID -ne 0 ];  then
    sudo bash -c "$0 $*"; exit $?
fi

# stop in a clean way
trap cleanupandexit 0 1 2 3 15

# print help message 
usage()
{
cat << EOF
test.sh  configures locale files for arch linux

usage: $0 <option> <value>
 -l  <la_CO>   set language_COUNTRY code. For Example: 'fr_CA' for French in Canada
 -r  <DIR>     Root file system
 -x            With XOrg
 -h            shows this help

Examples:
./test.sh -l en_GB
#Tip: To search for language_COUNTRY codes do 'cat /etc/locale.gen' on terminal.

./test.sh -l de_DE -r /mnt -x

EOF
}

cleanupandexit()
{
echo "$message"
exit 0
}

# optargs
while getopts "l:r:x:h" OPTION; do
    case $OPTION in
        l)  LANG=$OPTARG ;;
        r)  rootfs=$OPTARG ;;
        x) xorg=1 ;;
        h) usage;  exit 1 ;;
        *) echo "usage: $0 [-v] [-r]" >&2;  exit 1 ;; #ergänzt. Shellcheck sagt ansonsten: SC2181
    esac
done

# check $rootfs
if [ ! -e "$rootfs/etc/locale.gen" ]; then
    rc=1; message="Rootfs $rootfs isn't a install directory!" ; cleanupandexit
fi

# reconfigure /etc/locale.gen. # Ist nötig sonst läuft das Skript nicht wenn locale.gen schon einmal zuvor konfiguriert wurde.
sed -ie "/#/!s/^/#/" "$rootfs/etc/locale.gen"  # Fügt # am Anfang jeder Zeile ein, außer es gibt schon eines.

# check $LANG
if ( ! grep -e "$LANG" "$rootfs/etc/locale.gen" 1> /dev/null ); then #so klappte es.
    message="Language $LANG doesn't exist!"; cleanupandexit
fi

#set lang
lang="${LANG%_*}"

# edit /etc/locale.conf
echo ""
echo "Edit $rootfs/etc/locale.conf..."  # Mit dem $rootsfs hab ich mich mal angepasst. Schauen wir später mal ob wir es überhaubt brauchen werden.
echo "LANG=$LANG.UTF-8" > "$rootfs/etc/locale.conf"
echo "LANGUAGE=$lang:en" >> "$rootfs/etc/locale.conf"    # Def. best and second best language.
#echo "LC_COLLATE=C" >> "$rootfs/etc/locale.conf"                # optional: Sorts first little than big letters.
echo "LC_TIME=$LANG.UTF-8" >> "$rootfs/etc/locale.conf"
echo "LC_PAPER=$LANG.UTF-8" >> "$rootfs/etc/locale.conf"
echo "LC_MEASUREMENT=$LANG.UTF-8" >> "$rootfs/etc/locale.conf"
echo "LC_MONETARY=$LANG.UTF-8" >> "$rootfs/etc/locale.conf"
echo "LC_NUMERIC=$LANG.UTF-8" >> "$rootfs/etc/locale.conf"
echo "LC_CTYPE=$LANG.UTF-8" >> "$rootfs/etc/locale.conf"
echo "LC_MESSAGES=$LANG.UTF-8" >> "$rootfs/etc/locale.conf"
echo "LC_NAME=$LANG.UTF-8" >> "$rootfs/etc/locale.conf"
echo "LC_ADDRESS=$LANG.UTF-8" >> "$rootfs/etc/locale.conf"
echo "LC_TELEPHONE=$LANG.UTF-8" >> "$rootfs/etc/locale.conf"
echo "LC_IDENTIFICATION=$LANG.UTF-8" >> "$rootfs/etc/locale.conf"
echo "LC_ALL=" >> "$rootfs/etc/locale.conf"
cat "$rootfs/etc/locale.conf"
echo "...done"
echo ""

# edit /etc/locale.gen
sed -ie "s/#$LANG/$LANG/" "$rootfs/etc/locale.gen" # ohne g ersetzt nur das 1. Vorkommen von # pro Zeile
sed -ie "s/#en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/" "$rootfs/etc/locale.gen" #Empfohlen siehe AfE (Anleitung für Einsteiger)
locale-gen #AfE
echo ""

# #### test ####
echo "$LANG" "$rootfs" "$xorg"
message=OK; cleanupandexit

Offline

#46 15.01.2018 19:30:27

drcux
Mitglied

Re: Zen Installer - Ein grafischer Installer für Arch Linux

1. Memo an mich selber: "Bitte mehr mit GIT beschäftigen..." wink

2. Kleine Fixes, testet nen paar Variablen

3. Mein "grep" hast du ja wieder eingebaut....

4. Lass locale.conf erst mal weg bis locale.gen abgearbeitet ist

5. Bei den getopts (*) nur das Nötigste

https://github.com/drcux/allh/blob/master/genlocale

Beitrag geändert von drcux (15.01.2018 19:43:18)

Offline

#47 15.01.2018 19:38:43

drcux
Mitglied

Re: Zen Installer - Ein grafischer Installer für Arch Linux

6.

echo "LANG=$LANG.UTF-8" > "$rootfs/etc/locale.conf"
echo "LANGUAGE="$lang":en" >> "$rootfs/etc/locale.conf"
echo und noch ganz viel Kram....

Schau dir mal den Teil mit "usage" an, "cat << EOF ........ > locale.conf" ist die bessere Wahl....

Offline

#48 16.01.2018 14:14:29

tuxnix
Mitglied

Re: Zen Installer - Ein grafischer Installer für Arch Linux

Huch was soll das denn auf Github.
Dachte wir entwickel hier.

Habe die Abteilung # optargs mal bearbeitet.
Die noch nicht weiter implementierten Optionen habe ich weggelassen.
Die können wieder dazu wenn sie gebraucht werden.

Die Angabe von keinen oder falschen Optionen und fehlenden Argumenten wird nun Aufgefangen.
Habe die Variable LANG ersetzt . Sie ist schon vom System belegt und eignet sich daher nicht für eine Prüfung ob sie belegt ist.
Die einzigen Falscheingaben die noch durchgelassen werden sind z.B.: test.sh -l g . Das heißt wenn jemand als Argument eine Buchstabenfolge wählt, die in der locale.gen vorhanden ist,

# edit /etc/locale.conf ist jetzt wie gewünscht.
Jo, ist vielleicht besser so.

#!/bin/bash

# start as root?
if [ $UID -ne 0 ];  then
    sudo bash -c "$0 $*"; exit $?
fi

# stop in a clean way
trap cleanupandexit 0 1 2 3 15

# print help message 
usage()
{
cat << EOF

test.sh  configures locale files for arch linux

usage: $0 <option> <argument>
 -l  <ll_CC>   set language_COUNTRY code. <e.g.> 'fr_CA'.
 -r  <DIR>     Root file system  - not implemented yet.
 -x            With XOrg - not implemented yet .
 -h            Display this help message.

Examples:
./test.sh -l en_GB

Tip: To search for language_COUNTRY codes do 'cat /etc/locale.gen' on terminal.

EOF
}

#./test.sh -l de_DE -r /mnt -x

cleanupandexit()
{
echo "$message"
exit 0
}

# optargs
while getopts ":l:h" OPTION; do
  case $OPTION in
    h ) usage; exit 1 ;;
    l )  ll_CC=$OPTARG ;;
    \? )  usage; exit 1 ;;
    : )  echo "Option -$OPTARG requires an argument." && usage >&2; exit 1 ;;
  esac
done

if [ $ll_CC"x" == "x" ]; then
    rc=1; message="You need to choose an option!" ; cleanupandexit
fi
# optargs
#while getopts "l:r:xh" OPTION; do
#    case $OPTION in
#        l)  ll_CC=$OPTARG ;;
#        r)  rootfs=$OPTARG ;;
#        x) xorg=1 ;;
#       h) usage;  exit 1 ;;
#        *) echo "usage: $0 [-v] [-r]" >&2;  exit 1 ;;
#    esac
#done

# check $rootfs
if [ ! -e "$rootfs/etc/locale.gen" ]; then
    rc=1; message="Rootfs $rootfs isn't a install directory!" ; cleanupandexit
fi

# reconfigure /etc/locale.gen.
sed -ie "/#/!s/^/#/" "$rootfs/etc/locale.gen"

# check $ll_CC
if ( ! grep -e "$ll_CC" "$rootfs/etc/locale.gen" 1> /dev/null ); then
    rc=1; message="Language $ll_CC doesn't exist!"; cleanupandexit
fi

#set lang
lang="${ll_CC%_*}"

# edit /etc/locale.conf
echo ""
echo "Edit $rootfs/etc/locale.conf..."
cat > "$rootfs/etc/locale.conf" << EOF
ll_CC=$ll_CC.UTF-8
ll_CCUAGE=$lang:en
#LC_COLLATE=C
LC_TIME=$ll_CC.UTF-8
LC_PAPER=$ll_CC.UTF-8
LC_MEASUREMENT=$ll_CC.UTF-8
LC_MONETARY=$ll_CC.UTF-8
LC_NUMERIC=$ll_CC.UTF-8
LC_CTYPE=$ll_CC.UTF-8
LC_MESSAGES=$ll_CC.UTF-8
LC_NAME=$ll_CC.UTF-8
LC_ADDRESS=$ll_CC.UTF-8
LC_TELEPHONE=$ll_CC.UTF-8
LC_IDENTIFICATION=$ll_CC.UTF-8
LC_ALL=
EOF
cat  "$rootfs/etc/locale.conf"
echo "...done"
echo ""

# edit /etc/locale.gen
sed -ie "s/#$ll_CC/$ll_CC/" "$rootfs/etc/locale.gen"
sed -ie "s/#en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/" "$rootfs/etc/locale.gen"
locale-gen
echo ""

# #### test ####
echo "$ll_CC" "$rootfs" "$xorg"
rc=0; message=OK; cleanupandexit

Beitrag geändert von tuxnix (16.01.2018 14:59:25)

Offline

#49 16.01.2018 15:07:41

Waldwuffel
Mitglied

Re: Zen Installer - Ein grafischer Installer für Arch Linux

gorzka schrieb:

Bis ich erst einmal eine Verbindung mit WLAN zustande hatte war ich schon kurz vor dem aufgeben.

Das kann ich gar nicht nachvollziehen. Mit dem wifi-menu ging das bei mir auf Anhieb und war nicht komplizierter als man es sonst so gewöhnt ist. Wenn ich mich recht erinnere, habe ich die Pakete, die man für das wifi-menu braucht (auf jeden Fall war das dialog) gleich erstmal mitinstalliert, um dann nach dem ersten Start des neuen Systems das WLAN auf die gleiche einfache Weise einrichten zu können. Und nachher dann über den NetworkManager bzw. das entsprechende grafische Applet.

Auch sonst fand ich die Installation erstaunlich einfach - was aber nicht zuletzt an der wirklich ausführlichen Anleitung lag. Bzw. bei meiner ersten Installation, die schon einen paar Jahre zurückliegt, gab es wohl das eine oder andere Problem (weiß aber nicht mehr, was genau) - bei der letzten vor einigen Monaten lief aber alles problemlos. (Was nicht heißt, dass nachher dann keine Probleme beim Konfigurieren dieser oder jener Software aufgetreten wären - aber das ist, finde ich, auch einer der Gründe dafür, Arch zu nutzen, also dass man, mangels Konfigurationstools, gezwungen ist, sich selbst um alles zu kümmern, um so das System besser verstehen lernen zu können. Wenn ich das gar nicht wollte, dann würde ich mich sicher nicht für Arch entscheiden.)

Offline

#50 16.01.2018 15:41:14

Schard-nologin
Gast

Re: Zen Installer - Ein grafischer Installer für Arch Linux

Warum geht ihr denn einen so umständlichen Weg über das Editieren der /etc/locale.gen und einen Call von locale-gen?
Habt ihr euch mal /usr/bin/locale-gen angeschaut?
Wenn ihr die locale so wie so per Kommandozeilenparameter übergebt, könnt iht auch direkt /usr/bin/localedef aufrufen.

Fußzeile des Forums