Обновление через ПРОКСИ!

НЕ РАБОТАЮТ!!!
Всё, что найдено, сгуглено и скопипизжено было скурено, обжёвано и приведено к Божьему БАШУ:

#!/bin/bash
PROXY=“PROXY.PROXY:3128”
f_exist()
{
if [ -f $PATH_F ]
then
if [ -f $PATH_F".bak" ]
then
cp $PATH_F".bak" $PATH_F
echo “Обнулил “$PATH_F
else
cp $PATH_F $PATH_F”.bak”
echo “Создал “$PATH_F”.bak”
fi
else
echo “Обьект “$PATH_F” отсутствовал!!!”
touch $PATH_F
touch $PATH_F".bak"
fi
}

#/etc/wgetrc
PATH_F=“/etc/wgetrc”
f_exist
echo “https_proxy = http://”$PROXY"/" >> $PATH_F
echo “https_proxy = http://”$PROXY >> $PATH_F
echo “http_proxy = http://”$PROXY"/" >> $PATH_F
echo “http_proxy = http://”$PROXY >> $PATH_F
echo “ftp_proxy = http://”$PROXY"/" >> $PATH_F
echo “ftp_proxy = http://”$PROXY >> $PATH_F
echo “use_proxy = on” >> $PATH_F

#/etc/layman.cfg
PATH_F=“/etc/layman/layman.cfg”
f_exist
echo “http_proxy : http://”$PROXY"/" >> $PATH_F
echo “https_proxy : http://”$PROXY"/" >> $PATH_F
echo “proxy : http://”$PROXY"/" >> $PATH_F

#/etc/env.d/99local
PATH_F=“/etc/env.d/99local”
f_exist
echo “http_proxy = http://”$PROXY"/" >> $PATH_F
echo “https_proxy = http://”$PROXY"/" >> $PATH_F
echo “ftp_proxy = http://”$PROXY"/" >> $PATH_F
echo “all_proxy = http://”$PROXY"/" >> $PATH_F
echo "rsync_proxy = "$PROXY >> $PATH_F
echo "RSYNC_PROXY = "$PROXY >> $PATH_F

#/etc/make.conf
PATH_F=“/etc/make.conf”
f_exist
echo “http_proxy = \“http://”$PROXY”\“” >> $PATH_F
echo “ftp_proxy = \“http://”$PROXY”\“” >> $PATH_F
echo “RSYNC_PROXY = \”“$PROXY”\“” >> $PATH_F

#/etc/environment
PATH_F=“/etc/environment”
f_exist
echo “http_proxy=http://”$PROXY>> $PATH_F
echo “https_proxy=http://”$PROXY>> $PATH_F
echo “ftp_proxy=http://”$PROXY >> $PATH_F
echo “all_proxy=http://”$PROXY >> $PATH_F
echo “rsync_proxy=”$PROXY >> $PATH_F

#/var/lib/layman/calculate/profiles/calculate.env
PATH_F=“/var/lib/layman/calculate/profiles/calculate.env”
f_exist
sed -ri ‘s|git://|http://|g’ $PATH_F

#git
git config --global --unset http.proxy
git config --global http.proxy $PROXY

git config --global --unset https.proxy
git config --global https.proxy $PROXY

git config --global --unset url.“https://”.insteadOf git://
git config --global url.“https://”.insteadOf git://

Какие ещё есть предложения?

предложение одно - перестать тащить всё подряд и разобраться.
можно разбираться с одного конца - что именно не работает.
или с другого - что именно ты втащил и как оно работает и работает ли.

и что именно не работает сейчас и как?

Так. Определяемся с концами.
Не работает вот это:

calculate /home/guest/Рабочий стол # cl-core --method update --sync-only --skip-eix-update
Синхронизация репозиториев
* Поиск нового сервера обновлений …
* Не удалось найти рабочий сервер обновлений
* Резервная синхронизация репозитория Distros …
* Git git://github.com/calculatelinux/distros.git недоступен
* Не удалось найти сервер бинарных обновлений
* Не удалось обновить
А работает вот это:
calculate /home/guest/Рабочий стол # git clone git://github.com/calculatelinux/distros.git
Клонирование в «distros»…
remote: Enumerating objects: 29, done.
remote: Counting objects: 100% (29/29), done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 11013 (delta 12), reused 21 (delta 10), pack-reused 10984
Получение объектов: 100% (11013/11013), 1.43 MiB | 586.00 KiB/s, готово.
Определение изменений: 100% (7424/7424), готово.
calculate /home/guest/Рабочий стол # wget https://upload.wikimedia.org/wikipedia/commons/thumb/e/e2/Argenis\_1664.png/150px-Argenis\_1664.png
-2019-03-08 02:14:44- https://upload.wikimedia.org/wikipedia/commons/thumb/e/e2/Argenis\_1664.png/150px-Argenis\_1664.png
Распознаётся proxy.astu (proxy.astu)… 10.0.2.4
Подключение к proxy.astu (proxy.astu)|10.0.2.4|:3128… соединение установлено.
Proxy-запрос отправлен. Ожидание ответа… 200 OK
Длина: 53111 (52K) [image/png]
Сохранение в: «150px-Argenis_1664.png»

150px-Argenis_1664. 100%[===>] 51.87K 321KB/s за 0.2s

2019-03-08 02:14:45 (321 KB/s) - «150px-Argenis_1664.png» сохранён [53111/53111]

Layman -S падает так же, emerge --sync туда же и на том же месте.
Соответственно вопрос: какую ещё магию нужно сотворить, чтобы первое заработало?
Пинги у меня мёртвые - говорю сразу. ICMP пакеты порублены проксёй, поэтому если в cl-update где-то на него опёрлись, то оно скажет твёрдо - Packet filtered. Максимум - dns вернёт конечный IP узла и всё.

Виктор Кустов wrote:

предложение одно - перестать тащить всё подряд и разобраться.
можно разбираться с одного конца - что именно не работает.
или с другого - что именно ты втащил и как оно работает и работает ли.

и что именно не работает сейчас и как?

Огромное спасибо за реакцию! Не ожидал оперативности) Временно попробовал с помощью Socat порты перенаправить - можно такую штуку провернуть, но не в масштабах предприятия - утилиту socat саму с интернета ставить нужно.

Антон Цыгулёв wrote:

Так. Определяемся с концами.
Не работает вот это:

calculate /home/guest/Рабочий стол # cl-core --method update --sync-only --skip-eix-update
Синхронизация репозиториев
* Поиск нового сервера обновлений …
* Не удалось найти рабочий сервер обновлений
* Резервная синхронизация репозитория Distros …
* Git git://github.com/calculatelinux/distros.git недоступен
* Не удалось найти сервер бинарных обновлений
* Не удалось обновить

А работает вот это:

calculate /home/guest/Рабочий стол # git clone git://github.com/calculatelinux/distros.git

т.е. секция git в твоём скрипте ожидаемо дала эффект

calculate /home/guest/Рабочий стол # wget https://upload.wikimedia.org/wikipedia/commons/thumb/e/e2/Argenis\_1664.png/150px-Argenis\_1664.png

… как и wget

Layman -S падает так же, emerge --sync туда же и на том же месте.
Соответственно вопрос: какую ещё магию нужно сотворить, чтобы первое заработало?
Пинги у меня мёртвые - говорю сразу. ICMP пакеты порублены проксёй, поэтому если в cl-update где-то на него опёрлись, то оно скажет твёрдо - Packet filtered. Максимум - dns вернёт конечный IP узла и всё.

layman:

If you need to use a proxy for access to the Internet, you can use the corresponding variable in the layman configuration file. layman will also respect the http_proxy environment variable in case you set it.

т.е. секция должна выглядеть так:

#/etc/layman.cfg
PATH_F="/etc/layman/layman.cfg"
f_exist
echo "http_proxy : http://"$PROXY >> $PATH_F
echo "https_proxy : http://"$PROXY >> $PATH_F

потому что в конфиге layman видим такое:

$ grep -i proxy -C2 /etc/layman/layman.cfg 


#-----------------------------------------------------------
 # Proxy support
 # If unset, layman will use the http_proxy/https_proxy environment variable.
#
#http_proxy  : http://[user:pass@]www.my-proxy.org:3128
#https_proxy : https://[user:pass@]www.my-proxy.org:3128

#-----------------------------------------------------------

теперь по секции /etc/env.d/99local
после того как ты в ней выставил переменную прокси, env-update и проверь set | grep proxy

если всё ок, пробуй ещё раз

Спасибо за совет, но не помогло… (

https_proxy : https://[user:pass@]www.my-proxy.org:3128
Ни в таком ни в предыдущем варианте. Не идёт он через прокси-сервер.
выводы env | grep proxy и set | grep proxy совпадают… практически - порядок разный.
А гвоздь, как по мне - вот здесь:

cl-core --method update --sync-only --skip-eix-update

Это единственная команда, вывод которой совпадает со всеми остальными блоками.
Следовательно используется во всех неработающих:
layman -S, emerge --sync в том числе и cl-update и т.д. и т.п.
И начинается с синхронизации.
Следовательно, вопрос: как её нормально настроить?

на форуме было такое

https://www.calculate-linux.ru/boards/16/topics/28585?r=28606#message-28606

[update]
cl_update_rep_url = http://git.calculate.ru/calculate/portage.git,http://git.calculate.ru/calculate/overlay.git,http://git.calculate.ru/calculate/distros.git

Только теперь имхо это файл /var/lib/calculate/calculate.env

Не изменил, но добавил, т.е. не было ссылок на git:// и вообще cl_update_rep_url = …
Перезапустил, почесал бороду - неа, не поверил.

нашел ещё одно место:

/var/lib/layman/distros/profiles/calculate.env

вот после замены в нём всех git на http вывод изменился:

calculate /home/guest/Рабочий стол # layman -s calculate

* Fetching remote list…
* Fetch Ok

* Syncing selected overlay(s)…
* Running Git… # ( cd /var/lib/layman/calculate && /usr/libexec/calculate/cl-git-wrapper pull )
Синхронизация репозиториев
* Поиск нового сервера обновлений …
* Не удалось найти рабочий сервер обновлений
* Резервная синхронизация репозитория Calculate …
* Git http://git.calculate.ru/calculate/overlay.git недоступен
* Не удалось найти сервер бинарных обновлений
* Не удалось обновить
* Failure result returned from Git
*
* Errors:
* ------
* Failed to sync overlay “calculate”.
* Error was: Syncing overlay “calculate” returned status 2!
* db.sync()
*
!!! Found 2 make.conf files, using both ‘/etc/make.conf’ and ‘/etc/portage/make.conf’

* CLI: Errors occurred processing action sync
*
* Errors:
* ------
* Failed to sync overlay “calculate”.
* Error was: Syncing overlay “calculate” returned status 2!
* db.sync()
*

Git http://git.calculate.ru/calculate/overlay.git недоступен
почему?
Я его даже отклонить могу. А тут - недоступен.

/etc/make.conf выпилен в gentoo, перенеси полезное в /etc/portage/make.conf/custom.XXX, где XXX твой дистр (например у меня - cldx) и убей /etc/make.conf

остальное завтра

Убил /etc/make.conf и поправил /etc/portage/make.conf/custom.cldm
!!! Found 2 make.conf files, using both ‘/etc/make.conf’ and ‘/etc/portage/make.conf’
Ожидаемо пропало.

emerge заработал, но не --sync.
Репозитории calculate и distros остались недоступны из layman -S, cl-update, emerge --sync.
И сервер обновлений не ищется.
Попробовал добавить сторонний оверлей. То что на https - работает. На git не работает. (может добавил не так… - опыта маловато - для примера бы что-нибудь безобидное.)
Но сам Git - работает. Создаётся ощущение, что он не подхватывает настройки из глобального конфигурационного файла в процессе обновления.

cl_update_rep_url выставлена?

Подопытный: /var/lib/calculate/calculate.env
В этом файле испробовано следующее:
http://git.calculate.ru/calculate/portage.git,http://git.calculate.ru/calculate/overlay.git,http://git.calculate.ru/calculate/distros.git
Изменения в выводе:

Синхронизация репозиториев
Поиск нового сервера обновлений …
Не удалось найти рабочий сервер обновлений
Резервная синхронизация репозитория Calculate …
Git http://git.calculate.ru/calculate/overlay.git недоступен
После этого исправлено на https:
https://git.calculate.ru/calculate/portage.git,https://git.calculate.ru/calculate/overlay.git,https://git.calculate.ru/calculate/distros.git
Изменения в выводе:
Синхронизация репозиториев
Поиск нового сервера обновлений …
Не удалось найти рабочий сервер обновлений
Резервная синхронизация репозитория Calculate …
Git https://git.calculate.ru/calculate/overlay.git недоступен
Также попробовал выставить cl_update_other_set = on на оба варианта - ничего нового.
В общем, ничего нового, layman -S не отрабатывает. И само обновление системы также не проходит.

cl-core пытается напрямую игнорируя все настройки проверить доступность порта, которое она получила из префикса протокола - для https это будет 443, для git - его порт, номер сейчас не помню.
Сие замечательное слов нет решение можно квикхакнуть таким образом:
— lib/utils/git.py.old 2019-02-15 17:00:33.000000000 +0700
+++ lib/utils/git.py 2019-06-04 12:22:29.346346839 +0700
@@ -542,8 +542,8 @@
:return:
“”"
git_port, target = Git.parse_url(url)

  •    if git_port != self.GitProtocol.Unknown:
    
  •        return check_port(target, git_port, timeout=20)
    

+# if git_port != self.GitProtocol.Unknown:
+# return check_port(target, git_port, timeout=20)
return True

 def isNeedUnpack(self, rpath, fns=(".gitignore",

после чего при правильных настройках прокси и update.cl_update_rep_url все работает