|
@@ -12,95 +12,34 @@ mylog() {
|
|
|
fi
|
|
|
}
|
|
|
|
|
|
-mylog2() {
|
|
|
- echo "---> $@" >>${MY_LOG_FILE}
|
|
|
-}
|
|
|
-
|
|
|
# 查找依赖 pkgname 的包
|
|
|
-function t1() {
|
|
|
+function find_who_depend() {
|
|
|
pkgname="bash"
|
|
|
- result=$(awk -v SEARCH_STR="${pkgname}" -f depends.awk /var/tmp/indices/172.29.220.242/mirror/kylin/dists/v101/main/binary-amd64/Packages)
|
|
|
- # echo "${result}"
|
|
|
-}
|
|
|
-
|
|
|
-# 查找 Priority 对应的包
|
|
|
-function t2() {
|
|
|
- PRIO="required"
|
|
|
- required=$(awk -v SEARCH_STR="${PRIO}" -f analysis.awk /var/tmp/indices/172.29.220.242/mirror/kylin/dists/v101/main/binary-amd64/Packages)
|
|
|
- mylog "01-required.txt2" "${required}"
|
|
|
-
|
|
|
- PRIO="important"
|
|
|
- base=$(awk -v SEARCH_STR="${PRIO}" -f analysis.awk /var/tmp/indices/172.29.220.242/mirror/kylin/dists/v101/main/binary-amd64/Packages)
|
|
|
- mylog "02-important.txt2" "${base}"
|
|
|
+ result=$(awk -v SEARCH_STR="${pkgname}" -f depends.awk ${TARGET_DIR}/172.29.220.242/mirror/kylin/dists/v101/main/binary-amd64/Packages)
|
|
|
+ echo "${result}"
|
|
|
}
|
|
|
|
|
|
-# apt list 分析
|
|
|
-function t3() {
|
|
|
- MIRROR="/var/tmp/indices/172.29.220.242/mirror/kylin/dists"
|
|
|
-
|
|
|
- # analysis.sh --repo ${MIRROR} --prio required | awk '{print $1}' |
|
|
|
- # xargs -i analysis.sh --repo ${MIRROR} --pkg {} |
|
|
|
- # grep -E "^Depends:|^Pre-Depends" | sed 's/^.*Depends://' | tr ',' '\n' | tr '|' '\n' | sed 's#(.*)##g' | xargs | tr ' ' '\n' | sort | uniq
|
|
|
+# 获取依赖
|
|
|
+function get_deps() {
|
|
|
+ ## 带有 | 的包
|
|
|
+ # tr ',' '\n' | tr '|' '\n' | sed 's#(.*)##g' | xargs | tr ' ' '\n' | sort | uniq
|
|
|
+ ## 去除 | 后面的包
|
|
|
+ # tr ',' '\n' | sed 's/|.*//' | sed 's#(.*)##g' | xargs | tr ' ' '\n' | sort | uniq
|
|
|
|
|
|
- analysis.sh --repo ${MIRROR} --prio required | awk '{print $1}' |
|
|
|
- xargs -i analysis.sh --repo ${MIRROR} --pkg {} |
|
|
|
+ analysis.sh --repo "${TARGET_DIR}/172.29.220.242/mirror/kylin/dists" --prio required | awk '{print $1}' |
|
|
|
+ xargs -i analysis.sh --repo "${TARGET_DIR}/172.29.220.242/mirror/kylin/dists" --pkg {} |
|
|
|
grep -E "^Depends:|^Pre-Depends" | sed 's/^.*Depends://' |
|
|
|
- tr ',' '\n' | sed 's/|.*//' | sed 's#(.*)##g' | xargs | tr ' ' '\n' | sort | uniq >/var/tmp/newpkgs.txt1
|
|
|
+ tr ',' '\n' | sed 's/|.*//' | sed 's#(.*)##g' | xargs | tr ' ' '\n' | sort | uniq |
|
|
|
+ >/var/tmp/newpkgs.txt1
|
|
|
}
|
|
|
|
|
|
-# 查找单个包
|
|
|
-function t4() {
|
|
|
+# 单个包的依赖
|
|
|
+function get_pkg_deps() {
|
|
|
. analysis.sh
|
|
|
- analysis_sigle_file2 /var/tmp/indices/172.29.220.242/mirror/kylin/dists/v101/main/binary-amd64/Packages libpam-runtime |
|
|
|
- grep -E "^Depends:|^Pre-Depends" | sed 's/^.*Depends://' | tr ',' '\n' | sed 's/|.*//' | sed 's#(.*)##g' | xargs | tr ' ' '\n' | sort | uniq
|
|
|
-}
|
|
|
-
|
|
|
-pkgdetails_field() {
|
|
|
- # uniq field mirror Packages values...
|
|
|
- perl -le '
|
|
|
-$unique = shift @ARGV; $field = lc(shift @ARGV); $mirror = shift @ARGV;
|
|
|
-%fields = map { $_, 0 } @ARGV;
|
|
|
-$prevpkg = "";
|
|
|
-$chksumfield = lc($ENV{DEBOOTSTRAP_CHECKSUM_FIELD}).":";
|
|
|
-while (<STDIN>) {
|
|
|
- if (/^([^:]*:)\s*(.*)$/) {
|
|
|
- $f = lc($1); $v = $2;
|
|
|
- if ($f eq "package:") {
|
|
|
- $last = 0;
|
|
|
- $pkg = $v;
|
|
|
- if ($pkg ne $prevpkg) {
|
|
|
- print $output if defined $output;
|
|
|
- if ($unique && defined $output_val) {
|
|
|
- delete $fields{$output_val};
|
|
|
- $last = 1 unless keys %fields;
|
|
|
- }
|
|
|
- $prevpkg = $pkg;
|
|
|
- }
|
|
|
- undef $output;
|
|
|
- undef $output_val;
|
|
|
- last if $last;
|
|
|
- }
|
|
|
- $ver = $v if ($f eq "version:");
|
|
|
- $arc = $v if ($f eq "architecture:");
|
|
|
- $fil = $v if ($f eq "filename:");
|
|
|
- $chk = $v if ($f eq $chksumfield);
|
|
|
- $siz = $v if ($f eq "size:");
|
|
|
- $val = $v if ($f eq $field);
|
|
|
- } elsif (/^$/) {
|
|
|
- if (defined $val && defined $fields{$val}) {
|
|
|
- $output = sprintf "%s %s %s %s %s %s %s",
|
|
|
- $pkg, $ver, $arc, $mirror, $fil, $chk, $siz;
|
|
|
- $output_val = $val;
|
|
|
- }
|
|
|
- undef $val;
|
|
|
- }
|
|
|
-}
|
|
|
-print $output if defined $output;
|
|
|
-delete $fields{$output_val} if $unique && defined $output_val;
|
|
|
-for $v (keys %fields) {
|
|
|
- printf ("%s -\n", $v) if ($unique);
|
|
|
-}
|
|
|
-' "$@"
|
|
|
+ pkgname="libpam-runtime"
|
|
|
+ analysis_sigle_file2 ${TARGET_DIR}/172.29.220.242/mirror/kylin/dists/v101/main/binary-amd64/Packages ${pkgname} |
|
|
|
+ grep -E "^Depends:|^Pre-Depends" | sed 's/^.*Depends://' |
|
|
|
+ tr ',' '\n' | sed 's/|.*//' | sed 's#(.*)##g' | xargs | tr ' ' '\n' | sort | uniq
|
|
|
}
|
|
|
|
|
|
without() {
|
|
@@ -112,23 +51,23 @@ without() {
|
|
|
echo
|
|
|
}
|
|
|
|
|
|
-resolve_deps() {
|
|
|
- MIRROR="/var/tmp/indices/172.29.220.242/mirror/kylin/dists"
|
|
|
+# 从 文件1 中排除 文件2
|
|
|
+without2() {
|
|
|
+ (
|
|
|
+ cat $1
|
|
|
+ cat $2
|
|
|
+ cat $2
|
|
|
+ ) | sort | uniq -u | tr '\n' ' '
|
|
|
+}
|
|
|
|
|
|
+resolve_deps() {
|
|
|
local PKGS="$*"
|
|
|
local ALLPKGS="$PKGS"
|
|
|
local ALLPKGS2=""
|
|
|
while [ "$PKGS" != "" ]; do
|
|
|
+ # 查找依赖包
|
|
|
local NEWPKGS=""
|
|
|
- # for s in $SUITE $EXTRA_SUITES; do
|
|
|
- # for c in ${COMPONENTS:-$(echo ${USE_COMPONENTS} | tr '|' ' ')}; do
|
|
|
- # local path="dists/$s/$c/binary-$ARCH/Packages"
|
|
|
- # local pkgdest="${TARGET_DIR}/172.29.220.242/mirror/kylin/dists/v101/main/binary-amd64/Packages"
|
|
|
- # NEWPKGS="$NEWPKGS $(pkgdetails_perl GETDEPS "$pkgdest" $PKGS)"
|
|
|
- # done
|
|
|
- # done
|
|
|
-
|
|
|
- NEWPKGS=$(echo "${PKGS}" | tr ' ' '\n' | xargs -i analysis.sh --repo ${MIRROR} --pkg {} |
|
|
|
+ NEWPKGS=$(echo "${PKGS}" | tr ' ' '\n' | xargs -i analysis.sh --repo "${TARGET_DIR}/172.29.220.242/mirror/kylin/dists" --pkg {} |
|
|
|
grep -E "^Depends:|^Pre-Depends" | sed 's/^.*Depends://' |
|
|
|
tr ',' '\n' | sed 's/|.*//' | sed 's#(.*)##g' | xargs | tr ' ' '\n' | sort | uniq)
|
|
|
|
|
@@ -136,19 +75,20 @@ resolve_deps() {
|
|
|
|
|
|
PKGS=$(echo "$PKGS $NEWPKGS" | tr ' ' '\n' | sort | uniq)
|
|
|
|
|
|
+ # 真实的包
|
|
|
local REALPKGS=""
|
|
|
- # for s in $SUITE $EXTRA_SUITES; do
|
|
|
- # for c in ${COMPONENTS:-$(echo ${USE_COMPONENTS} | tr '|' ' ')}; do
|
|
|
- # local path="dists/$s/$c/binary-$ARCH/Packages"
|
|
|
- # local pkgdest="${TARGET_DIR}/172.29.220.242/mirror/kylin/dists/v101/main/binary-amd64/Packages"
|
|
|
- # REALPKGS="$REALPKGS $(pkgdetails_perl PKGS REAL "$pkgdest" $PKGS | sed -n 's/ .*REAL.*$//p')"
|
|
|
- # done
|
|
|
- # done
|
|
|
-
|
|
|
p="${TARGET_DIR}/172.29.220.242/mirror/kylin/dists/v101/main/binary-amd64/Packages"
|
|
|
- m="REAL"
|
|
|
- REALPKGS="$REALPKGS $(LC_ALL=C egrep '^$|^Architecture:|^Filename:|^MD5sum:|^Package:|^Priority:|^SHA256:|^Size:|^Version:|^Depends:|^Pre-Depends:' "$p" |
|
|
|
- pkgdetails_field 1 Package: "$m" $PKGS | sed -n 's/ .*REAL.*$//p')"
|
|
|
+ for i in $PKGS; do
|
|
|
+ if grep -q "^Package: ${i}$" ${p}; then
|
|
|
+ # echo ${i}
|
|
|
+ if [ -n "${REALPKGS}" ]; then
|
|
|
+ REALPKGS="${REALPKGS} ${i}"
|
|
|
+ else
|
|
|
+ REALPKGS="${i}"
|
|
|
+ fi
|
|
|
+ fi
|
|
|
+ done
|
|
|
+
|
|
|
mylog "realpkgs.txt2" "$(echo ${REALPKGS} | xargs | tr ' ' '\n')"
|
|
|
|
|
|
PKGS="$REALPKGS"
|
|
@@ -161,15 +101,23 @@ resolve_deps() {
|
|
|
}
|
|
|
|
|
|
TARGET_DIR="/var/tmp/indices"
|
|
|
-
|
|
|
SHELL_DIR=$(dirname $(readlink -f $0))
|
|
|
|
|
|
-# PRIO="required"
|
|
|
-# required=$(awk -v SEARCH_STR="${PRIO}" -f ${SHELL_DIR}/analysis.awk /var/tmp/indices/172.29.220.242/mirror/kylin/dists/v101/main/binary-amd64/Packages)
|
|
|
-# required_deps=$(resolve_deps "${required}")
|
|
|
-# mylog "01-required@deps.txt2" "$(echo ${required_deps} | xargs | tr ' ' '\n')"
|
|
|
+# bash包依赖
|
|
|
+# resolve_deps bash
|
|
|
+
|
|
|
+PRIO="required"
|
|
|
+required=$(awk -v SEARCH_STR="${PRIO}" -f ${SHELL_DIR}/analysis.awk ${TARGET_DIR}/172.29.220.242/mirror/kylin/dists/v101/main/binary-amd64/Packages)
|
|
|
+mylog "01-required.txt2" "${required}"
|
|
|
+
|
|
|
+required_deps=$(resolve_deps "${required}")
|
|
|
+mylog "01-required@deps.txt2" "$(echo ${required_deps} | xargs | tr ' ' '\n')"
|
|
|
|
|
|
PRIO="important"
|
|
|
-important=$(awk -v SEARCH_STR="${PRIO}" -f ${SHELL_DIR}/analysis.awk /var/tmp/indices/172.29.220.242/mirror/kylin/dists/v101/main/binary-amd64/Packages)
|
|
|
+important=$(awk -v SEARCH_STR="${PRIO}" -f ${SHELL_DIR}/analysis.awk ${TARGET_DIR}/172.29.220.242/mirror/kylin/dists/v101/main/binary-amd64/Packages)
|
|
|
+mylog "02-important.txt2" "${important}"
|
|
|
+
|
|
|
important_deps=$(resolve_deps "${important}")
|
|
|
mylog "02-important@deps.txt2" "$(echo ${important_deps} | xargs | tr ' ' '\n')"
|
|
|
+
|
|
|
+echo "${required_deps} ${important_deps}"
|