Persikeliant skriptus į naują Debian kompiuterį: kaip užtikrinti, kad visi reikalingi įrankiai bus įdiegti
Persikeliant skriptus į naują kompiuterį, dažnai susiduriame su problema, kad skriptai neveikia tinkamai arba iš viso neveikia dėl trūkstamų programų. Tai ypač aktualu naudojant Debian ar kitą Linux distribuciją, kurioje gali nebūti visų skriptuose naudojamų programų. Šiame straipsnyje aptarsiu, kaip automatizuoti šį procesą ir užtikrinti, kad visi reikalingi įrankiai būtų įdiegti naujoje sistemoje.
Problemų diagnostika
Keliant skriptus į kitą kompiuterį, pastebėjau, kad daugelis jų neveikia dėl trūkstamų programų, tokių kaip zenity
, kdialog
, jq
ir t.t. Norint, kad skriptai veiktų, reikia įsitikinti, kad visos šios programos yra įdiegtos naujoje sistemoje.
Sprendimo planas
Tam, kad išspręsti šią problemą, sukūriau du Bash skriptus. Pirmasis skriptas suranda visas naudojamas programas .sh failuose, esančiuose tam tikrame kataloge, ir išsaugo jas į failą. Antrasis skriptas naudoja šį sąrašą, kad įdiegtų trūkstamas programas naujoje sistemoje.
Skriptas programų suradimui
Pirmasis skriptas naudoja find
, grep
ir command -v
komandas, kad surastų ir patikrintų programas .sh failuose:
#!/bin/bash
# Katalogas, kuriame ieškosime .sh skriptų
SEARCH_DIR="$HOME/git"
# Rezultato failas
OUTPUT_FILE="$HOME/used_programs.txt"
# Išvalyti rezultatų failą jei jis jau egzistuoja
> "$OUTPUT_FILE"
# Pereiti per visus .sh failus kataloge
find "$SEARCH_DIR" -name "*.sh" | while read -r script; do
# Ištraukti visus naudojamus įrankius iš kiekvieno skripto
grep -oE '\b([a-zA-Z0-9_]+)\b' "$script" | sort -u | while read -r program; do
# Patikrinti, ar programa egzistuoja sistemoje
if command -v "$program" > /dev/null 2>&1; then
echo "$program" >> "$OUTPUT_FILE"
fi
done
done
# Išvalyti dublikatus iš rezultatų failo
sort -u -o "$OUTPUT_FILE" "$OUTPUT_FILE"
echo "Programos išsaugotos faile $OUTPUT_FILE"
Skriptas programų įdiegimui
Antrasis skriptas skaito programų sąrašą iš failo ir įdiegia kiekvieną programą, kurios dar nėra sistemoje, naudojant apt-get
ir apt-cache show
komandas:
#!/bin/bash
# Failas su programų sąrašu
PROGRAMS_FILE="$HOME/used_programs.txt"
# Funkcija patikrinti, ar paketas egzistuoja
package_exists() {
apt-cache show "$1" > /dev/null 2>&1
}
# Skaityti kiekvieną eilutę iš failo
while read -r program; do
# Patikrinti, ar programa jau yra įdiegta
if ! command -v "$program" > /dev/null 2>&1; then
if package_exists "$program"; then
echo "Įdiegiama programa: $program"
# Bandome įdiegti programą
sudo apt-get install -y "$program"
else
echo "Paketas $program neegzistuoja, praleidžiama."
fi
else
echo "Programa $program jau įdiegta."
fi
done < "$PROGRAMS_FILE"
echo "Visos programos įdiegtos arba jau buvo įdiegtos."
Kaip tai veikia
- Programų suradimas: Pirmasis skriptas suranda visus .sh failus nurodytame kataloge. Jis naudoja
grep
ircommand -v
, kad ištrauktų ir patikrintų, ar skriptuose naudojamos komandos egzistuoja sistemoje. Visos rastos komandos išsaugomos į failąused_programs.txt
. - Programų įdiegimas: Antrasis skriptas skaito
used_programs.txt
failą ir patikrina, ar kiekviena programa jau yra įdiegta. Jei programa nėra įdiegta, jis patikrina, ar tokia programa egzistuoja paketų saugykloje, naudodamasapt-cache show
. Jei taip, programa įdiegiama naudojantsudo apt-get install -y
.
Patobulinimai
Nors šie skriptai veikia gerai, yra keletas galimų patobulinimų:
- Geriau apdoroti klaidas: Skriptai galėtų geriau apdoroti klaidas, pvz., pranešti apie konkrečias problemas, jei paketo įdiegimas nepavyksta.
- Papildomi patikrinimai: Galima pridėti papildomus patikrinimus, pvz., patikrinti ne tik ar programa egzistuoja, bet ir ar ji yra tinkamos versijos.
- Kryžminio platforminio suderinamumo: Jei reikia
perkelti skriptus į skirtingas Linux distribucijas, galima pridėti
logiką, kuri nustato paketų tvarkymo sistemą (pvz.,
yum
ardnf
vietojapt-get
). - Išplėstinės komandos paieška: Dabartinis sprendimas ieško tik paprastų komandų. Galima patobulinti, kad būtų atpažįstami sudėtingesni scenarijai, pvz., komandos su argumentais.
Naudojant šiuos skriptus, galiu lengvai perkelti savo skriptus į naują kompiuterį ir užtikrinti, kad visi reikalingi įrankiai bus įdiegti. Tai ženkliai palengvina darbą ir taupo laiką, ypač kai reikia greitai konfigūruoti naujas darbo aplinkas.
Komentarai
Rašyti komentarą