Преобразование зависимостей пакета .deb в граф graph.iz с использованием awk - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь написать программу convert.awk, которая выводит действительный граф .dot, используя graphviz, например:

$ awk –f convert.awk deb-9-packages.deb > output.dot

Пока что я не знаю, как это сделать. это

.deb пример формата файла:

Package: libghc-temporary-dev
Source: haskell-temporary (1.2.0.4-3)
Version: 1.2.0.4-3+b1
Installed-Size: 145
Maintainer: Debian Haskell Group <pkg-haskell-maintainers@lists.alioth.debian.org>
Architecture: i386
Provides: libghc-temporary-dev-1.2.0.4-c3ae9
Depends: libghc-base-dev-4.9.0.0-1bac3, libghc-directory-dev-1.2.6.2-a2e35, libghc-exceptions-dev-0.8.3-7b68b, libghc-filepath-dev-1.4.1.0-99c7a, libghc-transformers-dev-0.5.2.0-cdb38, libghc-unix-dev-2.7.2.0-8480b, libc6 (>= 2.3.6-6~), libgmp10
Suggests: libghc-temporary-doc, libghc-temporary-prof
Description: Temporary files and directories
Homepage: http://www.github.com/feuerbach/temporary
Description-md5: b717775f10f14d831ace456e90acb20a
Ghc-Package: temporary-1.2.0.4-2l1bIkqO41RI46P32T9qrM
Tag: devel::lang:haskell
Section: haskell
Priority: extra
Filename: pool/main/h/haskell-temporary/libghc-temporary-dev_1.2.0.4-3+b1_i386.deb
Size: 26632
MD5sum: 9e6086986b910b1356a032bebf06c401
SHA256: d1ebb9b1851ae95f02f97671a82dca92eaca8dd4699bd52d39191208606a0caa

Package: libghc-temporary-doc
...

1 Ответ

0 голосов
/ 30 апреля 2020

Это не настоящий формат файла .deb, но это вывод less Если вы cat ваш .deb или попытаетесь отредактировать его, вы увидите что-то очень другой. Тем не менее, less действительно производит такой хороший вывод, поэтому:

less yourDebFile.deb | 
gawk -F":" '
$1==" Package"{pkg=$2;sub(/^ /,"",pkg)}
$1==" Depends"{
  cnt=split($2,dep,",")
  for(i=1;i<=cnt;i++){
    sub(/^ /,"",dep[i])
    print pkg, "->", "\"" dep[i] "\""
  }
}'
...