# 安装与卸载 ## Centos - centos7:rpm、yum、源码包 - centos8:rpm、dnf、yum、源码包 ### rpm #### 语法 ``` rpm -选项 包全名 ``` > 注意:需要先把`.rpm`后缀的包下载到服务器,然后指定文件全名,如果文件不在当前路径,需要指定路径,如`rpm -ivh /home/package.rpm`。 #### 选项 - `-i`:安装软件包 - `-v`:显示详细信息 - `-h`:显示安装进度 - `-U`:升级软件包 - `-e`:卸载软件包 - `-q`:查询软件包 - `-a`:查询所有安装的软件包 - `--nodeps`:忽略依赖关系 #### 常用示例 ``` $ rpm -ivh # 安装 $ rpm -Uvh # 升级 $ rpm -e # 卸载 $ rpm -qa # 查询所有安装的软件包 $ rpm -qa | grep nginx # 指定查询包含nginx的软件包 $ rpm -qi nginx # 查询nginx软件包信息 $ rpm -ql # 查询软件包安装路径 ``` #### 默认安装路径 rpm包默认安装路径是可以通过命令`rpm -ql `查询的,一般安装在如下表: | 安装路径 | 含义 | | :------ | :--- | | /etc/ | 配置文件安装目录 | | /usr/bin/ | 可执行的命令安装目录 | | /usr/lib/ | 程序运行所需的库文件安装目录 | | /usr/share/doc/ | 基本的软件使用手册保存位置 | | /usr/share/man/ | 帮助文档保存位置 | | /var/log/ | 日志文件保存位置 | > rpm包可以手动指定安装路径,如`rpm -ivh --prefix=/usr/local/nginx `,所有的安装文件就会安装到指定位置,而系统的默认搜索位置不会改变,这样就失去了作为系统默认安装路径的一些好处。所以一般不会手动指定rpm包的安装路径。 ### yum 基于rpm的软件包管理器,用于在Linux系统上安装软件。 #### 语法 ``` yum 命令 [-选项] [包名] ``` #### 命令 - `install`:安装软件包 - `update`:更新软件包 - `check-update`:检查可更新的软件包 - `remove`:删除软件包 - `list`:列出已安装的软件包 - `info`:显示软件包信息 - `search`:查找软件包 - `clean`:清理缓存 - `provides`:根据文件,查找软件包 - `download`:下载软件的rpm包 - `shell`:进入yum的shell模式 - `groups`:查看yum软件组 - `grouplist`:显示yum软件组列表 - `groupinstall`:安装yum软件组 - `groupupdate`:更新yum软件组 - `groupremove`:删除yum软件组 #### 选项 - `-y`:自动回答yes - `-q`:静默模式,不显示进度 - `-v`:详细模式,显示详细信息 - `-d`:调试模式,显示调试信息 - `-e`:错误模式,显示错误信息 #### 示例 ``` $ yum install nginx # 安装nginx $ yum update nginx # 更新nginx $ yum check-update # 检查可更新的软件包 $ yum remove nginx # 删除nginx $ yum list # 列出已安装的软件包 $ yum info nginx # 显示软件包信息 $ yum search nginx # 查找软件包 $ yum $ yum clean # 清理缓存 $ yum groupinstall "Development Tools" # 安装开发工具组 $ yum provides 'file' # 根据文件,查找软件包 # centos8下载nginx.rpm包 $ yum download nginx # 也可以用dnf # centos7下载nginx.rpm包 $ yum install -y yum-utils $ yumdownloader nginx ``` ### dnf `dnf`更高效,与`yum`用法基本一样 #### 示例 ``` $ dnf install nginx # 安装nginx $ dnf update nginx # 更新nginx $ dnf check-update # 检查可更新的软件包 $ dnf remove nginx # 删除nginx $ dnf list # 列出已安装的软件包 $ dnf info nginx # 显示软件包信息 $ dnf search nginx # 查找软件包 $ dnf clean # 清理缓存 $ dnf grouplist # 显示yum软件组列表 $ dnf groupinstall "Development Tools" # 安装开发工具组 ``` ## Ubuntu - dpkg、apt、源码包 ### dpkg #### 语法 ``` dpkg -选项 [包名] ``` #### 选项 - `-i`:安装软件包; - `-r`:删除软件包; - `-P`:删除软件包及其配置文件; - `-l`:显示已安装软件包列表; - `-L`: 显示软件包所安装的路径; - `-s`:查询已安装软件包的信息; - `-S`:根据文件来查询属于哪个软件包; - `-c`:显示软件包的配置文件; #### 示例 ``` $ dpkg -i nginx_1.16.1-1~buster_amd64.deb # 安装 $ dpkg -r nginx # 删除包,保留配置文件 $ dpkg -P nginx # 删除包及其配置文件 $ dpkg -l # 显示已安装的所有包 $ dpkg -l | grep nginx # 显示已安装的nginx包 $ dpkg -L nginx # 显示nginx包所安装的路径 $ dpkg -s nginx # 查询已安装的包信息 $ dpkg -s nginx | grep '^Status:' # 查询已安装的包状态 $ dpkg -S /etc/nginx # 查询文件属于哪个包 ``` ### apt `apt`是Debian Linux新的软件包管理工具,2014年发布第一个稳定版。 `apt-get`是旧的软件包管理工具,当前最新的稳定版是1.0.9.2,在2014年10月发布。 目前两个命令都可以用,甚至有些比较老得命令需要用到`apt-get`,但是常规还是用到`apt`。 #### 语法 ``` apt command [-选项] [package] ``` #### 命令 - `instasll`:安装软件包; - `remove`:删除软件包; - `update`:更新软件包; - `upgrade`:升级软件包; - `dist-upgrade`:升级软件包,同时升级软件包和系统内核; - `build-dep`:安装相关的编译环境; - `source`:安装源码包; - `clean`:删除下载的压缩包和缓存; - `list`:列出已安装的软件包; #### 选项 - `-y`:自动回答为"yes"; - `-d`:仅下载软件包而不安装; - `-f`:修复损坏的依赖关系; - `-m`:只安装安全升级; - `-q`:禁止显示非错误性输出; - `-s`:仅进行同步操作,不更新软件包列表; - `-u`:更新软件包列表; - `-V`:显示软件包详细信息; - `-v`:显示详细信息; - `-h`:显示帮助信息; #### 示例 ``` $ apt install nginx # 安装nginx $ apt remove nginx # 删除nginx $ apt autoremove nginx # 删除nginx及其依赖 $ apt update # 更新软件包列表 $ apt upgrade # 升级软件包 $ apt dist-upgrade # 升级软件包和系统内核 $ apt build-dep nginx # 安装相关的编译环境 $ apt source nginx # 安装源码包 $ apt clean # 删除下载的压缩包和缓存 $ apt list # 列出已安装的软件包 $ apt search nginx # 搜索软件包 $ apt download nginx # 下载软件包 $ apt show nginx=1.10.3 # 显示指定软件包的详细信息 $ apt -f install # 修复损坏的依赖关系 ``` ## 源码包安装 ### 安装步骤 1. 下载nginx源码包,并解压缩: nginx官网:nginx.org/en/download.html ``` $ tar xvf nginx-1.20.1.tar.gz # 解压包 $ mkdir /usr/local/nginx # 创建安装目录 $ cd nginx-1.20.1 # 进入解压目录 ``` 2. 预编译 ``` $ ./configure --prefix=/usr/local/nginx # 预编译 ``` ![nginx预编译报错](https://gitee.com/wynne217/read-the-docs/raw/master/source/%E7%B3%BB%E7%BB%9F/Linux/%E5%9B%BE%E7%89%87/nginx%E9%A2%84%E7%BC%96%E8%AF%91%E6%8A%A5%E9%94%991.png) 能看到红线报错缺少PCRE依赖,需要安装: ``` $ yum install -y pcre-devel ``` > 注:也可以通过源码的方式安装`pcre`依赖,在预编译时指定安装路径`--with-pcre=/usr/local/pcre`。如果使用`yum`安装就不需要在预编译指定了。 安装完后重新预编译,结束后可以通过`echo $?`命令检查是否成功,如果成功会输出`0`,非`0`则有错误,需继续排查。 3. 编译并安装 ``` $ make && make install ``` > 注:如果编译报错,需要安装`gcc`和`gcc-c++`依赖,`yum install -y gcc gcc-c++`。 `make`编译时可以使用`-j`选项(根据自己服务器内核数决定)指定同时使用多少内核进行编译,可以加快编译速度。 4. 启动服务 ``` $ /usr/local/nginx/sbin/nginx ``` 5. 配置软链接方便启动 ``` $ ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/nginx ``` 6. 开机自启动 ``` $ vim /etc/rc.local ```