[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page-ru-/guides/linux/setup-nim-environment":3,"mdc-3m5xzl-key":1147,"mdc--oe6xxb-key":1157,"mdc-uhlna7-key":1182,"mdc-1chwlm-key":1212,"mdc-97xh41-key":1220,"mdc--rirab7-key":1228,"mdc-coxwdq-key":1236,"mdc--o5u0jk-key":1265,"mdc--7h9kz3-key":1273,"mdc-9y4xr1-key":1281,"related-/guides/linux/setup-python-environment,/guides/linux/setup-go-environment,/errors/linux/nim-compilation-error":1289},{"id":4,"title":5,"appliesTo":6,"author":12,"body":13,"canonical":1077,"code":1077,"createdAt":1078,"description":1079,"difficulty":1080,"draft":1081,"estimatedTime":1082,"extension":1083,"faq":1084,"howToSteps":1097,"howToTotalTime":1116,"image":1077,"keywords":1117,"locale":1128,"meta":1129,"navigation":1130,"path":1131,"platform":1132,"related":1133,"section":1137,"seo":1138,"severity":1077,"stem":1139,"summary":1140,"tags":1141,"twitterCreator":1077,"twitterSite":1077,"type":1145,"updatedAt":1078,"__hash__":1146},"content_ru/guides/linux/setup-nim-environment.md","Установка и настройка Nim на Linux: полное руководство",[7,8,9,10,11],"Ubuntu 20.04+","Fedora 35+","Debian 11+","Arch Linux","Nim 2.0+","FixPedia Team",{"type":14,"value":15,"toc":1056},"minimark",[16,21,25,28,49,52,56,59,103,114,118,121,129,162,182,200,204,207,220,223,237,240,243,256,259,267,270,274,290,331,362,402,423,429,433,436,526,543,547,550,555,575,584,616,621,639,650,653,659,664,685,689,700,705,716,719,781,786,798,806,821,825,828,868,875,879,888,907,911,918,941,945,953,957,964,980,984,996,1004,1012,1032,1038,1041,1052],[17,18,20],"h2",{"id":19},"введение-зачем-это-нужно","Введение / Зачем это нужно",[22,23,24],"p",{},"Nim — это статически типизированный компилируемый язык программирования, который сочетает в себе выразительность Python с производительностью C. Он идеально подходит для системного программирования, веб-серверов, игр и встраиваемых систем.",[22,26,27],{},"После выполнения этого гайда вы сможете:",[29,30,31,35,43,46],"ul",{},[32,33,34],"li",{},"Компилировать и запускать Nim-программы из терминала.",[32,36,37,38,42],{},"Использовать менеджер пакетов ",[39,40,41],"code",{},"nimble",".",[32,44,45],{},"Разрабатывать в VS Code с подсветкой синтаксиса и автодополнением.",[32,47,48],{},"Создавать и управлять проектами на Nim.",[22,50,51],{},"Гайд рассчитан на новичков в Nim, но требует базового знакомства с терминалом Linux.",[17,53,55],{"id":54},"требования-подготовка","Требования / Подготовка",[22,57,58],{},"Перед началом убедитесь, что:",[60,61,62,65,96],"ol",{},[32,63,64],{},"У вас есть доступ к терминалу Linux (Ubuntu, Fedora, Debian, Arch или другая).",[32,66,67,68],{},"Установлены базовые инструменты сборки:\n",[29,69,70,80,88],{},[32,71,72,76,77],{},[73,74,75],"strong",{},"Ubuntu/Debian:"," ",[39,78,79],{},"sudo apt update && sudo apt install build-essential curl",[32,81,82,76,85],{},[73,83,84],{},"Fedora:",[39,86,87],{},"sudo dnf groupinstall \"Development Tools\" && sudo dnf install curl",[32,89,90,76,93],{},[73,91,92],{},"Arch:",[39,94,95],{},"sudo pacman -S base-devel curl",[32,97,98,99,102],{},"У вас есть права на запись в домашний каталог (",[39,100,101],{},"~",").",[22,104,105,106,113],{},"Если вы планируете использовать VS Code, скачайте его с ",[107,108,112],"a",{"href":109,"rel":110},"https://code.visualstudio.com/",[111],"nofollow","официального сайта"," или установите через менеджер пакетов вашего дистрибутива.",[17,115,117],{"id":116},"шаг-1-установка-скрипта-choosenim","Шаг 1: Установка скрипта choosenim",[22,119,120],{},"Choosenim — это официальный скрипт установки и управления версиями Nim. Он загружает компилятор, настраивает пути и позволяет легко переключаться между версиями.",[60,122,123,126],{},[32,124,125],{},"Откройте терминал.",[32,127,128],{},"Выполните команду для загрузки и запуска скрипта:",[130,131,136],"pre",{"className":132,"code":133,"language":134,"meta":135,"style":135},"language-bash shiki shiki-themes github-light github-dark","curl https://nim-lang.org/choosenim/init.sh -sSf | sh\n","bash","",[39,137,138],{"__ignoreMap":135},[139,140,143,147,151,155,159],"span",{"class":141,"line":142},"line",1,[139,144,146],{"class":145},"sScJk","curl",[139,148,150],{"class":149},"sZZnC"," https://nim-lang.org/choosenim/init.sh",[139,152,154],{"class":153},"sj4cs"," -sSf",[139,156,158],{"class":157},"szBVR"," |",[139,160,161],{"class":145}," sh\n",[60,163,165,179],{"start":164},3,[32,166,167,168,171,172,175,176,42],{},"Скрипт предложит установить choosenim в ",[39,169,170],{},"~/.choosenim",". Нажмите ",[39,173,174],{},"Enter"," для подтверждения или введите ",[39,177,178],{},"y",[32,180,181],{},"После завершения вы увидите сообщение об успешной установке.",[183,184,185],"blockquote",{},[22,186,187,188,191,192,195,196,199],{},"⚠️ ",[73,189,190],{},"Важно:"," Если curl не установлен, сначала установите его: ",[39,193,194],{},"sudo apt install curl"," (Ubuntu/Debian) или ",[39,197,198],{},"sudo dnf install curl"," (Fedora).",[17,201,203],{"id":202},"шаг-2-установка-компилятора-nim","Шаг 2: Установка компилятора Nim",[22,205,206],{},"Теперь, когда choosenim установлен, используйте его для установки последней стабильной версии Nim:",[130,208,210],{"className":132,"code":209,"language":134,"meta":135,"style":135},"~/.choosenim/bin/choosenim stable\n",[39,211,212],{"__ignoreMap":135},[139,213,214,216],{"class":141,"line":142},[139,215,101],{"class":157},[139,217,219],{"class":218},"sVt8B","/.choosenim/bin/choosenim stable\n",[22,221,222],{},"Команда:",[29,224,225,228,234],{},[32,226,227],{},"Скачивает бинарные файлы Nim (компилятор, стандартную библиотеку).",[32,229,230,231,42],{},"Устанавливает их в ",[39,232,233],{},"~/.nimble",[32,235,236],{},"Автоматически настраивает переменные окружения.",[22,238,239],{},"Процесс может занять несколько минут в зависимости от скорости интернета.",[22,241,242],{},"После завершения проверьте версию:",[130,244,246],{"className":132,"code":245,"language":134,"meta":135,"style":135},"nim --version\n",[39,247,248],{"__ignoreMap":135},[139,249,250,253],{"class":141,"line":142},[139,251,252],{"class":145},"nim",[139,254,255],{"class":153}," --version\n",[22,257,258],{},"Вывод должен быть примерно таким:",[130,260,265],{"className":261,"code":263,"language":264},[262],"language-text","Nim Compiler Version 2.0.0 [Linux: amd64]\nCompiled with '--cc:gcc' for Linux/amd64\n","text",[39,266,263],{"__ignoreMap":135},[268,269],"in-article-ad",{},[17,271,273],{"id":272},"шаг-3-настройка-переменной-окружения-path","Шаг 3: Настройка переменной окружения PATH",[22,275,276,277,279,280,282,283,286,287,42],{},"Чтобы команды ",[39,278,252],{}," и ",[39,281,41],{}," работали из любого места, нужно添加 путь ",[39,284,285],{},"~/.nimble/bin"," в переменную ",[39,288,289],{},"PATH",[60,291,292,322,328],{},[32,293,294,295],{},"Определите, какую оболочку вы используете:",[29,296,297,306,314],{},[32,298,299,302,303],{},[73,300,301],{},"Bash:"," файл ",[39,304,305],{},"~/.bashrc",[32,307,308,302,311],{},[73,309,310],{},"Zsh:",[39,312,313],{},"~/.zshrc",[32,315,316,302,319],{},[73,317,318],{},"Fish:",[39,320,321],{},"~/.config/fish/config.fish",[32,323,324,325,102],{},"Откройте соответствующий файл в текстовом редакторе (например, ",[39,326,327],{},"nano ~/.bashrc",[32,329,330],{},"Добавьте в конец файла строку:",[130,332,334],{"className":132,"code":333,"language":134,"meta":135,"style":135},"export PATH=\"$HOME/.nimble/bin:$PATH\"\n",[39,335,336],{"__ignoreMap":135},[139,337,338,341,344,347,350,353,356,359],{"class":141,"line":142},[139,339,340],{"class":157},"export",[139,342,343],{"class":218}," PATH",[139,345,346],{"class":157},"=",[139,348,349],{"class":149},"\"",[139,351,352],{"class":218},"$HOME",[139,354,355],{"class":149},"/.nimble/bin:",[139,357,358],{"class":218},"$PATH",[139,360,361],{"class":149},"\"\n",[60,363,365,378,399],{"start":364},4,[32,366,367,368,371,372,374,375,102],{},"Сохраните файл (",[39,369,370],{},"Ctrl+O"," в nano, затем ",[39,373,174],{},") и закройте редактор (",[39,376,377],{},"Ctrl+X",[32,379,380,381],{},"Примените изменения:",[29,382,383,393],{},[32,384,385,386,389,390],{},"Для Bash/Zsh: ",[39,387,388],{},"source ~/.bashrc"," или ",[39,391,392],{},"source ~/.zshrc",[32,394,395,396],{},"Для Fish: ",[39,397,398],{},"source ~/.config/fish/config.fish",[32,400,401],{},"Проверьте, что команды доступны:",[130,403,405],{"className":132,"code":404,"language":134,"meta":135,"style":135},"which nim\nwhich nimble\n",[39,406,407,415],{"__ignoreMap":135},[139,408,409,412],{"class":141,"line":142},[139,410,411],{"class":153},"which",[139,413,414],{"class":149}," nim\n",[139,416,418,420],{"class":141,"line":417},2,[139,419,411],{"class":153},[139,421,422],{"class":149}," nimble\n",[22,424,425,426,42],{},"Обе команды должны вернуть путь, начинающийся с ",[39,427,428],{},"/home/ваш_пользователь/.nimble/bin/",[17,430,432],{"id":431},"шаг-4-установка-редактора-кода-и-расширения","Шаг 4: Установка редактора кода и расширения",[22,434,435],{},"Хотя Nim можно писать в любом текстовом редакторе, VS Code с расширением предоставляет лучший опыт: подсветку синтаксиса, автодополнение, отладку.",[60,437,438,472,510],{},[32,439,440,443,444],{},[73,441,442],{},"Установите VS Code"," (если ещё не установлен):",[29,445,446,458,465],{},[32,447,448,76,450,453,454,457],{},[73,449,75],{},[39,451,452],{},"sudo apt install code"," (через репозиторий Microsoft) или загрузите ",[39,455,456],{},".deb"," с сайта.",[32,459,460,76,462],{},[73,461,84],{},[39,463,464],{},"sudo dnf install code",[32,466,467,76,469],{},[73,468,92],{},[39,470,471],{},"sudo pacman -S code",[32,473,474,477],{},[73,475,476],{},"Установите расширение для Nim:",[29,478,479,482,489,494,504],{},[32,480,481],{},"Запустите VS Code.",[32,483,484,485,488],{},"Перейдите в раздел ",[73,486,487],{},"Extensions"," (иконка квадратов слева).",[32,490,491,492,42],{},"В поиске введите ",[39,493,252],{},[32,495,496,497,500,501,102],{},"Выберите официальное расширение ",[73,498,499],{},"Nim"," (издатель: ",[39,502,503],{},"nim-lang",[32,505,506,507,42],{},"Нажмите ",[73,508,509],{},"Install",[32,511,512,515],{},[73,513,514],{},"Проверьте работу расширения:",[29,516,517,523],{},[32,518,519,520,42],{},"Создайте файл с расширением ",[39,521,522],{},".nim",[32,524,525],{},"Начните вводить код — должно появляться автодополнение.",[183,527,528],{},[22,529,530,531,534,535,538,539,542],{},"💡 ",[73,532,533],{},"Совет:"," Для более продвинутой разработки также рассмотрите расширение ",[73,536,537],{},"Nim Language Server"," (если доступно) или настройте ",[39,540,541],{},"nimlsp"," вручную.",[17,544,546],{"id":545},"шаг-5-создание-и-запуск-тестового-проекта","Шаг 5: Создание и запуск тестового проекта",[22,548,549],{},"Теперь создадим простое приложение, чтобы убедиться, что всё работает.",[60,551,552],{},[32,553,554],{},"Создайте каталог для проекта и перейдите в него:",[130,556,558],{"className":132,"code":557,"language":134,"meta":135,"style":135},"mkdir ~/nim_projects\ncd ~/nim_projects\n",[39,559,560,568],{"__ignoreMap":135},[139,561,562,565],{"class":141,"line":142},[139,563,564],{"class":145},"mkdir",[139,566,567],{"class":149}," ~/nim_projects\n",[139,569,570,573],{"class":141,"line":417},[139,571,572],{"class":153},"cd",[139,574,567],{"class":149},[60,576,577],{"start":417},[32,578,579,580,583],{},"Создайте файл ",[39,581,582],{},"hello.nim",":",[130,585,587],{"className":132,"code":586,"language":134,"meta":135,"style":135},"cat > hello.nim \u003C\u003C 'EOF'\necho \"Привет, мир!\"\nEOF\n",[39,588,589,606,611],{"__ignoreMap":135},[139,590,591,594,597,600,603],{"class":141,"line":142},[139,592,593],{"class":145},"cat",[139,595,596],{"class":157}," >",[139,598,599],{"class":149}," hello.nim",[139,601,602],{"class":157}," \u003C\u003C",[139,604,605],{"class":149}," 'EOF'\n",[139,607,608],{"class":141,"line":417},[139,609,610],{"class":149},"echo \"Привет, мир!\"\n",[139,612,613],{"class":141,"line":164},[139,614,615],{"class":149},"EOF\n",[60,617,618],{"start":164},[32,619,620],{},"Скомпилируйте и запустите:",[130,622,624],{"className":132,"code":623,"language":134,"meta":135,"style":135},"nim c -r hello.nim\n",[39,625,626],{"__ignoreMap":135},[139,627,628,630,633,636],{"class":141,"line":142},[139,629,252],{"class":145},[139,631,632],{"class":149}," c",[139,634,635],{"class":153}," -r",[139,637,638],{"class":149}," hello.nim\n",[22,640,641,642,645,646,649],{},"Команда ",[39,643,644],{},"nim c"," компилирует программу в исполняемый файл, а ",[39,647,648],{},"-r"," сразу запускает его.",[22,651,652],{},"Вывод должен быть:",[130,654,657],{"className":655,"code":656,"language":264},[262],"Привет, мир!\n",[39,658,656],{"__ignoreMap":135},[60,660,661],{"start":364},[32,662,663],{},"Также можно скомпилировать в оптимизированный release-режим:",[130,665,667],{"className":132,"code":666,"language":134,"meta":135,"style":135},"nim c -d:release hello.nim\n./hello\n",[39,668,669,680],{"__ignoreMap":135},[139,670,671,673,675,678],{"class":141,"line":142},[139,672,252],{"class":145},[139,674,632],{"class":149},[139,676,677],{"class":153}," -d:release",[139,679,638],{"class":149},[139,681,682],{"class":141,"line":417},[139,683,684],{"class":145},"./hello\n",[17,686,688],{"id":687},"шаг-6-установка-менеджера-пакетов-nimble","Шаг 6: Установка менеджера пакетов Nimble",[22,690,691,692,695,696,699],{},"Nimble — это менеджер пакетов для Nim, аналогичный ",[39,693,694],{},"npm"," для Node.js или ",[39,697,698],{},"pip"," для Python. Он обычно устанавливается автоматически вместе с Nim, но проверим:",[60,701,702],{},[32,703,704],{},"Проверьте версию:",[130,706,708],{"className":132,"code":707,"language":134,"meta":135,"style":135},"nimble --version\n",[39,709,710],{"__ignoreMap":135},[139,711,712,714],{"class":141,"line":142},[139,713,41],{"class":145},[139,715,255],{"class":153},[22,717,718],{},"Если команда не найдена, установите вручную:",[130,720,722],{"className":132,"code":721,"language":134,"meta":135,"style":135},"git clone https://github.com/nim-lang/nimble.git\ncd nimble\ngit checkout v0.14.0  # или последняя версия\nnim c -d:release src/nimble.nim\nsudo mv bin/nimble /usr/local/bin/\n",[39,723,724,735,741,755,766],{"__ignoreMap":135},[139,725,726,729,732],{"class":141,"line":142},[139,727,728],{"class":145},"git",[139,730,731],{"class":149}," clone",[139,733,734],{"class":149}," https://github.com/nim-lang/nimble.git\n",[139,736,737,739],{"class":141,"line":417},[139,738,572],{"class":153},[139,740,422],{"class":149},[139,742,743,745,748,751],{"class":141,"line":164},[139,744,728],{"class":145},[139,746,747],{"class":149}," checkout",[139,749,750],{"class":149}," v0.14.0",[139,752,754],{"class":753},"sJ8bj","  # или последняя версия\n",[139,756,757,759,761,763],{"class":141,"line":364},[139,758,252],{"class":145},[139,760,632],{"class":149},[139,762,677],{"class":153},[139,764,765],{"class":149}," src/nimble.nim\n",[139,767,769,772,775,778],{"class":141,"line":768},5,[139,770,771],{"class":145},"sudo",[139,773,774],{"class":149}," mv",[139,776,777],{"class":149}," bin/nimble",[139,779,780],{"class":149}," /usr/local/bin/\n",[60,782,783],{"start":417},[32,784,785],{},"Обновите список пакетов:",[130,787,789],{"className":132,"code":788,"language":134,"meta":135,"style":135},"nimble refresh\n",[39,790,791],{"__ignoreMap":135},[139,792,793,795],{"class":141,"line":142},[139,794,41],{"class":145},[139,796,797],{"class":149}," refresh\n",[60,799,800],{"start":164},[32,801,802,803,583],{},"Попробуйте установить пакет, например, ",[39,804,805],{},"json",[130,807,809],{"className":132,"code":808,"language":134,"meta":135,"style":135},"nimble install json\n",[39,810,811],{"__ignoreMap":135},[139,812,813,815,818],{"class":141,"line":142},[139,814,41],{"class":145},[139,816,817],{"class":149}," install",[139,819,820],{"class":149}," json\n",[17,822,824],{"id":823},"проверка-результата","Проверка результата",[22,826,827],{},"Выполните следующие команды и убедитесь, что они выводят информацию без ошибок:",[130,829,831],{"className":132,"code":830,"language":134,"meta":135,"style":135},"nim --version\nnimble --version\nnim c -r hello.nim  # из каталога с тестовым проектом\ncode --version      # если установлен VS Code\n",[39,832,833,839,845,858],{"__ignoreMap":135},[139,834,835,837],{"class":141,"line":142},[139,836,252],{"class":145},[139,838,255],{"class":153},[139,840,841,843],{"class":141,"line":417},[139,842,41],{"class":145},[139,844,255],{"class":153},[139,846,847,849,851,853,855],{"class":141,"line":164},[139,848,252],{"class":145},[139,850,632],{"class":149},[139,852,635],{"class":153},[139,854,599],{"class":149},[139,856,857],{"class":753},"  # из каталога с тестовым проектом\n",[139,859,860,862,865],{"class":141,"line":364},[139,861,39],{"class":145},[139,863,864],{"class":153}," --version",[139,866,867],{"class":753},"      # если установлен VS Code\n",[22,869,870,871,874],{},"Также откройте VS Code, создайте файл ",[39,872,873],{},"test.nim"," и проверьте, работает ли подсветка синтаксиса и автодополнение.",[17,876,878],{"id":877},"возможные-проблемы","Возможные проблемы",[880,881,883,884,887],"h3",{"id":882},"_1-ошибка-nim-command-not-found-после-установки","1. Ошибка ",[39,885,886],{},"nim: command not found"," после установки",[22,889,890,893,894,896,897,900,901,904,905,102],{},[73,891,892],{},"Причина:"," Путь ",[39,895,285],{}," не добавлен в PATH.\n",[73,898,899],{},"Решение:"," Выполните шаг 3 заново, убедившись, что строка ",[39,902,903],{},"export PATH=\"$HOME/.nimble/bin:$PATH\""," добавлена в правильный конфигурационный файл оболочки и что вы его перезагрузили (",[39,906,388],{},[880,908,910],{"id":909},"_2-choosenim-не-может-скачать-nim-ошибки-ssl-или-сети","2. Choosenim не может скачать Nim (ошибки SSL или сети)",[22,912,913,915,916],{},[73,914,892],{}," Проблемы с сетью или устаревшие сертификаты.\n",[73,917,899],{},[29,919,920,923,934],{},[32,921,922],{},"Убедитесь, что у вас есть интернет.",[32,924,925,926,929,930,933],{},"Обновите ",[39,927,928],{},"ca-certificates",": ",[39,931,932],{},"sudo apt update && sudo apt install ca-certificates"," (Ubuntu/Debian).",[32,935,936,937,940],{},"Временно отключите проверку SSL (не рекомендуется): ",[39,938,939],{},"export CHOOSENIM_NO_VERIFY=1"," и запустите choosenim снова.",[880,942,944],{"id":943},"_3-ошибки-компиляции-из-за-недостатка-памяти","3. Ошибки компиляции из-за недостатка памяти",[22,946,947,949,950,952],{},[73,948,892],{}," Nim требует достаточно оперативной памяти для компиляции больших проектов.\n",[73,951,899],{}," Увеличьте размер swap-файла или закройте другие приложения. Для небольших проектов это редко возникает.",[880,954,956],{"id":955},"_4-vs-code-не-подсвечивает-синтаксис-nim","4. VS Code не подсвечивает синтаксис Nim",[22,958,959,961,962],{},[73,960,892],{}," Расширение не активировано для текущего файла.\n",[73,963,899],{},[29,965,966,971,977],{},[32,967,968,969,42],{},"Убедитесь, что файл имеет расширение ",[39,970,522],{},[32,972,973,974,976],{},"В правом нижнем углу VS Code выберите язык ",[39,975,499],{}," (если предложено).",[32,978,979],{},"Перезапустите VS Code.",[880,981,983],{"id":982},"_5-nimble-не-может-найти-пакет","5. Nimble не может найти пакет",[22,985,986,988,989,991,992,995],{},[73,987,892],{}," Список пакетов не обновлён или сетевые ограничения.\n",[73,990,899],{}," Выполните ",[39,993,994],{},"nimble refresh"," и повторите. Если пакет не в официальном репозитории, возможно, его нужно установить из GitHub.",[880,997,999,1000,1003],{"id":998},"_6-ошибка-cannot-open-file-std-при-компиляции","6. Ошибка ",[39,1001,1002],{},"cannot open file: std/..."," при компиляции",[22,1005,1006,1008,1009,1011],{},[73,1007,892],{}," Установка Nim прошла некорректно или повреждена.\n",[73,1010,899],{}," Переустановите Nim через choosenim:",[130,1013,1015],{"className":132,"code":1014,"language":134,"meta":135,"style":135},"choosenim uninstall\nchoosenim stable\n",[39,1016,1017,1025],{"__ignoreMap":135},[139,1018,1019,1022],{"class":141,"line":142},[139,1020,1021],{"class":145},"choosenim",[139,1023,1024],{"class":149}," uninstall\n",[139,1026,1027,1029],{"class":141,"line":417},[139,1028,1021],{"class":145},[139,1030,1031],{"class":149}," stable\n",[22,1033,1034,1035,1037],{},"Убедитесь, что в ",[39,1036,233],{}," нет старых файлов, которые могут конфликтовать.",[1039,1040],"hr",{},[22,1042,1043,1046,1047,42],{},[73,1044,1045],{},"Среда готова!"," Теперь вы можете изучать язык Nim, создавать проекты и использовать богатую экосистему пакетов через Nimble. Для дальнейшего изучения обратитесь к ",[107,1048,1051],{"href":1049,"rel":1050},"https://nim-lang.org/docs/tut1.html",[111],"официальному туториалу Nim",[1053,1054,1055],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":135,"searchDepth":417,"depth":417,"links":1057},[1058,1059,1060,1061,1062,1063,1064,1065,1066,1067],{"id":19,"depth":417,"text":20},{"id":54,"depth":417,"text":55},{"id":116,"depth":417,"text":117},{"id":202,"depth":417,"text":203},{"id":272,"depth":417,"text":273},{"id":431,"depth":417,"text":432},{"id":545,"depth":417,"text":546},{"id":687,"depth":417,"text":688},{"id":823,"depth":417,"text":824},{"id":877,"depth":417,"text":878,"children":1068},[1069,1071,1072,1073,1074,1075],{"id":882,"depth":164,"text":1070},"1. Ошибка nim: command not found после установки",{"id":909,"depth":164,"text":910},{"id":943,"depth":164,"text":944},{"id":955,"depth":164,"text":956},{"id":982,"depth":164,"text":983},{"id":998,"depth":164,"text":1076},"6. Ошибка cannot open file: std/... при компиляции",null,"2026-02-14 22:39:48","Пошаговая инструкция по установке компилятора Nim, настройке среды разработки и запуску первого проекта в Linux. Все работает из коробки.","easy",false,"15-20 мин","md",[1085,1088,1091,1094],{"question":1086,"answer":1087},"Можно ли установить Nim без choosenim?","Теоретически да, скачав бинарник вручную, но choosenim — официальный и рекомендуемый способ. Он автоматически управляет версиями и обновлениями.",{"question":1089,"answer":1090},"Как обновить Nim до последней версии?","Выполните `choosenim stable` для стабильной версии или `choosenim head` для nightly-сборки. Nim обновится без переустановки.",{"question":1092,"answer":1093},"Почему команда `nim` не найдена после установки?","Скорее всего, путь `~/.nimble/bin` не добавлен в переменную PATH. Проверьте и добавьте его в `.bashrc` или `.zshrc`.",{"question":1095,"answer":1096},"Работает ли Nim на WSL?","Да, Nim полностью поддерживается в WSL (Windows Subsystem for Linux). Установка происходит так же, как и в обычном Linux.",[1098,1101,1104,1107,1110,1113],{"name":1099,"text":1100},"Установка скрипта choosenim","Скачайте и запустите официальный установочный скрипт choosenim, который будет управлять версиями Nim.",{"name":1102,"text":1103},"Установка компилятора Nim","С помощью choosenim установите последнюю стабильную версию компилятора Nim.",{"name":1105,"text":1106},"Настройка переменной окружения PATH","Добавьте каталог `~/.nimble/bin` в PATH, чтобы команды `nim` и `nimble` были доступны глобально.",{"name":1108,"text":1109},"Установка редактора кода и расширения","Установите VS Code и официальное расширение для подсветки синтаксиса и автодополнения Nim.",{"name":1111,"text":1112},"Создание и запуск тестового проекта","Напишите простую программу на Nim и скомпилируйте её, чтобы проверить работоспособность среды.",{"name":1114,"text":1115},"Установка менеджера пакетов Nimble","Nimble обычно устанавливается вместе с Nim, но проверим его наличие и обновим.","PT20M",[1118,1119,1120,1121,1122,1123,1124,1125,1126,1127],"установка nim linux","настройка среды разработки nim","choosenim linux","nim компилятор установка","vs code nim расширение","как запустить nim программу linux","nimble менеджер пакетов","ошибка nim command not found","установка nim на ubuntu","nim lang linux setup","ru_RU",{},true,"/guides/linux/setup-nim-environment","linux",[1134,1135,1136],"/guides/linux/setup-python-environment","/guides/linux/setup-go-environment","/errors/linux/nim-compilation-error","Гайды по Linux",{"title":5,"description":1079},"guides/linux/setup-nim-environment","Этот гайд проведет вас через установку Nim с помощью choosenim, настройку редактора кода и создание первого приложения. После выполнения вы получите готовую рабочую среду для разработки на Nim.",[252,1132,1142,1143,1021,1144,41],"разработка","компилятор","vs-code","guide","O8AnIavG3D9OfLJz6ER2jCKI00_5mgYOrqqmiA707pU",{"data":1148,"body":1149},{},{"type":1150,"children":1151},"root",[1152],{"type":1153,"tag":22,"props":1154,"children":1155},"element",{},[1156],{"type":264,"value":1087},{"data":1158,"body":1159},{},{"type":1150,"children":1160},[1161],{"type":1153,"tag":22,"props":1162,"children":1163},{},[1164,1166,1172,1174,1180],{"type":264,"value":1165},"Выполните ",{"type":1153,"tag":39,"props":1167,"children":1169},{"className":1168},[],[1170],{"type":264,"value":1171},"choosenim stable",{"type":264,"value":1173}," для стабильной версии или ",{"type":1153,"tag":39,"props":1175,"children":1177},{"className":1176},[],[1178],{"type":264,"value":1179},"choosenim head",{"type":264,"value":1181}," для nightly-сборки. Nim обновится без переустановки.",{"data":1183,"body":1184},{},{"type":1150,"children":1185},[1186],{"type":1153,"tag":22,"props":1187,"children":1188},{},[1189,1191,1196,1198,1204,1205,1211],{"type":264,"value":1190},"Скорее всего, путь ",{"type":1153,"tag":39,"props":1192,"children":1194},{"className":1193},[],[1195],{"type":264,"value":285},{"type":264,"value":1197}," не добавлен в переменную PATH. Проверьте и добавьте его в ",{"type":1153,"tag":39,"props":1199,"children":1201},{"className":1200},[],[1202],{"type":264,"value":1203},".bashrc",{"type":264,"value":389},{"type":1153,"tag":39,"props":1206,"children":1208},{"className":1207},[],[1209],{"type":264,"value":1210},".zshrc",{"type":264,"value":42},{"data":1213,"body":1214},{},{"type":1150,"children":1215},[1216],{"type":1153,"tag":22,"props":1217,"children":1218},{},[1219],{"type":264,"value":1096},{"data":1221,"body":1222},{},{"type":1150,"children":1223},[1224],{"type":1153,"tag":22,"props":1225,"children":1226},{},[1227],{"type":264,"value":1100},{"data":1229,"body":1230},{},{"type":1150,"children":1231},[1232],{"type":1153,"tag":22,"props":1233,"children":1234},{},[1235],{"type":264,"value":1103},{"data":1237,"body":1238},{},{"type":1150,"children":1239},[1240],{"type":1153,"tag":22,"props":1241,"children":1242},{},[1243,1245,1250,1252,1257,1258,1263],{"type":264,"value":1244},"Добавьте каталог ",{"type":1153,"tag":39,"props":1246,"children":1248},{"className":1247},[],[1249],{"type":264,"value":285},{"type":264,"value":1251}," в PATH, чтобы команды ",{"type":1153,"tag":39,"props":1253,"children":1255},{"className":1254},[],[1256],{"type":264,"value":252},{"type":264,"value":279},{"type":1153,"tag":39,"props":1259,"children":1261},{"className":1260},[],[1262],{"type":264,"value":41},{"type":264,"value":1264}," были доступны глобально.",{"data":1266,"body":1267},{},{"type":1150,"children":1268},[1269],{"type":1153,"tag":22,"props":1270,"children":1271},{},[1272],{"type":264,"value":1109},{"data":1274,"body":1275},{},{"type":1150,"children":1276},[1277],{"type":1153,"tag":22,"props":1278,"children":1279},{},[1280],{"type":264,"value":1112},{"data":1282,"body":1283},{},{"type":1150,"children":1284},[1285],{"type":1153,"tag":22,"props":1286,"children":1287},{},[1288],{"type":264,"value":1115},[1290,2655],{"id":1291,"title":1292,"appliesTo":1293,"author":12,"body":1295,"canonical":1077,"code":135,"createdAt":2598,"description":2599,"difficulty":1080,"draft":1081,"estimatedTime":2600,"extension":1083,"faq":2601,"howToSteps":2614,"howToTotalTime":2633,"image":1077,"keywords":2634,"locale":1128,"meta":2643,"navigation":1130,"path":1135,"platform":1132,"related":2644,"section":2646,"seo":2647,"severity":135,"stem":2648,"summary":2649,"tags":2650,"twitterCreator":1077,"twitterSite":1077,"type":1145,"updatedAt":2598,"__hash__":2654},"content_ru/guides/linux/setup-go-environment.md","Установка и настройка Go на Linux: пошаговое руководство",[7,9,8,10,1294],"Go 1.21+",{"type":14,"value":1296,"toc":2568},[1297,1299,1302,1305,1341,1343,1345,1399,1403,1406,1439,1454,1458,1461,1525,1531,1535,1539,1597,1601,1623,1627,1651,1665,1669,1672,1892,1896,1899,1994,1998,2001,2201,2204,2206,2213,2223,2241,2248,2261,2270,2285,2289,2300,2304,2324,2326,2328,2332,2336,2339,2356,2360,2376,2380,2385,2417,2421,2424,2535,2542,2565],[17,1298,20],{"id":19},[22,1300,1301],{},"Go (Golang) — современный компилируемый язык, созданный Google для эффективной разработки сетевых сервисов и утилит. Настройка среды разработки на Linux — обязательный первый шаг для работы с Go. После выполнения этого гайда у вас будет полностью рабочая среда: установлен компилятор, настроены пути и вы сможете создавать, собирать и запускать Go-проекты.",[22,1303,1304],{},"Вы получите:",[29,1306,1307,1314,1326,1338],{},[32,1308,1309,1310,1313],{},"Установленный компилятор ",[39,1311,1312],{},"go"," в терминале",[32,1315,1316,1317,1320,1321,1320,1324],{},"Настроенные переменные окружения ",[39,1318,1319],{},"GOROOT",", ",[39,1322,1323],{},"GOPATH",[39,1325,289],{},[32,1327,1328,1329,1320,1332,1320,1335],{},"Возможность использовать ",[39,1330,1331],{},"go get",[39,1333,1334],{},"go build",[39,1336,1337],{},"go run",[32,1339,1340],{},"Готовую структуру для проектов (если настроите GOPATH)",[17,1342,55],{"id":54},[22,1344,58],{},[60,1346,1347,1350,1361,1364],{},[32,1348,1349],{},"У вас есть доступ к терминалу Linux (Ubuntu, Debian, Fedora, Arch или другой).",[32,1351,1352,1353,389,1355,1320,1358,42],{},"Установлены базовые утилиты: ",[39,1354,146],{},[39,1356,1357],{},"wget",[39,1359,1360],{},"tar",[32,1362,1363],{},"Есть права sudo (если планируете установку в системные директории).",[32,1365,1366,1367,1380],{},"Определите архитектуру вашей системы:\n",[130,1368,1370],{"className":132,"code":1369,"language":134,"meta":135,"style":135},"uname -m\n",[39,1371,1372],{"__ignoreMap":135},[139,1373,1374,1377],{"class":141,"line":142},[139,1375,1376],{"class":145},"uname",[139,1378,1379],{"class":153}," -m\n",[29,1381,1382,1391],{},[32,1383,1384,1387,1388],{},[39,1385,1386],{},"x86_64"," → ",[39,1389,1390],{},"amd64",[32,1392,1393,1387,1396],{},[39,1394,1395],{},"aarch64",[39,1397,1398],{},"arm64",[17,1400,1402],{"id":1401},"шаг-1-проверка-наличия-go-и-архитектуры-системы","Шаг 1: Проверка наличия Go и архитектуры системы",[22,1404,1405],{},"Сначала проверим, не установлен ли уже Go, и определим архитектуру.",[130,1407,1409],{"className":132,"code":1408,"language":134,"meta":135,"style":135},"# Проверка установленного Go (если есть)\ngo version\n\n# Определение архитектуры\nuname -m\n",[39,1410,1411,1416,1423,1428,1433],{"__ignoreMap":135},[139,1412,1413],{"class":141,"line":142},[139,1414,1415],{"class":753},"# Проверка установленного Go (если есть)\n",[139,1417,1418,1420],{"class":141,"line":417},[139,1419,1312],{"class":145},[139,1421,1422],{"class":149}," version\n",[139,1424,1425],{"class":141,"line":164},[139,1426,1427],{"emptyLinePlaceholder":1130},"\n",[139,1429,1430],{"class":141,"line":364},[139,1431,1432],{"class":753},"# Определение архитектуры\n",[139,1434,1435,1437],{"class":141,"line":768},[139,1436,1376],{"class":145},[139,1438,1379],{"class":153},[22,1440,1441,1442,1445,1446,1449,1450,1453],{},"Если команда ",[39,1443,1444],{},"go version"," выводит версию (например, ",[39,1447,1448],{},"go version go1.20 linux/amd64","), Go уже установлен. Вы можете перейти к ",[73,1451,1452],{},"Шагу 5"," для проверки переменных окружения или удалить старую версию перед установкой новой.",[17,1455,1457],{"id":1456},"шаг-2-выбор-способа-установки","Шаг 2: Выбор способа установки",[22,1459,1460],{},"Есть два основных варианта:",[1462,1463,1464,1483],"table",{},[1465,1466,1467],"thead",{},[1468,1469,1470,1474,1477,1480],"tr",{},[1471,1472,1473],"th",{},"Способ",[1471,1475,1476],{},"Плюсы",[1471,1478,1479],{},"Минусы",[1471,1481,1482],{},"Когда выбирать",[1484,1485,1486,1511],"tbody",{},[1468,1487,1488,1502,1505,1508],{},[1489,1490,1491,1492,1320,1495,1320,1498,1501],"td",{},"Через менеджер пакетов (",[39,1493,1494],{},"apt",[39,1496,1497],{},"dnf",[39,1499,1500],{},"pacman",")",[1489,1503,1504],{},"Просто, автоматически в PATH, обновления через систему",[1489,1506,1507],{},"Версия часто не самая новая",[1489,1509,1510],{},"Для быстрой установки, если актуальная версия не критична",[1468,1512,1513,1516,1519,1522],{},[1489,1514,1515],{},"С официального сайта (golang.org/dl)",[1489,1517,1518],{},"Последняя стабильная версия, контроль над расположением",[1489,1520,1521],{},"Требует ручной настройки PATH",[1489,1523,1524],{},"Для разработки, когда нужны новые фичи или точная версия",[22,1526,1527,1530],{},[73,1528,1529],{},"Рекомендация:"," Если вы начинаете новый проект или хотите использовать Go Modules (современный стандарт), выбирайте установку с официального сайта.",[17,1532,1534],{"id":1533},"шаг-3-установка-через-менеджер-пакетов","Шаг 3: Установка через менеджер пакетов",[880,1536,1538],{"id":1537},"для-ubuntudebian","Для Ubuntu/Debian:",[130,1540,1542],{"className":132,"code":1541,"language":134,"meta":135,"style":135},"# Обновление кэша пакетов\nsudo apt update\n\n# Установка Go\nsudo apt install golang\n\n# Проверка версии (должна быть, например, 1.18+ в современных репозиториях)\ngo version\n",[39,1543,1544,1549,1559,1563,1568,1579,1584,1590],{"__ignoreMap":135},[139,1545,1546],{"class":141,"line":142},[139,1547,1548],{"class":753},"# Обновление кэша пакетов\n",[139,1550,1551,1553,1556],{"class":141,"line":417},[139,1552,771],{"class":145},[139,1554,1555],{"class":149}," apt",[139,1557,1558],{"class":149}," update\n",[139,1560,1561],{"class":141,"line":164},[139,1562,1427],{"emptyLinePlaceholder":1130},[139,1564,1565],{"class":141,"line":364},[139,1566,1567],{"class":753},"# Установка Go\n",[139,1569,1570,1572,1574,1576],{"class":141,"line":768},[139,1571,771],{"class":145},[139,1573,1555],{"class":149},[139,1575,817],{"class":149},[139,1577,1578],{"class":149}," golang\n",[139,1580,1582],{"class":141,"line":1581},6,[139,1583,1427],{"emptyLinePlaceholder":1130},[139,1585,1587],{"class":141,"line":1586},7,[139,1588,1589],{"class":753},"# Проверка версии (должна быть, например, 1.18+ в современных репозиториях)\n",[139,1591,1593,1595],{"class":141,"line":1592},8,[139,1594,1312],{"class":145},[139,1596,1422],{"class":149},[880,1598,1600],{"id":1599},"для-fedorarhelcentos","Для Fedora/RHEL/CentOS:",[130,1602,1604],{"className":132,"code":1603,"language":134,"meta":135,"style":135},"sudo dnf install golang\ngo version\n",[39,1605,1606,1617],{"__ignoreMap":135},[139,1607,1608,1610,1613,1615],{"class":141,"line":142},[139,1609,771],{"class":145},[139,1611,1612],{"class":149}," dnf",[139,1614,817],{"class":149},[139,1616,1578],{"class":149},[139,1618,1619,1621],{"class":141,"line":417},[139,1620,1312],{"class":145},[139,1622,1422],{"class":149},[880,1624,1626],{"id":1625},"для-arch-linux","Для Arch Linux:",[130,1628,1630],{"className":132,"code":1629,"language":134,"meta":135,"style":135},"sudo pacman -S go\ngo version\n",[39,1631,1632,1645],{"__ignoreMap":135},[139,1633,1634,1636,1639,1642],{"class":141,"line":142},[139,1635,771],{"class":145},[139,1637,1638],{"class":149}," pacman",[139,1640,1641],{"class":153}," -S",[139,1643,1644],{"class":149}," go\n",[139,1646,1647,1649],{"class":141,"line":417},[139,1648,1312],{"class":145},[139,1650,1422],{"class":149},[22,1652,1653,1656,1657,389,1660,1662,1663,42],{},[73,1654,1655],{},"Примечание:"," В некоторых дистрибутивах пакет называется ",[39,1658,1659],{},"golang",[39,1661,1312],{},". После установки через менеджер пакетов переменные окружения обычно настраиваются автоматически. Переходите к ",[73,1664,1452],{},[17,1666,1668],{"id":1667},"шаг-4-установка-с-официального-сайта-ручная","Шаг 4: Установка с официального сайта (ручная)",[22,1670,1671],{},"Этот способ даёт вам последнюю версию и полный контроль.",[60,1673,1674,1722,1745,1775,1875],{},[32,1675,1676,1679,1680,1713,1716,1717,42],{},[73,1677,1678],{},"Перейдите на страницу загрузок"," (можно сделать через терминал):",[130,1681,1683],{"className":132,"code":1682,"language":134,"meta":135,"style":135},"# Для amd64\nwget https://go.dev/dl/go1.21.6.linux-amd64.tar.gz\n\n# Для arm64\nwget https://go.dev/dl/go1.21.6.linux-arm64.tar.gz\n",[39,1684,1685,1690,1697,1701,1706],{"__ignoreMap":135},[139,1686,1687],{"class":141,"line":142},[139,1688,1689],{"class":753},"# Для amd64\n",[139,1691,1692,1694],{"class":141,"line":417},[139,1693,1357],{"class":145},[139,1695,1696],{"class":149}," https://go.dev/dl/go1.21.6.linux-amd64.tar.gz\n",[139,1698,1699],{"class":141,"line":164},[139,1700,1427],{"emptyLinePlaceholder":1130},[139,1702,1703],{"class":141,"line":364},[139,1704,1705],{"class":753},"# Для arm64\n",[139,1707,1708,1710],{"class":141,"line":768},[139,1709,1357],{"class":145},[139,1711,1712],{"class":149}," https://go.dev/dl/go1.21.6.linux-arm64.tar.gz\n",[1714,1715],"br",{},"Актуальную версию уточните на ",[107,1718,1721],{"href":1719,"rel":1720},"https://golang.org/dl/",[111],"golang.org/dl",[32,1723,1724,583,1727],{},[73,1725,1726],{},"Удалите старую версию (если была установлена в /usr/local/go)",[130,1728,1730],{"className":132,"code":1729,"language":134,"meta":135,"style":135},"sudo rm -rf /usr/local/go\n",[39,1731,1732],{"__ignoreMap":135},[139,1733,1734,1736,1739,1742],{"class":141,"line":142},[139,1735,771],{"class":145},[139,1737,1738],{"class":149}," rm",[139,1740,1741],{"class":153}," -rf",[139,1743,1744],{"class":149}," /usr/local/go\n",[32,1746,1747,1750,1751],{},[73,1748,1749],{},"Распакуйте архив в /usr/local"," (требует sudo):",[130,1752,1754],{"className":132,"code":1753,"language":134,"meta":135,"style":135},"sudo tar -C /usr/local -xzf go1.21.6.linux-amd64.tar.gz\n",[39,1755,1756],{"__ignoreMap":135},[139,1757,1758,1760,1763,1766,1769,1772],{"class":141,"line":142},[139,1759,771],{"class":145},[139,1761,1762],{"class":149}," tar",[139,1764,1765],{"class":153}," -C",[139,1767,1768],{"class":149}," /usr/local",[139,1770,1771],{"class":153}," -xzf",[139,1773,1774],{"class":149}," go1.21.6.linux-amd64.tar.gz\n",[32,1776,1777,1780,1781,1783,1784,1786,1787,1805,1807,1808,1859],{},[73,1778,1779],{},"Убедитесь, что Go добавлен в PATH",". Добавьте строки в ",[39,1782,305],{}," (или ",[39,1785,313],{}," для zsh):",[130,1788,1790],{"className":132,"code":1789,"language":134,"meta":135,"style":135},"# Откройте файл в редакторе\nnano ~/.bashrc\n",[39,1791,1792,1797],{"__ignoreMap":135},[139,1793,1794],{"class":141,"line":142},[139,1795,1796],{"class":753},"# Откройте файл в редакторе\n",[139,1798,1799,1802],{"class":141,"line":417},[139,1800,1801],{"class":145},"nano",[139,1803,1804],{"class":149}," ~/.bashrc\n",[1714,1806],{},"Добавьте в конец:",[130,1809,1811],{"className":132,"code":1810,"language":134,"meta":135,"style":135},"export GOROOT=/usr/local/go\nexport PATH=$PATH:$GOROOT/bin\nexport GOPATH=$HOME/go\nexport PATH=$PATH:$GOPATH/bin\n",[39,1812,1813,1825,1836,1848],{"__ignoreMap":135},[139,1814,1815,1817,1820,1822],{"class":141,"line":142},[139,1816,340],{"class":157},[139,1818,1819],{"class":218}," GOROOT",[139,1821,346],{"class":157},[139,1823,1824],{"class":218},"/usr/local/go\n",[139,1826,1827,1829,1831,1833],{"class":141,"line":417},[139,1828,340],{"class":157},[139,1830,343],{"class":218},[139,1832,346],{"class":157},[139,1834,1835],{"class":218},"$PATH:$GOROOT/bin\n",[139,1837,1838,1840,1843,1845],{"class":141,"line":164},[139,1839,340],{"class":157},[139,1841,1842],{"class":218}," GOPATH",[139,1844,346],{"class":157},[139,1846,1847],{"class":218},"$HOME/go\n",[139,1849,1850,1852,1854,1856],{"class":141,"line":364},[139,1851,340],{"class":157},[139,1853,343],{"class":218},[139,1855,346],{"class":157},[139,1857,1858],{"class":218},"$PATH:$GOPATH/bin\n",[183,1860,1861],{},[22,1862,530,1863,1865,1866,389,1869,1872,1873,42],{},[73,1864,533],{}," Если вы не хотите устанавливать в системную директорию, распакуйте архив в ",[39,1867,1868],{},"~/go",[39,1870,1871],{},"~/local/go"," и укажите соответствующий ",[39,1874,1319],{},[32,1876,1877,583,1880],{},[73,1878,1879],{},"Примените изменения",[130,1881,1883],{"className":132,"code":1882,"language":134,"meta":135,"style":135},"source ~/.bashrc\n",[39,1884,1885],{"__ignoreMap":135},[139,1886,1887,1890],{"class":141,"line":142},[139,1888,1889],{"class":153},"source",[139,1891,1804],{"class":149},[17,1893,1895],{"id":1894},"шаг-5-настройка-переменных-окружения-если-не-сделали-ранее","Шаг 5: Настройка переменных окружения (если не сделали ранее)",[22,1897,1898],{},"Даже при установке через менеджер пакетов стоит проверить/настроть GOPATH.",[60,1900,1901,1918,1955,1979],{},[32,1902,1903,583,1906],{},[73,1904,1905],{},"Проверьте текущие переменные",[130,1907,1909],{"className":132,"code":1908,"language":134,"meta":135,"style":135},"go env\n",[39,1910,1911],{"__ignoreMap":135},[139,1912,1913,1915],{"class":141,"line":142},[139,1914,1312],{"class":145},[139,1916,1917],{"class":149}," env\n",[32,1919,1920,1923,1924,1927,1928,583,1930],{},[73,1921,1922],{},"Убедитесь, что GOPATH указан",". Если вывод ",[39,1925,1926],{},"GOPATH=\"\"",", добавьте в ",[39,1929,305],{},[130,1931,1933],{"className":132,"code":1932,"language":134,"meta":135,"style":135},"export GOPATH=$HOME/go\nexport PATH=$PATH:$GOPATH/bin\n",[39,1934,1935,1945],{"__ignoreMap":135},[139,1936,1937,1939,1941,1943],{"class":141,"line":142},[139,1938,340],{"class":157},[139,1940,1842],{"class":218},[139,1942,346],{"class":157},[139,1944,1847],{"class":218},[139,1946,1947,1949,1951,1953],{"class":141,"line":417},[139,1948,340],{"class":157},[139,1950,343],{"class":218},[139,1952,346],{"class":157},[139,1954,1858],{"class":218},[32,1956,1957,1960,1961],{},[73,1958,1959],{},"Создайте директорию для проектов"," (если её нет):",[130,1962,1964],{"className":132,"code":1963,"language":134,"meta":135,"style":135},"mkdir -p $GOPATH/{src,bin,pkg}\n",[39,1965,1966],{"__ignoreMap":135},[139,1967,1968,1970,1973,1976],{"class":141,"line":142},[139,1969,564],{"class":145},[139,1971,1972],{"class":153}," -p",[139,1974,1975],{"class":218}," $GOPATH",[139,1977,1978],{"class":149},"/{src,bin,pkg}\n",[32,1980,1981,583,1984],{},[73,1982,1983],{},"Перезагрузите оболочку",[130,1985,1986],{"className":132,"code":1882,"language":134,"meta":135,"style":135},[39,1987,1988],{"__ignoreMap":135},[139,1989,1990,1992],{"class":141,"line":142},[139,1991,1889],{"class":153},[139,1993,1804],{"class":149},[17,1995,1997],{"id":1996},"шаг-6-проверка-результата","Шаг 6: Проверка результата",[22,1999,2000],{},"Выполните команды для полной проверки:",[130,2002,2004],{"className":132,"code":2003,"language":134,"meta":135,"style":135},"# 1. Проверка версии Go\ngo version\n# Ожидаемый вывод: go version go1.21.6 linux/amd64\n\n# 2. Проверка переменных окружения\ngo env GOROOT GOPATH PATH\n# GOROOT должен указывать на /usr/local/go (или вашу директорию)\n# GOPATH должен указывать на /home/ваш_пользователь/go\n\n# 3. Простой тестовый проект\nmkdir -p $GOPATH/src/hello\ncat > $GOPATH/src/hello/main.go \u003C\u003C 'EOF'\npackage main\nimport \"fmt\"\nfunc main() {\n    fmt.Println(\"Hello, FixPedia!\")\n}\nEOF\n\n# 4. Запуск\ngo run $GOPATH/src/hello/main.go\n# Должен вывести: Hello, FixPedia!\n\n# 5. Сборка бинарника\ngo build -o $GOPATH/bin/hello $GOPATH/src/hello/main.go\nhello\n# Должен вывести: Hello, FixPedia!\n",[39,2005,2006,2011,2017,2022,2026,2031,2045,2050,2055,2060,2066,2078,2094,2100,2106,2112,2118,2124,2129,2134,2140,2153,2159,2164,2170,2190,2196],{"__ignoreMap":135},[139,2007,2008],{"class":141,"line":142},[139,2009,2010],{"class":753},"# 1. Проверка версии Go\n",[139,2012,2013,2015],{"class":141,"line":417},[139,2014,1312],{"class":145},[139,2016,1422],{"class":149},[139,2018,2019],{"class":141,"line":164},[139,2020,2021],{"class":753},"# Ожидаемый вывод: go version go1.21.6 linux/amd64\n",[139,2023,2024],{"class":141,"line":364},[139,2025,1427],{"emptyLinePlaceholder":1130},[139,2027,2028],{"class":141,"line":768},[139,2029,2030],{"class":753},"# 2. Проверка переменных окружения\n",[139,2032,2033,2035,2038,2040,2042],{"class":141,"line":1581},[139,2034,1312],{"class":145},[139,2036,2037],{"class":149}," env",[139,2039,1819],{"class":149},[139,2041,1842],{"class":149},[139,2043,2044],{"class":149}," PATH\n",[139,2046,2047],{"class":141,"line":1586},[139,2048,2049],{"class":753},"# GOROOT должен указывать на /usr/local/go (или вашу директорию)\n",[139,2051,2052],{"class":141,"line":1592},[139,2053,2054],{"class":753},"# GOPATH должен указывать на /home/ваш_пользователь/go\n",[139,2056,2058],{"class":141,"line":2057},9,[139,2059,1427],{"emptyLinePlaceholder":1130},[139,2061,2063],{"class":141,"line":2062},10,[139,2064,2065],{"class":753},"# 3. Простой тестовый проект\n",[139,2067,2069,2071,2073,2075],{"class":141,"line":2068},11,[139,2070,564],{"class":145},[139,2072,1972],{"class":153},[139,2074,1975],{"class":218},[139,2076,2077],{"class":149},"/src/hello\n",[139,2079,2081,2083,2085,2087,2090,2092],{"class":141,"line":2080},12,[139,2082,593],{"class":145},[139,2084,596],{"class":157},[139,2086,1975],{"class":218},[139,2088,2089],{"class":149},"/src/hello/main.go",[139,2091,602],{"class":157},[139,2093,605],{"class":149},[139,2095,2097],{"class":141,"line":2096},13,[139,2098,2099],{"class":149},"package main\n",[139,2101,2103],{"class":141,"line":2102},14,[139,2104,2105],{"class":149},"import \"fmt\"\n",[139,2107,2109],{"class":141,"line":2108},15,[139,2110,2111],{"class":149},"func main() {\n",[139,2113,2115],{"class":141,"line":2114},16,[139,2116,2117],{"class":149},"    fmt.Println(\"Hello, FixPedia!\")\n",[139,2119,2121],{"class":141,"line":2120},17,[139,2122,2123],{"class":149},"}\n",[139,2125,2127],{"class":141,"line":2126},18,[139,2128,615],{"class":149},[139,2130,2132],{"class":141,"line":2131},19,[139,2133,1427],{"emptyLinePlaceholder":1130},[139,2135,2137],{"class":141,"line":2136},20,[139,2138,2139],{"class":753},"# 4. Запуск\n",[139,2141,2143,2145,2148,2150],{"class":141,"line":2142},21,[139,2144,1312],{"class":145},[139,2146,2147],{"class":149}," run",[139,2149,1975],{"class":218},[139,2151,2152],{"class":149},"/src/hello/main.go\n",[139,2154,2156],{"class":141,"line":2155},22,[139,2157,2158],{"class":753},"# Должен вывести: Hello, FixPedia!\n",[139,2160,2162],{"class":141,"line":2161},23,[139,2163,1427],{"emptyLinePlaceholder":1130},[139,2165,2167],{"class":141,"line":2166},24,[139,2168,2169],{"class":753},"# 5. Сборка бинарника\n",[139,2171,2173,2175,2178,2181,2183,2186,2188],{"class":141,"line":2172},25,[139,2174,1312],{"class":145},[139,2176,2177],{"class":149}," build",[139,2179,2180],{"class":153}," -o",[139,2182,1975],{"class":218},[139,2184,2185],{"class":149},"/bin/hello",[139,2187,1975],{"class":218},[139,2189,2152],{"class":149},[139,2191,2193],{"class":141,"line":2192},26,[139,2194,2195],{"class":145},"hello\n",[139,2197,2199],{"class":141,"line":2198},27,[139,2200,2158],{"class":753},[22,2202,2203],{},"Если все шаги прошли успешно — среда готова к работе.",[17,2205,878],{"id":877},[880,2207,2209,2210],{"id":2208},"go-command-not-found","❌ ",[39,2211,2212],{},"go: command not found",[22,2214,2215,2217,2218,2220,2221],{},[73,2216,892],{}," Go не добавлен в ",[39,2219,289],{},".\n",[73,2222,899],{},[60,2224,2225,2236],{},[32,2226,2227,2228,1783,2230,2232,2233,42],{},"Проверьте, что в ",[39,2229,305],{},[39,2231,313],{},") есть строка ",[39,2234,2235],{},"export PATH=$PATH:/usr/local/go/bin",[32,2237,1165,2238,2240],{},[39,2239,388],{}," или перезайдите в терминал.",[880,2242,2244,2245],{"id":2243},"ошибка-доступа-при-распаковке-в-usrlocal","❌ Ошибка доступа при распаковке в ",[39,2246,2247],{},"/usr/local",[22,2249,2250,2252,2253,2255,2256,2258,2259,102],{},[73,2251,892],{}," Недостаточно прав.\n",[73,2254,899],{}," Используйте ",[39,2257,771],{}," для распаковки или установите Go в домашнюю директорию (",[39,2260,1868],{},[880,2262,2209,2264,2267,2268],{"id":2263},"go-env-показывает-пустой-gopath",[39,2265,2266],{},"go env"," показывает пустой ",[39,2269,1323],{},[22,2271,2272,2274,2275,2277,2278,2281,2282,2284],{},[73,2273,892],{}," Переменная не задана.\n",[73,2276,899],{}," Добавьте ",[39,2279,2280],{},"export GOPATH=$HOME/go"," в ",[39,2283,305],{}," и перезагрузите оболочку.",[880,2286,2288],{"id":2287},"устаревшая-версия-в-репозитории-дистрибутива","❌ Устаревшая версия в репозитории дистрибутива",[22,2290,2291,2293,2294,2296,2297,102],{},[73,2292,892],{}," Репозитории Linux часто содержат стабильные, но не самые свежие версии.\n",[73,2295,899],{}," Установите с официального сайта (см. ",[73,2298,2299],{},"Шаг 4",[880,2301,2303],{"id":2302},"конфликт-версий-go","❌ Конфликт версий Go",[22,2305,2306,2308,2309,2311,2312,2314,2315,279,2318,2321,2322,42],{},[73,2307,892],{}," В системе несколько версий Go, и ",[39,2310,1312],{}," указывает на нежелательную.\n",[73,2313,899],{}," Проверьте ",[39,2316,2317],{},"which go",[39,2319,2320],{},"ls -l $(which go)",". Удалите лишние версии или измените порядок в ",[39,2323,289],{},[1039,2325],{},[268,2327],{},[17,2329,2331],{"id":2330},"продвинутые-настройки-опционально","Продвинутые настройки (опционально)",[880,2333,2335],{"id":2334},"настройка-модулей-go-modules","Настройка модулей (Go Modules)",[22,2337,2338],{},"Начиная с Go 1.11, модули — стандарт для управления зависимостями. Убедитесь, что включены:",[130,2340,2342],{"className":132,"code":2341,"language":134,"meta":135,"style":135},"go env -w GO111MODULE=on\n",[39,2343,2344],{"__ignoreMap":135},[139,2345,2346,2348,2350,2353],{"class":141,"line":142},[139,2347,1312],{"class":145},[139,2349,2037],{"class":149},[139,2351,2352],{"class":153}," -w",[139,2354,2355],{"class":149}," GO111MODULE=on\n",[880,2357,2359],{"id":2358},"настройка-прокси-для-модулей-если-нужен-доступ-в-рфкитай","Настройка прокси для модулей (если нужен доступ в РФ/Китай)",[130,2361,2363],{"className":132,"code":2362,"language":134,"meta":135,"style":135},"go env -w GOPROXY=https://goproxy.cn,direct\n",[39,2364,2365],{"__ignoreMap":135},[139,2366,2367,2369,2371,2373],{"class":141,"line":142},[139,2368,1312],{"class":145},[139,2370,2037],{"class":149},[139,2372,2352],{"class":153},[139,2374,2375],{"class":149}," GOPROXY=https://goproxy.cn,direct\n",[880,2377,2379],{"id":2378},"автодополнение-для-bashzsh","Автодополнение для bash/zsh",[22,2381,2382,2383,583],{},"Установите плагин для автодополнения команд ",[39,2384,1312],{},[130,2386,2388],{"className":132,"code":2387,"language":134,"meta":135,"style":135},"# Для bash\ngo install golang.org/x/tools/cmd/godoc@latest\necho \"source \u003C(godoc -completion)\" >> ~/.bashrc\n",[39,2389,2390,2395,2404],{"__ignoreMap":135},[139,2391,2392],{"class":141,"line":142},[139,2393,2394],{"class":753},"# Для bash\n",[139,2396,2397,2399,2401],{"class":141,"line":417},[139,2398,1312],{"class":145},[139,2400,817],{"class":149},[139,2402,2403],{"class":149}," golang.org/x/tools/cmd/godoc@latest\n",[139,2405,2406,2409,2412,2415],{"class":141,"line":164},[139,2407,2408],{"class":153},"echo",[139,2410,2411],{"class":149}," \"source \u003C(godoc -completion)\"",[139,2413,2414],{"class":157}," >>",[139,2416,1804],{"class":149},[17,2418,2420],{"id":2419},"заключительная-проверка","Заключительная проверка",[22,2422,2423],{},"После настройки выполните полный цикл работы:",[60,2425,2426,2462,2508],{},[32,2427,2428,2429],{},"Создайте новый модуль:",[130,2430,2432],{"className":132,"code":2431,"language":134,"meta":135,"style":135},"mkdir ~/projects/myapp && cd ~/projects/myapp\ngo mod init github.com/username/myapp\n",[39,2433,2434,2449],{"__ignoreMap":135},[139,2435,2436,2438,2441,2444,2446],{"class":141,"line":142},[139,2437,564],{"class":145},[139,2439,2440],{"class":149}," ~/projects/myapp",[139,2442,2443],{"class":218}," && ",[139,2445,572],{"class":153},[139,2447,2448],{"class":149}," ~/projects/myapp\n",[139,2450,2451,2453,2456,2459],{"class":141,"line":417},[139,2452,1312],{"class":145},[139,2454,2455],{"class":149}," mod",[139,2457,2458],{"class":149}," init",[139,2460,2461],{"class":149}," github.com/username/myapp\n",[32,2463,2464,2465],{},"Добавьте простой код:",[130,2466,2468],{"className":132,"code":2467,"language":134,"meta":135,"style":135},"cat > main.go \u003C\u003C 'EOF'\npackage main\nimport \"fmt\"\nfunc main() {\n    fmt.Println(\"Go is ready!\")\n}\nEOF\n",[39,2469,2470,2483,2487,2491,2495,2500,2504],{"__ignoreMap":135},[139,2471,2472,2474,2476,2479,2481],{"class":141,"line":142},[139,2473,593],{"class":145},[139,2475,596],{"class":157},[139,2477,2478],{"class":149}," main.go",[139,2480,602],{"class":157},[139,2482,605],{"class":149},[139,2484,2485],{"class":141,"line":417},[139,2486,2099],{"class":149},[139,2488,2489],{"class":141,"line":164},[139,2490,2105],{"class":149},[139,2492,2493],{"class":141,"line":364},[139,2494,2111],{"class":149},[139,2496,2497],{"class":141,"line":768},[139,2498,2499],{"class":149},"    fmt.Println(\"Go is ready!\")\n",[139,2501,2502],{"class":141,"line":1581},[139,2503,2123],{"class":149},[139,2505,2506],{"class":141,"line":1586},[139,2507,615],{"class":149},[32,2509,2510,2511],{},"Соберите и запустите:",[130,2512,2514],{"className":132,"code":2513,"language":134,"meta":135,"style":135},"go build -o myapp .\n./myapp\n",[39,2515,2516,2530],{"__ignoreMap":135},[139,2517,2518,2520,2522,2524,2527],{"class":141,"line":142},[139,2519,1312],{"class":145},[139,2521,2177],{"class":149},[139,2523,2180],{"class":153},[139,2525,2526],{"class":149}," myapp",[139,2528,2529],{"class":149}," .\n",[139,2531,2532],{"class":141,"line":417},[139,2533,2534],{"class":145},"./myapp\n",[22,2536,2537,2538,2541],{},"Если вы видите ",[39,2539,2540],{},"Go is ready!",", — поздравляем, среда полностью работоспособна!",[183,2543,2544,2549],{},[22,2545,2546],{},[73,2547,2548],{},"Что дальше?",[29,2550,2551,2559,2562],{},[32,2552,2553,2554],{},"Изучите ",[107,2555,2558],{"href":2556,"rel":2557},"https://tour.golang.org/",[111],"официальный туториал",[32,2560,2561],{},"Настройте IDE (VS Code с расширением Go, Goland)",[32,2563,2564],{},"Освойте Go Modules для управления зависимостями",[1053,2566,2567],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":135,"searchDepth":417,"depth":417,"links":2569},[2570,2571,2572,2573,2574,2579,2580,2581,2582,2592,2597],{"id":19,"depth":417,"text":20},{"id":54,"depth":417,"text":55},{"id":1401,"depth":417,"text":1402},{"id":1456,"depth":417,"text":1457},{"id":1533,"depth":417,"text":1534,"children":2575},[2576,2577,2578],{"id":1537,"depth":164,"text":1538},{"id":1599,"depth":164,"text":1600},{"id":1625,"depth":164,"text":1626},{"id":1667,"depth":417,"text":1668},{"id":1894,"depth":417,"text":1895},{"id":1996,"depth":417,"text":1997},{"id":877,"depth":417,"text":878,"children":2583},[2584,2586,2588,2590,2591],{"id":2208,"depth":164,"text":2585},"❌ go: command not found",{"id":2243,"depth":164,"text":2587},"❌ Ошибка доступа при распаковке в /usr/local",{"id":2263,"depth":164,"text":2589},"❌ go env показывает пустой GOPATH",{"id":2287,"depth":164,"text":2288},{"id":2302,"depth":164,"text":2303},{"id":2330,"depth":417,"text":2331,"children":2593},[2594,2595,2596],{"id":2334,"depth":164,"text":2335},{"id":2358,"depth":164,"text":2359},{"id":2378,"depth":164,"text":2379},{"id":2419,"depth":417,"text":2420},"2026-02-14 23:03:22","Полное руководство по установке Go (Golang) на Linux. Настройте переменные окружения, GOPATH и модули за 10 минут. Работает на Ubuntu, Debian, Fedora и других дистрибутивах.","10-15 мин",[2602,2605,2608,2611],{"question":2603,"answer":2604},"Какую версию Go выбрать для установки?","Рекомендуется устанавливать последнюю стабильную версию (LTS) с официального сайта, если нужны новейшие функции. Для production-сред лучше использовать долгосрочную поддержку (LTS).",{"question":2606,"answer":2607},"Нужно ли использовать sudo при установке Go?","Если устанавливаете в системную директорию (например, /usr/local), потребуются права sudo. При установке в домашнюю директорию (~/go или ~/local) — нет.",{"question":2609,"answer":2610},"Что такое GOPATH и обязательно ли его настраивать?","GOPATH — это рабочая директория для проектов Go. С появлением Go Modules (с 1.11) её настройка не обязательна, но рекомендуется для совместимости со старыми проектами.",{"question":2612,"answer":2613},"Как обновить Go до новой версии?","Просто повторите установку, скачав новый архив и заменив старую директорию /usr/local/go (или вашу). Перезапустите терминал или выполните source ~/.profile.",[2615,2618,2621,2624,2627,2630],{"name":2616,"text":2617},"Проверка наличия Go и архитектуры системы","Определите архитектуру (amd64/arm64) и наличие уже установленного Go. Это основа для правильного выбора пакета.",{"name":2619,"text":2620},"Выбор способа установки","Есть два основных пути: через менеджер пакетов (проще, но версия может быть старше) или с официального сайта (актуальная версия).",{"name":2622,"text":2623},"Установка через менеджер пакетов (apt/dnf/pacman)","Используйте команду для вашего дистрибутива. Этот способ добавляет Go в PATH автоматически.",{"name":2625,"text":2626},"Установка с официального сайта (ручная)","Скачайте архив, распакуйте в /usr/local (или домашнюю директорию) и добавьте путь в PATH вручную.",{"name":2628,"text":2629},"Настройка переменных окружения","Добавьте GOROOT, GOPATH и PATH в файл профиля (~/.bashrc, ~/.zshrc). Это нужно для корректной работы go команды.",{"name":2631,"text":2632},"Проверка установки","Выполните go version и go env, чтобы убедиться, что Go установлен и переменные окружения работают.","PT15M",[2635,2636,2637,2638,2639,2640,2641,2642],"установка golang linux","настройка go на ubuntu","gopath переменная linux","как установить go в linux","go environment setup linux","golang установка debian","установка go с сайта","go linux terminal",{},[1134,2645],"/guides/linux/install-docker-ubuntu","Гайды Linux",{"title":1292,"description":2599},"guides/linux/setup-go-environment","В этом гайде вы научитесь устанавливать и настраивать среду разработки Go на Linux с нуля. Мы разберём установку из репозитория и с официального сайта, настройку PATH и GOPATH, а также проверим работоспособность.",[1132,1659,2651,1142,1312,2652,2653],"установка","devops","programming","CH1cKMDGPV7MUZV49JtlQ9ujOfVg4GAp_rK2Gh3gKvY",{"id":2656,"title":2657,"appliesTo":2658,"author":12,"body":2660,"canonical":1077,"code":135,"createdAt":3611,"description":3612,"difficulty":3613,"draft":1081,"estimatedTime":2600,"extension":1083,"faq":3614,"howToSteps":3627,"howToTotalTime":2633,"image":1077,"keywords":3643,"locale":1128,"meta":3652,"navigation":1130,"path":1136,"platform":1132,"related":3653,"section":3656,"seo":3657,"severity":3613,"stem":3658,"summary":3659,"tags":3660,"twitterCreator":1077,"twitterSite":1077,"type":3664,"updatedAt":3611,"__hash__":3665},"content_ru/errors/linux/nim-compilation-error.md","Ошибка компиляции Nim в Linux: причины и способы исправления",[11,2659,9,10],"Ubuntu 22.04+",{"type":14,"value":2661,"toc":3600},[2662,2666,2672,2714,2726,2730,2808,2812,2815,2946,2948,2952,2955,3085,3089,3102,3214,3218,3221,3335,3339,3442,3446,3512,3516,3540,3566,3587,3597],[17,2663,2665],{"id":2664},"что-означает-ошибка-компиляции-nim","Что означает ошибка компиляции Nim",[22,2667,2668,2669,2671],{},"Ошибка компиляции Nim в Linux — это сообщение от компилятора Nim (или от вызываемого им C-компилятора), которое останавливает процесс преобразования вашего ",[39,2670,522],{},"-кода в исполняемый файл. Типичные симптомы:",[29,2673,2674,2685,2694,2705],{},[32,2675,2676,76,2679,389,2682,42],{},[73,2677,2678],{},"В начале:",[39,2680,2681],{},"Error: execution of an external program failed: gcc ...",[39,2683,2684],{},"Error: cannot execute: cc",[32,2686,2687,76,2690,2693],{},[73,2688,2689],{},"В середине:",[39,2691,2692],{},"Error: undeclared identifier: 'X'"," (часто из-за отсутствующих заголовочных файлов C).",[32,2695,2696,76,2699,389,2702,42],{},[73,2697,2698],{},"В конце:",[39,2700,2701],{},"Error: linking failed",[39,2703,2704],{},"undefined reference to ...",[32,2706,2707,76,2710,2713],{},[73,2708,2709],{},"Сообщение Nimble:",[39,2711,2712],{},"Failed to build package"," с выводом лога компиляции.",[22,2715,2716,2717,1320,2720,389,2723,42],{},"Ошибка обычно появляется при выполнении команд ",[39,2718,2719],{},"nim c myapp.nim",[39,2721,2722],{},"nimble build",[39,2724,2725],{},"nimble test",[17,2727,2729],{"id":2728},"причины-возникновения","Причины возникновения",[60,2731,2732,2749,2762,2772,2786,2799],{},[32,2733,2734,2737,2738,2741,2742,1320,2745,2748],{},[73,2735,2736],{},"Отсутствует системный C-компилятор."," Nim по умолчанию использует backend ",[39,2739,2740],{},"c",", который требует установленного ",[39,2743,2744],{},"gcc",[39,2746,2747],{},"clang"," или другого совместимого компилятора.",[32,2750,2751,2754,2755,1320,2758,2761],{},[73,2752,2753],{},"Несовместимость версий Nim и backend-библиотек."," После обновления Nim могут потребоваться обновлённые версии библиотек C (например, ",[39,2756,2757],{},"libpcre",[39,2759,2760],{},"libssl","), от которых зависит ваш проект.",[32,2763,2764,2767,2768,2771],{},[73,2765,2766],{},"Повреждённый или устаревший кэш Nim/Nimble."," Старые объектные файлы (",[39,2769,2770],{},".o",") или артефакты могут конфликтовать с новым кодом.",[32,2773,2774,2777,2778,2781,2782,2785],{},[73,2775,2776],{},"Недостающие заголовочные файлы разработки (development headers)."," Для компиляции C-кода, генерируемого Nim, нужны ",[39,2779,2780],{},"*-dev"," пакеты (например, ",[39,2783,2784],{},"libssl-dev"," для SSL-функций).",[32,2787,2788,2791,2792,1320,2795,2798],{},[73,2789,2790],{},"Некорректные флаги компилятора или переменные окружения."," Унаследованные флаги (например, ",[39,2793,2794],{},"CFLAGS",[39,2796,2797],{},"LDFLAGS",") могут конфликтовать с ожиданиями Nim.",[32,2800,2801,2804,2805,2807],{},[73,2802,2803],{},"Проблемы с правами доступа"," к системным каталогам или каталогу проекта (особенно если используется ",[39,2806,771],{}," для установки глобальных пакетов Nimble).",[17,2809,2811],{"id":2810},"способ-1-установка-и-настройка-c-компилятора","Способ 1: Установка и настройка C-компилятора",[22,2813,2814],{},"Это самое частое решение. Nim требует наличия компилятора C в системе.",[60,2816,2817,2862,2885,2907],{},[32,2818,2819,2822,2846,2848,2849,2852,2853,1320,2855,1320,2858,2861],{},[73,2820,2821],{},"Для Debian/Ubuntu и производных:",[130,2823,2825],{"className":132,"code":2824,"language":134,"meta":135,"style":135},"sudo apt update\nsudo apt install build-essential\n",[39,2826,2827,2835],{"__ignoreMap":135},[139,2828,2829,2831,2833],{"class":141,"line":142},[139,2830,771],{"class":145},[139,2832,1555],{"class":149},[139,2834,1558],{"class":149},[139,2836,2837,2839,2841,2843],{"class":141,"line":417},[139,2838,771],{"class":145},[139,2840,1555],{"class":149},[139,2842,817],{"class":149},[139,2844,2845],{"class":149}," build-essential\n",[1714,2847],{},"Пакет ",[39,2850,2851],{},"build-essential"," включает ",[39,2854,2744],{},[39,2856,2857],{},"g++",[39,2859,2860],{},"make"," и стандартные библиотеки.",[32,2863,2864,2866],{},[73,2865,1626],{},[130,2867,2869],{"className":132,"code":2868,"language":134,"meta":135,"style":135},"sudo pacman -S base-devel gcc\n",[39,2870,2871],{"__ignoreMap":135},[139,2872,2873,2875,2877,2879,2882],{"class":141,"line":142},[139,2874,771],{"class":145},[139,2876,1638],{"class":149},[139,2878,1641],{"class":153},[139,2880,2881],{"class":149}," base-devel",[139,2883,2884],{"class":149}," gcc\n",[32,2886,2887,2890,2901,2903,2904,102],{},[73,2888,2889],{},"Проверьте установку:",[130,2891,2893],{"className":132,"code":2892,"language":134,"meta":135,"style":135},"gcc --version\n",[39,2894,2895],{"__ignoreMap":135},[139,2896,2897,2899],{"class":141,"line":142},[139,2898,2744],{"class":145},[139,2900,255],{"class":153},[1714,2902],{},"Вывод должен показывать версию компилятора (например, ",[39,2905,2906],{},"gcc (Ubuntu 11.4.0) 11.4.0",[32,2908,2909,2912,2913,2932,2934,2935,2937,2938,2941,2942,389,2944,42],{},[73,2910,2911],{},"Убедитесь, что Nim видит компилятор."," Выполните:",[130,2914,2916],{"className":132,"code":2915,"language":134,"meta":135,"style":135},"nim c -r --printcc:on test.nim\n",[39,2917,2918],{"__ignoreMap":135},[139,2919,2920,2922,2924,2926,2929],{"class":141,"line":142},[139,2921,252],{"class":145},[139,2923,632],{"class":149},[139,2925,635],{"class":153},[139,2927,2928],{"class":153}," --printcc:on",[139,2930,2931],{"class":149}," test.nim\n",[1714,2933],{},"(где ",[39,2936,873],{}," — простой файл с ",[39,2939,2940],{},"echo \"Hello\"","). В выводе должна быть команда вызова ",[39,2943,2744],{},[39,2945,2747],{},[268,2947],{},[17,2949,2951],{"id":2950},"способ-2-очистка-кэша-и-обновление-инструментов","Способ 2: Очистка кэша и обновление инструментов",[22,2953,2954],{},"Если компилятор на месте, проблема может быть в устаревших артефактах.",[60,2956,2957,2983,3008,3047,3066],{},[32,2958,2959,2962,2977,2979],{},[73,2960,2961],{},"Очистите глобальный кэш Nim:",[130,2963,2965],{"className":132,"code":2964,"language":134,"meta":135,"style":135},"rm -rf ~/.cache/nim\n",[39,2966,2967],{"__ignoreMap":135},[139,2968,2969,2972,2974],{"class":141,"line":142},[139,2970,2971],{"class":145},"rm",[139,2973,1741],{"class":153},[139,2975,2976],{"class":149}," ~/.cache/nim\n",[1714,2978],{},[2980,2981,2982],"em",{},"Примечание: Это удалит кэш для всех проектов. Nimble будет перекомпилировать зависимости.",[32,2984,2985,2988,2989,2992,2993,3005,3007],{},[73,2986,2987],{},"Очистите кэш Nimble для текущего проекта:","\nПерейдите в корень вашего Nim-проекта (где находится ",[39,2990,2991],{},"*.nimble"," файл) и выполните:",[130,2994,2996],{"className":132,"code":2995,"language":134,"meta":135,"style":135},"nimble clean\n",[39,2997,2998],{"__ignoreMap":135},[139,2999,3000,3002],{"class":141,"line":142},[139,3001,41],{"class":145},[139,3003,3004],{"class":149}," clean\n",[1714,3006],{},"Это удалит скомпилированные бинарники и объектные файлы проекта.",[32,3009,3010,3013],{},[73,3011,3012],{},"Обновите сам Nim и Nimble:",[130,3014,3016],{"className":132,"code":3015,"language":134,"meta":135,"style":135},"# Обновление Nim через choosenim (рекомендуемый способ)\nchoosenim update stable\n\n# Обновление Nimble (после обновления Nim)\nnimble refresh\n",[39,3017,3018,3023,3032,3036,3041],{"__ignoreMap":135},[139,3019,3020],{"class":141,"line":142},[139,3021,3022],{"class":753},"# Обновление Nim через choosenim (рекомендуемый способ)\n",[139,3024,3025,3027,3030],{"class":141,"line":417},[139,3026,1021],{"class":145},[139,3028,3029],{"class":149}," update",[139,3031,1031],{"class":149},[139,3033,3034],{"class":141,"line":164},[139,3035,1427],{"emptyLinePlaceholder":1130},[139,3037,3038],{"class":141,"line":364},[139,3039,3040],{"class":753},"# Обновление Nimble (после обновления Nim)\n",[139,3042,3043,3045],{"class":141,"line":768},[139,3044,41],{"class":145},[139,3046,797],{"class":149},[32,3048,3049,3052],{},[73,3050,3051],{},"Переустановите зависимости проекта:",[130,3053,3055],{"className":132,"code":3054,"language":134,"meta":135,"style":135},"nimble install -y\n",[39,3056,3057],{"__ignoreMap":135},[139,3058,3059,3061,3063],{"class":141,"line":142},[139,3060,41],{"class":145},[139,3062,817],{"class":149},[139,3064,3065],{"class":153}," -y\n",[32,3067,3068,3071],{},[73,3069,3070],{},"Попробуйте скомпилировать снова:",[130,3072,3074],{"className":132,"code":3073,"language":134,"meta":135,"style":135},"nim c myapp.nim\n",[39,3075,3076],{"__ignoreMap":135},[139,3077,3078,3080,3082],{"class":141,"line":142},[139,3079,252],{"class":145},[139,3081,632],{"class":149},[139,3083,3084],{"class":149}," myapp.nim\n",[17,3086,3088],{"id":3087},"способ-3-установка-недостающих-заголовочных-файлов-development-packages","Способ 3: Установка недостающих заголовочных файлов (development packages)",[22,3090,3091,3092,389,3095,3098,3099,3101],{},"Ошибки вида ",[39,3093,3094],{},"cannot find -lssl",[39,3096,3097],{},"fatal error:openssl/ssl.h: No such file or directory"," указывают на отсутствие ",[39,3100,2780],{}," пакетов.",[60,3103,3104,3128,3195,3208],{},[32,3105,3106,3109,3110],{},[73,3107,3108],{},"Определите, какую библиотеку не хватает."," Смотрите на текст ошибки:",[29,3111,3112,3120],{},[32,3113,3114,3117,3118,42],{},[39,3115,3116],{},"undefined reference to 'SSL_*'"," → не хватает ",[39,3119,2760],{},[32,3121,3122,3117,3125,42],{},[39,3123,3124],{},"fatal error: zlib.h: No such file",[39,3126,3127],{},"zlib1g-dev",[32,3129,3130,3133,3134],{},[73,3131,3132],{},"Установите соответствующие пакеты."," Для Debian/Ubuntu:",[130,3135,3137],{"className":132,"code":3136,"language":134,"meta":135,"style":135},"# Пример для SSL\nsudo apt install libssl-dev\n\n# Пример для zlib\nsudo apt install zlib1g-dev\n\n# Пример для PCRE (регулярные выражения)\nsudo apt install libpcre3-dev\n",[39,3138,3139,3144,3155,3159,3164,3175,3179,3184],{"__ignoreMap":135},[139,3140,3141],{"class":141,"line":142},[139,3142,3143],{"class":753},"# Пример для SSL\n",[139,3145,3146,3148,3150,3152],{"class":141,"line":417},[139,3147,771],{"class":145},[139,3149,1555],{"class":149},[139,3151,817],{"class":149},[139,3153,3154],{"class":149}," libssl-dev\n",[139,3156,3157],{"class":141,"line":164},[139,3158,1427],{"emptyLinePlaceholder":1130},[139,3160,3161],{"class":141,"line":364},[139,3162,3163],{"class":753},"# Пример для zlib\n",[139,3165,3166,3168,3170,3172],{"class":141,"line":768},[139,3167,771],{"class":145},[139,3169,1555],{"class":149},[139,3171,817],{"class":149},[139,3173,3174],{"class":149}," zlib1g-dev\n",[139,3176,3177],{"class":141,"line":1581},[139,3178,1427],{"emptyLinePlaceholder":1130},[139,3180,3181],{"class":141,"line":1586},[139,3182,3183],{"class":753},"# Пример для PCRE (регулярные выражения)\n",[139,3185,3186,3188,3190,3192],{"class":141,"line":1592},[139,3187,771],{"class":145},[139,3189,1555],{"class":149},[139,3191,817],{"class":149},[139,3193,3194],{"class":149}," libpcre3-dev\n",[32,3196,3197,3200,3201,3204,3205,102],{},[73,3198,3199],{},"Для Arch Linux"," пакеты называются без суффикса ",[39,3202,3203],{},"-dev"," (например, ",[39,3206,3207],{},"openssl",[32,3209,3210,3213],{},[73,3211,3212],{},"После установки"," повторите компиляцию.",[17,3215,3217],{"id":3216},"способ-4-явное-указание-backend-и-менеджера-памяти","Способ 4: Явное указание backend и менеджера памяти",[22,3219,3220],{},"Иногда помогает явное управление параметрами компиляции, особенно при миграции между версиями Nim.",[60,3222,3223,3256,3303],{},[32,3224,3225,3231,3247,3249,3250,389,3253,42],{},[73,3226,3227,3228,3230],{},"Укажите backend ",[39,3229,2740],{}," явно:",[130,3232,3234],{"className":132,"code":3233,"language":134,"meta":135,"style":135},"nim c --backend:c myapp.nim\n",[39,3235,3236],{"__ignoreMap":135},[139,3237,3238,3240,3242,3245],{"class":141,"line":142},[139,3239,252],{"class":145},[139,3241,632],{"class":149},[139,3243,3244],{"class":153}," --backend:c",[139,3246,3084],{"class":149},[1714,3248],{},"Это исключит случайное использование ",[39,3251,3252],{},"cpp",[39,3254,3255],{},"js",[32,3257,3258,3261,3262,3265,3266,583,3269],{},[73,3259,3260],{},"Укажите менеджер памяти."," В Nim 2.0+ по умолчанию ",[39,3263,3264],{},"orc",". Если проект старый, может требовать ",[39,3267,3268],{},"refc",[130,3270,3272],{"className":132,"code":3271,"language":134,"meta":135,"style":135},"nim c --mm:orc myapp.nim   # для Nim 2.0+\nnim c --mm:refc myapp.nim  # для Nim 1.x или совместимости\n",[39,3273,3274,3289],{"__ignoreMap":135},[139,3275,3276,3278,3280,3283,3286],{"class":141,"line":142},[139,3277,252],{"class":145},[139,3279,632],{"class":149},[139,3281,3282],{"class":153}," --mm:orc",[139,3284,3285],{"class":149}," myapp.nim",[139,3287,3288],{"class":753},"   # для Nim 2.0+\n",[139,3290,3291,3293,3295,3298,3300],{"class":141,"line":417},[139,3292,252],{"class":145},[139,3294,632],{"class":149},[139,3296,3297],{"class":153}," --mm:refc",[139,3299,3285],{"class":149},[139,3301,3302],{"class":753},"  # для Nim 1.x или совместимости\n",[32,3304,3305,3308,3328,3330,3331,3334],{},[73,3306,3307],{},"Комбинируйте флаги:",[130,3309,3311],{"className":132,"code":3310,"language":134,"meta":135,"style":135},"nim c --backend:c --mm:orc --verbosity:2 myapp.nim\n",[39,3312,3313],{"__ignoreMap":135},[139,3314,3315,3317,3319,3321,3323,3326],{"class":141,"line":142},[139,3316,252],{"class":145},[139,3318,632],{"class":149},[139,3320,3244],{"class":153},[139,3322,3282],{"class":153},[139,3324,3325],{"class":153}," --verbosity:2",[139,3327,3084],{"class":149},[1714,3329],{},"Флаг ",[39,3332,3333],{},"--verbosity:2"," покажет больше деталей о вызове C-компилятора, что полезно для диагностики.",[17,3336,3338],{"id":3337},"способ-5-проверка-переменных-окружения-и-прав-доступа","Способ 5: Проверка переменных окружения и прав доступа",[60,3340,3341,3383,3433],{},[32,3342,3343,3348,3349,3351,3352,3355,3356,583,3358,3376,3378,3379,3382],{},[73,3344,3345,3346,42],{},"Проверьте ",[39,3347,289],{}," Убедитесь, что каталог с ",[39,3350,2744],{}," (обычно ",[39,3353,3354],{},"/usr/bin",") присутствует в переменной ",[39,3357,289],{},[130,3359,3361],{"className":132,"code":3360,"language":134,"meta":135,"style":135},"echo $PATH\nwhich gcc\n",[39,3362,3363,3370],{"__ignoreMap":135},[139,3364,3365,3367],{"class":141,"line":142},[139,3366,2408],{"class":153},[139,3368,3369],{"class":218}," $PATH\n",[139,3371,3372,3374],{"class":141,"line":417},[139,3373,411],{"class":153},[139,3375,2884],{"class":149},[1714,3377],{},"Если ",[39,3380,3381],{},"which gcc"," ничего не выводит, компилятор не найден.",[32,3384,3385,3391,3392,3394,3395,3398,3399,389,3401,3403,3404,3406,3407],{},[73,3386,3387,3388,3390],{},"Избегайте ",[39,3389,771],{}," для Nimble."," Устанавливайте пакеты Nimble в пользовательском режиме (",[39,3393,233],{},"). Использование ",[39,3396,3397],{},"sudo nimble install"," может привести к проблемам с правами на файлы в ",[39,3400,2247],{},[39,3402,233],{},". Если уже использовали ",[39,3405,771],{},", исправьте права:",[130,3408,3410],{"className":132,"code":3409,"language":134,"meta":135,"style":135},"sudo chown -R $USER:$USER ~/.nimble\n",[39,3411,3412],{"__ignoreMap":135},[139,3413,3414,3416,3419,3422,3425,3427,3430],{"class":141,"line":142},[139,3415,771],{"class":145},[139,3417,3418],{"class":149}," chown",[139,3420,3421],{"class":153}," -R",[139,3423,3424],{"class":218}," $USER",[139,3426,583],{"class":149},[139,3428,3429],{"class":218},"$USER ",[139,3431,3432],{"class":149},"~/.nimble\n",[32,3434,3435,3204,3438,3441],{},[73,3436,3437],{},"Для проектов в защищённых каталогах",[39,3439,3440],{},"/opt",") убедитесь, что у вашего пользователя есть права на запись, или компилируйте в домашнем каталоге.",[17,3443,3445],{"id":3444},"профилактика","Профилактика",[29,3447,3448,3464,3480,3493,3506],{},[32,3449,3450,3453,3454,3457,3458,3463],{},[73,3451,3452],{},"Регулярно обновляйте Nim"," через ",[39,3455,3456],{},"choosenim update stable",", но читайте ",[107,3459,3462],{"href":3460,"rel":3461},"https://nim-lang.org/blog.html",[111],"журнал изменений"," о возможных breaking changes.",[32,3465,3466,3469,3470,3472,3473,3475,3476,3479],{},[73,3467,3468],{},"Фиксируйте версии Nim"," в проекте через ",[39,3471,41],{}," (файл ",[39,3474,2991],{}," с ",[39,3477,3478],{},"version = \"x.y.z\""," для зависимостей).",[32,3481,3482,3488,3489,3492],{},[73,3483,3484,3485],{},"Используйте ",[39,3486,3487],{},"nimble path"," для проверки, откуда берутся зависимости, и ",[39,3490,3491],{},"nimble list"," для их просмотра.",[32,3494,3495,3498,3499,3501,3502,3505],{},[73,3496,3497],{},"В Docker-образах"," или CI/CD явно устанавливайте ",[39,3500,2851],{}," (или аналоги) ",[2980,3503,3504],{},"до"," установки Nim.",[32,3507,3508,3511],{},[73,3509,3510],{},"При смене major-версии Nim"," (например, 1.x → 2.x) проверьте документацию миграции и обновите все зависимости.",[17,3513,3515],{"id":3514},"faq","FAQ",[22,3517,3518,3521,3522,3524,3525,3527,3528,3530,3531,3534,3535,3530,3537,3539],{},[73,3519,3520],{},"Можно ли компилировать Nim без установленного C-компилятора?","\nНет, backend ",[39,3523,2740],{}," всегда требует внешний C-компилятор. Есть экспериментальный backend ",[39,3526,3252],{},", требующий C++ компилятор, и ",[39,3529,3255],{},"/",[39,3532,3533],{},"vm",", но для нативных бинарников ",[39,3536,2744],{},[39,3538,2747],{}," обязательны.",[22,3541,3542,3551,3553,3554,3557,3558,3561,3562,3565],{},[73,3543,3544,3545,3547,3548,3550],{},"Почему ",[39,3546,644],{}," работает, а ",[39,3549,2722],{}," — нет?",[39,3552,2722],{}," может использовать дополнительные зависимости, указанные в ",[39,3555,3556],{},".nimble"," файле. Проверьте, все ли они установлены (",[39,3559,3560],{},"nimble install","), и нет ли в ",[39,3563,3564],{},"requires"," секции специфичных для C библиотек.",[22,3567,3568,3571,3572,389,3574,3577,3578,3580,3581,3584,3585,42],{},[73,3569,3570],{},"Как диагностировать, какой именно флаг вызывает ошибку linking?","\nИспользуйте ",[39,3573,3333],{},[39,3575,3576],{},"--debugger:native"," для просмотра полной команды вызова ",[39,3579,2744],{},". Затем попробуйте выполнить эту команду вручную, добавив ",[39,3582,3583],{},"-v"," для подробного вывода ",[39,3586,2744],{},[22,3588,3589,3596],{},[73,3590,3591,3592,3595],{},"Что делать, если ошибка ",[39,3593,3594],{},"internal error: unhandled exception: out of memory","?","\nУвеличьте лимит памяти для компилятора или уменьшите размер единицы компиляции (разбейте большой модуль). Также может помочь очистка кэша (Способ 2) и увеличение swap-пространства.",[1053,3598,3599],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":135,"searchDepth":417,"depth":417,"links":3601},[3602,3603,3604,3605,3606,3607,3608,3609,3610],{"id":2664,"depth":417,"text":2665},{"id":2728,"depth":417,"text":2729},{"id":2810,"depth":417,"text":2811},{"id":2950,"depth":417,"text":2951},{"id":3087,"depth":417,"text":3088},{"id":3216,"depth":417,"text":3217},{"id":3337,"depth":417,"text":3338},{"id":3444,"depth":417,"text":3445},{"id":3514,"depth":417,"text":3515},"2026-02-15 16:30:53","Не удаётся скомпилировать Nim-проект в Linux? Пошаговая инструкция по устранению типичных ошибок компиляции: от проблем с зависимостями до конфликтов версий. Решение за 10 минут.","medium",[3615,3618,3621,3624],{"question":3616,"answer":3617},"Почему Nim не находит компилятор C (cc) в Linux?","Nim для компиляции в C использует системный компилятор (gcc/clang). Если он не установлен или не в PATH, возникает ошибка. Установите `build-essential` (Debian/Ubuntu) или `base-devel` (Arch).",{"question":3619,"answer":3620},"Нужно ли устанавливать отдельно backend (backend = c, cpp, js)?","Backend `c` (по умолчанию) требует только системный C-компилятор. Backend `cpp` требует установленного C++ компилятора (g++/clang++). Backend `js` требует Node.js.",{"question":3622,"answer":3623},"Как очистить кэш Nim, если компиляция падает с неясной ошибкой?","Удалите кэш командой `nimble clean` или вручную: `rm -rf ~/.cache/nim` и `rm -rf ~/.nimble`. Это часто решает проблемы с устаревшими артефактами.",{"question":3625,"answer":3626},"Почему после обновления Nim перестали компилироваться старые проекты?","Возможны breaking changes в API или изменённые параметры по умолчанию. Проверьте, не требует ли проект явного указания `--mm:orc` (или `--mm:refc`) или обновления зависимостей через `nimble refresh`.",[3628,3631,3634,3637,3640],{"name":3629,"text":3630},"Проверьте наличие C-компилятора","Убедитесь, что в системе установлен `gcc` или `clang`. Выполните `gcc --version` или `clang --version`. Если команда не найдена, установите пакет `build-essential` (Debian/Ubuntu) или `clang` (Arch).",{"name":3632,"text":3633},"Обновите Nim и Nimble","Устаревшие версии могут несовместимы с текущими библиотеками. Обновите Nim через choosenim: `choosenim update stable`. Затем обновите Nimble: `nimble refresh`.",{"name":3635,"text":3636},"Очистите кэш компиляции","Удалите кэш Nim и Nimble, чтобы исключить проблемы с устаревшими объектными файлами: `rm -rf ~/.cache/nim ~/.nimble` или используйте `nimble clean` в каталоге проекта.",{"name":3638,"text":3639},"Явно укажите backend и менеджер памяти","В командной строке укажите backend (например, `--backend:c`) и менеджер памяти (`--mm:orc` для Nim 2.0+). Пример: `nim c --backend:c --mm:orc myapp.nim`.",{"name":3641,"text":3642},"Проверьте зависимости проекта (nimble)","Если проект использует nimble, убедитесь, что зависимости установлены: `nimble install -y` в корне проекта. Для локальных зависимостей проверьте `nimble.paths`.",[3644,3645,3646,3647,3648,3649,3650,3651],"ошибка компиляции nim linux","nim build ошибка","nimble compile ошибка","не компилируется nim код","ошибка cc не найден nim","nim кэш ошибка","ошибка linkage nim","как исправить ошибку nim",{},[3654,1131,3655],"/errors/linux/gcc-not-found-error","/errors/linux/ld-library-not-found","Ошибки компиляции",{"title":2657,"description":3612},"errors/linux/nim-compilation-error","Статья объясняет, почему возникают ошибки при компиляции Nim-кода в Linux, и предлагает проверенные способы их исправления — от установки недостающих библиотек до настройки переменных окружения.",[3661,252,1132,3662,2747,41,3663],"ошибки компиляции","cc","backend","error","NPp-PKGArxY-MARSVY5J2QA87VHTfMyxGC7Ms2qkw8Y"]