Script Manjaro po reinstalacji systemu

#!/bin/bash

echo "First we refreshing your mirror's"

sudo pacman-mirrors -g

echo "initialize upadte & upgrade process..."

sudo pacman -Syy
sudo pacman -Syu
sudo pamac update

echo "Your system is update & upgrade"
echo "Now will be install snapd and flatpak"

sudo pacman -S snapd
sudo systemctl enable --now snapd.socked
sudo pamac install flatpak
sudo flatpak upgrade

echo "That's all!"
echo "Take care of you and have fun with your fresh Manjaro!!!"

Co myslicie o takim skrypcie w bashu po instalacji Manjaro?? Jest on dobrze napisany? Cos zmienic dodac?

Prosze o wyrozumialosc dopiero ucze sie programowac :slight_smile:

1 polubienie

Powodzenia w nauce skryptowania w bashu.
Na razie skrypt jest bardzo prosty i ciężko się do czegoś przyczepić :wink:

No to i ja dołożę swoje “trzy grosze”. Wymagana instalacja zenity. Program można sobie rozbudować także o inne funkcje.

#!/bin/bash

clear
yellow='\e[1;33m'
red='\e[1;31m'
blinkRed='\e[05;31m'
white='\e[1;37m'
endColor='\e[1;32m' # zielony

function main_menu() {
# SEKCJA ZBIERANIA DANYCH #
	menu_glowne=$(zenity --height=150 --width=390 --title="C o c h c e s z  z r o b i ć  ?" --text="M e n u  g ł ó w n e" --list --radiolist --column="Wybierz" --column="Nazwa" --column="" --cancel-label="Zamknij program" --ok-label="Dalej" \
	TRUE "Aktualizuj system" "")

	if [ "$menu_glowne" = "Aktualizuj system" ]; then
		aktualizuj_sys;
	else
		wyjdz;
	fi

}

function aktualizuj_sys() {
# SEKCJA ZBIERANIA DANYCH #
	system=$(zenity --height=165 --width=400 --title="C o  c h c e s z  z r o b i ć ?" --text="W y b i e r z  s y s t e m  o p e r a c y j n y :" --list --radiolist --column="Wybierz" --column="Nazwa" --column="" --cancel-label="Wróć" --ok-label="Dalej" \
	TRUE "Manjaro" ""\
	FALSE "Ubuntu" "")
	
	if [ "$system" = "Manjaro" ]; then
		flatpak_snap=$(zenity --height=320 --width=400 --separator=" " --title="C o  c h c e s z  z r o b i ć ?" --text="Wybierz także inne środowiska uruchomieniowe:" --list --checklist --column="Wybierz" --column="Nazwa" --column="" --cancel-label="Wróć" --ok-label="Dalej" \
		FALSE "Flatpak" ""\
		FALSE "Snap" "")

		set -- $flatpak_snap;
		if [ "$#" = 1 ]; then
			flatpak=$1;
			snap=$1;
		else
			flatpak=$1;
			snap=$2;
		fi
	
# SEKCJA WYKONYWANIA POLECEŃ #
		echo -e "${red} Trwa aktualizacja systemu ${yellow} Manjaro !! \n${white}"
		sudo pacman-mirrors -g
		yay -Syyu
		sudo pamac update  && sudo pamac upgrade
	
		if [ "$flatpak" = "Flatpak" ]; then
			echo -e "${red} Trwa aktualizacja środowiska uruchomieniowego ${yellow} Ftalpak !! \n${white}"
			sudo pamac install flatpak
			sudo flatpak upgrade
		fi
	
		if [ "$snap" = "Snap" ]; then
			echo -e "${red} Trwa aktualizacja środowiska uruchomieniowego ${yellow} Snap !! \n${white}"
			sudo pacman -S snapd
			sudo systemctl enable --now snapd.socked	
		fi
		
	elif [ "$system" = "Ubuntu" ]; then
		echo -e "${red} Trwa aktualizacja systemu ${yellow} Ubuntu !! \n${white}"
		sudo apt-get update -y
		sudo apt-get upgrade -y
		sudo apt-get dist-upgrade -y
		sudo apt-get -f install -y
		sudo apt autoremove -y
		sudo do-release-upgrade -c
	fi
	zenity --width=400 --info --text="Aktualizacja systemu \"$system\" zakończona pomyślnie."
	wyjdz;
}

# ZAKOŃCZENIE DZIAŁANIA PROGRAMU aktualizuj.sh #
function wyjdz() {
	# clear
	cd /tmp
	echo "";
	echo -ne "${red} <-<-<- Bye Bye ->->-> \n${white}";
	echo -ne "$endColor";
	echo "";
	exit 0;
}

# START PROGRAMU aktualizuj.sh #
main_menu;
2 polubienia

Trzymałbym się Pamac’a albo Pacman’a - bez mieszania, bo od tego głowa boli. Pamac ma mniejszy zestaw komend, ale wszystkie podstawowe na miejscu, więc pozostaje przemyśleć sprawę, zdecydować się na konkretny program i trzymać się go - tak w ogóle, albo w ramach skryptu.

Snap i Flatpak, są domyślnie zainstalowane … czy tylko tak mi się wydaje, bo mam je w palcach?

@spirit.of.nikopol jeśli bawisz się zenity to polecam sprawdzić też yad GitHub - v1cont/yad: Yet Another Dialog

To zależy. W tradycyjnym wydaniu są obecne, w minimalnym już nie.

Dlatego w moim skrypcie instalacja snap i flatpak jest opcjonalnie.
@napcok a co do yad to jak najbardziej jest wart zainteresowania. Dzięki za sugestię.

Graficzna wersja programu pacli z wykorzystaniem yad. Może się komuś przyda.
Przeróbki i dostosowanie skryptu do własnych potrzeb absolutnie dozwolone :slightly_smiling_face:

Plik xpacli.sh

#! /bin/bash

source funkcje.sh

KEY=$RANDOM;
  
res1=$(mktemp --tmpdir term-tab1.XXXXXXXX)
res2=$(mktemp --tmpdir term-tab2.XXXXXXXX)
res3=$(mktemp --tmpdir term-tab3.XXXXXXXX)

# Zakładka 1
cmd1=$(yad --plug=$KEY --tabnum=1 --form --columns=2 --back="black" \
	--field="Aktualizacja Systemu"!update-manager!:FBTN "konsole -e sh work.sh 0" \
	--field="Instalacja Pakietu"!gnome-mime-x-install!:FBTN "konsole -e sh work.sh 1 'Instalacja Pakietu' 'gnome-mime-x-install'" \
	--field="Usówanie Pakietu"!edit-delete!:FBTN "konsole -e sh work.sh 2 'Usówanie Pakietu' 'edit-delete'" \
	--field="Informacja o Pakiecie"!dialog-information!:FBTN "konsole -e sh work.sh 3 'Informacja o Pakiecie' 'dialog-information'" \
	--field="Lista Pakietów"!view-list-symbolic!:FBTN "konsole -e sh work.sh 4 'Lista Pakietów' 'view-list-symbolic'" \
	--field="Drzewo zależności"!sidebar-tree-symbolic!:FBTN "konsole -e sh work.sh 5 'Drzewo zależności' 'sidebar-tree-symbolic'" \
	--field="Odwrócone drzewo zależności"!sidebar-tree-symbolic!:FBTN "konsole -e sh work.sh 6 'Odwrócone drzewo zależności' 'sidebar-tree-symbolic'" \
	--field="Instalacja starszej wersji"!package-downgrade!:FBTN "konsole -e sh work.sh 7 'Instalacja starszej wersji' 'package-downgrade'")  > $res1 &
	
# Zakładka 2
cmd2=$(yad --plug=$KEY --tabnum=2 --form --columns=2 \
	--field="Naprawa błędów"!error!:FBTN "konsole -e sh work.sh 8 'Naprawa błędów'" \
	--field="Wymuszenie instalacji pakkietu"!gnome-mime-x-install!:FBTN "konsole -e sh work.sh 9 'Wymuszenie instalacji pakkietu' 'gnome-mime-x-install'" \
	--field="Wymuszenie usunięcia pakkietu"!edit-delete!:FBTN "konsole -e sh work.sh 10 'Wymuszenie usunięcia pakkietu' 'edit-delete'" \
	--field="Czyszczenie Systemu"!gconf-cleaner!:FBTN "konsole -e sh work.sh 14" \
	--field="Logi Pacman-a"!pamac-manager!:FBTN "konsole -e sh work.sh 15" \
	--field="Konfiguracja Pacmana"!pamac-manager!:FBTN "konsole -e sh work.sh 16" \
	--field="Wymuszenie aktuializacji systemu"!update-manager!:FBTN "konsole -e sh work.sh 17" \
	--field="Czyszczenie Cache"!gconf-cleaner!:FBTN "konsole -e sh work.sh 18")  > $res2 &
	
# Zakładka 3
cmd3=$(yad --plug=$KEY --tabnum=3 --form --columns=2 \
	--field="Szukaj + instaluj z AUR"!gaiksaurus!:FBTN "konsole -e sh work.sh 11 'Szukaj + instaluj z AUR' 'gaiksaurus'" \
	--field="Instaluj z AUR"!gaiksaurus!:FBTN "konsole -e sh work.sh 12 'Instaluj z AUR' 'gaiksaurus'" \
	--field="Lista pakietów z AUR"!view-list-symbolic!:FBTN "konsole -e sh work.sh 13 'Lista pakietów z AUR' 'view-list-symbolic'" \
	--field="Aktualizacja AUR"!update-manager!:FBTN "konsole -e sh work.sh 19" \
	--field="Wymuszenie aktualizacji AUR"!update-manager!:FBTN "konsole -e sh work.sh 20" \
	--field="Konfiguracja Yaourt"!pamac-manager!:FBTN "konsole -e sh work.sh 21")  > $res3 &

 # Główne okno dialogowe
cmd4=$(yad --window-icon="$windowicon" --image="$image1" \
	--notebook --key=$KEY --tab=$"Aktuakizacja Instalacja Informacja" --tab=$"Naprawa Czyszczenie Konfiguracja" --tab=$"AUR"  \
	--center --title="$title1" --borders=10 --width=500 --fixed \
	--button="Zamlnij"!dialog-ok!Zamlnij:1)

ret=$?

[[ $ret -le 252 ]] && wyjdz;

Plik work.sh

#! /bin/bash
source funkcje.sh

tekst1=$2;
ikona=$3;

if [[ $1 == 1 || $1 == 2  || $1 == 3 || $1 == 5 || $1 == 6 || $1 == 7 
	|| $1 == 9 || $1 == 10 || $1 == 11 || $1 == 12 ]]; then
	
	myad 'Podaj nazwę pakietu:' 400 "$tekst1" "$ikona" "$image2" "$okbutton" "$nobutton"
	[[ $? == 1 ]] && wyjdz;
	pakiet=${pole%|*};
	
elif [[ $1 == 4  || $1 == 13 ]]; then
		
	myad "Podaj nazwę pliku:" 400 "$tekst1" "$ikona" "$image2" "$okbutton" "$nobutton"
	[[ $? == 1 ]] && wyjdz;
	plik=${pole%|*};
fi

if [ $1 == 0 ]; then
	# **3 – AKTUALIZACJA SYSTEMU** #
	komunikaty "Trwa akrualizacja systemu" .
	yay -Syyuu
	#sudo pamac update 
	#sudo pamac upgrade
elif [ $1 == 1 ]; then
	# **3 – INSTALACJA PAKIETU** #
	komunikaty "Trwa instalacja pakietu/ów \"$pakiet\" w systemie" .
	yay -S $pakiet
elif [ $1 == 2 ]; then
	# **4 – USUWANIE PAKIETU + ZALEŻNOSCI** #
	komunikaty "Trwa usówanie pakietu/ów \"$pakiet\" + zależności w systemie" .
	yay -Rsn $pakiet
elif [ $1 == 3 ]; then
	# **5 – INFORMACJE O PAKIECIE** #
	komunikaty "Trwa generowanie informacji o pakiecie \"$pakiet\" w systemie" .
	yaourt -Sii $pakiet | less
elif [ $1 == 4 ]; then
	# **6 – LISTUJ PLIKI ZAINSTALOWANYCH PAKIETÓW** #
	komunikaty "Trwa generowanie listy zainstalowanych pakietów w systemie do pliku \"$plik\"" .
	pacman -Qqe > $plik
elif [ $1 == 5 ]; then
	# **7 – DRZEWO ZALEŻNOSCI** #
	komunikaty "Trwa generowanie drzewa zależności dla pakietu \"$pakiet\" w systemie" .
	pactree -s $pakiet | less
elif [ $1 == 6 ]; then
	# **8 – ODWRÓCONE DRZEWO ZALEŻNOŚCI** #
	komunikaty "Trwa generowanie odwróconego drzewa zależności dla pakietu \"$pakiet\" w systemie" .
	pactree -r $pakiet | less
elif [ $1 == 7 ]; then
	# **11 – INSTALOWANIE STARSZEJ WERSJI PAKIETU** #
	komunikaty "Trwa instalowanie starszej wersji pakietu \"$pakiet\" w systemie" .
	downgrade $pakiet
elif [ $1 == 8 ]; then
	# !!13 – NAPARAWIANIE BŁĘDÓW!! (NIEBEZPIECZNE) #
	komunikaty "Trwa naprawianie błędów pacmana w systemie" .
	sudo rm -f /var/lib/pacman/db.lck
	sudo pacman-mirrors -g 
	sudo pacman -Syyuu
	sudo pacman -Sy gnupg archlinux-keyring manjaro-keyring 
	sudo rm -r /etc/pacman.d/gnupg 
	sudo pacman-key --init 
	sudo pacman-key --populate archlinux manjaro 
	sudo pacman-key --refresh-keys
elif [ $1 == 9 ]; then
	# !!15 – WYMUSZENIE INSTALACJI PAKIETU!! (NIEBEZPIECZNE) #
	komunikaty "Trwa wymuszanie instalacji pakietu/ów \"$pakiet\" w systemie" .
	sudo pacman -S --force $pakiet
elif [ $1 == 10 ]; then
	# !!17 – WYMUSZENIE USUNIĘCIA PAKIETU!! (NIEBEZPIECZNE) #
	komunikaty "Trwa wymuszanie usunięcia pakietu/ów \"$pakiet\" w systemie" .
	yay -Rdd $pakiet
elif [ $1 == 11 ]; then
	# !**21 – SZUKAJ + INSTALUJ Z AUR** #
	komunikaty "Trwa wyszukiwanie i instalacja pakietu/ów \"$pakiet\" z AUR w systemie" .
	yaourt $pakiet
elif [ $1 == 12 ]; then
	# **22 (220) – INSTALUJ Z AUR** #
	komunikaty "Trwa instalacja pakietu/ów \"$pakiet\" z AUR w systemie" .
	yaourt -S $pakiet
elif [ $1 == 13 ]; then
	# **23 – LISTA PAKIETÓW ZAINSTALOWANYCH Z AUR** #
	komunikaty "Trwa generowanie listy pakietów z AUR w systemie do pliku \"$plik\"" .
	pacman -Qem > $plik
elif [ $1 == 14 ]; then
	# **2 – CZYSZCZENIE SYSTEMU** #
	komunikaty "Trwa Czyszczenie systemu" .
	sudo pacman-mirrors -g 
	sudo pacman -Syy 
	yaourt -Qdt 
	paccache -ruvk0 
	paccache -rvk2
elif [ $1 == 15 ]; then
	# **2 – GENEROWANIE LOGÓW PACMANA** #
	komunikaty "Trwa generowanie logów pacmana w systemie" .
	tail -2000 /var/log/pacman.log | less
elif [ $1 == 16 ]; then
	# **2 – KONFIGURACJA PACMANA** #
	komunikaty "Konfiguracja pacmana w systemie" .
	sudo geany /etc/pacman.conf
elif [ $1 == 17 ]; then
	# **2 – WYMUSZENIE AKTUALIZACJI SYSTEMU ** #
	komunikaty "Trwa wymuszanie aktualizacji systemu" .
	yay -Syu --force
elif [ $1 == 18 ]; then
	# !!18 – WYCZYSZCZENIE CACHE PAKIETÓW!! (NIEBEZPIECZNE) #
	komunikaty "Trwa czyszczenie pamięci podręcznej pakietów w systemie" .
	sudo pacman -Scc
elif [ $1 == 19 ]; then
	# **19 – AKTUALIZACJA AUR** #
	komunikaty "Trwa aktualizacja repozytorium AUR w systemie" .
	yaourt -Syua
elif [ $1 == 20 ]; then
	# **20 – WYMUSZENIE AKTUALIZACJI AUR** #
	komunikaty "Trwa wynuszenie aktualizacji repozytorium AUR w systemie" .
	yaourt -Syua && yaourt -Syua --devel --noconfirm
elif [ $1 == 21 ]; then
	# **24 – KONFIGURUJ YAOURT** #
	komunikaty "Trwa konfiguraca  yaourt w systemie" .
	$EDITOR $yaourtrc
fi


yad  --width=450 --title="Informacja" --image="dialog-information" --center --window-icon="dialog-information" \
--text='<span color=\"black\" font="Verdana bold italic 11">Wszystkie zadania zostały zakończone.</span>' \
--button="Ok"!dialog-ok!Wykonaj:0

Plik funkcje.sh

#!/bin/bash

clear

# USTAWIENIA KOLORÓW #
yellow='\e[1;33m' # żółty
red='\e[1;31m' # czerwony
blinkRed='\e[05;31m' # migający czerwony
white='\e[1;37m' # biały
zielony='\e[1;32m' # zielony

# INICJALIZACJA ZMIENNYCH #
title1="Menedżer pakietów \"X-PACLI\"";
title2="Wpisz nazwę pakietu:";
title3="Wpisz nazwę pliku:";
text1="Wybierz czynność:";
okbutton="Ok"'!dialog-ok!Wykonaj:0';
nobutton="Anuluj"'!dialog-cancel!Zamknij:1';
windowicon="pamac-updater";
image1="pamac-manager";
image2="gtk-execute";
field1="Nazwa pakietu/ów";
field2="Nazwa pliku";

#  WYŚWIETLANIE KOMUNIKATÓW  #
function komunikaty() {
	
	sys_info=$(inxi -S);
	system_op=${sys_info#*Distro:};
	: ${system_op:1:7};
	
	komunikat1=$1;
	komunikat2=$2;
	system=$(trim_all "$system_op");
	
	echo -e "${red} $komunikat1${yellow} \"$system\" ${red}$komunikat2 ${white}"
	#exit $?
}

#  TWORZENIE FORMULARZA DO WPISYWANIA DANYCH #
function myad() {
	# yad --field="Podaj nazwę pakietu:" --form --center --width 400 --fore=GREEN --title="$tekst1"  --window-icon="$windowicon" --image="$image2" --button="$okbutton" --button="$nobutton"
	
	field1=$1;
	width1=$2;
	title1=$3;
	windowicon1=$4;
	image1=$5;
	buttonok=$6;
	buttoncancel=$7;
	
	pole=$(yad --field="$field1" --form --center --width="$width1" --title="$title1" --window-icon="$windowicon1" --image="$image1" --button="$buttonok" --button="$buttoncancel")
}

# ZAKOŃCZENIE DZIAŁANIA PROGRAMU #
function wyjdz() {
	cd /tmp
	echo -ne "${zielony}Zakończenie skrypyu\e[3m${yellow} \"${0##*/}\" ${white}\e[m";
	echo  -e "\n"
	echo -ne "\e[5m \e[3m \e[2m  ${red} <-<-<- Bye Bye ->->-> \n${white} \e[m";
	echo  -e "\n"
	exit $?;
}
1 polubienie