استفاده از Neovim در OpenWrt – Dev Community

😀 از آنجا که من اغلب باید از طریق SSH ، از جمله پیکربندی روتر اصلی ، پیکربندی روتر جانبی (دروازه جانبی) ، OpenClash ، Adguard Home ، Mosdns و غیره ، شبکه خانگی خود را اشکال زد. json
با yaml
وت xml
پرونده های پیکربندی یا پرونده های داده ساختاری. در محیط محلی خود ، من بیشتر از Neovim استفاده می کنم ، و قبلاً مقالاتی راجع به LazyVim به اشتراک گذاشته ام. در حال حاضر ، هیچ IPK برای این نرم افزار در مخزن نرم افزار OpenWRT System وجود ندارد ، بنابراین امروز من فرآیند تهیه و نصب Neovim را در OpenWRT و مشکلات موجود در آن سازماندهی می کنم.
قبل از شروع قبل از شروع کار
برای جلوگیری از مشکلات غیرقابل کنترل در طی فرآیند تدوین و نصب ، من از یک محیط جدید ماشین مجازی برای این آموزش استفاده می کنم. این سیستم عامل از سیستم عامل ImmortalWrt ، عمومی است x86/64
معماری ، شماره نسخه 23.05.3
، نسخه هسته 5.15.162
، بدون هیچ بسته نرم افزاری از پیش نصب شده اضافی ، مطابق با بسته های نرم افزاری پیش فرض ارائه شده ، و فضای موجود تا حد امکان بزرگ است. فضای واقعی که من برای این عملیات استفاده کردم حدود 1.2 گرم است ، اما پس از اتمام نصب می توان آن را حذف کرد.
همچنین ، قبل از شروع عملیات زیر ، اگر از سیستم OpenWRT استفاده می کنید ، توصیه می شود تهیه نسخه پشتیبان تهیه کنید. اگر این یک سیستم ماشین مجازی است ، توصیه می شود یک پاسگاه یا نقطه پشتیبان اضافه کنید.
فرآیند گردآوری و نصب آغاز می شود و فرآیند نصب آغاز می شود
اگر نمی خواهید این روند را ببینید ، می توانید به طور مستقیم به خلاصه نگاه کنید.
ابتدا منبع مخزن نرم افزار را از طریق OPKG Package Manager به روز کنید.
opkg update
نتیجه بازگشت Signature check passed.
و هیچ خطایی وجود ندارد ، به مرحله بعدی ادامه دهید.
از آنجا که ما نیاز به کلون کردن مخزن Neovim در GitHub از طریق GIT داریم ، به این دو بسته نرم افزاری نیاز داریم ، جایی که از GIT-HTTP برای استفاده از GIT در موقعیت های SSL استفاده می شود.
opkg install git git-http
در این دوره ، از جمله وابستگی ها ، در مجموع git, git-http, zlib, libcurl4, libnghttp2-14
بسته های نرم افزاری نصب شد.
مخزن neovim را از طریق کلون GIT کلون کنید و سعی کنید ساخت آن را اجرا کنید.
git clone https://github.com/neovim/neovim
cd neovim && make CMAKE_BUILD_TYPE=RelWithDebInfo
نتیجه خطا برگشت یافته است:
make not found
دلیل این امر این است که ما بسته نرم افزاری را نداریم. آن را از طریق OPKG نصب کنید و دوباره سعی کنید.
opkg install make
make CMAKE_BUILD_TYPE=RelWithDebInfo
نتیجه خطا برگشت یافته است:
make: cmake: No such file or directory
make: *** [Makefile:94: build/.ran-deps-cmake] Error 127
این نشان می دهد که cmake
وجود ندارد OpenWrt یک فایل نصب برای Cmake ارائه نمی دهد ، اما ما می توانیم آن را به طور غیرمستقیم نصب کنیم python-pip
و نسخه اصلی Python در حال حاضر Python3 است.
opkg install python3 python3-pip
pip install cmake
بعد از تلاش make
باز هم ، پیام خطا تغییر می کند:
- The C compiler identification is unknown
CMake Error at CMakeLists.txt:3 (project):
No CMAKE_C_COMPILER could be found.
Tell CMake where to find the compiler by setting either the environment
variable "CC" or the CMake cache entry CMAKE_C_COMPILER to the full path to
the compiler, or to the compiler name if it is in the PATH.
- Configuring incomplete, errors occurred!
make: *** [Makefile:94: build/.ran-deps-cmake] Error 1
این بدان معنی است که کامپایلر C پیدا نشده است. ما می توانیم نصب کنیم gcc
برای حل این
opkg install gcc
make CMAKE_BUILD_TYPE=RelWithDebInfo
این تدوین مدت زمان طولانی طول کشید ، تا زمانی که خطایی در هنگام نصب رخ داد luajit
:
compilation terminated.
make[5]: *** [Makefile:709: lj_parse.o] Error 1
make[4]: *** [Makefile:126: src/luajit] Error 2
make[3]: *** [CMakeFiles/luajit.dir/build.make:106: build/src/luajit-stamp/luajit-install] Error 2
make[2]: *** [CMakeFiles/Makefile2:161: CMakeFiles/luajit.dir/all] Error 2
make[1]: *** [Makefile:91: all] Error 2
make[1]: Leaving directory '/root/neovim/.deps'
make: *** [Makefile:87: deps] Error 2
ما می توانیم مستقیماً آن را از طریق نصب کنیم opkg
بشر
opkg install luajit
سپس به تلاش خود ادامه دهید make
، و این بار خطا تغییر می کند:
/usr/bin/ld: cannot find -ldl: No such file or directory
این نشان می دهد که ld
فرمان ندارد ldl
گزینه با بررسی اسناد OpenWRT ، می توان دریافت که کارکردهای موجود در این کتابخانه ها در واقع به طور مستقیم در MUSL LIBC گنجانده شده است. با این حال ، از آنجا که برخی از ابزارها سعی می کنند صریح این کتابخانه ها را پیوند دهند ، ممکن است با یک خطای “چنین پرونده یا دایرکتوری” روبرو شوید. برای حل این مشکل ، فقط کتابخانه های خرد را برای آنها ایجاد کنید.
برای ایجاد یک فایل SH از VI استفاده کنید vi run.sh
، و محتوای زیر را در پرونده وارد کنید.
cat <<EOF > /usr/lib/libdl.a
!
EOF
cp -a /usr/lib/libdl.a /usr/lib/librt.a
cp -a /usr/lib/libdl.a /usr/lib/libpthread.a
cp -a /usr/lib/libdl.a /usr/lib/libresolv.a
chmod +x run.sh
./run.sh
سپس ادامه دهید make CMAKE_BUILD_TYPE=RelWithDebInfo
، و این بار محتوای خطا به:
/bin/sh: install: not found
این نشان می دهد که دستور نصب یافت نمی شود. راه حل این کار نصب بسته کامل دستور نصب است:
opkg install coreutils-install
محتوای خطا به:
CMake Error at /usr/lib/python3.11/site-packages/cmake/data/share/cmake-3.30/Modules/FindPackageHandleStandardArgs.cmake:233 (message):
Could NOT find Gettext (missing: GETTEXT_MSGMERGE_EXECUTABLE
GETTEXT_MSGFMT_EXECUTABLE)
Call Stack (most recent call first):
/usr/lib/python3.11/site-packages/cmake/data/share/cmake-3.30/Modules/FindPackageHandleStandardArgs.cmake:603 (_FPHSA_FAILURE_MESSAGE)
/usr/lib/python3.11/site-packages/cmake/data/share/cmake-3.30/Modules/FindGettext.cmake:81 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
src/nvim/po/CMakeLists.txt:1 (find_package)
این نشان می دهد که GetText پیدا نشده است. در حال حاضر هیچ روش نصب سریع برای بسته های GetText وجود ندارد و ما باید با تهیه آن ، آن را نصب کنیم.
wget -c https://ftp.gnu.org/pub/gnu/gettext/gettext-0.22.5.tar.gz
tar zxvf gettext-0.22.5.tar.gz
cd gettext-0.22.5
./configure
make && make install
سپس به تلاش برای تهیه Neovim ادامه دهید و خطای برگشت داده شده است:
/usr/bin/ld: cannot find -lutil: No such file or directory
ما می توانیم با ایجاد کتابخانه های خرد ، آن را دور بزنیم:
echo "int main() { return 0; }" > dummy.c
gcc -shared -o /usr/lib/libutil.so dummy.c
در این مرحله ، این مجموعه اساساً کامل است و ما می توانیم با نصب ادامه دهیم.
make install
پرونده اجرایی باینری در واقع است /usr/local/bin
، و ما می توانیم مستقیماً آن را به /usr/bin
یا یک پیوند نرم در آنجا ایجاد کنید. پس از آن ، اگر می خواهید Astrovim یا LazyVim را نصب کنید ، می توانید مستقیماً آن را اجرا کنید.
وابستگی های نصب OPKG وابستگی های نصب
opkg update
opkg install git git-http python3 python3-pip make luajit gcc coreutils-install
وابستگی های نصب پیپ وابستگی نصب
pip install cmake
کامپایل و نصب GetText را کامپایل و نصب کنید
wget -c https://ftp.gnu.org/pub/gnu/gettext/gettext-0.22.5.tar.gz
tar zxvf gettext-0.22.5.tar.gz
cd gettext-0.22.5
./configure
make && make install
کتابخانه های خرد ایجاد کنید که کتابخانه های خرد ایجاد کنید
vi run.sh
cat <<EOF > /usr/lib/libdl.a
!
EOF
cp -a /usr/lib/libdl.a /usr/lib/librt.a
cp -a /usr/lib/libdl.a /usr/lib/libpthread.a
cp -a /usr/lib/libdl.a /usr/lib/libresolv.a
chmod +x run.sh
./run.sh
echo "int main() { return 0; }" > dummy.c
gcc -shared -o /usr/lib/libutil.so dummy.c
مخزن کلون neovim و کامپایل و نصب مخزن کلون neovim و کامپایل و نصب و نصب
git clone https://github.com/neovim/neovim
cd neovim && make CMAKE_BUILD_TYPE=RelWithDebInfo
make install
پس از اتمام ، nvim
پرونده باینری در /usr/local/bin
اگر به نسخه پایدار Neovim نیاز دارید ، اصلاح کنید CMAKE_BUILD_TYPE=Release
مستقیماً فایل باینری را بارگیری کنید مستقیماً فایل باینری را بارگیری کنید
اگر نمی خواهید خودتان آنرا کامپایل کنید و اتفاقاً یک معماری X86_64 OpenWRT دارید ، می توانید مستقیماً پرونده باینری را که برای استفاده تهیه کردم ، بارگیری کنید.
init.vim/neovim.7z at main · moreoronce/init.vim
💡 اگر در مورد نصب یا استفاده از OpenWRT سؤالی دارید ، لطفاً در پایین نظر خود را بگذارید و بیایید با هم ارتباط برقرار کنیم