Code Block | ||
---|---|---|
| ||
#!/bin/bash ## 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 dependsbuild forcomponents builddependencies componentsecho ##"" The> list_componentto_check isecho a"" subject to check dependencies > final_list sed -i '/^[ \t]*$/d' list_component cp echo "" > temp while read comp; do echo -e "\033[33m =====> Getting depends for $comp... \033[0m" res=$(apt-rdepends --build-depends --follow=DEPENDS $comp) echo "$res" | grep 'Build-Depends:' > tmp echo "$res" | grep 'Build-Depends-Indep:' >> tmp sed 's/^[ \t]*Build-Depends:[ \t]*//; s/^[ \t]*Build-Depends-Indep:[ \t]*//' tmp | sed 's/[ \t]*(.*)[ \t]*$//' >> temp rm -f tmp done < list_component list_to_check ## PreparePreparation theof finalinitial list of packages. Initially it is empty echo "" > final_list dependencies sort -u temp > list_to_check sed -i '/^[ \t]*$/d' list_to_check end=$(cat list_to_check) ## WorkingLoop whilefor thereget ispackages a subject to check dependencies while [[ "$end" != "" ]]; do ## Create an temporary file to collect dependencies echo "" > temp while read ##comp; Checkdo components one-by-one while## readSkip comp;empty doline if [[ "" == "$comp" ]]; then ## Skip empty line continue fi ## CheckSkip ifpackages thisthat componentare is already checked for dependencies res=$(grep "^[ \t]*$comp[ \t]*\$" final_list) if [[ "" != "$res" ]]; then ## Skip already checked component continue fi ## Check component dependencies echo -e "\033[33m =====> Getting depends for $comp... \033[0m" res=$(apt-rdepends --build-depends --follow=DEPENDS" apt-cache depends --no-pre-depends --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances apt-cache depends --no-pre-depends --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances $comp | sed 's/^[ \t|]*Build-Depends:[ \t]*// //; /</d; s/^[ \t]*Build-Depends-Indep:[ \t]*//' | sed "'s/^[ \\t|]*${component}[ \\t]*\$Depends: //; /^[ \\t]*\$</d; s/^[ \\t]*(.*)\$//") ## Put dependencies to the temporary file echo "$res"//' >> temp ## PutAdd thechecked component namepackage to the list of already checked componentspackages echo "$comp" >> final_list done < list_to_check ## Remove duplucatedrepeated dependenciersrecords and put them to from the list of subjects to check sort -u temp > list_to_check ## Remove empty lines if any sed -i '/^[ \t]*$/d' list_to_check sed -i '/^[ \t]*$/d' final_list end=$(cat list_to_check) done ## Loop for check and 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; dowhile read pkg; do if [[ "" == "$pkg" ]]; then continue fi echo -e "\033[36m =====> Check $pkg... \033[0m" ## Check if thea package exists res=$(apt-cache show $pkg | grep "Package: $pkg") if [[ "$res" != "" ]]; then ## Download theexisted package echo -e "\033[35m =====> Downloading package $pkg... \033[0m" res=$(apt-get download $pkg | grep "E:" | sed -n 's/E://') ## Check the result of downloading if [[ "$res" == "" ]]; then print_log "$pkg : OK" else echo -e "\033[31;1;4m $res \033[0m" print_log "$pkg: $res" fi else ## Put error message if package doesn't exist echo -e "\033[31;1;4m$pkg: No package found \033[0m" echo "$pkg: No package found" >> list_deps fi done < final_list ## UploadingDownloading *.deb packages to the local repo echo -e "\033[32;1m =====> Uploading *.deb packages... \033[0m" reprepro -b /data/repo --export=never -C main includedeb du2-prebuild /data/repo/pkg/*.deb ## Loop for download sources while read component; do if [[ "" == "$component" ]]; then ## continue Download source filesfi 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[32;1m =====> Creating indices for local repo... \033[0m" reprepro -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