Как я использую GitHub через резкие прокси?

Я обнаружил, что вы можете запустить установщик в Wine. Это работает:

WINEPREFIX=/home/jason/java wine jre-7u11-windows-i586.exe

Затем, когда все будет готово, вы можете просто сжать /home/jason/java/drive_c/Program\ Files\ \(x86\)/Java/jre7/

Это должно работать и для jdk

23
задан Greg Bacon 6 January 2010 в 18:43
поделиться

1 ответ

Я только что прошел через это с компилятором MS Visual Studio. Мы конвертировали некоторые устаревшие проекты из DLL в статические библиотеки. В некоторые из этих DLL встроены диалоговые или строковые ресурсы. Мне удалось скомпилировать сценарии .RC для этих библиотек DLL в наше основное приложение, включив их в файл сценария RC основного приложения с помощью механизма «TEXTINCLUDE». Я обнаружил, что проще всего сделать это, отредактировав файл RC напрямую, но Visual Studio также предоставляет немного более «волшебный» механизм. Реализация, скорее всего, отличается в других компиляторах.


Для непосредственного управления основным сценарием RC:

.1. В разделе «2 TEXTINCLUDE» включите файл заголовка, который определяет идентификаторы ресурсов для вашей библиотеки. Синтаксис

2 TEXTINCLUDE 
BEGIN
    "#include ""my_first_lib_header.h""\r\n"
    "#include ""my_second_lib_header.h""\0" 
END

.2. В «3 ТЕКСТИНКЛЮДА»

3 TEXTINCLUDE
BEGIN
    "#include ""my_first_library.rc""\r\n"
    "#include ""my_second_library.rc""\0"
END

Шаги 3 и 4 должны выполняться автоматически, но я обнаружил, что более надежно просто ввести их самостоятельно, а не полагаться на компилятор сценариев ресурсов Microsoft, который обо всем позаботится.

.3. Добавьте файл заголовка с определениями ресурсов библиотеки в список символов только для чтения. Этот список обычно находится в верхней части файла.

#define APSTUDIO_READONLY_SYMBOLS
#include "my_first_lib_header.h"
#include "my_second_lib_header.h"
#undef APSTUDIO_READONLY_SYMBOLS

.4. Включите сценарий RC вашей библиотеки в раздел APSTUDIO_INVOKED. Обычно это находится в нижней части файла.

#ifndef APSTUDIO_INVOKED
#include "my_first_library.rc"
#include "my_second_library.rc"
#endif 

Вы также можете сделать все это автоматически через среду разработки Visual Studio, но я обнаружил, что это не всегда применимо, когда я ожидал.

  1. Откройте «Просмотр ресурсов» "в Visual Studio.
  2. Щелкните правой кнопкой мыши файл ресурсов основного приложения и выберите" Ресурс включает ... "в контекстном меню.
  3. В поле «Директивы символов только для чтения» добавьте операторы include для файлов .h, которые определяют идентификаторы ресурсов для ваших библиотек.
  4. В поле с надписью «Директивы времени компиляции» добавьте операторы include для сценария .rc вашей библиотеки.
  5. Щелкните ОК. Вы также можете вручную запустить компиляцию сценария RC, чтобы убедиться, что это произойдет.

Если сценарий ресурсов вашей библиотеки ссылается на какие-либо файлы на диске (текстовые файлы, файлы значков и т. Д.), Вам необходимо убедиться, что основной проект приложения знает, где их найти. Вы можете либо скопировать эти файлы в то место, где ваше приложение сможет их найти, либо вы можете добавить дополнительный путь включения в настройки компилятора.

Чтобы добавить дополнительный путь включения:

  1. Откройте диалоговое окно свойств для вашего основного приложения.
  2. Выбрать " Хост github.com Пользователь git Порт 22 Имя хоста github.com IdentityFile "/media/truecrypt1/Keys/GitHubKey.private" TCPKeepAlive да ЛичностиТолько да Хост ssh.github.com Пользователь git Порт 443 Имя хоста ssh.github.com IdentityFile "/media/truecrypt1/Keys/GitHubKey.private" TCPKeepAlive да ЛичностиТолько да
  3. Если все настроено правильно, вы сможете запустить ssh github.com и увидеть

    Привет, пользователь! Вы успешно прошли аутентификацию, но GitHub не предоставляет доступ к оболочке.
    Соединение с github.com закрыто.

    Если это не сработает, вы можете запустить ssh ssh.github.com и получить то же самое. Если первая команда не сработала, это означает, что вы используете прокси-сервер, который блокирует CONNECT на порту 22. Почти ни один прокси-сервер не блокирует CONNECT на порту 443, потому что он вам нужен для SSL.

Windows

  1. Загрузить msysgit . Некоторые настройки:
    • «Запустить Git из командной строки Windows»
    • «Использовать OpenSSH» (это очень важно)
    • Выберите окончания строк
  2. Загрузите connect.c . Этот инструмент заслуживает отдельного поста в основном из-за его предельной простоты. Он отражает штопор инструмента с открытым исходным кодом и используется для туннелирования через прокси. Да, инструмент на самом деле называется «connect.c». Для пользователей Windows доступен предварительно скомпилированный двоичный файл. Я поместил свой connect.exe в C: \ Windows \ connect.exe .
  3. Решите, хотите ли вы использовать Windows cmd.exe для выполнения материал или оболочку в стиле Cygwin. Или оба.
  4. Настройте оболочку Cygwin Git bash.

    Для оболочки в стиле Cygwin запустите значок Git и отредактируйте файл ~ / .ssh / config и убедитесь, что в файле нет расширение. Поместите в этот файл следующее:username@proxy.example.com : 443% h% p Хост github.com Пользователь git Порт 22 Имя хоста github.com IdentityFile "/c/Keys/GitHubKey.private" TCPKeepAlive да ЛичностиТолько да Хост ssh.github.com Пользователь git Порт 443 Имя хоста ssh.github.com IdentityFile "/c/Keys/GitHubKey.private" TCPKeepAlive да ЛичностиТолько да

  5. Настройте оболочку Windows cmd.exe .

    Предположим, вам не нравится оболочка Git Bash. Вы предпочитаете интерпретатор cmd.exe.

    • Перейдите в свой файл конфигурации по адресу C: \ Documents and Settings \ .ssh \ config
    • Сделайте его копию или создайте новую. Я назвал свой config-windows

    Поместите в файл следующее, снова обращая особое внимание на разделители путей и стили.

     ProxyCommand C: /Windows/connect.exe -H username@proxy.example.com : 443% h% p
    
    Хост github.com
    Пользователь git
    Порт 22
    Имя хоста github.com
    IdentityFile "C: \ Keys \ GitHubKey.private"
    TCPKeepAlive да
    ЛичностиТолько да
    
    Хост ssh.github.com
    Пользователь git
    Порт 443
    Имя хоста ssh.github.com
    IdentityFile "C: \ Keys \ GitHubKey.private"
    TCPKeepAlive да
    ЛичностиТолько да
    

Для получения полной информации см. полную запись в блоге .

22
ответ дан 29 November 2019 в 02:42
поделиться
Другие вопросы по тегам:

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