Tak ten první skript dokončil práci a dostal jsem ten soubor .txt se seznamem souborů a balíčků. Tak ted chci napsat bash skript, který ho bude číst, a nejprve je třeba udělat seznam balíčků a jaké soubory obsahují, které se mají z nich extrahovat. Klíčová je tedy informace ze druhého sloupce kde je uveden název balíčku. Bylo by možné například vytvořit složku do které se budou vytvářet soubory s názvy balíčků a každý takový soubor .txt bude obsahovat soubory, které se mají nainstalovat z daného balíčku do dané cesty. V dalším kroku se přečte ten adresář a každý soubor, a ten soubor se bude instalovat. Pokud jsem to správně pochopil je třeba nejprve zjistit název a cestu k balíčku pomocí apt-cache policy název_balíčku .... a poté rozbalit ty soubory dpkg-deb -x /var/cache/apt/archives/název_balíčku.deb /cesta/k/souboru
#!/bin/bash
# Čtěte soubor missing_xml_packages.txt
while read soubor balicek; do
# Vytvořte adresář pro balíček, pokud neexistuje
if [ ! -d "$balicek" ]; then
mkdir "$balicek"
fi
# Přidejte soubor do seznamu souborů pro balíček
echo "$soubor" >> "$balicek/seznam_souboru.txt"
done < missing_xml_packages.txt
# Procházíte adresář s balíčky
for balicek in */; do
# Zjistěte název a cestu k balíčku
nazev_balicku=$(apt-cache policy "$balicek" | grep "Candidate" | cut -d' ' -f4)
cesta_k_balicku="/var/cache/apt/archives/$nazev_balicku"
# Rozbalte soubory z balíčku
dpkg-deb -x "$cesta_k_balicku" "/"
done
* * *
#!/bin/bash
# Vytvořte složku pro ukládání souborů
mkdir -p xml_tmp
# Čtěte soubor missing_xml_packages.txt
while read soubor balicek; do
# Extrahujte cestu k souboru a název balíčku
cesta_k_souboru=${soubor% *}
nazev_balicku=${balicek%:}
echo "C:$cesta_k_souboru"
echo "Nazev balicku:$nazev_balicku"
# Zjistěte název a cestu k balíčku
nazev_baliku=$(apt-cache policy "$nazev_balicku" | grep Kandidát: | cut -d ':' -f2- | tr -d ' ' )
echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
echo "B:$nazev_baliku"
echo "--------------------------------------------"
cesta_k_balicku="/var/cache/apt/archives/$nazev_baliku"
# Ověřte, zda soubor již existuje v adresáři
if [ ! -f "$cesta_k_balicku" ]; then
# Stáhněte soubor .deb balíčku
sudo apt download "$nazev_balicku"
cesta_k_balicku=$(find . -name "$nazev_baliku")
echo "CkB:$cesta_k_balicku"
fi
# Rozbalte soubory z balíčku
cilovy_adresar=$(dirname "$cesta_k_souboru")
echo "Extrahuji do cílového adresáře: $cilovy_adresar"
dpkg-deb -x "/var/cache/apt/archives/$nazev_baliku" "$cilovy_adresar"
done < missing_xml_packages.txt
Žádné komentáře:
Okomentovat