博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux软件包管理
阅读量:6247 次
发布时间:2019-06-22

本文共 8852 字,大约阅读时间需要 29 分钟。

软件运行和编译

ABI:Application Binary Interface
Windows与Linux不兼容
ELF(Executable and Linkable Format)
PE(Portable Executable)
库级别的虚拟化:
Linux: WINE
Windows: Cygwin
API:Application Programming Interface
POSIX:Portable OS
程序源代码 --> 预处理 --> 编译 --> 汇编 --> 链接
静态编译:.a
动态编译:.so

开发语言    系统级开发        C        C++    应用级开发        java        delphi        Python        go        php        perl        ruby包管理器    二进制应用程序的组成部分:        二进制文件、库文件、配置文件、帮助文件    程序包管理器:        debian:deb文件, dpkg包管理器        redhat: rpm文件, rpm包管理器        rpm: Redhat Package Manager        RPM Package Manager包命名    源代码:name-VERSION.tar.gz|bz2|xz        VERSION: major.minor.release    rpm包命名方式:        name-VERSION-release.arch.rpm        例:bash-4.2.46-19.el7.x86_64.rpm        VERSION: major.minor.release        release:release.OS        常见的arch:        x86: i386, i486, i586, i686        x86_64: x64, x86_64, amd64        powerpc: ppc        跟平台无关:noarch包命名和工具    包:分类和拆包        Application-VERSION-ARCH.rpm: 主包        Application-devel-VERSION-ARCH.rpm 开发子包        Application-utils-VERSION-ARHC.rpm 其它子包        Application-libs-VERSION-ARHC.rpm 其它子包    包之间:可能存在依赖关系,甚至循环依赖    解决依赖包管理工具:        yum:rpm包管理器的前端工具        apt-get:deb包管理器前端工具        zypper: suse上的rpm前端管理工具        dnf: Fedora 18+ rpm包管理器前端管理工具库文件    查看二进制程序所依赖的库文件        ldd /PATH/TO/BINARY_FILE    管理及查看本机装载的库文件        ldconfig 加载库文件        /sbin/ldconfig -p: 显示本机已经缓存的所有可用库文件名及文件路径映射关系    配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf    缓存文件:/etc/ld.so.cache包管理器    程序包管理器:        功能:将编译好的应用程序的各组成文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作    包文件组成 (每个包独有)        RPM包内的文件        RPM的元数据,如名称,版本,依赖性,描述等        安装或卸载时运行的脚本    数据库(公共):/var/lib/rpm        程序包名称及版本        依赖关系        功能说明        包安装后生成的各文件路径及校验码信息程序包的来源    管理程序包的方式:        使用包管理器:rpm        使用前端工具:yum, dnf    获取程序包的途径:        (1) 系统发版的光盘或官方的服务器;            CentOS镜像:            https://www.centos.org/download/            http://mirrors.aliyun.com            http://mirrors.sohu.com            http://mirrors.163.com        (2) 项目官方站点        (3) 第三方组织:            Fedora-EPEL:                Extra Packages for Enterprise Linux            Rpmforge:RHEL推荐,包很全            搜索引擎:                http://pkgs.org                http://rpmfind.net                http://rpm.pbone.net                https://sourceforge.net/        (4) 自己制作            注意:第三方包建议要检查其合法性            来源合法性,程序包的完整性    rpm包管理        CentOS系统上使用rpm命令管理程序包:        安装、卸载、升级、查询、校验、数据库维护        安装:            rpm {-i|--install} [install-options] PACKAGE_FILE…            -v: verbose            -vv:            -h: 以#显示程序包管理执行进度        rpm -ivh PACKAGE_FILE ...rpm包安装    [install-options]    --test: 测试安装,但不真正执行安装,即dry run模式    --nodeps:忽略依赖关系    --replacepkgs | replacefiles    --nosignature: 不检查来源合法性    --nodigest:不检查包完整性    --noscripts:不执行程序包脚本    %pre: 安装前脚本; --nopre    %post: 安装后脚本; --nopost    %preun: 卸载前脚本; --nopreun    %postun: 卸载后脚本; --nopostunrpm包升级    升级:    rpm {-U|--upgrade} [install-options] PACKAGE_FILE...    rpm {-F|--freshen} [install-options] PACKAGE_FILE...        upgrade:安装有旧版程序包,则“升级”            如果不存在旧版程序包,则“安装”        freshen:安装有旧版程序包,则“升级”            如果不存在旧版程序包,则不执行升级操作    rpm -Uvh PACKAGE_FILE ...    rpm -Fvh PACKAGE_FILE ...    --oldpackage:降级    --force: 强制安装升级注意项注意:(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此,对直接安装新版本内核(2) 如果原程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留包查询    rpm {-q|--query} [select-options] [query-options]    [select-options]        -a: 所有包        -f: 查看指定的文件由哪个程序包安装生成        -p rpmfile:针对尚未安装的程序包文件做查询操作        --whatprovides CAPABILITY:查询指定的CAPABILITY由哪个包所提供        --whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖    rpm2cpio 包文件|cpio –itv 预览包内文件    rpm2cpio 包文件|cpio –id “*.conf” 释放包内文件    [query-options]        --changelog:查询rpm包的changelog        -c: 查询程序的配置文件        -d: 查询程序的文档        -i: information        -l: 查看指定的程序包安装后生成的所有文件        --scripts:程序包自带的脚本        --provides: 列出指定程序包所提供的CAPABILITY        -R: 查询指定的程序包所依赖的CAPABILITY常用查询用法:    -qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE    -qpi PACKAGE_FILE, -qpl PACKAGE_FILE, ...    -qa    包卸载:        rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...包校验    包来源合法性验正及完整性验正        完整性验正:SHA256        来源合法性验正:RSA    公钥加密        对称加密:加密、解密使用同一密钥        非对称加密:密钥是成对儿的            public key: 公钥,公开所有人            secret key: 私钥, 不能公开    导入所需要公钥        rpm -K|checksig rpmfile 检查包的完整性和签名        rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7           CentOS 7发行版光盘提供:RPM-GPG-KEY-CentOS-7        rpm -qa “gpg-pubkey*”rpm数据库    数据库重建:        /var/lib/rpm    rpm {--initdb|--rebuilddb}        initdb: 初始化                    如果事先不存在数据库,则新建之            否则,不执行任何操作        rebuilddb:重建已安装的包头的数据库索引目录yum源    阿里云repo文件:        http://mirrors.aliyun.com/repo/    CentOS系统的yum源        阿里云:https://mirrors.aliyun.com/centos/$releasever/os/x86_64/    EPEL的yum源:        阿里云: https://mirrors.aliyun.com/epel/$releasever/x86_64yum命令    yum命令的用法:        yum [options] [command] [package ...]    显示仓库列表:        yum repolist [all|enabled|disabled]    显示程序包:        yum list        yum list [all | glob_exp1] [glob_exp2] [...]        yum list {available|installed|updates} [glob_exp1] [...]    安装程序包:        yum install package1 [package2] [...]        yum reinstall package1 [package2] [...] (重新安装)    升级程序包:        yum update [package1] [package2] [...]        yum downgrade package1 [package2] [...] (降级)    检查可用升级:        yum check-update    卸载程序包:        yum remove | erase package1 [package2] [...]    查看程序包information:        yum info [...]    查看指定的特性(可以是某文件)是由哪个程序包所提供:        yum provides | whatprovides feature1 [feature2] [...]    清理本地缓存:        清除/var/cache/yum/$basearch/$releasever缓存        yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]    构建缓存:        yum makecache    搜索:yum search string1 [string2] [...]        以指定的关键字搜索程序包名及summary信息    查看指定包所依赖的capabilities:        yum deplist package1 [package2] [...]    查看yum事务历史:        yum history [info|list|packages-list|packages-info|        summary|addon-info|redo|undo|        rollback|new|sync|stats]        yum history        yum history info 6        yum history undo 6    日志 :/var/log/yum.log    安装及升级本地程序包:        yum localinstall rpmfile1 [rpmfile2] [...]        (用install替代)        yum localupdate rpmfile1 [rpmfile2] [...]        (用update替代)    包组管理的相关命令:        yum groupinstall group1 [group2] [...]        yum groupupdate group1 [group2] [...]        yum grouplist [hidden] [groupwildcard] [...]        yum groupremove group1 [group2] [...]        yum groupinfo group1 [...]    yum的命令行选项:        --nogpgcheck:禁止进行gpg check        -y: 自动回答为“yes”        -q:静默模式        --disablerepo=repoidglob:临时禁用此处指定的repo        --enablerepo=repoidglob:临时启用此处指定的repo        --noplugins:禁用所有插件系统光盘yum仓库        系统安装光盘作为本地yum仓库:        (1) 挂载光盘至某目录,例如/mnt/cdrom            mount /dev/cdrom /mnt/cdrom        (2) 创建配置文件        [CentOS7]            name=            baseurl=            gpgcheck=            enabled=        创建yum仓库:            createrepo [options] 

问题:如何创建一个本地yum仓库???

将/etc/yum.repos.d/的文件放在其他目录中自己创建一个的新的仓库
mkdir -pv /etc/yum.repo/org
mv Centos-* /org
mkdir -pv /mnt/cdrom
mount /dev/sr1 /mnt/cdrom

vim list.repo[base]name=basebaseurl=file:///mnt/cdromgpgcheck=0可在建一个仓库[epel]name=epelbaseurl=https://mirrors.aliyun.com/epel/7/x86_64gpgcheck=0程序包编译    程序包编译安装:    Application-VERSION-release.src.rpm -->安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装    源代码-->预处理-->编译-->汇编-->链接-->执行    源代码组织格式:        多文件:文件中的代码之间,很可能存在跨文件依赖关系        C、C++:make 项目管理器            configure脚本 --> Makefile.in --> Makefile        java: maven编译安装    C语言源代码编译安装三步骤:        1、./configure        (1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及Makefile.in文件生成Makefile        (2) 检查依赖到的外部环境,如依赖的软件包        2、make 根据Makefile文件,构建应用程序        3、make install 复制文件到相应路径    开发工具:        autoconf: 生成configure脚本        automake:生成Makefile.in    注意:安装前查看INSTALL,README编译安装    编译C源代码:    准备:提供开发工具及开发环境    开发工具:make, gcc等    开发环境:开发库,头文件    glibc:标准库    实现:通过“包组”提供开发组件    Development Tools    Server Platform Development

问题1:在centos6中如何编译安装httpd2.2版本???

1、先安装开发编译包组
yum groupinstall -y "Develoment tools"
2、解压缩
tar xvf httpd-2.2.34.tar.bz2
生成httpd-2.2.34
注意在编译时必须要进入生成的文件进行编译安装
yum -y install openssl-devel 解决依赖关系
./configure --prefix=/hh \ 用于存放文件路径
--sysconfdir=/etc/httpd223 \ 存放配置文件路径
--enable-ssl
make -j 4
make install
apache restart 启用服务

问题2:在centos7中编译安装httpd2.4版本???

1、解决开发包组和依赖关系
yum groupinstall "Develoment tools" 开发包组
yum -y install pcre-devel 解决依赖关系

httpd官方网站:httpd.apache.org www.apache.org

2、解压缩
tar xvf httpd-2.4.25.tar.bz2
生成httpd-2.4.25
编译安装时进入生成文件
./configure --prefix=/hh \ 存放文件的路径 路径可自己定义
--sysconfdir=/etc/httpd223 \ 存放主配置文件
make -j 4
make install
/hh/bin/apachectl restart 启动此服务

转载于:https://blog.51cto.com/001230/2112204

你可能感兴趣的文章
selenium 模型简单理解
查看>>
给div加上padding和border,如何不让div整体改变
查看>>
sap MD04中常用函数
查看>>
通过MySQL自动同步刷新Redis
查看>>
vuex简单示例
查看>>
根据数据库结构生成RzCheckTree
查看>>
hihocoder [Offer收割]编程练习赛8 矩形计数
查看>>
汇编实验九
查看>>
哈夫曼编码
查看>>
go语言学习之闭包函数
查看>>
javax.servlet.http.HttpServletRequest; 不存在
查看>>
类型自动转换规则
查看>>
kvm-控制台登陆配置
查看>>
SpringAOP
查看>>
有赞MySQL自动化运维之路—ZanDB
查看>>
String与常量池(JDK1.8)
查看>>
lightoj 1031(dp)
查看>>
SQL Server转sqlite数据库
查看>>
python print和strip
查看>>
2016学年第一学期软件工程第二次作业
查看>>