Linux 软件管理: 安装 升级 卸载

文章目录

    • Linux 软件管理: 安装 升级 卸载
    • Tarball文件
      • 安装过程
      • 卸载过程
      • 升级过程
      • 默认目录
    • Linux包管理机制
    • RPM
      • rpm数据库:
      • rpm文件名:
      • rpm的默认安装路径
      • rpm常用命令
    • SRPM的使用: rpmbuild
      • 命令说明
      • SRPM使用的路径
      • SRPM的编译命令
      • 设置文件的主要内容*.spec

Linux 软件管理: 安装 升级 卸载

本文以Red Hat 7.0为例,介绍Linux系统下开放源码文件的安装,升级,卸载等管理工作.开放源码文件的安装与升级可以通过以下两种方式来进行:

  1. 直接以源码文件通过编译来安装与升级,即tarball方式安装.
  2. 直接以编译好的可执行文件来安装与升级.即rpm方式安装.

Tarball文件

Tarball文件是一个软件包,扩展名为 *.tar.gz 或者 *.tar.bz2,将它解压缩之后,通常可以得到三种文件:

  1. 源代码文件
  2. 检测程序文件, configure或者config
  3. 软件的简单说明与安装说明, INSTALL和README

安装过程

tarball文件的安装过程相对简单,主要由以下三步组成:
1. 下载与解压tarball文件
2. 构建,包括配置,编译,链接等.
3. 安装

./configure
make clean 
make
make install

卸载过程

 make uninstall

此方法的前提是你的源码文件依然存在,而且Makefile文件中存在uninstall命令.否则只能通过手动的方法删除.如果你是按照上述步骤进行程序安装的话,程序会被安装到系统的相应默认目录中,可以到相应的目录中删除相应的文件即可,缺点是可能造成删除不干净不彻底.可以通过以下方法重新安装一次,然后遍历to_remove,删除系统对应安装位置的文件即可.

./configure --prefix=/tmp/to_remove && make install

升级过程

根据patch文件升级源码文件,必须要有补丁文件patch_file

patch -p num < patch_file

上述命令只会升级源码文件,并不会进行程序的安装,因此之后只要重新编译安装即可

默认目录

在默认情况下,Linux系统安装的软件大多是在 /usr 中的,而用户安装的软件则建议放置在 /usr/local中,用户安装的源码文件建议放在 /usr/local/src 中.
系统软件的相关默认安装路径

/etc/ 配置文件
/usr/lib 函数库文件
/usr/bin 可执行文件
/usr/share/man 说明或者帮助文件

用户软件的相关默认安装路径

/usr/local/etc 配置文件
/usr/local/lib 函数库文件
/usr/local/bin 可执行文件
/usr/share/man 说明或者帮助文件

以上方法的缺点是安装软件的位置是分散的,造成软件的卸载比较难以定位文件源,所以可以选择指定目录安装软件,假设软件安装到/usr/local/test目录中:

/usr/local/test/etc
/usr/local/test/bin
/usr/local/test/lib
/usr/local/test/man

Tarball文件安装的优点: 跨平台可移植.缺点是卸载比较复杂.

Linux包管理机制

distribution 软件管理机制 使用命令 在线升级机制(命令)
RedHat/CentOS RPM rpm,rpmbuild YUM (yum)
Debian/Ubuntu DPKG dpkg APT (apt-get)

RPM

RPM(Red Hat Package Manager)是一种以数据库记录的方式将所需要的软件安装到Linux系统的一种包管理机制.每个rpm包文件(扩展名为 .rpm)都包含一些重要的信息,比方说软件依赖属性.在软件安装之前,rpm会先依照软件里的信息查询Linux主机的依赖属性是否满足,如果满足则安装,否则不安装.在软件安装之后,Linux主机会把该软件的信息记录在数据库中以备查询.

RPM包文件的主要内容是经过编译和打包的可执行文件,与此相反,SRPM(Source RPM)是指它的RPM文件里面包含源代码,即它所提供的软件是没有经过编译的源代码,其扩展名为 .src.rpm.虽然SRPM的内容是源代码,但是它仍然含有该软件所需要的依赖性软件说明以及所有RPM文件所提供的数据,同时,与RPM不同的是,它也提供了参数设置文件.

文件格式 扩展名 直接安装否 文件类型 可否修改参数并编译
RPM xxx.rpm 可以 已编译的可执行文件 不可
SRPM xxx.src.rpm 不可 未编译的源代码 可以

rpm数据库:

我们知道rpm包管理机制的软件信息都记录在rpm数据库中,它的每一条记录都是软件的相应信息,rpm数据库位于以下目录

/var/lib/rpm

rpm文件名:

rpm包的文件名如下所示,它包含软件名称,版本号,发布次数,硬件平台和扩展名.srpm包的文件名的rpm类似,除了护展名.

rpm    -   4.11.3   -    35   .   el7.x86_64 .rpm
软件名称 软件的版本信息 发布的次数 适合的硬件平台 扩展名

rpm的默认安装路径

rpm包的默认安装路径和tarball文件是相似的,由此可以看出: 不管采用什么方式,Linux的软件基本安装在相同的位置.

/usr/bin
/usr/lib
/usr/share/doc
/usr/share/man

rpm常用命令

rpm -ivh package-name 安装
rpm -evh package-name 卸载
rpm -Uvh package-name 升级
rpm -q package-name 查询
rpm -qa | grep package-name 查询

SRPM的使用: rpmbuild

命令说明

rpmbuild {-ba|-bb|-bp|-bc|-bi|-bl|-bs} [(1) rpmbuild-options ] SPECFILE…

rpmbuild {-ta|-tb|-tp|-tc|-ti|-tl|-ts} [(1) rpmbuild-options ] TARBALL…

rpmbuild {–rebuild|–recompile} SOURCEPKG…

  1. –rebuild: 进行编译与打包最后生成rpm包,但并不安装
  2. –recompile: 直接编译打包然后安装

SRPM使用的路径

参数 说明
/usr/src/redhat/SPECS 软件的设置文件,用于说明软件的编译打包安装等
/usr/src/redhat/SOURCES 软件的源代码文件
/usr/src/redhat/BUILD 编译过程的暂存文件的保存目录
/usr/src/redhat/RPMS 保存rpm包的目录
/usr/src/redhat/SRPMS 保存srpm包的目录

SRPM的编译命令

rpmbuild -ba *.spec -> 编译同时生成RPM和SRPM文件
rpmbuild -bb *.spec -> 仅编译成RPM文件

设置文件的主要内容*.spec

参数 说明
Summary 软件的主要说明
Name 软件的名称
Version 软件的版本号
Release 软件的打包次数
License 软件的授权模式
Group 软件的开发团队
Url 源代码的主要官方网站
Source 软件的来源
Patch 软件的补丁文件
BuildRoot 编译过程存放中间文件临时目录
ExclusiveArch 软件适合的硬件平台
Requires 软件的依赖属性说明
Prereq 软件的前驱程序
BuildRequires 编译过程中所需要的软件
Packager 软件的打包人员
Vender 软件的开发商
%description 软件的简要说明
%prep 软件的尚未进行设置或者安装之前前置工作
%setup 进行解压缩类的工作
%build 软件的构建过程
%install 软件的安装过程
%clean 删除BuildRoot中的临时文件
%files 需要安装的文件
%changelog 更新记录

RHEL7 rpm pacakge guide
rpm打包软件1
rpm打包软件2
rpm打包软件3

你可能感兴趣的:(Linux)