Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Info

Теперь Вы можете запустить его в формате ./create_zone.sh <zone-name> <zone-ip-domain> <zone-ip-node> , например!:

./create_zone.sh zone02 192.168.0 3

...

Code Block
languagebash
cat > make_repo.sh <<EOT
#!/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_to_componentcheck
isecho a"" subject to check dependencies> final_list
sed -i '/^[ \\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-oneecho "" > 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

## Preparation of initial list of dependencies
sort -u temp > list_to_check
sed -i '/^[ \\t]*\$/d' list_to_check
end=\$(cat list_to_check)

## Loop for get packages dependencies
while [[ "\$end" != "" ]]; do
  echo "" > temp
  while read comp; do
    ## Skip empty line
    if [[ "" == "\$comp" ]]; then
      ## Skip
empty line       continue
    fi
    ## CheckSkip packages ifthat thisare componentalready ischecked alreadyfor checkeddependencies
    res=\$(grep "^[ \\t]*\$comp[ \\t]*\\\$" final_list)
    if [[ "" != "\$res" ]]; then
      ##continue
Skip already checked component fi
     continue
    fiecho "=====> Getting depends for \$comp..."
    apt-cache ## Check component dependencies
    echo -e "\\033[33m =====> Getting depends for \$comp... \\033[0m"
    res=\$(apt-rdepends --build-depends --follow=DEPENDSdepends --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]*\\\$//;  sed 's/^[ \\\\t|]*\\\$Depends: //; /</d; s/^[ \\\\t]*(.*)\\\$//")
    ## Put dependencies to the temporary file
    echo "\$res" ' >> temp
    ## PutAdd thechecked componentpackage name 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; do_check
while 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 fiif package doesn't elseexist
    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 [[ ""  ## Download source files== "\$component" ]]; then
    continue
  fi
  echo -e "\\033[33;1m =====> Downloading sources for \$component... \\033[0m"
  apt-get source --download-only $component
  ## Upload source files to the repo
  \$component
  echo -e "\\033[32;1m =====> Uploading sources for \$componentcomponent... \\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
EOT

...