go mod download不会下载单个库;如何在不处理整个供应商缓存的情况下mod导入单个库

如何解决go mod download不会下载单个库;如何在不处理整个供应商缓存的情况下mod导入单个库

(免责声明:对于在此描述中使用的错误单词表示歉意。我仍然熟悉go)

我的理解是go模块非常挑剔,因此这种问题涵盖了与go模块和我尝试下载并导入的prometheus运算符库相关的一些主题

一个巨大的要求:我不能进行大量的go mod下载/升级,因为下游部门在我的供应商目录中得到了升级,并且在我们的代码中发生了各种各样的破坏。我正在努力避免这种情况。我只想“安装”这个库(和任何必要的附件)并完成它。

所有这些都说明,使用go mod(或其他合适的工具)来获取不会更新我的所有供应商库的"github.com/coreos/prometheus-operator/pkg/apis/monitoring/v1"的正确方法是什么?我只需要导入v1 api即可以编程方式设置和读取集群中的servicemonitor

$ go mod download -x github.com/coreos/prometheus-operator/pkg/apis/monitoring/v1
module github.com/coreos/prometheus-operator/pkg/apis/monitoring/v1: not a known dependency

$ go get github.com/coreos/prometheus-operator/pkg/apis/monitoring/v1
go: found github.com/coreos/prometheus-operator/pkg/apis/monitoring/v1 in github.com/coreos/prometheus-operator v0.41.1

我的进口

import (
    "context"
    "encoding/base64"
    "fmt"
    v1 "k8s.io/api/core/v1"
    "k8s.io/apimachinery/pkg/util/intstr"
    "strings"
    "text/template"
    "time"

    "github.com/google/uuid"

    coreosv1 "github.com/coreos/prometheus-operator/pkg/apis/monitoring/v1"
    "github.com/go-kit/kit/log"

    metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    "k8s.io/client-go/kubernetes"
    "k8s.io/client-go/tools/clientcmd"
)

我正在使用该库的实际代码如下:

    // define service monitor object
    serviceMonitorObject := &coreosv1.ServiceMonitor{
        ObjectMeta: metav1.ObjectMeta{
            Name:      objectMetaDataName,// TODO: fix namespace
            Namespace: "monitoring",Labels:    labels,},Spec: coreosv1.ServiceMonitorSpec{
            Selector: metav1.LabelSelector{
                MatchLabels: labels,NamespaceSelector: coreosv1.NamespaceSelector{
                MatchNames: []string{
                    "monitoring",Endpoints: []coreosv1.Endpoint{
                {
                    Port: "metrics",Interval: "10s",HonorLabels: true,}

但是,我似乎不能只导入一个库。任何建议或帮助将不胜感激。

错误github.com/coreos/prometheus-operator/pkg/apis/monitoring/v1 in github.com/coreos/prometheus-operator v0.41.1表明也许我只是导入了github.com/coreos/prometheus-operator,但是当我这样做时,我的servicemonitor定义就失败了。

编辑

rm建立了go.{mod,sum}vendor目录以及git reset --hard我的环境,这将供应商状态恢复到我的工作之前。我执行了以下操作,但正如您所看到的,get似乎可以正常工作,但是coreos下没有/project/vendor/*/目录。

$ go get -x github.com/coreos/prometheus-operator/
# get https://proxy.golang.org/github.com/coreos/@v/list
# get https://proxy.golang.org/github.com/@v/list
# get https://proxy.golang.org/github.com/coreos/prometheus-operator/@v/list
# get https://proxy.golang.org/github.com/@v/list: 410 Gone (0.794s)
# get https://proxy.golang.org/github.com/coreos/@v/list: 410 Gone (0.886s)
# get https://proxy.golang.org/github.com/coreos/prometheus-operator/@v/list: 200 OK (0.897s)
go: github.com/coreos/prometheus-operator upgrade => v0.41.1
$ find vendor -name '*prometheus*'
vendor/github.com/go-kit/kit/metrics/prometheus
vendor/github.com/go-kit/kit/metrics/prometheus/prometheus.go
vendor/github.com/prometheus
vendor/github.com/prometheus/client_golang/prometheus

再次重置我的环境。执行以下操作:

$ go mod download -x github.com/coreos/prometheus-operator/...
warning: pattern "github.com/coreos/prometheus-operator/..." matched no module dependencies
$ go mod download -x github.com/coreos/prometheus-operator/
module github.com/coreos/prometheus-operator/: not a known dependency

根据文档,以下内容应显示使用的所有mod(添加grep core以获得更简短的输出):

$ go list -m all | grep core
github.com/coreos/bbolt v1.3.2
github.com/coreos/etcd v3.3.10+incompatible
github.com/coreos/go-etcd v2.0.0+incompatible
github.com/coreos/go-oidc v2.2.1+incompatible
github.com/coreos/go-semver v0.3.0
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f
github.com/coreos/prometheus-operator v0.41.1

但是,我仍然无法编译:

$ make -f build/Makefile generators ims-bin-darwin && ./ims-api --config_file=/var/tmp/jim-ims-api.yaml --kubeconfig $HOME/.kube/config --populate_demo_db=true --populate_demo_file hack/demo1.yaml --debug_logging --db_debug_logging
./build/generators/api.sh
Ensuring Bin Directory (./build/generators/../../bin) Exists...
Ensuring Destination Directory ( pkg/generated/api ) Exists...
Ensuring Destination Directory ( pkg/generated/kaas-api ) Exists...
Ensuring Swagger Asset Directory ( assets/generated/swagger ) Exists...
go: inconsistent vendoring in /Users/jimconn/projects/src/ims-api:
        github.com/go-kit/kit@v0.10.0: is explicitly required in go.mod,but vendor/modules.txt indicates github.com/go-kit/kit@v0.9.0
        github.com/golang/protobuf@v1.4.1: is explicitly required in go.mod,but vendor/modules.txt indicates github.com/golang/protobuf@v1.3.2
        github.com/grpc-ecosystem/grpc-gateway@v1.14.6: is explicitly required in go.mod,but vendor/modules.txt indicates github.com/grpc-ecosystem/grpc-gateway@v1.9.6
        github.com/pkg/errors@v0.9.1: is explicitly required in go.mod,but vendor/modules.txt indicates github.com/pkg/errors@v0.8.1
        github.com/prometheus/client_golang@v1.6.0: is explicitly required in go.mod,but vendor/modules.txt indicates github.com/prometheus/client_golang@v1.1.0
        golang.org/x/time@v0.0.0-20200416051211-89c76fbcd5d1: is explicitly required in go.mod,but vendor/modules.txt indicates golang.org/x/time@v0.0.0-20190308202827-9d24e82272b4
        google.golang.org/genproto@v0.0.0-20200603110839-e855014d5736: is explicitly required in go.mod,but vendor/modules.txt indicates google.golang.org/genproto@v0.0.0-20190817000702-55e96fffbd48
        google.golang.org/grpc@v1.29.1: is explicitly required in go.mod,but vendor/modules.txt indicates google.golang.org/grpc@v1.23.1
        gopkg.in/yaml.v2@v2.3.0: is explicitly required in go.mod,but vendor/modules.txt indicates gopkg.in/yaml.v2@v2.2.8
        k8s.io/api@v0.18.3: is explicitly required in go.mod,but vendor/modules.txt indicates k8s.io/api@v0.17.2
        k8s.io/apimachinery@v0.18.3: is explicitly required in go.mod,but vendor/modules.txt indicates k8s.io/apimachinery@v0.17.2
        k8s.io/client-go@v0.18.3: is explicitly required in go.mod,but vendor/modules.txt indicates k8s.io/client-go@v0.17.2

run 'go mod vendor' to sync,or use -mod=mod or -mod=readonly to ignore the vendor directory
make: *** [generators] Error 1

我运行了go mod vendor,然后又回到了我的整个供应商树都被更改的状态:

$ g st
On branch expose-bm-prom
Your branch is up to date with 'origin/expose-bm-prom'.

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   assets/generated/swagger/api.swagger.json
        modified:   go.mod
        modified:   go.sum
        modified:   pkg/generated/api/api.pb.go
        modified:   pkg/generated/api/api.pb.gw.go
...
        modified:   vendor/sigs.k8s.io/yaml/README.md
        modified:   vendor/sigs.k8s.io/yaml/yaml.go

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        vendor/github.com/cespare/
        vendor/github.com/coreos/
        vendor/github.com/golang/protobuf/internal/
        vendor/github.com/golang/protobuf/jsonpb/decode.go
        vendor/github.com/golang/protobuf/jsonpb/encode.go
...
        vendor/k8s.io/client-go/util/workqueue/
        vendor/sigs.k8s.io/structured-merge-diff/
        vendor/sigs.k8s.io/yaml/go.mod
        vendor/sigs.k8s.io/yaml/go.sum

no changes added to commit (use "git add" and/or "git commit -a")
$ g st | grep -c vendor
942    # files changed

这只是世界状况吗?如果不处理对整个供应商树的大量更改,我是否无法导入该库,这完全破坏了我的代码!这太荒谬了!

解决方法

go get -d github.com/coreos/prometheus-operator/pkg/apis/monitoring/v1 是添加对提供该包的模块的最新版本的依赖的正确方法。

go get 添加模块依赖时,它会根据需要升级其他依赖项以满足新模块的要求。这可能就是您在运行 go mod vendor 时看到很多变化的原因。

如果您想尽量减少这些更改,您可能需要明确选择较旧的版本(以便它具有较旧的要求):

go get -d github.com/coreos/prometheus-operator/pkg/apis/monitoring/v1@$OLD_VERSION

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res