一、源码安装
概述
最通用的安装方式,使用GNU的AUTOCONF和AUTOMAKE产生的程序的安装步骤
安装步骤
- 下载源码包
- 解压到/usr/src 目录(建议目录,可更换)
- 进入源码包根目录
- configure/Configure/config
- 这个命令是用来检测安装平台的目标特征。比如它会检测你是不是有CC 或GCC,并不是需要CC 或GCC,它是个 shell 脚本
- 这一步一般用来生成 Makefile,为下一步的编译做准备,你可以通过在 configure 后加上参数来对安装进行控制
- 比如:
- ./configure --prefix=/usr
- 上面的意思是将该软件安装在 /usr 下面
- 执行文件就会安装在 /usr/bin(而不是默认的 /usr/local/bin)
- 资源文件就会安装在 /usr/share(而不是默认的/usr/local/share)
- 同时一些软件的配置文件你可以通过指定 --sys-config= 参数进行设定
- 还有诸如:--with、--enable、--without、--disable 等等参数对编译加以控制
- 你可以通过允许 ./configure --help 察看详细的说明帮助
- make
- 调用 gcc 进行编译,它从Makefile中读取指令,然后编译
- make 是 Linux 开发套件里面自动化编译的一个控制程序,他通过借助 Makefile 里面编写的编译规范进行自动化的调用 gcc 、ld 以及运行某些需要的程序进行编译的程序。一般情况下,他所使用的 Makefile 控制代码,由 configure 这个设置脚本根据给定的参数和系统环境生成
- make test / make check
- 顾名思义,这一步就是对上一步 make 的检查了,要确保 make 是没有错误的,也就是这一步的 test、check要全部是 OK 的,error 为0
- make install
- 这一步是用来安装的,它也从Makefile中读取指令,安装到指定的位置
- 安装编译好的可执行程序,一般需要你有 root 权限(因为要向系统写入文件),所以前面用了 sudo
卸载步骤
- 卸载就是将安装时创建的文件均删除即可
- 本质在于记住安装时创建了哪些文件
- 分情况讨论
- 一、configure 时指定了 --prefix
- 删除--prefix 指定目录下的文件即可
- 二、尝试使用 make uninstall
- 进入软件解压后的源代码目录(所以不要删除源代码目录),执行 sudo make uninstall,看是否支持
- make 的原理是执行一个叫 Makefile 文件里的指令,make 的基本用处是自动根据makefile 里的执行来
- 例如make里面有这些内容
- install:
- 使用 make install 会执行commands 命令进行安装
- uninstall 也一样道理
- 如果作者没有写 uninstall 则只有根据 install 里面的步骤,看他把文件拷贝到什么地方去了,然后手动删除
- 三、保存了安装信息(make 和 make install)
- make >& 安装信息目录/软件/make.log &
- make install >& 安装信息目录/软件/make_install.log &
- 查看安装日志软件安装在哪些目录后,分别删除
- 四、手动删除
- 使用 whereis xxx,然后分别执行 rm -rf 手动删除(能不能删除干净看运气)
- 以 nginx 举例

- 使用 sudo find / -name xxx(全磁盘搜索)
- 找出所有目录,分别删除
- 使用 whereis xxx,然后分别执行 rm -rf 手动删除(能不能删除干净看运气)
- 一、configure 时指定了 --prefix
二、安装包安装
Linux派系
Linux有很多种发行版本,各种发行版本之间安装软件方式和命令不一样 大体来说,Linux有两大派系,一个是红帽派系,包含Redhat、Centos、Fedora等。还有一个是Debian派系,包含Kali、Ubuntu等

概述
根据不同Linux派系,有不同的软件包管理方式,通常是软件编译完成后,根据相应的软件包管理机制打包起来的一个文件,可以省去编译步骤,简化安装过程
红帽派系
- RPM 包安装
- 全称RedHat Package Manager
- 常用命令
- 安装软件
- rpm -ivh example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息及安装进度
- 查询操作
- rpm -qa | grep tomcat4 查看 tomcat4 是否被安装
- rpm -qip example.rpm 查看 example.rpm 安装包的信息
- rpm -qif /bin/df 查看/bin/df 文件所在安装包的信息;
- rpm -qlf /bin/df 查看/bin/df 文件所在安装包中的各个文件分别被安装到哪个目录下;
- rpm -ql package1 列出package1的所有文件
- rpm -qi package1 列出package1的安装信息
- 卸载操作
- rpm -e 需要卸载的安装包
- 在卸载之前,通常需要使用rpm -q …命令查出需要卸载的安装包名称
- 举例:rpm -e tomcat4 卸载 tomcat4 软件包
- 升级软件
- rpm -U 需要升级的包
- rpm -Uvh example.rpm 升级 example.rpm 软件包
- 安装软件
Debian 派系
- Deb 包安装
- Deb 格式是 Debian 系统专属安装包格式,Debian包是Unixar的标准归档,将包文件信息以及包内容,经过gzip和tar打包而成
- 通过dpkg程序处理这些软件包
- 常用命令
- dpkg
- -i:安装软件包;
- -r:删除软件包;
- -P:删除软件包的同时删除其配置文件;
- -L:显示于软件包关联的文件;
- -l:显示已安装软件包列表;
- --unpack:解开软件包;
- -c:显示软件包内文件列表;
- --confiugre:配置软件包
- dpkg
三、软件源安装
概述
基于源码包构建的软件管理机制,可以解决软件包之间的依赖关系,所有软件包由集中的源仓库提供
红帽派系
- yum 源安装
- 全称 Yellow dog Updater Modified
- 常用命令
yum clean all 清空缓存信息 yum list 列出所有包的信息 yum list httpd 查看 httpd 是否安装 yum info httpd 显示 httpd 包的详细具体信息 yum install httpd -y 安装 httpd 包 yum remove httpd -y 卸载 httpd 包 yum search 关键词 根据关键词,在已发现的repo源中搜索包含关键词的rpm包 yum provides 命令 根据命令,在已发现的repo源中搜索安装指令的rpm包 yum history list/info/undo/redo number history可以列出,查看,重装,反安装对应的包,但是是以yum指令的操作顺序为依据的,所以需要加指定的数字执行 yum update -y 升级所有包同时也升级软件和系统内核 yum upgrade -y 只升级所有包,不升级软件和系统内核- 更改 yum 源
- 为了下载更方便,速度更快,有时候可以将 yum 源改为国内的源
- 更改方法(以更换为163yum源举例)
- 备份原始的源文件
- cd /etc/yum.repos.d/
- cp /CentOS-Base.repo /CentOS-Base-repo.bak
- 使用wget下载163yum源repo文件
- 清理旧包
- yum clean all
- 把下载下来163repo文件设置成为默认源
- mv CentOS7-Base-163.repo CentOS-Base.repo
- 生成163yum源缓存并更新yum源
- yum makecache
- yum update
- 备份原始的源文件
Debian 派系
- apt-get 源安装
- apt源,全世界有超过200个 debian官方镜像,还有繁多的非官方软件包提供网站
- 基于Debian的发布版不同,你所使用的软件仓库可能需要手工选择或是可以自动设置
- 更改 apt 源
- 为了下载更方便,速度更快,有时候可以将apt 源改为国内的源
- 更改方法
- 编辑 /etc/apt/sources.list 内容
- 国内源地址
- 清华源
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse- 其他源地址可自行百度搜索,建议更换前先备份原始的 sources.list
- 常用命令
apt-cache search package 搜索包 apt-cache show package 获取包的相关信息,如说明、大小、版本等 sudo apt-get install httpd 安装软件 sudo apt-get install package -- reinstall 重新安装包 sudo apt-get -f install 修复安装"-f = --fix-missing" sudo apt-get remove httpd 卸载软件 sudo apt-get remove package -- purge 删除包,包括删除配置文件等 sudo apt-get update 更新源 sudo apt-get upgrade 更新已安装的包 sudo apt-get dist-upgrade 升级系统 sudo apt-get dselect-upgrade 使用 dselect 升级 apt-cache depends package 了解使用依赖 apt-cache rdepends package 是查看该包被哪些包依赖 sudo apt-get build-dep package 安装相关的编译环境 apt-get source package 下载该包的源代码 sudo apt-get clean && sudo apt-get autoclean 清理无用的包 sudo apt-get check 检查是否有损坏的依赖
四、附录
AUTOMAKE和AUTOCONF
AUTOMAKE和AUTOCONF是非常有用的用来发布C程序的东西。如果你也写程序想使用AUTOMAKE和AUTOCONF,可以参考CNGNU.ORG上的相关文章
checkinstall
Checkinstall 是一个能从 tar.gz 类的源代码自动生成 RPM/Debian 或Slackware 安装包的程序。通过 CheckInstall,你就能用几乎所有的 tar.gz 类的源代码来生成“干净”的安装或者卸载包。