Linux软件包大致可分为二进制包(Binary Code)、源码包(Source Code)
源代码包是没有经过编译的包,需要经过GCC、C++编译器环境编译才能运行;
二进制包无需编译,可以直接安装使用;
通常而言,区分是否为源码还是二进制 基于代码里面的文件来判断,
例如包含.h、.c、.cpp、.cc等结尾的源码文件,称之为源码包,
而代码代码里面存在bin目可以执行文件,称之为二进制包。
有时候也可以通过后缀简单区别源码包和二进制包,例如.tar.gz、.zip、.rar结尾的包通常称之为源码包,
以.rpm结尾的软件包称之为二进制包。
红帽包管理工具(Red Hat Package Manager,RPM)
使用RPM工具可以对软件包实现快速安装、管理及维护。RPM管理工具适用的操作系统包括:CentOS,RedHat,Fedora,SUSE等,RPM工具常用于管理.rpm后缀结尾的软件包。
这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的;
RPM软件包命令规则详解如下:
命名规则:
name-version.rpm
name-version-noarch.rpm
name-version-arch.src.rpm
例:
yasm-1.2.0-4.el7.x86_64.rpm
yasm: name 软件名称
1.2.0-4:version 版本号,1.2.0通用格式:“主版本号.次版本号.修正号”;4表示是发布版本号,该RPM包是第几次编译生成的;
el7:el* 软件包发行版本,el6表示该软件包适用于RHEL 6.x/CentOS 6.x;
x86_64: arch 适用的硬件平台,RPM支持的平台有:i386、i586、i686、x86_64、sparc、alpha等。
.rpm 后缀包表示编译好的二进制包,可用rpm命令直接安装;
.src.rpm 源代码包,源码编译生成.rpm格式的RPM包方可使用;
devel: 开发包;
noarch: 软件包可以在任何平台上安装。
rpm包的获取方式:
1、系统镜像光盘
2、rpm包网站
比如安装mysql、nginx软件,我们可以去它的官方网站下载
RPM工具命令详解:
RPM 选项 PACKAGE_NAME
rpm -q httpd 检查httpd包是否安装; rpm -ql httpd 查看软件安装的路径; rpm -qi httpd 查看软件安装的版本信息; rpm -e httpd 卸载httpd软件; rpm -e --nodeps httpd 强制卸载httpd; rpm -qa|grep httpd 检查httpd相关的软件包是否安装。 rpm -ivh httpd-2.4.10-el7.x86_64.rpm 安装httpd软件包; rpm -Uvh httpd-2.4.10-el7.x86_64.rpm 升级httpd软件; rpm -ivh --nodeps httpd-2.4.10-el7.x86_64.rpm 不依赖其他软件包;
常用组合:
rpm -q httpd 检查httpd包是否安装; rpm -ql httpd 查看软件安装的路径; rpm -qi httpd 查看软件安装的版本信息; rpm -e httpd 卸载httpd软件; rpm -e --nodeps httpd 强制卸载httpd; rpm -qa|grep httpd 检查httpd相关的软件包是否安装。 rpm -ivh httpd-2.4.10-el7.x86_64.rpm 安装httpd软件包; rpm -Uvh httpd-2.4.10-el7.x86_64.rpm 升级httpd软件; rpm -ivh --nodeps httpd-2.4.10-el7.x86_64.rpm 不依赖其他软件包;
可以看到上面再使用时有时候会用httpd (包名);但是有时候会用 httpd-2.4.10-el7.x86_64.rpm (全名)
那么到底什么时候该用什么呢?
全名:在安装和更新升级时候使用
包名:对已经安装过的软件包进行操作时,比如查找已经安装的某个包,卸载包等 ,使用包名。它默认是去目录/var/lib/rpm下面进行搜索。 当一个 rpm 包安装到系统上之后,安装信息通常会保存在本地的 /var/lib/rpm/目录下。
yum(全称为 Yellow dog Updater, Modified)是一个前端软件包管理器。
基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包
基于C/S架构
YUM工作原理,YUM正常运行,需要依赖两个部分,一是YUM源端,二是YUM客户端,也即用户使用端。
通俗来说:YUM客户端安装的所有RPM包都是来自YUM源端,YUM源端通过HTTP或者FTP服务器发布。
而YUM客户端能够自动处理依赖性关系是由于在YUM源端生成了RPM包的基准信息,包括RPM包版本号、配置文件、二进制信息、依赖关系等。
YUM客户端需要安装软件或者搜索软件,会查找/etc/yum.repos.d下以.repo结尾文件
repo配置文件详解:
仓库ID]
name=YUM源显示名称;
baseurl=rpm包地址;
enabled=是否启用YUM源;0不启用;1启用
gpgcheck=是否检查GPG-KEY;0不检查,1检查
当gpgcheck=1时需要gpgkey=指定载目录下的GPG-KEY文件验证。
YUM客户端安装软件,默认会把YUM源地址、Header信息、软件包、数据库信息、缓存文件存储在/var/cache/yum中,每次使用YUM工具,YUM优先通过Cache查找相关软件包,Cache中不存在,然后在访问外网YUM源。
yum的用法:
yum install httpd 安装httpd软件包; yum search YUM搜索软件包; yum list httpd 显示指定程序包安装情况httpd; yum list 显示所有已安装及可安装的软件包; yum remove httpd 删除程序包httpd; yum erase httpd 删除程序包httpd; yum update 内核升级或者软件更新; yum update httpd 更新httpd软件; yum check-update 检查可更新的程序; yum info httpd 显示安装包信息httpd; yum provides 列出软件包提供哪些文件; yum provides "*/rz" 列出rz命令由哪个软件包提供; yum grouplist 查询可以用groupinstall安装的组名称; yum groupinstall "Chinese Support" 安装中文支持; yum groupremove "Chinese Support" 删除程序组Chinese Support; yum deplist httpd 查看程序httpd依赖情况; yum clean packages 清除缓存目录下的软件包; yum clean headers 清除缓存目录下的headers; yum clean all 清除缓存目录下的软件包及旧的headers。
一般卸载软件而不卸载依赖的时候会使用rpm来卸载软件
源分为三种:
一。本地源
二。base源
三。epel源(base的扩展源):yum install epel-release -y
YUM本地镜像源默认只能本机使用,局域网其他服务器如果想使用的话,需要在每台服务器上构建YUM本地源,该方案一般在企业中不用,所以需要构建HTTP来发布YUM源解决,可以通过CreateRepo创建本地YUM源端
构建HTTP局域网YUM源方法及步骤如下:
1.挂载光盘镜像文件至/mnt
2.安装HTTP服务
3.将/mnt/Packages目录下所有软件包拷贝至/var/www/html/packages/下
4.使用createrepo创建本地源,执行如下命令会在packages目录生成repodata目录
createrepo /var/www/html/packages/ 创建
createrepo --update /var/www/html/packages/ 更新
5.用HTTP发布YUM本地源
6.在客户端编写.repo文件
可以通过tar、zip、jar等工具进行源码包的管理
tar命令参数详解
-A, --catenate, --concatenate 将存档与已有的存档合并 -c, --create 建立新的存档 -d, --diff, --compare 比较存档与当前文件的不同之处 --delete 从存档中删除 -r, --append 附加到存档结尾 -t, --list 列出存档中文件的目录 -u, --update 仅将较新的文件附加到存档中 -x, --extract, --get 解压文件 -j, --bzip2, --bunzip2 有bz2属性的软件包; -z, --gzip, --ungzip 有gz属性的软件包; -b, --block-size N 指定块大小为 Nx512 字节(缺省时 N=20); -B, --read-full-blocks 读取时重组块; -C, --directory DIR 指定新的目录; --checkpoint 读取存档时显示目录名; -f, --file [HOSTNAME:]F 指定存档或设备,后接文件名称; --force-local 强制使用本地存档,即使存在克隆; -G, --incremental 建立老 GNU 格式的备份; -g, --listed-incremental 建立新 GNU 格式的备份; -h, --dereference 不转储动态链接,转储动态链接指向的文件; -i, --ignore-zeros 忽略存档中的 0 字节块(通常意味着文件结束); --ignore-failed-read 在不可读文件中作 0 标记后再退出; -k, --keep-old-files 保存现有文件;从存档中展开时不进行覆盖; -K, --starting-file F 从存档文件 F 开始; -l, --one-file-system 在本地文件系统中创建存档; -L, --tape-length N 在写入 N*1024 个字节后暂停,等待更换磁盘; -m, --modification-time 当从一个档案中恢复文件时,不使用新的时间标签; -M, --multi-volume 建立多卷存档,以便在几个磁盘中存放; -O, --to-stdout 将文件展开到标准输出; -P, --absolute-paths 不要从文件名中去除 ‘/‘; -v, --verbose 详细显示处理的文件; --version 显示tar 程序的版本号; --exclude FILE不把指定文件包含在内; -X, --exclude-from FILE 从指定文件中读入不想包含的文件的列表。
常用组合:
tar -cvf test.tar.gz /etc/ 打包etc目录,打包后名称 test.tar.gz
tar -tf test.tar.gz 查看test.tar.gz包中内容
tar -rf test.tar.gz test.txt 将test.txt文件追加到test.tar.gz 中
tar -xvf test.tar.gz 解压test.tar.gz
源码包安装通常需要./configure、make、make install三个步骤,某些特殊源码可以只有三步中的其中一个步骤,或者两个步骤。
详解源码安装:
# ./configure
a. 指定安装路径,例如 --prefix=/usr/local/nginx
b. 启用或禁用某项功能, 例如 --enable-ssl, --disable-filter --with-http_ssl_module
c. 和其它软件关联,例如--with-pcre
d. 检查安装环境,例如是否有编译器gcc,是否满足软件的依赖需求
最终生成:Makefile
make #按Makefile文件编译,可以使用-j 4指定4核心CPU编译,提升速度
make install #按Makefile定义的文件路径安装
make clean //清除上次的make命令所产生的object和Makefile文件。使用场景:当需要重新执行configure时,需要执行make clean
以nginx为例
wget http://nginx.org/download/nginx-1.13.0.tar.gz
tar -xvf nginx-1.13.0.tar.gz
cd nginx-1.13.0
./configure --prefix=/usr/local/nginx
make
make install
rpm -q httpd 检查httpd包是否安装; rpm -ql httpd 查看软件安装的路径; rpm -qi httpd 查看软件安装的版本信息; rpm -e httpd 卸载httpd软件; rpm -e --nodeps httpd 强制卸载httpd; rpm -qa|grep httpd 检查httpd相关的软件包是否安装。 rpm -ivh httpd-2.4.10-el7.x86_64.rpm 安装httpd软件包; rpm -Uvh httpd-2.4.10-el7.x86_64.rpm 升级httpd软件; rpm -ivh --nodeps httpd-2.4.10-el7.x86_64.rpm 不依赖其他软件包; |
原文:https://www.cnblogs.com/zzzhbr/p/11334725.html