Linux 软件安装方式

519 阅读7分钟

一、源码安装

概述

最通用的安装方式,使用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(全磁盘搜索)
        • 找出所有目录,分别删除

二、安装包安装

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:配置软件包

三、软件源安装

概述

基于源码包构建的软件管理机制,可以解决软件包之间的依赖关系,所有软件包由集中的源仓库提供

红帽派系

  • 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 类的源代码来生成“干净”的安装或者卸载包。

参考文章

Linux系统中安装软件的几种方式

更换yum源