Quantcast
Channel: Raspberry Pi Forums
Viewing all articles
Browse latest Browse all 2628

Raspberry Pi OS • apt dependency loops?

$
0
0
I used "doit" script ...
#!/bin/bash
apt list --installed 2>/dev/null | sed -e s';/.*$;;' | grep -v "Listing\.\.\." | sort > a
rm -f c
rm -rf depends
mkdir depends
for f in $(cat a)
do
apt-cache depends $f | grep 'Depends:' | sed -e 's/.*Depends: //' | sort > depends/$f
done

... to create file "a" of all installed packages.
And for each such packages $p, to store all packages it depends upon in "depends/$p".
It took 52 minutes with NVME SSD on non-overclocked Pi5 to process all 2653 packages installed:

Code:

pi@raspberrypi5:~/packages $ wc --lines a2653 api@raspberrypi5:~/packages $ ls -l depends/* | wc --lines2653pi@raspberrypi5:~/packages $ wc --lines depends/* | tail -1  11468 totalpi@raspberrypi5:~/packages 
with an average of 4.32 dependencies per package.

"tsort" command allows to determine a total ordering from partial ordering:

Code:

pi@raspberrypi5:~/packages $ cat d2 42 34 32 1pi@raspberrypi5:~/packages $ tsort d2143pi@raspberrypi5:~/packages $ 

In case of circles present, those get reported:

Code:

pi@raspberrypi5:~/packages $ tsort cirtsort: cir: input contains a loop:tsort: 1tsort: 2tsort: 3123pi@raspberrypi5:~/packages $ 

I used script "mkgra" to create partial ordering of all dependent packages:

Code:

#!/bin/bashfor p in `cat a`dofor d in `cat depends/$p`do  echo "$p $d"donedone

The created file "gra" ...

Code:

pi@raspberrypi5:~/packages $ ./mkgra > gra pi@raspberrypi5:~/packages $ head -1 graaccountsservice <dbus-system-bus>pi@raspberrypi5:~/packages $ tail -1 grazstd zlib1gpi@raspberrypi5:~/packages $ wc --lines gra11468 grapi@raspberrypi5:~/packages $ 
Has all the 11468 dependencies.

I was surprised to get 11 dependency loops reported. Shouldn't dependencies be loop free?

Example of a dependency loop of length 3:

Code:

pi@raspberrypi5:~/packages $ grep "rpi-eeprom raspi-utils" grarpi-eeprom raspi-utilspi@raspberrypi5:~/packages $ grep "raspi-utils raspinfo" graraspi-utils raspinfopi@raspberrypi5:~/packages $ grep "raspinfo rpi-eeprom" graraspinfo rpi-eeprompi@raspberrypi5:~/packages $ 

All 11 dependency loops:
pi@raspberrypi5:~/packages $ cat err
tsort: gra: input contains a loop:
tsort: libwww-perl
tsort: liblwp-protocol-https-perl
tsort: gra: input contains a loop:
tsort: tasksel-data
tsort: tasksel
tsort: gra: input contains a loop:
tsort: rpi-eeprom
tsort: raspi-utils
tsort: raspinfo
tsort: gra: input contains a loop:
tsort: libcamera0.3
tsort: libcamera-ipa
tsort: gra: input contains a loop:
tsort: node-babel-plugin-polyfill-corejs2
tsort: node-babel-helper-define-polyfill-provider
tsort: node-babel7
tsort: gra: input contains a loop:
tsort: node-babel-plugin-polyfill-corejs3
tsort: node-babel-helper-define-polyfill-provider
tsort: node-babel7
tsort: gra: input contains a loop:
tsort: node-babel-plugin-polyfill-regenerator
tsort: node-babel-helper-define-polyfill-provider
tsort: node-babel7
tsort: gra: input contains a loop:
tsort: node-es-abstract
tsort: node-deep-equal
tsort: gra: input contains a loop:
tsort: nodejs
tsort: libnode108
tsort: node-acorn
tsort: gra: input contains a loop:
tsort: dmsetup
tsort: libdevmapper1.02.1
tsort: gra: input contains a loop:
tsort: libc6
tsort: libgcc-s1
pi@raspberrypi5:~/packages $

Statistics: Posted by HermannSW — Tue Sep 10, 2024 2:12 pm



Viewing all articles
Browse latest Browse all 2628

Trending Articles