📘
Dev & Ops
Programming
Programming
  • Programming Book
  • Technologies
    • API
      • Известные API
        • Facebook API
      • Проектирование API
        • Программы для проектирования
          • Конвертация между форматами
          • Postman
          • Swagger
        • Webhooks
        • GraphQL
          • Введение
          • Introspection
        • RPC
          • Описание
          • gRPC
          • XML-RPC
          • SOAP
            • About
            • wsdl
          • JSON RPC
        • REST API
        • SAML
      • Program's API
        • Общие понятия
        • DOM API & элементы веб-браузера
        • Известные API
          • Google API
          • Telegram Bot API
      • Получение данных с сервера / AJAX
      • Хранение данных на стороне клиента
        • Подходы
        • Подробнее
          • Web Storage API
          • IndexedDB
          • Service Worker API
          • Cache API
    • WEB
      • Modern Web Application Architecture
      • PWA
      • Стеки технологий
        • JAMstack
        • LAMP
        • MEAN
        • MERN
      • The World Wide Web Consortium (W3C)
    • Архитектура сервисов
      • No-code / Low-code
        • Databases
        • Платформы для запуска и исполнения произвольных процессов и вычислений
        • Генераторы сайтов
      • Архитектурные паттерны
        • Papers
        • Инструменты визуализации и моделирования архитектуры
        • Архитектура проекта
          • Альтернативы
          • Feature-Sliced Design
          • MVC
          • DDD | Domain-Driven Design
          • Clean Architecture
          • Hexagonal
        • Архитектура кода
          • Papers
          • Singleton
          • Retry
          • Circuit Breaker
          • Общение между компонентами
            • Intro
            • Observer
            • PubSub
          • ООП
        • Архитектура систем
          • Monolith
          • API Gateway
          • CQRS
          • Microservices
          • Service Mesh
            • Для чего
            • Kuma
            • Istio
            • Hashicorp Consul
      • Telemetry
        • OpenTelemetry Concepts
        • Metrics
        • Tracing
        • Logs collect
      • Testing
      • Построение админок
      • Cases
      • Брокеры сообщений
        • Why?
        • RabbitMQ
        • RedisMQ
        • AWS SQS
        • Apache Kafka
        • ZeroMQ
        • Apache ActiveMQ
        • IronMQ
      • Автоматизация сборок
        • Makefile
      • Subscriptions
      • Zero Trust
    • Визуализация информации
      • Design/Совместная разработка интерфейсов
      • Работа с данными
      • Схемы, графы, рисунки..
        • Работа с графами
        • Рисуем структуру базы
        • Miro App
        • Рисование детских диаграмм
        • draw.io
        • Xmind
      • Куда заливать видео
      • yEd
      • LaTeX + PGF/TikZ
    • Version Control Systems
      • Git
      • Github
    • Programs
      • Adobe Alternatives
      • Atlassian
        • Jira
        • Confluence
      • Базы данных
        • LevelDB
      • Google Products for Developers
      • Open source
      • Фреймворки
      • vscode
      • Сборка проектов
      • Regular expressions
      • Browsers
    • Библиотеки
      • Полнотекстовой поиск
      • Парсинг грамматик
      • Регулярные выражения
      • Решение практических проблем ML
      • Chrome Cast
    • AI
      • Учимся использовать AI
      • Core Tech
      • Практическое использование
        • Assistants
        • Code assistants
        • Security
        • Web & Design
    • Dev portals
    • Разработка игр
  • Management
    • (draft) Product Management
      • Проработка идеи нового сервиса
      • Построение гипотез
    • Goals management
      • Определения и тезисы
      • OKR
      • KPI
      • OKR vs KPI
  • Programming Languages
    • Learn materials
    • Code Quality
    • Security Coding Styles
    • Testing
      • Integration testing
    • Other non programming languages
      • YAML
      • Proto
      • SQL
        • Create table
        • WITH operator
        • Time sleep
    • Bash
      • Простые операции
        • Работа с файлами
        • Untitled
        • trim
      • Процессы
    • PowerShell
      • IDE
      • Запуск скриптов
      • Удаленный запуск скриптов (with privesc)
      • Копирование файлов и директорий
      • Основы/Описание команд некоторых
      • Papers & Books
      • Примеры
        • Get-Help
        • Скачать файл
        • Импорт модулей и скриптов
        • Создание объекта Credential
        • Пользователи
        • Simple HTTP Server
    • Swift
    • ActionScript
    • Backend
      • Build & Distribution
        • cookiecutter
        • meson
        • Fastlane
        • Maven
        • Gradle
        • Apache Ant
      • JVM
        • Java Env Manager
        • Java
          • Build and Run Simple Script
          • jshell & jrunscript
          • Basic Serialization and Deserialization Java Object
          • Libraries
        • Scala
        • Kotlin
          • Intro
          • Basics
          • Async Programming
          • Логирование
          • Frameworks
            • Kotlin stdlib
            • HTTP
            • Documentation
        • Frameworks
          • Jersey Rest API
          • Spring Framework
            • About
            • Spring Boot AutoConfiguration
            • Spring IoC
            • Spring MVC
            • Spring Boot
            • Other Spring Annotations
          • Struts 2
        • Security
      • JS/TS
        • Lerna
        • Gulp
        • Frameworks
          • Templating libraries
          • Nest.js
          • Fastify
          • Express.js
          • Koa.js
      • Go
        • Get Started
          • Basic
          • Golang документация
          • Golang VSCode IDE
          • GOPATH and GOROOT
          • Сценарии на Go
        • Общее
          • Операторы и встроенные функции
          • Указатели и ссылки
          • Типизация
            • Простые типы
            • Составные типы
            • Пользовательские типы
            • Сокращенное и полное объявление переменной или константы
            • Строки
            • Срезы
            • Работа с типами
          • Коллекции
            • Перечисления
            • Массивы и срезы
            • Отображения
          • Процедурное программирование
            • Ветвления
              • if
              • select
              • switch
            • Циклы
            • Функции и методы
          • ООП
            • Ключевые понятия
            • Интерфейсы
            • Нюансы и ограничения
          • Generics in Go
          • Параллельное программирование
            • go-подпрограммы
            • Каналы обмена данными
            • Проблемы в параллельном программировании и пути их решения
        • Packages
          • Установка пакетов
          • Импортирование локальных пакетов
          • Базовые
            • Списком
            • context
          • Сторонние
            • Общепризнанные
            • Абстракции
            • Микросервисы
              • go-micro
              • gRPC Ecosystem
              • Go kit
                • About
                • Пример
                • Middlewares
                • Общение с другими микросервисами
            • GUI Decktop
            • web
            • Protocols
            • Network
            • FileSystem
            • Files & Databases
            • Testing, Profiling
            • Others
        • Debugging
        • Testing
        • Diagnostics
        • Godoc
        • Books
        • Примеры
          • Hello world
          • Узнать ОС
          • Типы
          • Файлы
          • HTTP-сервер
          • Test HTTP Request
          • RabbitMQ with Go
        • Проблемы
          • _cgo_export.c:3:10: fatal error: 'stdlib.h' file not found
        • Tools Powered on Go
        • Go Security
      • Ruby
        • Use Ruby Env and Deps
        • VSCode Ruby extensions
        • Ruby Language Guide
          • Comments
          • Variables
          • Strings
          • Ranges
          • Arrays
          • Methods
          • Flow Control
          • Classes
          • Dependencies
        • Cases
          • WebSocket Server
        • Frameworks
          • Web: Sinatra
          • Web: Padrino
          • Web: Ruby on Rails
            • Getting Started
            • Routes
            • Controllers
            • Modules
            • Rails Security
              • Common Security Issues
                • Common
                • Deserialisation
                • SQLi
              • Ruby CVEs
              • Security Tools
              • Papers
          • Middleware: Rack
          • Test: RSpec
      • Python
        • Basic
          • Install
          • Enum
          • Collections
          • Operators
          • Reflection
          • Tips
        • Advanced
          • Venv
          • Include Other Languages Libs
          • Время выполнения операции
          • Работа с контекстом
          • Работа с текстом, числами и объектами
          • Работа с файлами и IO
          • Запуск других программ
          • Работа с функциями
          • Работа с классами
          • Работа с итераторами
          • Работа с генераторами
          • Работа с многопоточностью
          • Создание CLI
          • tqdm
          • pydantic
        • Packaging
          • Intro
          • Install packages / Build Frontends
            • pip
            • pipx
            • hatch
            • poetry
          • Организация кода
            • src-layout vs flat-layout
            • namespaces
            • Plugins
          • Конфигурация
            • Papers
            • pyproject.toml
            • setup.py
            • setup.cfg
        • Packages
          • Public Lists of Python Packages
          • Linters
          • True Python
          • Network
          • Web
            • Simple HTTP Server
            • ASGI Python Web Servers
            • Http Client
              • aiohttp
              • requests
              • Packages
            • selenium
            • zeep [SOAP]
          • Web Frameworks
            • Bootle
            • FastAPI
            • Flask
            • Django
              • Intro
              • Django Admin
              • Django Signals
              • Security
            • Tornado
          • Databases
            • boto3
            • Mongo
            • Postgres
            • SQLAlchemy
          • Асинхронная обработка сообщений / работа с очередями
            • Celery
            • Others
          • Обработка информации
            • Работа с графами
            • plist
            • HAR
            • Лингвистика
            • Обработка изображений
            • Parsing HTML
            • Parsing JS
            • Beatifiers
            • XML -> Dictionary
            • Извлечение текста из pdf
            • Санитайзеры
            • Document converter
            • Генерация PDF документов
            • Parse and generate CSS
            • PDF Parser
          • Qt/QML
          • Python script -> binary file
          • Разное
          • Math & Crypto
          • Работа с другими сервисами
          • pwn & re
        • Patterns
          • Singleton
          • Factory
        • Testing
          • Intro
          • Pytest CLI
          • Markers
          • Fixtures
          • Mocking
          • Plugins
          • Configuration
          • Unit tests
        • Errors
        • Papers & Books
        • Python Security
      • .Net
        • dotnet
        • NuGet
        • Интроспекция .Net решения
      • ASP.NET
        • Поднимаем тестовое приложение
        • Структура папок ASP.Net проекта
          • ASP.NET Core
          • ASP.NET MVC
          • Classic ASP.NET WebApp
        • ASPX
          • examples
            • Hello world
        • Security
      • Perl
        • cpan
      • PHP
        • Getting Started
        • Basic
        • Magic Methods
        • Examples
          • Phar
          • Работа с файлами
          • Usefull small examples
          • Поднять инфру для разработки
          • Simple page with GET param
        • Packages
        • Frameworks
          • Yii
          • Laravel
            • Intro
            • Getting Started
            • Docker
            • Pentest
          • Zend
          • Symfony
          • CodeIgniter
          • Moodle
        • Libraries
        • Security
      • C/C++
        • Security
        • IDE
        • Build
          • Compilers
            • GCC
            • MinGW
            • Clang
            • MSVC
          • cmake
        • Cases
          • Как подключить .Lib/.h статическую библиотеку в свой проект VS/C/C++
          • Disable stdafx and other features in VS
          • Если не компилируются стандартные библиотеки в Visual Studio 2015
    • Frontend
      • Инструменты
      • HTML
        • Введение
        • Примеры
          • iframe
          • Страница со ссылкой
          • Сворачиваемый блок кода
          • Перейти на другую страницу по нажатии кнопки
          • Элементы, которые могут содержать ссылки
          • GET-запрос
          • Форматирование: оборачивание входного текста в блок (например при чтении локально файла или кода)
          • Random Color для всех элементов
        • Papers & Notes
      • CSS
        • Basic
        • Селекторы
          • О селекторах
          • Наследование стилей
          • Объявление и приоритеты
          • Псевдоклассы
        • CSS Свойства
          • Цвет
          • Шрифты и типографика
          • Стилизация абзацев
          • Блочная модель и отступы
          • Строчные и блочно-строчные элементы
          • Размеры элементов
          • Тени
          • Прокрутка элементов
          • Rotation
        • CSS Processors
        • Переменные
        • Браузерные стили
        • Стратегии верстки
          • Блочная и табличная верстки
          • Блочная верстка
          • Flexbox верстка
          • Grid Layout верстка
        • Frameworks
          • Gravity UI
          • Material Design
          • Materialize
          • Bootstrap
        • Советы
        • Papers
      • JS/TS
        • JavaScript
          • About
          • Basic JS
          • Async JS
          • RxJs
          • Guide
            • Proxy
            • Reflect
          • Cases
            • Борьба с CORS и Local File Read в браузере
            • Корректно нормализируем пути в JS
            • Тестирование работы с медленными ответами (slow js http response)
            • JSessionID
            • RCE
            • Замер времени отработки запроса
            • Периодические операции
            • postMessage
            • Самый простой редирект на странице
            • HTTP запросы и обработка ответов из JS
            • Использование сторонних скриптов
            • Отображение результатов списком
        • TypeScript
          • Init
          • Типы
            • Abstract classes, interfaces and types
            • Базовые типы и создание своих типов
            • Создание объектов
            • Создание сложных типов: Interfaces
            • Enums
            • Null Safe
            • Работа со строками и массивами
          • Ветвление кода и циклы
          • Фукнции и классы
            • Functions
            • Classes
          • Guards (проверка типов)
          • Generic-типы
          • Декораторы
          • Namespaces
          • Модули
          • Вспомогательные операторы
          • Дополнительные инструменты
          • Разные соглашения
        • Libraries
        • Frameworks
          • Web
            • React
              • Getting Started
              • Deploy
              • Packages
              • Security
              • Frameworks
                • Next.js
                • Remix
                • Gatsby
            • Vue.js
              • Nuxt.js
            • Angular
              • About
              • Основы фреймворка
                • Get Started
                • Angular CLI
                • Basic
                • Material Design Support
                • Components
                  • Introduction
                  • Lifecycle
                  • Create components
                  • Component Interaction
                  • Content Projection
                  • Dynamic components
                  • Angular Elements
                • Templates
                  • Text interpolation
                  • Template statements
                  • Pipes
                • Directives
                • Routing
                • Работа с сервисами
              • Packages
                • Списком
                • NgRx
                  • About
              • Cases
                • RxJs WebSockets
                • Errors
                • Code Styles And Best Practices
                • Примеры сайтов на Angular
            • SvelteJS
            • Others
              • jQuery
              • Meteor
              • AngularJS
              • Ext JS / Sencha
          • Mobile & Desktop
            • ReactNative
              • npx/react-native cli
            • Electron.js
          • State Managers
          • Rendering
          • i18n: Format.JS
        • Packet Managers
        • JS Runtime
          • Node.js
          • Deno
        • Other projects
      • CMS
      • Особенности WebStorm IDE
      • Dart/Flutter
        • About
        • Install
        • Packages & Plugins
        • Build & Run
        • Patterns
        • Dart
          • Intro
          • Variables
          • Functions
          • Operators
          • Control flow statements
          • Exceptions
          • Classes
          • Generics
          • Libraries and visibility
          • Asynchrony support
          • Generators
          • Isolates
          • Typedef
          • Packages
        • Flutter
          • Flutter CLI
          • pubspec.yaml
          • Widgets
          • Codelabs
          • Packages
          • Distribution
        • Dart & Flutter Playground
        • Кто использует Flutter
        • Papers & Tutorials
      • Сборщик JS/TS приложений
        • TODO: Webpack
        • TODO: Parcel
        • TODO: Rollup
      • Компиляторы
        • Babel
      • Testing
      • Learning
  • Others
    • Licenses
    • Фотостоки
    • Как оформить свой Github
    • Правила версионирования
    • Правила оформления коммитов
    • Стили именования переменных и классов
    • Language for IoT dev — TOIT
    • Online IDE
    • Документация по API по разным языкам в одном месте
    • Скиллы как специалиста
      • RoadMap для разных направлений
      • Задачи на программирование
      • Алгоритмы
      • Разработчик
      • Web-разработчик
      • DevOps
      • Бумажная ИБ
      • Компании ИБ
Powered by GitBook
On this page
  • Modules, packages and versions
  • go.work
  • Build commands
  • Vendoring
  • go get
  • go install
  • go mod download
  • go list -m
  • go mod edit
  • go mod graph
  • go mod init
  • go mod tidy
  • go mod vendor
  • go mod verify
  1. Programming Languages
  2. Backend
  3. Go
  4. Packages

Установка пакетов

PreviousPackagesNextИмпортирование локальных пакетов

Last updated 2 years ago

Был такой эксперимент — , но он был закопан в пользу механизма модулей — .

Modules, packages and versions

A module is a collection of packages that are released, versioned, and distributed together. Modules may be downloaded directly from version control repositories or from module proxy servers.

A module is identified by a , which is declared in a , together with information about the module’s dependencies. The module root directory is the directory that contains the go.mod file. The main module is the module containing the directory where the go command is invoked.

Each package within a module is a collection of source files in the same directory that are compiled together. A package path is the module path joined with the subdirectory containing the package (relative to the module root). For example, the module "golang.org/x/net" contains a package in the directory "html". That package’s path is "golang.org/x/net/html".

go.work

Определяет рабочую область — набор go модулей (по умолчанию, текущая директория — активная рабочая область)

Для работы с workspace используем команды:

go work init
go work use
go work edit

Или golang.org/x/mod/modfile для выполнения подобных изменений программно.

Build commands

All commands that load information about packages are module-aware. This includes:

  • go build

  • go fix

  • go generate

  • go get

  • go install

  • go list

  • go run

  • go test

  • go vet

These commands accept the following flags, common to all module commands.

  • The -mod flag controls whether go.mod may be automatically updated and whether the vendor directory is used.

    • -mod=readonly tells the go command to ignore the vendor directory and to report an error if go.mod needs to be updated.

    • -mod=vendor tells the go command to use the vendor directory. In this mode, the go command will not use the network or the module cache.

  • The -modfile=file.mod flag instructs the go command to read (and possibly write) an alternate file instead of go.mod in the module root directory. The file’s name must end with .mod. A file named go.mod must still be present in order to determine the module root directory, but it is not accessed. When -modfile is specified, an alternate go.sum file is also used: its path is derived from the -modfile flag by trimming the .mod extension and appending .sum.

Vendoring

По умолчанию, модули грузятся в кэш, но если мы хотим поработать со старыми пакетами, мы можем зафризить в папку vendor определенные версии пакетов:

go mod vendor

Это создаст папку vendor и туда скопирует все пакеты для разработки и тестов. Так же будет создан файл vendor/modules.txt, который будет содержать версии пакетов. Можем их посмотреть:

go list -m
go version -m

Эти команды сравнят версии в vendor с версиями в go.mod. Если они совпадут, вылетит ошибка. Надо будет ввести go mod vendor снова.

Начиная с Go 1.14, поддержка vendor включена по умолчанию. Это значит, что go build и go test будут подгружать модули из vendor, а не идти в интернет или локальный кэш пакетов. go-команды игнорируют любые другие директории vendor, кроме той, что в корневом модуле.

go get

Обновление модулей в go.mod.

go install

Установка модулей

go mod download

Загрузка модуля в кэш модулей

go list -m

go mod edit

Редактирование и форматирование go.mod.

go mod graph

Граф зависимостей

go mod init

Инициализация модуля в директории

go mod tidy

go mod vendor

Подтягивание в папку vendor зависимостей для сборки и теста проекта

go mod verify

Проверка, что все зависимости разрешены

-mod=mod tells the go command to ignore the vendor directory and to go.mod, for example, when an imported package is not provided by any known module.

By default, if the in go.mod is 1.14 or higher and a vendor directory is present, the go command acts as if -mod=vendor were used. Otherwise, the go command acts as if -mod=readonly were used.

The -modcacherw flag instructs the go command to create new directories in the module cache with read-write permissions instead of making them read-only. When this flag is used consistently (typically by setting GOFLAGS=-modcacherw in the environment or by running go env -w GOFLAGS=-modcacherw), the module cache may be deleted with commands like rm -r without changing permissions first. The command may be used to delete the module cache, whether or not -modcacherw was used.

dev
go mod
module path
go.mod file
automatically update
go version
go clean -modcache