家里用的思科 CISCO SG90D-08-CN
千兆 8
口交换机桌面型。 详细参数如下:
作者: 默默
华为(HUAWEI)S1700-8G-AC 非网管8口千兆以太网 交换机 参数
继续阅读华为(HUAWEI)S1700-8G-AC 非网管8口千兆以太网 交换机 参数
基于APC BK650-CH UPS连接群晖DS718+通过NUT(Network UPS Tools)实现WDMyCloud Gen1断电自动关机
最近新入手了 群晖 DS718+
,鉴于群晖断电容易损坏硬盘的传说,为了保证设备的安全,特别购入了 APC BK650-CH UPS
。
APC BK650-CH UPS
有多个电源插槽,可以同时为多个设备提供断电保护,但是 APC BK650-CH UPS
只有一个 USB
设备接口,这个接口用来提供电源状态信息,比如是否断电,当前电量信息等数据。这就造成收到断电通知的只能有一个设备,这个设备必须通过网络通知其他设备,才能实现全部的断电通知。
继续阅读基于APC BK650-CH UPS连接群晖DS718+通过NUT(Network UPS Tools)实现WDMyCloud Gen1断电自动关机
brew报告错误“fatal: unable to access 'https://aomedia.googlesource.com/aom.git/': Failed to connect to aomedia.googlesource.com port 443: Operation timed out”
最近在使用 brew
升级应用的时候,报告如下错误:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
$ brew upgrade Warning: You are using macOS 10.11. We (and Apple) do not provide support for this old version. You will encounter build failures with some formulae. Please create pull requests instead of asking for help on Homebrew's GitHub, Discourse, Twitter or IRC. You are responsible for resolving any issues you experience, as you are running this old version. ==> Upgrading 7 outdated packages: doxygen 1.8.14 -> 1.8.15, ffmpeg 4.0.2 -> 4.1.3, ilmbase 2.2.1 -> 2.3.0, libpng 1.6.36 -> 1.6.37, lz4 1.8.3 -> 1.9.0, opencv 3.4.2 -> 4.1.0_1, openexr 2.2.0_1 -> 2.3.0 ==> Upgrading libpng ==> Downloading https://downloads.sourceforge.net/libpng/libpng-1.6.37.tar.xz ==> Downloading from https://jaist.dl.sourceforge.net/project/libpng/libpng16/1. ######################################################################## 100.0% ==> ./configure --disable-silent-rules --prefix=/usr/local/Cellar/libpng/1.6.37 ==> make ==> make test ==> make install ? /usr/local/Cellar/libpng/1.6.37: 27 files, 1.2MB, built in 3 minutes 59 seconds Removing: /usr/local/Cellar/libpng/1.6.36... (28 files, 1.2MB) Removing: /Users/xxxx/Library/Caches/Homebrew/libpng--1.6.36.tar.xz... (0B) ==> Upgrading ffmpeg ==> Installing dependencies for ffmpeg: aom, frei0r, libtasn1, nettle, libffi, p11-kit, libevent, unbound, gnutls, fribidi, ninja, meson, glib, pixman, cairo, gobject-introspection, graphite2, harfbuzz, libass, libbluray, libsoxr, opencore-amr, doxygen, little-cms2, openjpeg, rtmpdump, flac, libsndfile, libsamplerate, rubberband, speex, autoconf-archive, giflib, webp, leptonica, tesseract and x265 ==> Installing ffmpeg dependency: aom ==> Cloning https://aomedia.googlesource.com/aom.git Cloning into '/Users/xxxx/Library/Caches/Homebrew/aom--git'... fatal: unable to access 'https://aomedia.googlesource.com/aom.git/': Failed to connect to aomedia.googlesource.com port 443: Operation timed out Error: An exception occurred within a child process: DownloadError: Failed to download resource "aom" Failure while executing; `git clone --branch v1.0.0 https://aomedia.googlesource.com/aom.git /Users/xxxx/Library/Caches/Homebrew/aom--git` exited with 128. Here's the output: Cloning into '/Users/xxxx/Library/Caches/Homebrew/aom--git'... fatal: unable to access 'https://aomedia.googlesource.com/aom.git/': Failed to connect to aomedia.googlesource.com port 443: Operation timed out |
众所周知的原因,很早之前,就已经不能访问 Google
的服务器了,因此这个错误是正常现象。
解决方法如下:
1 2 3 4 5 6 7 8 |
$ wget https://raw.githubusercontent.com/Homebrew/homebrew-core/master/Formula/aom.rb # 用本站提供的一份代码拷贝来替代原来的地址 $ sed -i "" "s/https:\/\/aomedia\.googlesource\.com\/aom\.git/https:\/\/www.mobibrw.com\/wp-content\/uploads\/2019\/04\/aom.zip/g" aom.rb $ brew uninstall --ignore-dependencies aom $ brew install --build-from-source aom.rb --env=std |
参考链接
OS X EI Capitan(10.11.6)执行brew upgrade cmake 升级到cmake-3.14.2/cmake-3.17.3报告错误“make: *** [all] Error 2”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
$ brew upgrade cmake Updating Homebrew... Warning: You are using macOS 10.11. We (and Apple) do not provide support for this old version. You will encounter build failures with some formulae. Please create pull requests instead of asking for help on Homebrew's GitHub, Discourse, Twitter or IRC. You are responsible for resolving any issues you experience, as you are running this old version. ==> Upgrading 1 outdated package: cmake 3.12.0 -> 3.14.2 ==> Upgrading cmake ==> Downloading https://github.com/Kitware/CMake/releases/download/v3.14.2/cmake Already downloaded: /Users/xxxx/Library/Caches/Homebrew/downloads/348cde1c4453dba1e5e72e9bb6ae7cd45fffb907d265cd06efd513841eda8541--cmake-3.14.2.tar.gz ==> ./bootstrap --prefix=/usr/local/Cellar/cmake/3.14.2 --no-system-libs --paral ==> make Last 15 lines from /Users/xxxx/Library/Logs/Homebrew/cmake/02.make: [ 23%] Building C object Source/CursesDialog/form/CMakeFiles/cmForm.dir/frm_req_name.c.o [ 23%] Building C object Source/CursesDialog/form/CMakeFiles/cmForm.dir/frm_scale.c.o [ 24%] Building C object Source/CursesDialog/form/CMakeFiles/cmForm.dir/frm_sub.c.o [ 24%] Building C object Source/CursesDialog/form/CMakeFiles/cmForm.dir/frm_user.c.o [ 24%] Building C object Source/CursesDialog/form/CMakeFiles/cmForm.dir/frm_win.c.o [ 24%] Building C object Source/CursesDialog/form/CMakeFiles/cmForm.dir/fty_alnum.c.o [ 24%] Building C object Source/CursesDialog/form/CMakeFiles/cmForm.dir/fty_alpha.c.o [ 24%] Building C object Source/CursesDialog/form/CMakeFiles/cmForm.dir/fty_enum.c.o [ 24%] Building C object Source/CursesDialog/form/CMakeFiles/cmForm.dir/fty_int.c.o [ 25%] Building C object Source/CursesDialog/form/CMakeFiles/cmForm.dir/fty_ipv4.c.o [ 25%] Building C object Source/CursesDialog/form/CMakeFiles/cmForm.dir/fty_num.c.o [ 25%] Building C object Source/CursesDialog/form/CMakeFiles/cmForm.dir/fty_regex.c.o [ 25%] Linking C static library libcmForm.a [ 25%] Built target cmForm make: *** [all] Error 2 Do not report this issue to Homebrew/brew or Homebrew/core! Error: You are using macOS 10.11. We (and Apple) do not provide support for this old version. You will encounter build failures with some formulae. Please create pull requests instead of asking for help on Homebrew's GitHub, Discourse, Twitter or IRC. You are responsible for resolving any issues you experience, as you are running this old version. |
查看日志/Users/xxxx/Library/Logs/Homebrew/cmake/02.make
,内容如下:
struts2升级之后报错“java.lang.NoSuchMethodError: org.apache.commons.lang3.reflect.MethodUtils.getAnnotation”
struts2 从如下版本:
1 2 |
<struts2.version>2.5.10.1</struts2.version> <apache.commons.version>3.5</apache.commons.version> |
升级到
1 |
<struts2.version>2.5.20</struts2.version> |
之后报错如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
四月 13, 2019 10:07:59 上午 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet [default] in context with path [] threw exception [Filter execution threw an exception] with root cause java.lang.NoSuchMethodError: org.apache.commons.lang3.reflect.MethodUtils.getAnnotation(Ljava/lang/reflect/Method;Ljava/lang/Class;ZZ)Ljava/lang/annotation/Annotation; at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:44) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.doIntercept(ConversionErrorInterceptor.java:142) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:137) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:137) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:201) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:67) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at org.apache.struts2.interceptor.DateTextFieldInterceptor.intercept(DateTextFieldInterceptor.java:133) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:89) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:101) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:142) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:160) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:175) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at org.apache.struts2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:121) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:167) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:203) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:196) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at org.apache.struts2.factory.StrutsActionProxy.execute(StrutsActionProxy.java:48) at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:574) at org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:79) at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:141) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1137) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:317) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) |
解决方法为升级
1 2 3 4 5 |
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>${apache.commons.version}</version> </dependency> |
到更高的版本,如下:
1 2 |
<struts2.version>2.5.20</struts2.version> <apache.commons.version>3.8.1</apache.commons.version> |
参考链接
java.lang.NoSuchMethodError: org.apache.commons.lang3.math.NumberUtils.isCreatable(Ljava/lang/String
软件磁盘阵列(RAID)
RAID软件磁盘阵列
RAID 即廉价磁盘冗余阵列,其高可用性和可靠性适用于大规模环境中,相比正常使用,数据更需要被保护。RAID 是将多个磁盘整合的大磁盘,不仅具有存储功能,同时还有数据保护功能.
软件磁盘整列通过mdadm命令创建.
RAID等级
- RAID-0: 等量模式,stripe,性能较佳,磁盘利用率100%
- RAID-1: 镜像模式,mirror,安全性较佳,磁盘利用率50%
- RAID-0+1: 先组成RAID-0,再有RAID-0组成RAID-1 性能安全兼顾,磁盘利用率50%
- RAID-1+0:先组成RAID-1,再有RAID-1组成RAID-0 性能安全兼顾,磁盘利用率50%
- RAID-5: 等量模式与分布式奇偶校验,性能与安全份均衡,磁盘可用量等于n-1
- RAID-6: 等量模式与双分布式奇偶校验,性能与安全均衡,磁盘可用量等于n-2
ANDROID 高性能图形处理 之 二. OPENGL ES
参考链接
- ANDROID 高性能图形处理 之 二. OPENGL ES
- OpenCV官方文档
- Lowest overhead camera to CPU to GPU approach on android
- ANDROID中的EGL扩展
- GPU Computing in Android? With ARM Mali-T604 & RenderScript Compute You Can!
- Can Android renderscript run on GPU?
- Evolution of Renderscript Performance
- Use OpenCL in Android camera preview based CV application
- Rendering camera into multiple surfaces - on and off screen
- CLprocessor.cpp
- 使用Mali T760通过clCreateContext创建OpenCL和OpenGL交互的cl context失败,返回CL_INVALID_GL_SHAREGROUP_REFERENCE_KHR
- angle/src/tests/gl_tests/ImageTest.cpp
- Android使用Direct Textures提高glReadPixels、glTexImage2D性能
- Use of EGL_IMAGE_PRESERVED_KHR in eglCreateImageKHR.
- android 下使用Direct Texture
- EGLImage on Android NDK
- Using OpenGL ES to Accelerate Apps with Legacy 2D GUIs
- fuyufjh/GraphicBuffer
- MALI-400 : eglCreateImageKHR, EGL_GL_TEXTURE_2D_KHR and updating textures with the CPU
- Why is eglCreateImageKHR returning EGL_NO_IMAGE_KHR (on android)?
- How to use GraphicBuffer in android ndk
- ARM® Mali™ GPU OpenCL Developer Guide
- Pixel format support for EGLImage/GraphicBuffer?
- angle/src/tests/gl_tests/ImageTest.cpp
解决undefined reference to pthread_atfork/pthread_detach/pthread_create/pthread_join
在编译陈硕github上面的代码时,遇到了链接错误:
1 2 3 4 5 6 7 8 9 10 |
../Thread.o: In function `(anonymous namespace)::ThreadNameInitializer::ThreadNameInitializer()': Thread.cpp:(.text+0x5f): undefined reference to `pthread_atfork' ../Thread.o: In function `muduo::Thread::~Thread()': Thread.cpp:(.text+0x3f9): undefined reference to `pthread_detach' ../Thread.o: In function `muduo::Thread::start()': Thread.cpp:(.text+0x50e): undefined reference to `pthread_create' ../Thread.o: In function `muduo::Thread::join()': Thread.cpp:(.text+0x5ce): undefined reference to `pthread_join' collect2: error: ld returned 1 exit status |
在编译时已经加了-lpthread,还是有这个问题。
在这里找到了答案:http://stackoverflow.com/questions/2373109/what-library-to-be-to-be-used-to-avoid-undefined-reference-to-pthread-atfork
pthread_atfork是POSIX标准,在编译时要加上-pthread
-lpthread是老版本的gcc编译器用的,在新版本中应该用-pthread取代-lpthread
参考链接
解决undefined reference to pthread_atfork
/pthread_detach
/pthread_create
/pthread_join
搭建群晖交叉编译环境(DS718+/ubuntu 16.04.6/DSM 6.2.1-23824 Update 6)
搭建群晖交叉编译环境(DS718+/ubuntu 16.04.6/DSM 6.2.1-23824 Update 6),以 tcl 8.4.19/expect 5.45.4/dos2unix 7.4.0的编译为例,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
$ sudo apt-get -y install git $ mkdir -p toolkit $ cd toolkit $ git clone https://github.com/SynologyOpenSource/pkgscripts-ng.git # 如果访问github存在困难,可用本站下载一份代码拷贝 # wget https://www.mobibrw.com/wp-content/uploads/2019/04/pkgscripts-ng.zip $ cd pkgscripts-ng $ sudo ./EnvDeploy -v 6.2 -p x64 # 如果已经通过其他途径下载,或者已经下载完成,执行如下命令 # `sudo ./EnvDeploy -v 6.2 -p x64 -t ../toolkit_tarballs/` # 比如: # wget https://www.mobibrw.com/wp-content/uploads/2019/04/base_env-6.2.txz -O ../toolkit_tarballs/ # wget https://www.mobibrw.com/wp-content/uploads/2019/04/ds.x64-6.2.dev.txz -O ../toolkit_tarballs/ # wget https://www.mobibrw.com/wp-content/uploads/2019/04/ds.x64-6.2.env.txz -O ../toolkit_tarballs/ # sudo ./EnvDeploy -v 6.2 -p x64 -t ../toolkit_tarballs/ # 下载 TCL 8.4.19 (不要超过这个版本号,否则 expect 链接不通过) $ sudo wget https://sourceforge.net/projects/tcl/files/Tcl/8.4.19/tcl8.4.19-src.tar.gz -O ../build_env/ds.x64-6.2/root/tcl8.4.19-src.tar.gz # 也可本站下载 sudo wget https://www.mobibrw.com/wp-content/uploads/2019/04/tcl8.4.19-src.tar.gz -O ../build_env/ds.x64-6.2/root/tcl8.4.19-src.tar.gz # 下载 Expect 5.45.4 $ sudo wget https://sourceforge.net/projects/expect/files/Expect/5.45.4/expect5.45.4.tar.gz -O ../build_env/ds.x64-6.2/root/expect5.45.4.tar.gz # 也可以本站下载 sudo wget https://www.mobibrw.com/wp-content/uploads/2019/04/expect5.45.4.tar.gz -O ../build_env/ds.x64-6.2/root/expect5.45.4.tar.gz $ sudo chroot ../build_env/ds.x64-6.2/ $ cd root $ export PREFIX="/root/build_libs" $ export HOST="x86_64-linux-gnu" $ mkdir -p $PREFIX # 编译 TCL 8.4.19 $ tar xvf tcl8.4.19-src.tar.gz $ cd tcl8.4.19 $ PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ \ LD_LIBRARY_PATH=$PREFIX/lib/ \ ./unix/configure \ --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \ --host=$HOST \ --prefix=$PREFIX \ --disable-shared $ make clean $ make $ make install $ cd .. # 编译 Expect 5.45.4 $ tar xvf expect5.45.4.tar.gz $ cd expect5.45.4 $ CPPFLAGS="-I$PREFIX/include" $ PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig/ \ LD_LIBRARY_PATH=$PREFIX/lib/ \ LDFLAGS="-lutil" \ ./configure \ --build=`dpkg-architecture -qDEB_BUILD_GNU_TYPE` \ --host=$HOST \ --prefix=$PREFIX \ --enable-static \ --disable-shared $ make clean $ make $ make install $ cd .. # 下载 dos2unix 7.4 # 也可本站下载 https://www.mobibrw.com/wp-content/uploads/2019/04/dos2unix-7.4.0.tar.gz $ sudo wget https://sourceforge.net/projects/dos2unix/files/dos2unix/7.4.0/dos2unix-7.4.0.tar.gz ../build_env/ds.x64-6.2/root/dos2unix-7.4.0.tar.gz $ tar xvf dos2unix-7.4.0.tar.gz $ cd dos2unix-7.4.0 $ make # 下载 sshpass 1.06 # 也可本站下载 https://www.mobibrw.com/wp-content/uploads/2019/04/sshpass_1.06.orig_.tar.gz $ sudo wget http://deb.debian.org/debian/pool/main/s/sshpass/sshpass_1.06.orig.tar.gz ../build_env/ds.x64-6.2/root/sshpass_1.06.orig.tar.gz $ tar xvf sshpass_1.06.orig.tar.gz $ cd sshpass-1.06 $ make |
对于编译好的程序,复杂的可以自己制作安装包,简单的可以直接通过SSH推送到设备的/usr/local/bin目录下即可。
比如本次编译结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ scp -r $PREFIX/lib/tcl8.4 username@10.10.10.111:~/ $ scp $PREFIX/bin/expect username@10.10.10.111:~/ $ scp /root/dos2unix-7.4.0/dos2unix username@10.10.10.111:~/ $ scp /root/sshpass-1.06/sshpass username@10.10.10.111:~/ $ ssh 10.10.10.111 -l username $ sudo mv ~/tcl8.4 /usr/local/lib/ $ sudo mv ~/expect /usr/local/bin/ $ sudo mv ~/dos2unix /usr/local/bin/ $ sudo mv ~/sshpass /usr/local/bin/ |