`apt install pkg1 pkg2` отличается от `apt install pkg1 && apt install pkg2` почему?

Вот чистый awkподход:

$ awk 'BEGIN{c=0}
       {
        $6 = ($2 - $3)*$5; 
        a[NR]=$0; 
        sum+=$6
        if(NR%5==0){
            a[++c]=$0" "sum; 
            sum=0;
        } 
       }
       END{ 
        for(i in a){
            print a[i]
            }
        }' file
O 3.7662066970 4.1621550790 4.192557641 -4.29652 1.7012 3.00125
O 7.9266344100 8.3547127200 4.196295567 -4.36260 1.86753 3.0815
O 12.112224767 12.551008287 4.193631562 -4.38552 1.92429 3.17763
Pb 4.1621550790 4.1621550790 4.192557641 3.39279 0
O 3.7662066970 4.1621550790 4.192557641 -4.29652 1.7012
Ti 6.1302323500 6.2584338990 4.192557641 5.23841 -0.671572
O 5.8163744340 6.2584338990 4.192557641 -2.13267 0.942767
O 5.8163744340 6.2584338990 4.192557641 -2.13267 0.942767
Pb 8.3547127200 8.3547127200 4.196295567 3.40984 0
O 7.9266344100 8.3547127200 4.196295567 -4.36260 1.86753
Ti 10.318243871 10.452860504 4.196295567 5.26652 -0.708961
O 9.9935741680 10.452860504 4.196295567 -2.13625 0.98115
O 9.9935741680 10.452860504 4.196295567 -2.13625 0.98115
Pb 12.551008287 12.551008287 4.193631562 3.43289 0
O 12.112224767 12.551008287 4.193631562 -4.38552 1.92429

Обратите внимание, что это удалит вкладки, если, как кажется, ваш входной файл разделен табуляцией. Если это проблема, вы можете вернуть их с помощьюsed:

$ awk '...' | sed 's/ /\t/g'
O   3.7662066970    4.1621550790    4.192557641 -4.29652    1.7012  3.00125
O   7.9266344100    8.3547127200    4.196295567 -4.36260    1.86753 3.0815
O   12.112224767    12.551008287    4.193631562 -4.38552    1.92429 3.17763
Pb  4.1621550790    4.1621550790    4.192557641 3.39279 0
O   3.7662066970    4.1621550790    4.192557641 -4.29652    1.7012
Ti  6.1302323500    6.2584338990    4.192557641 5.23841 -0.671572
O   5.8163744340    6.2584338990    4.192557641 -2.13267    0.942767
O   5.8163744340    6.2584338990    4.192557641 -2.13267    0.942767
Pb  8.3547127200    8.3547127200    4.196295567 3.40984 0
O   7.9266344100    8.3547127200    4.196295567 -4.36260    1.86753
Ti  10.318243871    10.452860504    4.196295567 5.26652 -0.708961
O   9.9935741680    10.452860504    4.196295567 -2.13625    0.98115
O   9.9935741680    10.452860504    4.196295567 -2.13625    0.98115
Pb  12.551008287    12.551008287    4.193631562 3.43289 0
O   12.112224767    12.551008287    4.193631562 -4.38552    1.92429
2
24.03.2020, 15:23
1 ответ

aptвыводит простое сообщение о промахе -–-, которое дает подсказку:

Note, selecting 'php-redis' instead of 'php7.1-redis'

php7.1-redisне существует, точнее, это виртуальный пакет, предоставленный php-redis. Итак, aptменяется

apt install php7.1 php7.1-redis

-

apt install php7.1 php-redis

Когда оба пакета запрашиваются одновременно, aptрассматривает все их зависимости, и в этом сценарии сбивается с толку из-за обработки виртуальных альтернатив. php-redisзависит от phpapi-20190902 | phpapi-20180731 | phpapi-20170718 | phpapi-20160303 | phpapi-20151012 | phpapi-20131226, которые предоставляются рядом конкретных пакетов PHP; aptвыбирает php7.4-cli, который является первым пакетом в порядке оценки, удовлетворяющим зависимости. Он также разрешает php7.1, но, вероятно, потому, что соединение phpapiотличается (PHP 7.4 предоставляет phpapi-20190902, PHP 7.1 предоставляет phpapi-20160303), не понимает, что php7.1в конечном итоге удовлетворяет php-redis' зависимости.

Когда php-redisустанавливается после php7.1, требования phpapiуже выполнены, поэтому aptне пытается установить что-либо еще.

3
28.04.2021, 23:19

Теги

Похожие вопросы