Bug 38269 - Надо использовать настройки прокси-сервера
Summary: Надо использовать настройки прокси-сервера
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: apt-repo (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Andrey Cherepanov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-03-24 13:21 MSK by Sergey Y. Afonin
Modified: 2020-03-30 13:27 MSK (History)
1 user (show)

See Also:


Attachments
Поиск proxy в apt (1.88 KB, patch)
2020-03-27 16:28 MSK, Sergey Y. Afonin
no flags Details | Diff
Поиск proxy в apt (1.91 KB, patch)
2020-03-28 11:55 MSK, Sergey Y. Afonin
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Sergey Y. Afonin 2020-03-24 13:21:10 MSK
# 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, а проблема присутствует только на одном. Как это гарантирванно воспроизвести в любых условиях пока не знаю.
Comment 1 Sergey Y. Afonin 2020-03-24 13:25:01 MSK
--- 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

и далльше уже до конца.
Comment 2 Andrey Cherepanov 2020-03-24 15:13:47 MSK
(Ответ для 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);
}
Comment 3 Sergey Y. Afonin 2020-03-24 16:09:27 MSK
(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 умеет общесистемный прокси использовать, то ещё и общесистемный проверить.
Comment 4 Sergey Y. Afonin 2020-03-24 16:52:53 MSK
(In reply to Sergey Y. Afonin from comment #3)

> А если тут пусто, и apt умеет общесистемный прокси использовать,
> то ещё и общесистемный проверить.

Или общесистемный curl сам поймает?..
Comment 5 Sergey Y. Afonin 2020-03-27 16:28:38 MSK
Created attachment 8686 [details]
Поиск proxy в apt

Патч на первое время. Возможно "my $proxy = get_proxy()" следует перенести из глобальных переменных в функции с curl, чтобы не дёргать get_proxy() во всех случаях. Вероятно полноценным патчем не является, но в моём случае работает.
Comment 6 Sergey Y. Afonin 2020-03-28 11:55:27 MSK
Created attachment 8689 [details]
Поиск proxy в apt

Вот так получше будет.
Comment 7 Sergey Y. Afonin 2020-03-30 13:27:11 MSK
Про 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.