← 返回首页
🔨

Linux软件编译与安装

📂 devops ⏱ 2 min 223 words

Linux软件编译与安装

为什么需要源码编译

  1. 获取最新版本
  2. 自定义编译选项
  3. 优化特定硬件
  4. 包管理器中没有的软件

编译基础

基本流程

# 1. 下载源码
wget http://example.com/software-1.0.tar.gz

# 2. 解压
tar -xzf software-1.0.tar.gz
cd software-1.0

# 3. 配置
./configure --prefix=/usr/local/software

# 4. 编译
make

# 5. 安装
sudo make install

配置选项

# 查看可用选项
./configure --help

# 指定安装目录
./configure --prefix=/usr/local

# 启用特定功能
./configure --enable-feature1 --disable-feature2

# 指定依赖路径
./configure --with-ssl=/usr/local/openssl

依赖管理

安装编译依赖

# Debian/Ubuntu
sudo apt-get install build-essential

# 安装常见依赖
sudo apt-get install \
    libssl-dev \
    libcurl4-openssl-dev \
    libpcre3-dev \
    zlib1g-dev \
    libxml2-dev

# CentOS/RHEL
sudo yum groupinstall "Development Tools"
sudo yum install openssl-devel pcre-devel zlib-devel

CMake构建

# 使用CMake的项目
mkdir build
cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
make
sudo make install

实践:从源码安装Nginx

#!/bin/bash

# 1. 安装依赖
sudo apt-get update
sudo apt-get install -y build-essential libpcre3 libpcre3-dev \
    zlib1g zlib1g-dev libssl-dev libgd-dev

# 2. 下载源码
cd /usr/local/src
wget http://nginx.org/download/nginx-1.24.0.tar.gz
tar -xzf nginx-1.24.0.tar.gz
cd nginx-1.24.0

# 3. 配置
./configure \
    --prefix=/etc/nginx \
    --sbin-path=/usr/sbin/nginx \
    --modules-path=/usr/lib64/nginx/modules \
    --conf-path=/etc/nginx/nginx.conf \
    --error-log-path=/var/log/nginx/error.log \
    --http-log-path=/var/log/nginx/access.log \
    --pid-path=/var/run/nginx.pid \
    --lock-path=/var/run/nginx.lock \
    --with-http_ssl_module \
    --with-http_v2_module \
    --with-http_gzip_static_module

# 4. 编译
make -j$(nproc)

# 5. 安装
sudo make install

# 6. 创建systemd服务
sudo cat > /etc/systemd/system/nginx.service << 'EOF'
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable nginx
sudo systemctl start nginx

卸载源码安装的软件

# 如果安装时记录了文件列表
cat install_manifest.txt | xargs rm -f

# 手动删除
sudo rm -rf /usr/local/software

总结

源码编译是Linux软件安装的重要方式。掌握编译流程和依赖管理,能够安装各种定制化的软件。