linux软件管理
发布时间:2020-12-14 01:30:35 所属栏目:Linux 来源:网络整理
导读:基础知识 二进制应用程序的组成部分:二进制文件、库文件、配置文件、帮助文件 程序包管理器:rpm 源代码命名方式:name-VERSION.tar.gz,VERSION:major.minor.release rpm包命名方式:name-VERSION-ARCH.rpm,VERSION:major.minor.release,ARCH:release
基础知识
二进制应用程序的组成部分:二进制文件、库文件、配置文件、帮助文件
程序包管理器:rpm
源代码命名方式:name-VERSION.tar.gz,VERSION:major.minor.release
rpm包命名方式:name-VERSION-ARCH.rpm,VERSION:major.minor.release,ARCH:release.os.arch,zlib-1.2.7-13.el7.i686.rpm
包依赖关系,yum、dnf:rpm包管理器的前端工具
ldd,打印出二进制程序依赖
的
共享库,ldd /bin/ls
管理及本机装载的库文件:
ldconfg -p:显示I本机已经缓存的所有可用库文件名及文件路径映射关系;
配置文件为:/etc/ld.so.conf,/etc/ld.so.conf.d/*.conf
缓存文件:/etc/ld.so.cache
获取程序包的途径:
1、系统发行版的光盘或官方的服务器:
centos镜像:http://mirrors.aliyun.com,http://mirrors.sohu.com,http://mirrors.163.com
2、项目官方
3、第三方组织
F
edora-EPEL
http://pkgs.org
http://rpmfind.net
http://rpm.phone.net
4、自己制作
检查合法性:来源合法性、程序包完整性
编译安装
编译安装三步骤
1 ./configure:
? ? (1)通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及Makefile.in文件生成makefile;
? ? (2)检查依赖到的外部环境。
2. make:
? ? 根据makefile文件,构建应用程序
3.make install
开发工具:
? ? autoconf:生成configure脚本
? ? automake:生成Makefile.in
建议:安装前查看INSTALL,README
开源程序源代码的获取:
? ? 官方自建站点:apache.org,mariadb.com
? ? 代码托管:SourceForge,Github.com,code.google.com
编译器
c/c++:gcc(GNU C Complier)
编译C源代码
前提:提供开发工具及开发环境
? ? ? ? 开发工具:make、gcc等
? ? ? ? 开发环境:开发库、头文件
? ? ? ? ? ? glibc:标准库
? ? ? ? 通过“包组”提供开发组件
? ? ? ? ? ? CentOS 6:“Development Tools","Server Platform Development"
? ? ? ? ? ? CentOS 7:开发工具
第一步,configure
? ? 选项:指定安装位置、指定启用的特性
? ? --help:获取其支持使用的选型
? ? --prefix=/PATH:指定安装路径,默认为/usr/local
? ? --sysconfdir=/PATH:配置文件安装路径
第二步,make第三步,make install第四步,安装后的配置? ? (1)配置PaTH环境变量
? ? ? ? ? ? 编辑配置文件/etc/profile.d/NAME.sh
? ? ? ? ? ? export PATH=/path/to/bin:$PATH
? ? (2)导出库文件路径
? ? ? ? ? ? 编辑/etc/ld.so.conf.d/NAME.conf
? ? ? ? ? ? 添加新的库文件所在目录至此文件中
? ? ? ? ? ? 让系统重新生成缓冲
? ? ? ? ? ? ld -V
? ? (3)导出头文件
? ? ? ? ? ? 基于链接的方式
? ??? ??? ??ln -sv /path/.../include ?/usr/include/NAME
? ??? ??? ??
? ??? ??? ??很多编译器使用 -i 选项来指定额外的头文件目录(你说的库文件)
? ??? ??? ??修改你自己用户的环境变量文件
? ??? ??? ??~/.bash_profile 申明你安装好的lib库进去
? ??? ??? ??source ~/.bash_profile 这样加载环境变量
? ??? ??? ??另外PHP程序依赖的库应该可以从该程序的配置文件路径中申明就可以了,不一定需要系统默认路径
? ??? ??? ??configure --- 参数的时候会指定你的配置文件路径,你的依赖库路径等等
? ? (4)导出帮助手册
? ? ? ? ? ? 编辑/etc/man.config文件
? ? ? ? ? ? 添加一个MANPATH
? ? ? ? ? ? 编辑/etc/man.config,添加一条:MANTH /path/../man(man1、man8的上一级目录)
rpm安装1.安装
rpm包管理:安装
? ??http://172.16.0.1/cobbler/
?rpm -i,--install
?# rpm -i /path/to/rpm_package ...
? -v:?
? -vv:
? -vvv:
? -h: hash,以#的个数显示安装进度,一个#表示2%的进度;
?--test:仅测试,不真正执行安装过程
?如果存在依赖:
?? ??解决依赖关系
?? ??忽略依赖关系: --nodeps
2.重新安装
?? ??-ivh --replacepkgs
? ? ?
原来的配置文件不会被覆盖,新安装的配置文件将会重命名为以.rpmnew为后缀的文件;
3.卸载
rpm包管理:卸载
? ??rpm -e,--erase
? ??rpm -e package_name
如果卸载被其它程序所依赖的包:
? 1、把依赖者一同卸载;
? 2、忽略依赖关系;
? ?--nodeps
? 3、不再卸载
4.查询
rpm包管理:查询
?rpm -q
?1.查询所有已经安装的包
?查询所有已经安装的包:rpm -qa
2.查询包的描述信息
?查询包的描述信息:rpm -qi package_name
? Name : bash Relocations: (not relocatable)
? Version : 4.1.2 Vendor: CentOS
? Release : 15.el6_4 Build Date: Thu 18 Jul 2013 09:21:24 PM CST
? Install Date: Wed 12 Feb 2014 09:48:43 AM CST Build Host: c6b10.bsys.dev.centos.org
? Group : System Environment/Shells Source RPM: bash-4.1.2-15.el6_4.src.rpm
? Size : 3139291 License: GPLv3+
? Signature : RSA/SHA1,Thu 18 Jul 2013 09:46:10 PM CST,Key ID 0946fca2c105b9de
? Packager : CentOS BuildSystem <http://bugs.centos.org>
? URL : http://www.gnu.org/software/bash
? Summary : The GNU Bourne Again shell
? Description :
? The GNU Bourne Again shell (Bash) is a shell or command language
? interpreter that is compatible with the Bourne shell (sh). Bash
? incorporates useful features from the Korn shell (ksh) and the C shell
? (csh). Most sh scripts can be run by bash without modification.
3.查询某单个包是否安装
?查询某单个包是否安装:rpm -q package_name
4.查询包安装之后在当前系统生成文件列表
?查询包安装之后在当前系统生成文件列表:rpm -ql package_name
5.查询某文件是哪个包安装生成的
?查询某文件是哪个包安装生成的:rpm -qf /path/to/somefile
6.查询包安装后生成的帮助文档
?查询包安装后生成的帮助文档:rpm -qd package_name
7.查询包安装后生成的配置文件
?查询包安装后生成的配置文件:rpm -qc package_name
8.查询包相关的脚本
?查询包相关的脚本:rpm -q --scripts package_name
? 脚本有四类:
? ?preinstall: 安装前脚本
? ?postinstall: 安装后脚本
? ?preuninstall: 卸载前脚本
? ?postuninstall: 卸载后脚本
9.查询尚未安装的rpm包文件的相关信息
?查询尚未安装的rpm包文件的相关信息:
1..查询安装后会生成的文件列表
? 查询安装后会生成的文件列表:rpm -qpl /path/to/package_file?
2.查询其简单描述信息
? 查询其简单描述信息:rpm -qpi /path/to/package_file
5.升级
rpm包之升级:
?rpm -U: 升级或安装
?rpm -F:升级
?rpm {-Uvh|-Fvh} /path/to/package_file
?--nodeps:忽略依赖关系
?--force: 强行安装
?注意:不要对内核执行升级操作;
? 多版本内核可并存,因此,建议执行安装操作;
6.校验
rpm包管理:校验
?检查包安装后生成的文件是否被修改过;
?rpm -V package_name
? ? ? ?S file Size differs
? ? ? ?M Mode differs (includes permissions and file type)
? ? ? ?5 digest (formerly MD5 sum) differs
? ? ? ?D Device major/minor number mismatch
? ? ? ?L readLink(2) path mismatch
? ? ? ?U User ownership differs
? ? ? ?G Group ownership differs
? ? ? ?T mTime differs
? ? ? ?P caPabilities differ
rpm包管理:检验来源合法性和软件包完整性
?包完整性:通过单向加密机制(md5|sha1)
?来源合法性:通过公钥加密机制(RSA)
?命令:gpg,pgp
?导入制作者的公钥,CentOS发行版的公钥在iso文件中;?
?导入命令:rpm --import /path/to/gpg-key-file
?检查:rpm -K /path/to/package_file
? ?rpm --checksig /path/to/package_file
? ?--nosignature: 不检查来源合法性
? ?--nodigest: 不检查完整性
7.数据库重建
rpm包管理:数据库重建
?数据库:/var/lib/rpm/
?重建:
? rpm --initdb: 初始化
? ?如果事先不存在一个数据库,则新建之;
? rpm --rebuilddb: 重建
? ?直接重建数据库,会覆盖原有的库;
8.打包
总结:打包、
yum安装
1.概述
依赖关系:
?程序包管理器的前端工具:yum (Yellowdog Update Modifier)
?自动解决依赖关系:X --> Y --> Z
?文件服务器(共享rpm包):通过yum所支持的文件共享机制将各rpm包通过文件服务共享
? repository: 仓库
? ?1、各rpm包;?
? ?2、依赖关系、程序包安装后所能够生成文件列表等元数据文件;?
? ?ftp,http,nfs,file
?yum客户端:
? ?1、配置文件:指定各可用的yum仓库;
? ?2、缓存元数据:yum会到各可用yum仓库获取元数据,并缓存至本地;?
? ?3、分析元数据:根据具体操作请求完成元数据分析,可能包括检查依赖关系、文件列表等信息;
? ?4、执行具体操作:
? 客户端配置文件指定对应服务器访问方式:
? ?ftp ftp://server/path/to/repo
? ?http http://server/path/to/repo
? ?nfs nfs://server/nfs_path
? ?file file:///path/to/repository
?教室的repository:?
? http://172.16.0.1/cobbler/ks_mirror/CentOS-6.5-x86_64/
? http://172.16.0.1/fedora-epel/6/
?yum [options] COMMAND
? check Check for problems in the rpmdb
? check-update Check for available package updates
? clean Remove cached data
? deplist List a package‘s dependencies
? distribution-synchronization Synchronize installed packages to the latest available versions
? downgrade downgrade a package
? erase Remove a package or packages from your system
? groupinfo Display details about a package group
? groupinstall Install the packages in a group on your system
? grouplist List available package groups
? groupremove Remove the packages in a group from your system
? help Display a helpful usage message
? history Display,or use,the transaction history
? info Display details about a package or group of packages
? install Install a package or packages on your system
? list List a package or groups of packages
? load-transaction load a saved transaction from filename
? makecache Generate the metadata cache
? provides Find what package provides the given value
? reinstall reinstall a package
? repolist Display the configured software repositories
? resolvedep Determine which package provides the given dependency
? search Search package details for the given string
? shell Run an interactive yum shell
? update Update a package or packages on your system
? update-minimal Works like update,but goes to the ‘newest‘ package match which fixes a problem that affects your system
? updateinfo Acts on repository update information
? upgrade Update packages taking obsoletes into account
? version Display a version for the machine and/or available repos.
要使用yum管理应用程序,首先得配置其可用的yum仓库,保存在配置文件中:
?/etc/yum.conf
?/etc/yum.repos.d/*.repo
?配置文件格式:由两段组成,类似windows的ini配置文件
? [main] :主配置段
? [repo] :仓库配置段
?配置repo:
? [repo_ID]
? name=String
? baseurl=仓库的访问路径
? enabled={1|0}
? gpgcheck={1|0}
? gpgkey=公钥文件(可以在本地,也可是服务器端路径)
? cost=定义此仓库开销,默认为1000
[base]
name=CentOS 6.5 X86_64 relase?
baseurl=http://172.16.0.1/cobbler/ks_mirror/centos-6.5-x86_64/
enabled=1
gpgcheck=1
gpgkey=http://172.16.0.1/cobbler/ks_mirror/centos-6.5-x86_64/RPM-GPG-KEY-CentOS-6
2.yum的各命令
1.列出所有可用yum repo
?repolist [all|enabled|disabled]: 列出所有可用yum repo
2.清理缓存
?clean [all|packages|metadata|expire-cache|rpmdb|plugins]: 清理缓存
3.列出rpm包
?list [all|installed|available]: 列出rpm包
4.列出rpm包
?info package_name: 列出包的描述信息
5.列出所有包组
?grouplist: 列出所有包组
6.显示包组信息
?groupinfo "package_group_name":显示包组信息
??
7.三个跟开发相关的包组
? ?Desktop Platform Development:有图形程序时需安装此组;
? ?Server Platform Development
? ?Development Tools
8.安装指定的程序包
?install package_name ...: 安装指定的程序包
9.重新安装指定的程序包
?reinstall package_name ...: 重新安装指定的程序包
10.检查可升级的包
?check-update: 检查可升级的包
11.升级指定的程序包
?update package_name ...: 升级指定的程序包
? 现在的版本:x-1.2.1,x-1.2.2,x-1.2.3
? 要升级到指定版本:yum update x-1.2.2
12.降级
?downgrade package_name:降级
?erase|remove package_name ...:
13.查询某文件是由哪个包安装生成的?
?whatprovides|provides /path/to/somefile: 查询某文件是由哪个包安装生成的?
14.安装指定的包组
?groupinstall "group_name":安装指定的包组
15.卸载指定的包组
?groupremove "group_name": 卸载指定的包组
16.安装本地包
?安装本地包:
? install /path/to/package_file
? ?手动禁止检查来源及完整性:--nogpgcheck
? ? yum install /tmp/zsh-2.3.1-2.el6.x86_64.rpm --nogpgcheck
提示:如果系统为CentOS 5,常用的开发包组为“Development Tools”和“Development Libraries”
? ? ? ? ? ? ?CentOS 6,常用的开发包组为“Development Tools”和“Server Platform Development”
练习:安装相关的包组,确保如下命令可执行
?# gcc --version
?gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4)
?Copyright (C) 2010 Free Software Foundation,Inc.
?This is free software; see the source for copying conditions. There is NO
?warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
yum配置文件中可用的四个宏:
?$releasever: 程序的版本,对Yum而言指的是redhat-release版本;只替换为主版本号,如RedHat 6.5,则替换为6;?
?$arch: 系统架构
?$basearch: 系统基本架构,如i686,i586等的基本架构为i386;
?$YUM0-9: 在系统中定义的环境变量,可以在yum中使用;
?获取当前系统相应宏替换结果的办法:
? # python
? Python 2.6.6 (r266:84292,Nov 22 2013,12:16:22)?
? [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
? Type "help","copyright","credits" or "license" for more information.
? >>> import yum,pprint
? >>> yb = yum.YumBase()
? >>> pprint.pprint(yb.conf.yumvar,width=1)
? Loaded plugins: fastestmirror,refresh-packagekit
? {‘arch‘: ‘ia32e‘,
? ?‘basearch‘: ‘x86_64‘,
? ?‘releasever‘: ‘6‘,
? ?‘uuid‘: ‘ea249181-2f82-4c40-8c42-d51b3fce319a‘}
? >>> quit()
?[fedora-epel]
?name=Fedora Community EPEL
?baseurl=http://172.16.0.1/fedora-epel/6/x86_64/
?enabled=1
?gpgcheck=0
?[fedora-epel]
?name=Fedora Community EPEL
?baseurl=http://172.16.0.1/fedora-epel/$releasever/$basharch/
?enabled=1
?gpgcheck=0
总结:yum --> yum repository
?yum: /etc/yum.conf,/etc/yum.repos.d/*.repo
yum repository: 文件服务器
?repodata/:
? repomd.xml:?
测试实现yum repository的配置:
?1、准备文件服务器;使用httpd为例,请事先确保已经安装httpd程序包;
?2、在/var/www/html目录,使用一个目录来保存准备制作成为yum仓库的所有rpm包;
? ?# cd /var/www/html
? # lftp 172.16.0.1/pub/Sources/6.x86_64
? # lftp: > mirror openstack
? # bye
?3、创建yum仓库
? # rm -rf /var/www/html/openstack/repodata
? # createrepo /var/www/html/openstack
?4、启动httpd服务
? # service httpd start
?5、配置使用自建的yum仓库
? [openstack]
? name=Openstack Repository
? baseurl=http://172.16.100.7/openstack/
? enabled=1
? gpgcheck=0?
?6、配置好epel的yum源
?7、测试使用
? # yum install openstack-keystone
来自为知笔记(Wiz)
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |