错误:英特尔Edison和git 2.0.1上的“git:'submodule'不是git命令”

问题描述 投票:7回答:3

当我尝试使用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 intel-edison
3个回答
6
投票

是的,爱迪生的Git可能是一个轻量级的版本。正如msw在评论中所提到的,最好的选择是从source构建git。但我相信Yocto包的下一个版本可能会附带一个新版本的git。


3
投票

在使用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)


3
投票

这个问题已经过时了,但是当我在爱迪生董事会遇到同样的问题时,我的解决方法仍然存在,它可能仍会引起一些人的兴趣。 我用于爱迪生的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-perltoolsgit包的一部分,因此无需将其添加到您的核心映像,但仍未安装。我发现git-perltools包依赖于findutils的安装,因此Ferry的工作答案可能需要将findutils添加到core-image。

注意: 我宁愿评论Ferry的回答,但我没有权利。

© www.soinside.com 2019 - 2024. All rights reserved.