背景:
在Linux環境下(虛擬機器為 VirtualBox)擷取Android原始碼的時候,
使用命令:repo init -u git://android.git.kernel.org/platform/manifest.git 時提示下列錯誤:
fatal: Unable to look up android.git.kernel.org (port 9418) (Name or service not known)
機器以及軟體環境:
公司內網+代理+VirtualBox+Linux
發生問題的原因:
用一句話來概括就是連網出現問題,因為僅僅在網路設定裡面設定代理還不夠,我們需要用某種fanqiang工具來實現代理的操作。
根據以上原因重新整理出步驟:
1、安裝所需軟體:
sudo apt-get install git-core curl
2、設定工具repo的存放目錄並將其加入環境變數內:
mkdir ~/bin
PATH=~/bin:$PATH
3、下載repo的指令碼並將其模式改為可執行:
curl http://android.git.kernel.org/repo > ~/bin/repo
chmod a+x ~/bin/repo
4、建立下載原始碼的目錄
mkdir ~/source
cd ~/source
5、開始repo操作
repo init -u git://android.git.kernel.org/platform/manifest.git
如果是在正常網路不用代理的情況下一般repo都會成功。
但由於公司特殊的網路環境,導致在repo的時候發生fatal: Unable to look up android.git.kernel.org (port 9418) (Name or service not known)的問題。
這個時候可繼續以下的步驟能解決這個問題:
-------------------------------------------------------------------------
1、安裝corkscrew
sudo apt-get install corkscrew
2、在任意目錄建立任意檔案
例如: ~/bin/proxy-hoge-user.sh
添加如下內容並儲存:
1 #!/bin/bash
2 CORKSCREW=`which corkscrew`
3 $CORKSCREW proxy.hoge.com
8080 $1 $2
~/bin/user-pwd
其中:
proxy.hoge.com為代理的伺服器,
8080為代理的連接埠,
~/bin/user-pwd為存放代理的使用者名稱和密碼的檔案。
需要根據自己的情況進行設定。
3、建立存放代理的使用者名稱和密碼的檔案
~/bin/user-pwd
格式為
<username>:<password>
例如 user:pwd
4、改檔案屬性
chmod 755 ~/bin/proxy-hoge-user.sh
chmod 600 ~/bin/user-pwd
5、添加環境變數GIT_PROXY_COMMAND
sudo vi ~/.bashrc
添加如下命令:
export GIT_PROXY_COMMAND=~/bin/proxy-hoge-user.sh
儲存退出。
source ~/.bashrc