2020年1月1日 星期三

installing boost 166

issue:

 # cmake .. -DENABLE_MYSQL=OFF -DENABLE_SSL_KEYLOG=ON -DFORCE_TCP_FASTOPEN=ON -DSYSTEMD_SERVICE=AUTO
CMake Error at /usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:146 (message):
  Could NOT find Boost: Found unsuitable version "1.65.1", but required is at
  least "1.66.0" (found /usr/include)
Call Stack (most recent call first):
  /usr/share/cmake-3.16/Modules/FindPackageHandleStandardArgs.cmake:391 (_FPHSA_FAILURE_MESSAGE)
  /usr/share/cmake-3.16/Modules/FindBoost.cmake:2179 (find_package_handle_standard_args)
  CMakeLists.txt:39 (find_package)


-- Configuring incomplete, errors occurred!
See also "/root/trojan/build/CMakeFiles/CMakeOutput.log".
See also "/root/trojan/build/CMakeFiles/CMakeError.log".

CMake Error 是一個非常典型的庫版本不匹配問題。錯誤訊息清楚地表明,您的系統上安裝的 Boost 庫版本是 1.65.1,但您正在嘗試編譯的項目(看起來是 Trojan)要求至少 1.66.0

您提供的解決方案是正確且詳盡的:手動下載、編譯並安裝所需版本的 Boost 庫。

我將幫您將這些步驟整理成一份更清晰、更易於遵循的指南,並補充一些常見的注意事項和命令解釋。


解決 CMake 錯誤:Boost 版本不匹配問題

當您在編譯項目時遇到 CMake Error: Could NOT find Boost: Found unsuitable version "1.65.1", but required is at least "1.66.0" 這樣的錯誤,這表示您的系統上安裝的 Boost 庫版本不符合項目要求。解決方法是手動安裝符合要求的 Boost 版本。

以下是詳細的步驟:

步驟 1:下載所需版本的 Boost 庫

  1. 訪問 Boost 官方網站: 前往 Boost 官方下載頁面:https://www.boost.org/users/download/

  2. 選擇版本: 查找並下載符合項目要求或更高版本的 Boost。例如,如果項目要求 1.66.0,您可以下載 1.66.0 或任何更新的版本(例如 1.70.01.75.0 等)。通常,選擇最新的穩定版本是個不錯的選擇,除非項目明確指定了特定版本。

    • 您會看到類似 boost_1_xx_0.tar.gzboost_1_xx_0.zip 的壓縮包。推薦下載 .tar.gz 格式。
  3. 下載到您的伺服器: 您可以使用 wget 命令直接在伺服器上下載:

    Bash
    # 示例:下載 Boost 1.76.0 (請替換為您下載的實際版本號)
    wget https://boostorg.jfrog.io/artifactory/main/release/1.76.0/source/boost_1_76_0.tar.gz
    

    (請將 URL 替換為您實際下載的版本鏈接)

步驟 2:解壓縮 Boost 庫

  1. 創建一個臨時目錄 (可選,但推薦):

    Bash
    mkdir ~/boost_install
    mv boost_1_xx_0.tar.gz ~/boost_install/
    cd ~/boost_install/
    

    (將 boost_1_xx_0.tar.gz 替換為您下載的實際文件名)

  2. 解壓縮文件:

    Bash
    tar -zxvf boost_1_xx_0.tar.gz
    

    這會創建一個名為 boost_1_xx_0 的目錄。

  3. 進入解壓縮後的目錄:

    Bash
    cd boost_1_xx_0
    

步驟 3:編譯和安裝 Boost 庫

Boost 的編譯過程分為兩步:bootstrapb2 install

  1. 運行 bootstrap.sh 這個腳本會生成 b2 (或 bjam) 可執行文件,它是 Boost 的構建系統。

    Bash
    ./bootstrap.sh
    
    • 提示: 您可以運行 ./bootstrap.sh --help 查看更多選項,例如指定編譯器、安裝路徑等。但對於大多數情況,直接運行即可。
  2. 運行 b2 install 這將編譯 Boost 庫並將其安裝到系統的默認位置。

    Bash
    sudo ./b2 install
    
    • 注意: 這個過程會耗費一些時間,具體取決於您的系統性能。
    • 默認安裝路徑:
      • 頭文件 (headers):/usr/local/include/boost
      • 編譯後的庫文件 (libraries):/usr/local/lib

步驟 4:重新運行 CMake 配置

在 Boost 庫安裝完成後,返回到您項目 (例如 Trojan) 的 build 目錄,然後重新運行 CMake 配置命令。

  1. 返回項目 build 目錄:

    Bash
    cd /root/trojan/build
    

    (請替換為您實際的項目 build 目錄路徑)

  2. 重新運行 CMake:

    Bash
    cmake .. -DENABLE_MYSQL=OFF -DENABLE_SSL_KEYLOG=ON -DFORCE_TCP_FASTOPEN=ON -DSYSTEMD_SERVICE=AUTO
    

    現在,CMake 應該能夠找到並使用您剛剛安裝的符合版本要求的 Boost 庫,並且配置過程應該會成功完成。

故障排除 (如果 CMake 仍然找不到 Boost):

如果重新運行 CMake 後仍然遇到 Boost 找不到的問題,可能是因為 CMake 仍然優先使用了舊版本的 Boost 或沒有正確識別新安裝的路徑。您可以嘗試以下方法:

  1. 清除 CMake 緩存:build 目錄中,刪除 CMakeCache.txt 文件和 CMakeFiles 目錄,然後重新運行 CMake。

    Bash
    rm CMakeCache.txt
    rm -rf CMakeFiles/
    cmake .. -DENABLE_MYSQL=OFF -DENABLE_SSL_KEYLOG=ON -DFORCE_TCP_FASTOPEN=ON -DSYSTEMD_SERVICE=AUTO
    
  2. 手動指定 Boost 路徑 (如果需要): 如果 CMake 仍然無法找到,您可以手動指定 Boost 的根目錄和庫目錄給 CMake。

    Bash
    cmake .. \
      -DBOOST_ROOT=/usr/local \
      -DBOOST_INCLUDEDIR=/usr/local/include \
      -DBOOST_LIBRARYDIR=/usr/local/lib \
      -DENABLE_MYSQL=OFF \
      -DENABLE_SSL_KEYLOG=ON \
      -DFORCE_TCP_FASTOPEN=ON \
      -DSYSTEMD_SERVICE=AUTO
    
    • BOOST_ROOT 指向 Boost 的安裝根目錄,通常是 /usr/local
    • BOOST_INCLUDEDIR 指向 Boost 頭文件所在的目錄,通常是 /usr/local/include
    • BOOST_LIBRARYDIR 指向 Boost 庫文件所在的目錄,通常是 /usr/local/lib

通過這些詳細步驟,您應該能夠成功解決 Boost 版本不匹配的問題,並繼續編譯您的項目。

2019年5月13日 星期一

Fedora iptable firewalld selinux

Fedora Server 30 防火牆配置詳解

您在 Fedora Server 30 上遇到的遠程連接問題是許多初次接觸 firewalld 的用戶會遇到的典型障礙。以下是您解決問題的邏輯以及一些相關的說明:

1. 理解 firewalldiptables

  • firewalld (Firewall Daemon): 這是 Fedora 等 RHEL 系發行版推薦和預設的動態防火牆管理工具。它通過區域(zones)來管理網絡連接,並可以動態地添加或刪除規則,而無需重載整個防火牆。它的底層確實使用 iptablesnftables
  • iptables (IP Tables): 這是 Linux 核心自帶的網絡包過濾工具。它通過一系列的「規則鏈」來控制數據包的流向。iptables-services 是一個包,提供了管理這些規則的服務。

您遇到的問題: 默認情況下,firewalld 會啟用一些基本規則,阻止外部對大部分端口的訪問,這導致像 httpdplexmediaserver 這些服務無法從外部訪問。即使服務本身啟動了,防火牆也會攔截流量。

2. 您的解決步驟分析

您的操作思路是:禁用複雜的 firewalld,回歸到更直接、可控的傳統 iptables,並將其清空以解除所有限制。

  1. systemctl stop firewalld: 這是關鍵的第一步,它會立即停止 firewalld 服務,並移除其當前的防火牆規則。
  2. dnf install iptables-services: 安裝傳統的 iptables 服務。這個包包含了 iptables 命令工具和用於保存/載入規則的服務腳本。
  3. 重啟系統: 這一點很重要。重啟系統後,firewalld 不會再次啟動,而 iptables-services 則會接管防火牆管理。通常情況下,新安裝的 iptables-services 默認會從一個空的規則集開始。
  4. systemctl restart iptables: 確保 iptables 服務啟動並載入任何已配置的規則(此時通常是空的)。
  5. systemctl stop iptables: 這一步有點特別。它會停止 iptables 服務,但不會清除當前生效的 iptables 規則。換句話說,此時內核中的 iptables 規則仍然是您停止服務前所設定的狀態。
  6. iptables -L -n: 顯示當前內核中實際生效的 iptables 規則。您的輸出顯示所有鏈的策略都是 ACCEPT,且沒有任何自定義規則。這意味著所有流量都被允許通過

3. 您的結論與注意事項

您的結論:「這樣,就可以放心使用firewalld」

這句話可能存在筆誤,因為您實際上是禁用了 firewalld 並使用了 iptables。在您完成這些步驟後,您的系統防火牆已經處於 完全開放 的狀態,任何端口的流量都可以進入或離開。

重要注意事項:

  • 安全性風險: 您的當前配置 (Chain INPUT (policy ACCEPT)) 意味著您的伺服器對外部是完全開放的,沒有任何防火牆保護。這對於生產環境來說是非常危險的,因為它暴露了所有服務,可能成為攻擊的目標。
  • 推薦做法:
    • 如果傾向於使用 firewalld 建議重新啟用 firewalld (systemctl start firewalld && systemctl enable firewalld),然後學習如何使用 firewall-cmd 命令來開啟您需要的特定端口和服務。例如:
      Bash
      sudo firewall-cmd --permanent --add-service=http # 允許 HTTP (80 端口)
      sudo firewall-cmd --permanent --add-port=32400/tcp # 允許 Plex (默認 32400 端口)
      sudo firewall-cmd --reload # 重新載入規則
      
    • 如果堅持使用 iptables 您應該學習如何添加必要的 iptables 規則來只開放您需要的端口,並拒絕其他所有流量。這比 firewalld 更複雜,需要手動管理規則文件。 例如,要允許 SSH 和 HTTP 流量:
      Bash
      # 允許已建立的連接
      iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
      # 允許 SSH (22 端口)
      iptables -A INPUT -p tcp --dport 22 -j ACCEPT
      # 允許 HTTP (80 端口)
      iptables -A INPUT -p tcp --dport 80 -j ACCEPT
      # 允許 HTTPS (443 端口)
      iptables -A INPUT -p tcp --dport 443 -j ACCEPT
      # 允許 Plex (例如 32400 端口)
      iptables -A INPUT -p tcp --dport 32400 -j ACCEPT
      # 拒絕其他所有進入的流量 (非常重要!)
      iptables -P INPUT DROP
      # 保存規則
      iptables-save > /etc/sysconfig/iptables
      # 啟用 iptables 服務以在重啟時載入這些規則
      systemctl enable iptables
      systemctl start iptables
      
      請注意,上述 iptables 規則是示例,您需要根據實際需求進行調整。

2019年4月16日 星期二

RK双模鼠标产品功能操作

1、鼠标底部电源开关从off打开到BT处,进入蓝牙模式
2、长按滚轮键+左键5秒后,滚轮处绿色蓝牙指示灯闪烁松手
3、打开电源蓝牙,添加搜索设备
4、点击配对

2019年1月19日 星期六

upgrade Aria2c to 1.34 on debian


aria2c.upgrade

Debian 9.0 官方aria2c 版本仅为1.30,无法升级最新版1.34,无奈只能手动编译最新版本,以此记录:

apt-get update
apt-get install libgnutls28-dev nettle-dev libgmp-dev libssh2-1-dev libc-ares-dev libxml2-dev zlib1g-dev libsqlite3-dev pkg-config libcppunit-dev autoconf automake autotools-dev autopoint libtool git gcc g++ libxml2-dev make quilt

git clone https://github.com/aria2/aria2.git

autoreconf -i ./configure make

找到编译后的aria2c, 位于/aria2/src/aria2c
find / -name aria2c
显示如下
/aria2/src/aria2c
/usr/bin/aria2c


拷贝覆盖位于 /usr/bin/aria2c 即可

通过客户端重新启动,已经显示为最新版1.34


2019年1月5日 星期六

Synology实现视频缩略图/转码终极方法


注意:在做改动前必须备份好原文件,这只是一个好习惯而已。

安装好ffmpeg后你只需要把 /volume1/@appstore/ffmpeg/bin/ffmpeg 这个文件覆盖其它用到转码的地方即可。

第一个是视频转码:
cp /volume1/@appstore/ffmpeg/bin/ffmpeg  /volume1/@appstore/VideoStation/bin/

第二个是拍照视频缩略图:
复制代码
cp /volume1/@appstore/ffmpeg/bin/ffmpeg /usr/bin
复制代码

2019年1月1日 星期二

htpdate or ntp 同步时间区别

        服务器的系统时间同步是非常重要的一个事情,许多服务要求时间误差很严格,我们常用V2ray要求客户端与服务器的时间不匹配,误差不能超过90秒钟,我在安装了CC的VPS后,发现系统时间与本地时间差了4分钟,即使重新安装了ntp,反复同步同时区的各地时间服务器,仍然无法解决,直到54it 网友告诉我,原来是Vps提供商屏蔽了ntp的端口123,导致无法正常同步时间。
       网友的力量无穷尽,iridium77 给我们提供http途径来同步时间,这是任何VPS都无法屏蔽的,哈哈😄
       Installation from source: Tested on Linux and FreeBSD only, but should work for most Unix flavors.
 $ tar zxvf htpdate-x.y.z.tar.gz
  or
 $ tar jxvf htpdate-x.y.z.tar.bz2
 $ cd htpdate-X.Y.Z
 $ make
 $ make install

     An example init script (scripts/htpdate.init) for use in /etc/init.d/  is included, but not installed automatically. This scripts with run  htpdate as a daemon.

     Another option is to use htpdate in a cronjob and start it periodically from cron. For a daily time sync it would look something like this:
     5 3 * * * /usr/bin/htpdate -s www.linux.org www.freebsd.org

     Installation from RPM: The easiest way to install (Redhat, SuSE, Mandriva etc..)
     $ wget https://rpmfind.net/linux/dag/redhat/el7/en/x86_64/dag/RPMS/htpdate-1.1.0-1.el7.rf.x86_64.rpm
              or
     $ wget https://rpmfind.net/linux/dag/redhat/el6/en/i386/dag/RPMS/htpdate-1.1.0-1.el6.rf.i686.rpm                          
$ rpm -Uvh htpdate-x.y.z.i386.rpm
 
        注意:rmp 的版本   

     Installation from deb: The easiest way to install (Debian,Ubuntu etc..)
        $ apt install htpdate

    htpdate 的配置文件:nano /etc/default/htpdate
        HTP_SERVERS="www.pool.ntp.org www.ntp.br www.wikipedia.org"
        如果在大陆,最好改为 cn.pool.ntp.org
    HTP_OPTIONS="-D -s"

2018年12月29日 星期六

Transmission-daemon error:permission denied

使用外接硬盘或者U盘,作为下载目录的,碰到Permission denied 的时候,需要改下transmission的启动脚本

nano /etc/init.d/transmission-daemon
USER=debian-transmission  改为
USER=root

大乐透号码选取器

大乐透号码选取器 (带历史记录) 大乐透号码选取器 前区号码 (5个,01-35) ...