Почему tsocks не работает с apt-get?
Я использую tsocks
чтобы разобраться в моих связях. Когда я запускаю следующие команды, apt-get
не socksified:
$ . tsocks -on
$ sudo apt-get update
Однако, когда я запускаю все это в одну строку, как показано ниже, это работает.
sudo tsocks apt-get update
Я подтвердил, что когда я печатаю . tsocks -on
мой LD_PRELOAD
переменная окружения установлена в /usr/lib/libtsocks.so
,
Почему первый не работает?
3 ответа
Согласно ответу @creveti-mihai, я посмотрел на sudoers
справочная страница. Unfortunately, as the man page says, it is not possible to preserve LD_*
переменные. Here is what the man page says:
Note that the dynamic linker on most operating systems will remove variables that can control dynamic linking from the environment of setuid executables, including sudo. Depending on the operating system this may include _RLD*, DYLD_*, LD_*, LDR_*, LIBPATH, SHLIB_PATH, and others. These type of variables are removed from the environment before sudo even begins execution and, as such, it is not possible for sudo to preserve them.
So, I'll have to look at specifying the proxy in apt's own configuration files using Acquire::http::proxy
а также Acquire::https::proxy
,
Хотя он уже дал ответ, я хочу поделиться тем, что сработало для меня, используя Ubuntu 14.04:sudo apt-get install tsocks
Затем откройте /etc/tsocks.conf и добавьте свой сервер на сервер и перенесите на server_port, а также добавьте диапазон вашего socks-сервера как локальный, например
Например, если ваш IP-адрес 90.70.60.5, напишите:local = 90.70.60.0/255.255.255.0
(Обратите внимание.0 как последняя часть в IP-адрес)
Теперь попробуйте:sudo tsocks apt-get update
(или любая другая команда apt-get)
Если это не работает с использованием sudo, войдите в систему как root, как: sudo su
Тогда попробуйте еще раз:tsocks apt-get update
Я находился за сервером socks 5, чтобы найти ссылку для скачивания, у меня не было доступа с моего компьютера, и она работала без нареканий.
Примечание: с этим мне не пришлось использовать материал "Acquire" в /etc/apt/apt.conf
Это корень LD_PRELOAD
также установлен на /usr/lib/libtsocks.so
? Взгляни на:
-E
(сохранить окружающую среду) вариант дляsudo
, Пример:sudo -E bash -c 'echo $LD_PRELOAD'
противsudo echo $LD_PRELOAD
;sudoers
файл:Defaults env_keep
;