当我尝试使用git子模块并在运行Yocto Linux和git 2.0.1的英特尔Edison上键入常用命令git submodule
时,我只是收到以下错误消息:
$> git submodule init
git: 'submodule' is not a git command. See 'git --help'
系统版本是:
$> uname -r
3.10.17-poky-edison+
$> git --version
git version 2.0.1
$> configure_edison --version
159
在谷歌上没有该错误的跟踪。
是否有额外的包安装?或者是因为git 2.0.1?
在我的Ubuntu(git 1.9.1)上,这些命令工作正常。
是的,爱迪生的Git可能是一个轻量级的版本。正如msw在评论中所提到的,最好的选择是从source构建git。但我相信Yocto包的下一个版本可能会附带一个新版本的git。
在使用Yocto构建git
时,行为符合预期。不幸的是,预期的行为并不是您所期望的。在Ubuntu上,git-submodule
包含在git
包中,在Yocto包中包含git-perltools
。当您运行bitbake git
时,将构建以下包(Thud):
ferry@delfion:~/.../out/linux64/build/tmp/work/corei7-32-poky-linux/git/2.18.1-r0/deploy-debs/corei7-32$ ls -l
- git_2.18.1-r0_i386.deb
- git-bash-completion_2.18.1-r0_i386.deb
- git-dbg_2.18.1-r0_i386.deb
- git-dev_2.18.1-r0_i386.deb
- git-doc_2.18.1-r0_i386.deb
- git-perltools_2.18.1-r0_i386.deb
- gitweb_2.18.1-r0_i386.deb
与git-perltools
含有git-submodule
。
你怎么能提前知道的?结帐https://layers.openembedded.org。您可以轻松找到:http://cgit.openembedded.org/openembedded-core/tree/meta/recipes-devtools/git/git.inc?h=thud,其中包含:
PERLTOOLS = " \
${libexecdir}/git-core/git-add--interactive \
${libexecdir}/git-core/git-archimport \
${libexecdir}/git-core/git-cvsexportcommit \
${libexecdir}/git-core/git-cvsimport \
${libexecdir}/git-core/git-cvsserver \
${bindir}/git-cvsserver \
${libexecdir}/git-core/git-difftool \
${libexecdir}/git-core/git-send-email \
${libexecdir}/git-core/git-svn \
${libexecdir}/git-core/git-instaweb \
${libexecdir}/git-core/git-submodule \
${libexecdir}/git-core/git-am \
${libexecdir}/git-core/git-request-pull \
${datadir}/gitweb/gitweb.cgi \
${datadir}/git-core/templates/hooks/prepare-commit-msg.sample \
${datadir}/git-core/templates/hooks/pre-rebase.sample \
${datadir}/git-core/templates/hooks/fsmonitor-watchman.sample \
"
# Git tools requiring perl
PACKAGES =+ "${PN}-perltools"
FILES_${PN}-perltools += " \
${PERLTOOLS} \
${libdir}/perl \
${datadir}/perl5 \
"
因此,不仅要添加git
,还要添加git-perltools
到你的core-image
,你会得到你想要的东西+更多。
OTOH Yocto有一个很好的功能,可以在您的主机上构建交叉编译环境。所以你可以配置使用f.i. QT Creator使用sdk构建并从主机远程调试目标。这样您就不需要在英特尔Edison上构建/安装工具链。更多相关信息:https://edison-fw.github.io/meta-intel-edison/3-Building-the-SDK.html
Ferry Toth(又名htot @ github)
这个问题已经过时了,但是当我在爱迪生董事会遇到同样的问题时,我的解决方法仍然存在,它可能仍会引起一些人的兴趣。 我用于爱迪生的yocto版本就是这个:https://github.com/edison-fw/meta-intel-edison
问题出现是因为爱迪生主板上的git版本缺少某些部分。在这种情况下,/ usr / libexec / git-core中缺少git-submodules二进制文件
所以,一旦你在上面的同一个链接(或这里https://edison-fw.github.io/meta-intel-edison/)上找到解释后构建了yocto图像并刷了你的电路板,你就必须将你的主机电脑上的文件git-submodules复制到你的爱迪生电路板上。
在您的主机上,一旦进入构建目录(path / to / edison / out / linux64 / build),输入:
find . -name "git-submodule"
并且您将获得同一文件的不同位置。其中一个。
将它在爱迪生电路板上复制到/ usr / libexec / git-core。
现在带子模块的git应该有用......
更新:
渡轮答案更好,但在某种程度上它不适合我(yocto相扑)。包git-perltools
是git
包的一部分,因此无需将其添加到您的核心映像,但仍未安装。我发现git-perltools
包依赖于findutils
的安装,因此Ferry的工作答案可能需要将findutils
添加到core-image。
注意: 我宁愿评论Ferry的回答,但我没有权利。