# time apt-repo add 248359 0.02user 0.01system 2:11.94elapsed 0%CPU (0avgtext+0avgdata 7804maxresident)k 0inputs+0outputs (0major+2718minor)pagefaults 0swaps При этом "apt-repo rm all && apt-repo add p9" отрабатывается с нормальной скоростью. p9, x86_64 apt-repo 1.3.10 perl v5.28.2 Может быть это надо вешать на Perl. Странность проблемы в том, у меня уже несколько хостов с p9/x86_64, а проблема присутствует только на одном. Как это гарантирванно воспроизвести в любых условиях пока не знаю.
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=8182, si_uid=0, si_status=0, si_utime=0, si_stime=0} --- wait4(8182, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 8182 pipe2([4, 5], O_CLOEXEC) = 0 pipe2([6, 7], O_CLOEXEC) = 0 clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f1ade25b8d0) = 8183 close(7) = 0 close(5) = 0 read(6, "", 4) = 0 close(6) = 0 fcntl(4, F_SETFD, FD_CLOEXEC) = 0 ioctl(4, TCGETS, 0x7ffcf73ed160) = -1 ENOTTY (Inappropriate ioctl for device) lseek(4, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek) read(4, Висит тут. Далее начиная с ранее незаконченного "read(4,": read(4, "000", 8192) = 3 read(4, "", 8192) = 0 --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=8183, si_uid=0, si_status=7, si_utime=0, si_stime=0} --- close(4) = 0 и далльше уже до конца.
(Ответ для Sergey Y. Afonin на комментарий #0) > # time apt-repo add 248359 > 0.02user 0.01system 2:11.94elapsed 0%CPU (0avgtext+0avgdata 7804maxresident)k > 0inputs+0outputs (0major+2718minor)pagefaults 0swaps > > При этом "apt-repo rm all && apt-repo add p9" отрабатывается с нормальной > скоростью. > > p9, x86_64 > apt-repo 1.3.10 > perl v5.28.2 > > Может быть это надо вешать на Perl. Странность проблемы в том, у меня уже > несколько хостов с p9/x86_64, а проблема присутствует только на одном. Как > это гарантирванно воспроизвести в любых условиях пока не знаю. curl'ом: sub task_exists { my $task = shift; my @out = (); open P, '-|', "curl -s -w '%{http_code}' http://git.altlinux.org/tasks/$task/plan/add-bin"; @out = <P>; close P; return ( (pop @out) eq "200" and (scalar @out) != 0); }
(In reply to Andrey Cherepanov from comment #2) > curl'ом: Да, уже нашёл, только написать не успел. Проблема в том, что этому хосту выход в сеть напрямую перекрыт. apt работает через прокси, а curl из apt-repo напрямую. А остальное так совпало. Есть ещё закрытые хосты, но у них i586, и они не попадают в условие if( $arch eq 'x86_64' and ( $ARGV[0] eq 'rm' or task_has_arepo( $object ) ) ) А тут попался закрытый хост x86_64. Надо смотреть apt-config dump | grep proxy видимо. А если тут пусто, и apt умеет общесистемный прокси использовать, то ещё и общесистемный проверить.
(In reply to Sergey Y. Afonin from comment #3) > А если тут пусто, и apt умеет общесистемный прокси использовать, > то ещё и общесистемный проверить. Или общесистемный curl сам поймает?..
Created attachment 8686 [details] Поиск proxy в apt Патч на первое время. Возможно "my $proxy = get_proxy()" следует перенести из глобальных переменных в функции с curl, чтобы не дёргать get_proxy() во всех случаях. Вероятно полноценным патчем не является, но в моём случае работает.
Created attachment 8689 [details] Поиск proxy в apt Вот так получше будет.
Про proxy from APT этот баг. apt-repo-1.3.11-alt1 -> sisyphus: Mon Mar 30 2020 Andrey Cherepanov <cas@altlinux> 1.3.11-alt1 - Add new repositories: c8.1, autoimports.p9 and altlinuxclub.p9. - Use proxy from APT for network operations (thanks asy@) (ALT #38294). - Set optional Arepo ignoring in file /etc/sysconfig/apt-repo (ALT #34167). - Fix License tag according to SPDX.