Introducing repo tool to ROS2 source downloading

試了下源碼編譯ROS2,覺(jué)得vcstool用著不順手,就改成了用repo來(lái)同步代碼, 熟悉vcstool的同學(xué)請(qǐng)?zhí)^(guò)1直接2。

1. 使用vcstool下載源碼
ROS2官方文檔
https://github.com/ros2/ros2/wiki/Linux-Development-Setup
中使用vcstool來(lái)下載和管理源碼,
下載時(shí)需要先取得一個(gè)repo列表文件(ros2.repos),再使用vcs-import src來(lái)同步:

mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
wget https://raw.githubusercontent.com/ros2/ros2/release-latest/ros2.repos
vcs-import src < ros2.repos

如果要更新代碼,
https://github.com/ros2/ros2/wiki/Maintaining-a-Source-Checkout
需要下載一個(gè)新的repo列表文件(手動(dòng)保存以前的版本),

cd ~/ros2_ws
mv -i ros2.repos ros2.repos.old
wget https://raw.githubusercontent.com/ros2/ros2/release-latest/ros2.repos

再通過(guò):

vcs custom --args remote update

同步本地repos,然后:

vcs import src < ros2.repos
vcs pull src

如果理解的沒(méi)有偏差,基本步驟應(yīng)該就是上面說(shuō)的這樣。
但實(shí)際情況可能會(huì)出現(xiàn)以下的問(wèn)題:

Could not checkout ref 'release-beta2': error: Your local changes to the following files would be overwritten by checkout:

推測(cè)可能是之前編譯的時(shí)候,源碼在編譯過(guò)程中(src/ament/ament_tools/scripts/ament.py build --build-tests --symlink-install)被修改了。
沒(méi)有去查vcs工具是否有命令統(tǒng)一 reset --hard , 但如果不想手動(dòng)一一reset --hard,就只能rm -rf重新來(lái)過(guò)了:P

也可能vcstool有其他的優(yōu)點(diǎn)(還支持hg,bzr, repo只支持git),
但經(jīng)過(guò)目前嘗試的這些,頓時(shí)覺(jué)得某移動(dòng)系統(tǒng)的repo工具用起來(lái)方便些。

看了下repo列表文件ros2.repos文件,截至目前beta2版本中的50個(gè)repo(包括其中兩個(gè)被注釋掉的)都是都在github上,于是就有了想改成manifest的沖動(dòng)。

2. 使用repo工具下載源碼

心動(dòng)不如行動(dòng),50個(gè)repo和某系統(tǒng)的幾百個(gè)相比改起來(lái)還是相對(duì)容易的。
最終版本放在了github上:https://github.com/rosports/ros2/blob/beta2/default.xml
下面就可以用repo來(lái)同步代碼啦(目前只有最新beta2版本)

mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
repo init -u https://github.com/rosports/ros2.git -b beta2
repo sync

同步完成后就可以來(lái)編譯了,后面更新版本只需要repo sync就可以了(遠(yuǎn)端已更新manifest)。

cd ~/ros2_ws/
src/ament/ament_tools/scripts/ament.py build --build-tests --symlink-install

試了下,編譯沒(méi)有問(wèn)題。其實(shí)編譯的過(guò)程是一樣的,只是下載代碼的方式不同而已。

關(guān)于repo工具的使用,請(qǐng)自行度娘或G。

暫記于此,如有疏漏或錯(cuò)誤,還望不吝指點(diǎn)。
歡迎來(lái)freenode IRC #ros-cn 頻道一起討論。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,234評(píng)論 25 708
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,662評(píng)論 19 139
  • 好有力量的一句話,很棒的指引! 我想說(shuō)我現(xiàn)在的變化,緣于這句話,因?yàn)槲沂軌蛄饲皫啄甑穆德禑o(wú)為,活得不快樂(lè),幸運(yùn)的事...
    chenkeyi3890閱讀 161評(píng)論 1 1
  • 愛(ài),是要付出,對(duì)嗎? 愛(ài),可以付出,但不是愛(ài)人之間衡量愛(ài)對(duì)方多少的天平。 愛(ài)人付出的多...
    楓樂(lè)spring閱讀 525評(píng)論 0 1
  • 沒(méi)有誰(shuí)是可以靠一輩子的,除了自己。所以必須學(xué)會(huì)獨(dú)立,必須學(xué)會(huì)享受孤獨(dú)和寂寞。
    惜月云煙雨閱讀 159評(píng)論 0 0

友情鏈接更多精彩內(nèi)容