archlinux工具链

archlinux工具链

密码工具

pacman -Syy keepassxc

自定义PATH路径

$ vim ~/.bashrc
#在末尾追加
#add custom PATH
PATH=~/bin:$PATH

debtap安装deb包

参考: http://blog.lujun9972.win/blog/2020/02/13/%E5%9C%A8archlinux%E4%B8%8A%E5%AE%89%E8%A3%85deb%E5%8C%85/index.html

#通过 AUR 安装 debtap
yay -Sy debtap

# 更新debtap数据库
sudo debtap -u

# 使用debtap转换deb包
debtap xxx.deb

# 安装
sudo pacman -U xxx.pkg

idea相关

markdown 预览需要用到jcef ,

yay -Syy jcef-jetbrains-git

markdown预览用到 openjfx,

方法一: yay -Syy java-openjfx (需要与jdk匹配)

方法二: shift连按两次(全局搜索), Choose boot runtime for ide , 切换选中 jetbrains 提供的 jre。

远程

向日葵

yay -Syy sunloginremote

todesk

yay -Syy todesk-bin

remmina

参考: https://wiki.archlinux.org/title/Remmina

yay -Syy remmina
# sudo pacman -Syy libvncserver
# yay -Sy remmina-plugin-ultravnc

tigervnc /vncviewer

参考: https://wiki.archlinux.org/title/TigerVNC#Connecting_to_vncserver

yay -Sy tigervnc

vncviewer 192.168.1.7:3

也可以安装remmina及其 相关插件

Screen capture

参考: https://wiki.archlinux.org/title/Screen_capture

screeen shot

If you use KDE, you might want to use Spectacle.

sudo pacman -Sy spectacle

rocketmq

依赖netty-》依赖netty-tcnative (tomcat-tcnative的fork)。显然这是一个native 库,

启动时候报 netty_tcnative 库找不到。

Exception in thread "main" java.lang.UnsatisfiedLinkError: failed to load the required native library
        at io.netty.handler.ssl.OpenSsl.ensureAvailability(OpenSsl.java:487)
        at io.netty.handler.ssl.ReferenceCountedOpenSslContext.<init>(ReferenceCountedOpenSslContext.java:208)
        at io.netty.handler.ssl.OpenSslContext.<init>(OpenSslContext.java:45)
        at io.netty.handler.ssl.OpenSslServerContext.<init>(OpenSslServerContext.java:349)
        at io.netty.handler.ssl.OpenSslServerContext.<init>(OpenSslServerContext.java:336)
        at io.netty.handler.ssl.SslContext.newServerContextInternal(SslContext.java:473)
        at io.netty.handler.ssl.SslContextBuilder.build(SslContextBuilder.java:606)
        at org.apache.rocketmq.proxy.remoting.MultiProtocolTlsHelper.buildSslContext(MultiProtocolTlsHelper.java:97)
        at org.apache.rocketmq.proxy.remoting.MultiProtocolRemotingServer.loadSslContext(MultiProtocolRemotingServer.java:70)
        at org.apache.rocketmq.remoting.netty.NettyRemotingServer.<init>(NettyRemotingServer.java:146)
        at org.apache.rocketmq.proxy.remoting.MultiProtocolRemotingServer.<init>(MultiProtocolRemotingServer.java:52)
        at org.apache.rocketmq.proxy.remoting.RemotingProtocolServer.<init>(RemotingProtocolServer.java:116)
        at org.apache.rocketmq.proxy.ProxyStartup.main(ProxyStartup.java:92)
Caused by: java.lang.IllegalArgumentException: Failed to load any of the given libraries: [netty_tcnative_linux_x86_64_arch, netty_tcnative_linux_x86_64, netty_tcnative_linux_x86_64_fedora, netty_tcnative_x86_64, netty_tcnative]
        at io.netty.util.internal.NativeLibraryLoader.loadFirstAvailable(NativeLibraryLoader.java:104)
        at io.netty.handler.ssl.OpenSsl.loadTcNative(OpenSsl.java:596)
        at io.netty.handler.ssl.OpenSsl.<clinit>(OpenSsl.java:136)
        at org.apache.rocketmq.remoting.netty.TlsHelper.buildSslContext(TlsHelper.java:97)
        at org.apache.rocketmq.remoting.netty.NettyRemotingServer.loadSslContext(NettyRemotingServer.java:186)
        at org.apache.rocketmq.remoting.netty.NettyRemotingServer.<init>(NettyRemotingServer.java:146)
        at org.apache.rocketmq.broker.BrokerController.initializeRemotingServer(BrokerController.java:444)
        at org.apache.rocketmq.broker.BrokerController.recoverAndInitService(BrokerController.java:834)
        at org.apache.rocketmq.broker.BrokerController.initialize(BrokerController.java:800)
        at org.apache.rocketmq.broker.BrokerStartup.createBrokerController(BrokerStartup.java:240)
        at org.apache.rocketmq.proxy.ProxyStartup.createBrokerController(ProxyStartup.java:230)
        at org.apache.rocketmq.proxy.ProxyStartup.createMessagingProcessor(ProxyStartup.java:188)
        at org.apache.rocketmq.proxy.ProxyStartup.main(ProxyStartup.java:79)
        Suppressed: java.lang.UnsatisfiedLinkError: could not load a native library: netty_tcnative_linux_x86_64_arch
                ...
        Caused by: java.io.FileNotFoundException: META-INF/native/libnetty_tcnative_linux_x86_64_arch.so
                ...
                Suppressed: java.lang.UnsatisfiedLinkError: no netty_tcnative_linux_x86_64_arch in java.library.path: /usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
                        ...
                        Suppressed: java.lang.UnsatisfiedLinkError: no netty_tcnative_linux_x86_64_arch in java.library.path: /usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
                                ...
        Suppressed: java.lang.UnsatisfiedLinkError: /tmp/libnetty_tcnative_linux_x86_649148935465196562654.so: libcrypt.so.1: cannot open shared object file: No such file or directory
                at ...
                Suppressed: java.lang.UnsatisfiedLinkError: /tmp/libnetty_tcnative_linux_x86_649148935465196562654.so: libcrypt.so.1: cannot open shared object file: No such file or directory
                        at ...
                Suppressed: java.lang.UnsatisfiedLinkError: no netty_tcnative_linux_x86_64 in java.library.path: /usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
                        ...
                        Suppressed: java.lang.UnsatisfiedLinkError: no netty_tcnative_linux_x86_64 in java.library.path: /usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
                                ...
        Suppressed: java.lang.UnsatisfiedLinkError: could not load a native library: netty_tcnative_linux_x86_64_fedora
                ...
        Caused by: java.io.FileNotFoundException: META-INF/native/libnetty_tcnative_linux_x86_64_fedora.so
                ...
                Suppressed: java.lang.UnsatisfiedLinkError: no netty_tcnative_linux_x86_64_fedora in java.library.path: /usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
                        at ...
                        Suppressed: java.lang.UnsatisfiedLinkError: no netty_tcnative_linux_x86_64_fedora in java.library.path: /usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
                                at ...
        Suppressed: java.lang.UnsatisfiedLinkError: could not load a native library: netty_tcnative_x86_64
                at ...
        Caused by: java.io.FileNotFoundException: META-INF/native/libnetty_tcnative_x86_64.so
                at io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:170)
                ... 13 more
                Suppressed: java.lang.UnsatisfiedLinkError: no netty_tcnative_x86_64 in java.library.path: /usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
                        at ...
                        Suppressed: java.lang.UnsatisfiedLinkError: no netty_tcnative_x86_64 in java.library.path: /usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
                                at ...
        Suppressed: java.lang.UnsatisfiedLinkError: could not load a native library: netty_tcnative
                at ...
        Caused by: java.io.FileNotFoundException: META-INF/native/libnetty_tcnative.so
                at ...
                Suppressed: java.lang.UnsatisfiedLinkError: no netty_tcnative in java.library.path: /usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
                        at ...
                        Suppressed: java.lang.UnsatisfiedLinkError: no netty_tcnative in java.library.path: /usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib
                                at ...

根据其官方wiki的说明(https://netty.io/wiki/forked-tomcat-native.html), java项目中应该是用到了如下依赖之一:

netty-tcnative is a multi-module project and builds a few artifacts, allowing it to be used in a variety of environments.

ArtifactId Description On Maven Central
netty-tcnative-{os_arch} This is the “default” artifact which is dynamically linked to both libapr-1 and OpenSSL. To use this artifact, your system must have both libapr-1 and OpenSSL installed and configured. This artifact is useful for production environments where the site administrator is free to upgrade OpenSSL without having to rebuild the application. This version isn’t supported on Windows, unless you make and install your own APR and OpenSSL builds. yes
netty-tcnative-boringssl-static-{os_arch} This artifact is statically linked against Google’s boringssl, which is a fork of OpenSSL that has a reduced code footprint and additional features (such as ALPN) which at the time of this writing have not made an appearance in a stable release of linux. The static linking makes it easier to get started using tcnative on a system without having to worry about additional install steps. This library does not require APR. yes
netty-tcnative-boringssl-static This is an uber jar that contains the statically linked libraries for all supported netty-tcnative-boringssl-static-{os_arch}. While this tends to be a fairly large jar, it greatly simplifies the getting started experience since an application need not be concerned with obtaining the correct jar for the platform. yes
netty-tcnative-openssl-static-{os_arch} This artifact is statically linked against both libapr-1 and OpenSSL, making it easier to get started using tcnative on a system without having to worry about additional install steps. no
netty-tcnative-libressl-static-{os_arch} Coming soon. no

在rocketmq源码中全局搜索一下, 在pom中看到了netty-tcnative和netty-tcnative-boringssl-static的依赖。

上面从netty-native的wiki摘出来的说明, 说到了netty-tcnative主要是动态链接到本地 的 libapr 和 openssl,或者google的boringssl.

rocketmq官方文档的release manual的version verifecation章节也说到Check the operating system for the build dependencies, netty-tcnative is sensitive to the operating system

那么要做的事情就稍稍比较明确了, 操作系统需要安装 apr, openssl相关的库。

参考: https://github.com/netty/netty-tcnative?tab=readme-ov-file

参考: https://netty.io/wiki/forked-tomcat-native.html#prerequisites-for-dynamically-linked-netty-tcnative

参考: https://netty.io/wiki/forked-tomcat-native.html#prerequisites-for-dynamically-linked-netty-tcnative

参考: https://bbs.archlinux.org/viewtopic.php?id=274160

参考: https://www.cnblogs.com/whatlonelytear/articles/9408703.html

我的电脑是archlinux, 安装相关依赖

sudo pacman -Sy apr
sudo pacman -Sy openssl
sudo pacman -Sy libxcrypt-compat

重启broker,正常启动

mysql

docker装的mysql8, 具体忘记了。 root Nov2014

nacos

具体可参考nacos-docker文档

mkdir -p ~/Git/nacos-group
cd ~/Git/nacos-group
git clone git@github.com:nacos-group/nacos-docker.git

调整docker-compose文件:

修改mysql向外暴漏的端口为3307, 注释掉了自动重启。

$ cat ~/Git/nacos-group/nacos-docker/example/standalone-mysql-5.7.yaml 
version: "3.8"
services:
  nacos:
    image: nacos/nacos-server:${NACOS_VERSION}
    container_name: nacos-standalone-mysql
    env_file:
      - ../env/custom-application-config.env
    volumes:
      - ./standalone-logs/:/home/nacos/logs
      - ./init.d/application.properties:/home/nacos/conf/application.properties
    ports:
      - "8848:8848"
      - "9848:9848"
    depends_on:
      mysql:
        condition: service_healthy

    #restart: on-failure
  mysql:
    container_name: mysql
    build:
      context: .
      dockerfile: ./image/mysql/5.7/Dockerfile
    image: example/mysql:5.7
    env_file:
      - ../env/mysql.env
    volumes:
      - ./mysql:/var/lib/mysql
    ports:
      - "3307:3306"
    healthcheck:
      test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
      interval: 5s
      timeout: 10s
      retries: 10

调整环境变量文件

$ cat ~/Git/nacos-group/nacos-docker/env/custom-application-config.env 
PREFER_HOST_MODE=hostname
MODE=standalone
SPRING_DATASOURCE_PLATFORM=mysql
NACOS_AUTH_IDENTITY_KEY=2222
NACOS_AUTH_IDENTITY_VALUE=2xxx
NACOS_AUTH_TOKEN=SecretKey012345678901234567890123456789012345678901234567890123456789
MYSQL_SERVICE_PORT=3307


$ cat ~/Git/nacos-group/nacos-docker/env/mysql.env 
MYSQL_ROOT_PASSWORD=root
MYSQL_DATABASE=nacos_devtest
MYSQL_USER=nacos
MYSQL_PASSWORD=nacos
LANG=C.UTF-8

启动

docker compose -f ~/Git/nacos-group/nacos-docker/example/standalone-mysql-5.7.yaml up

关闭

docker compose -f ~/Git/nacos-group/nacos-docker/example/standalone-mysql-5.7.yaml down

如果直接在控制台的话, ctrl+c也行。

写成短命令(快捷停启)

$ vim ~/bin/start_nacos.sh
#!/bin/bash
docker compose -f ~/Git/nacos-group/nacos-docker/example/standalone-mysql-5.7.yaml up

$ vim ~/bin/stop_nacos.sh
#!/bin/bash
docker compose -f ~/Git/nacos-group/nacos-docker/example/standalone-mysql-5.7.yaml down

$ chmod u+x ~/bin/start_nacos.sh ~/bin/stop_nacos.sh

sentinel

具体参考文档

下载最新jar

https://github.com/alibaba/Sentinel/releases

写个启动脚本

$ vim ~/standalone/sentinel/startup.sh
#!/bin/bash
BASE_DIR=$(dirname $0)
java -Dserver.port=8082 -Dcsp.sentinel.dashboard.server=localhost:8082 -Dproject.name=sentinel-dashboard -jar $BASE_DIR/sentinel-dashboard-1.8.7.jar

$ chmod u+x ~/standalone/sentinel/startup.sh

写成短命令(快捷启动)

$ vim ~/bin/start_sentinel.sh
#!/bin/bash
~/standalone/sentinel/startup.sh

seata

参考官方文档这里: https://seata.apache.org/zh-cn/docs/ops/deploy-guide-beginner/

seata服务端


评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注