Code Block | ||
---|---|---|
| ||
#!/bin/bash # File create for save temporary values >list_one >list_two >pkg_dep >tmp0 >tmp1 >tmp function get_depends() { ## This function## If you need log then put here the name of the log file #LOG_FILE="list_deps" LOG_FILE="" function print_log { if [[ "$LOG_FILE" != "" ]]; then echo "$1" >> $LOG_FILE fi } ## Loop for get depends for build components ## The list_component is a subject to check dependencies [sed -z "$(grep -f pkg_dep <<< $1)" ] && apt-get install -s $1 2>/dev/null | grep Inst | awk '{print $2}'| sort -u && echo $pkg >> pkg_dep } function all_dep() { ## This recursion function for get recursion depends for build conmponents for pkg in $@; do all_dep $(get_depends $pkg) done } ## Loop for get depends for build components while read component; doi '/^[ \t]*$/d' list_component cp list_component list_to_check ## Prepare the final list of packages. Initially it is empty echo "" > final_list end=$(cat list_to_check) ## Working while there is a subject to check while [[ "$end" != "" ]]; do ## Create an temporary file to collect dependencies echo "" > temp ## Check components one-by-one while read comp; do if [[ "" == "$comp" ]]; then ## Skip empty line continue fi ## Check if this component is already checked res=$(grep "^[ \t]*$comp[ \t]*\$" final_list) if [[ "" !== "$component$res" ]]; then ## Skip already checked component continue fi ## Check component dependencies echo -e "\033[33;1;4m33m =====> Getting depends for $component$comp... \033[0m" res=$(apt-getrdepends --drybuild-rundepends build-dep $component 2>/dev/null | grep Inst | awk '{print $2}' >> list_one done < list_component --follow=DEPENDS $comp | sed 's/^[ \t]*Build-Depends:[ \t]*//; s/^[ \t]*Build-Depends-Indep:[ \t]*//' | sed "s/^[ \\t]*${component}[ \\t]*\$//; /^[ \\t]*\$/d; s/[ \\t]*(.*)\$//") ## Put dependencies to the temporary file echo "$res" >> temp ## Put the component name to the list of already checked components echo "$comp" >> final_list done < list_to_check ## Remove duplucated dependenciers and put them to the list of subjects to check sort -u temp > list_to_check sed -i '/^[ \t]*$/d' list_to_check sed -i '/^[ \t]*$/d' final_list end=$(cat list_to_check) done ## Loop for download dependencies ## Clear the final list from empty strings sed -i '/^[ \t]*$/d' final_list rm -f temp rm -f list_to_check ## Scan the final list of packages one-by-one while read pkg; do echo -e "\033[36m =====> Check $pkg... \033[0m" ## Check if the package exists res=$(apt-cache show $pkg | grep "Package: $pkg") if [[ "$res" =!= "$pkg" ]]; then ## Download continuethe package fi echo -e "\033[32;1;4m35m =====> InstallingDownloading package $pkg... \033[0m" res=$(apt-get installdownload -s $pkg 2>/dev/null | grep Inst"E:" | awk '{print $2}' >> list_two done < list_pkg_sec cat list_one sed -n 's/E://') ## Check the result of downloading >>if tmp0 cat list_two [[ "$res" == "" ]]; then >> tmp0 cat list_component >> tmp0 cat list_pkg_sec >> tmp0 cat tmp0 | sort -u >> tmp1 ## Loop for get depends, use function 'all_dep' while read pkg; do if [[ "" == "$pkg" ]]; then continue fi print_log "$pkg : OK" else echo -e "\033[31;1;4m $res \033[0m" print_log "$pkg: $res" fi else echo -e "\033[31;1;4m$pkg: No package found \033[0m" echo "$pkg: No package found" >> list_deps fi done < final_list ## Uploading *.deb packages to the local repo echo -e "\033[3632;1;4m1m =====> GettingUploading depends for $pkg*.deb packages... \033[0m" reprepro all_dep $pkg >/dev/null done < tmp1 cat pkg_dep >> tmp1 cat tmp1 | sort -u >> tmp while read pkg; do if [[ "" == "$pkg" ]]; then continue fi -b /data/repo --export=never -C main includedeb du2-prebuild /data/repo/pkg/*.deb ## Loop for sources while read component; do ## Download source files echo -e "\033[33;1m =====> Downloading sources for $component... \033[0m" apt-get source --download-only $component ## Upload source files to the repo echo -e "\033[32;1m =====> Uploading sources for $component... \033[0m" reprepro -b /data/repo --export=never -C main includedsc du2-prebuild $component*.dsc rm -rf $component* done < list_component ## Creating index for local repo echo -e "\033[3532;1;4m1m =====> Downloading $pkg Creating indices for local repo... \033[0m" reprepro sudo apt-get download $pkg done < tmp EOT-Vb /data/repo export du2-prebuild echo -e "\033[32;1m =====> DONE \033[0m" if [[ "$LOG_FILE" != "" ]]; then echo "Downloaded package list is put to $LOG_FILE" fi |
Page Comparison
General
Content
Integrations