微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

善用RPM和YUM等工具来安装软件包

Linux下的软件安装与管理

源码安装一般有以下几个步骤组成:
下载解压源码 -->分析安装平台环境(configure)-->编译安装软件(make、make install)

Linux常用的软件包类型或格式有:可执行的RPM与DEB、源代码形式的gzip与bzip2压缩包。


――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
RPM(RedHat Package Manager),红帽软件包工具


1.安装与卸载RPM包
对于rpm软件包的安装,可以使用<rpm -i 软件包名称>来进行安装,但是该命令认选项为静式安装,如果想要了解安装过程中的消息,使用-v来显示详细的信息,-h来显示安装进度(安装进度以#表示);

对于rpm软件包的卸载,可以使用<rpm -e 软件包名称>来进行卸载;

对于rpm软件包的升级,可以使用<rpm -U 软件包名称>,rpm会删除旧版本的软件(仅保留配置文件),再安装新的软件版本。

2.软件包的信息查询
<rpm -q>:
-q:查看软件包是否已经安装
-qa:查询系统中已经安装的所有软件
-qi:查询指定安装包的详细信息
-qc:查询指定软件的配置文件
-ql:查询指定软件的安装路径文件列表
-qf:查询指定文件为哪个软件所安装
选项可以组合,如:rpm -qpi xxx,使用rpm-q的格式进行查询仅针对已经安装的软件,如果你希望知道某个尚未安装的软件包的详细信息,则可以使用rpm-qp的方式查询

3.安全认证
RPM提供的验证功能可以随时追踪软件的状态,当软件被人篡改时,rpm -v会提示该软件哪些状态被修改,未被篡改的不会显示

rpm -V命令可能显示出的提示字符及含义:
5:MD5值已经改变
S:文件大小已经改变
L:链接文件源已经改变
T;文件最后修改时间已经改变
D:设备改变
U:用户发生变化
G:组发生变化
M:包括权限与类型在内的模式已经改变
?:不可读的文件


――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
YUM(Yellowdog Updater Modified):


Yellowdog是一款发行版linux,使用rpm作为认的程序包管理工具,很好的解决了RPM所面临的软件包依赖关系。使用YUM安装软件时至少需要一个YUM源,YUM源就是一个存放有很多RPM软件的文件夹,用户可以HTTP、FTP或本地文件夹的方式询问YUM源。
yum的配置:
yum的配置文件由主配置文件/etc/yum.conf、资源库配置目录/etc/yum.repo.d。centos6.7的认YUM源定义文件就存放在 /etc/yum.repos.d/目录下,我们可以自行定义任意可以使用的YUM源,但文件名的扩展名必须是.repo,CentOS-Base.repo
vim打开:
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6


/etc/yum.config的相关内容
[main]
cachedir=/var/cache/yum/$basearch/$releasever#cachedir:yum缓存的目录,yum在此存储下载的rpm包和数据库,一般是/var/cache/yum。
keepcache=0
debuglevel=2#debuglevel:除错级别,0──10,认是2貌似只记录安装和删除记录
logfile=/var/log/yum.log
exactarch=1#exactarch,有两个选项1和0,代表是否只升级和你安装软件包cpu体系一致的包,如果设为1,则如你安装了一个i386的rpm,则yum不会用1686的包来升级
obsoletes=1
gpgcheck=1#gpgchkeck=有1和0两个选择,分别代表是否是否进行gpg校验,如果没有这一项,认是检查的。
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.PHP?project_id=19&ref=http://bugs.centos.org/bug_report_page.PHP?category=yum
distroverpkg=centos-release

几个变量
$releasever,发行版的版本,从[main]部分的distroverpkg获取,如果没有,则根据redhat-release包进行判断。
$arch,cpu体系,如i686,athlon等
$basearch,cpu的基本体系组,如i686和athlon同属i386,alpha和alphaev6同属alpha

.repo文件该如何定义:
[repositoryid]
name=Full name of repository
baseurl=schema1://hostname/PATH/TO/REPODATA
schema2://hostname/PATH/TO/REPODATA
schema3://hostname/PATH/TO/REPODATA
schema4://hostname/PATH/TO/REPODATA
schema:
http[s]、ftp、nfs:网络服务器指向
file:本地服务器指向
#mirrorlist=mirror_url
enabled={0|1},0表示禁用此仓库指向,1表示启用;如果没有enabled语句,认为启用状态;
gpgcheck={0|1},0表示不进行程序包认证,1表示认证;如果为1,需要指定认证所需要的公钥文件,需要使用gpgkey语句;
gpgkey=schema://hostname/PATH/TO/PUBLIC_KEY_FILE
例子:gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-$releasever

failovermethod={roundrobin|priority}
故障倒换方法
roundrobin:随机查找,认的方法
priority:按照顺序依次选择
enablegroups={1|0}
cost=num,认所有仓库的开销值都是1000;

一般的repo指向内容
[repoid]
name=
baseurl=
#mirrorlist=
enbaled=1
gpgcheck=0
#gpgkey=

YUM的相关命令:
yum [选项] [指令] [软件包...]
选项:
-y:执行非交互式安装,安装过程中所有的提示回答yes

-quiet:安静模式,在某一次yum执行过程中,没有任何信息输出到stdout;

-enablerepo=repoidglob
-disablerepo=repoidglob
在某一次yum执行过程中明确的规定启用或禁用某个repository指向;在使用了这样的选项之后,仓库指向文件中的enabled语句的作用将失效;

-noplugins:
在某一次yum执行过程中,明确指出不使用任何插件

--nogpgcheck:
在某一次yum执行过程中,明确指出不验证程序包完整性,在仓库指向文件中的gpgcheck=1语句会失效;

指令:
* install package1 [package2] [...]
安装程序包
注意:
1.如果只是给出程序包名称,yum搜索所有仓库,并找到最新版本缓存安装;
2.如果给出程序包的名称及版本,则查找安装指定版本的程序包;
3.如果给出的程序包是完整的程序包名,则只是查找某一个程序包;
4.程序包名称可以使用globbing,(* ? [] [^])

* update [package1] [package2] [...]
* update-to [package1] [package2] [...]
* check-update
* upgrade [package1] [package2] [...]
* upgrade-to [package1] [package2] [...]
* downgrade package1 [package2] [...]
程序包升级或降级:
程序包不同版本之间的更迭;

* remove | erase package1 [package2] [...]
卸载程序包:

* list [...]
yum list LIST OPTIONS
LIST OPTIONS:
all: 显示所有的程序包,包括已经安装的和尚未安装但可用的;
注意:
anaconda:CentOS系统的安装器,在安装操作系统的时候一并安装的程序包;
installed:显示所有已经安装的程序包;
available:显示所有尚未安装但可以安装的程序包;
updates:显示所有可以升级更新的程序包;

* info [...]
yum info LIST OPTIONS
LIST OPTIONS:
all: 显示所有的程序包,包括已经安装的和尚未安装但可用的;
注意:
anaconda:CentOS系统的安装器,在安装操作系统的时候一并安装的程序包;
installed:显示所有已经安装的程序包;
available:显示所有尚未安装但可以安装的程序包;
updates:显示所有可以升级更新的程序包;

name[globbing]

* provides | whatprovides feature1 [feature2] [...]
查看指定的特性是由哪个程序包提供的;

* clean [ packages | Metadata | expire-cache | rpmdb | plugins | all ]
清理本地缓存信息

* makecache
构建缓存

* groupinstall group1 [group2] [...]
* groupupdate group1 [group2] [...]
* grouplist [hidden] [groupwildcard] [...]
* groupremove group1 [group2] [...]
* groupinfo group1 [...]
程序包组的管理命令:


* search string1 [string2] [...]
根据关键字进行匹配,认情况下,搜索程序包名称及汇总信息;
模糊搜索

* shell [filename]
给yum提供一个交互式命令的操作界面

* localinstall rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use install)
* localupdate rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use update)
实现本地程序包安装,即:不依赖于软件仓库,直接对rpm格式包文件进行操作;
这两个命令已经被停用,使用install和update取代;

* reinstall package1 [package2] [...]
重新安装

* deplist package1 [package2] [...]
显示每个程序包所有的依赖关系;

* repolist [all|enabled|disabled]
列表显示yum仓库的元数据信息
在没有给出后面的参数的时候,认为enabled;

* version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]

* history [info|list|packages-list|packages-info|summary|addon-
info|redo|undo|rollback|new|sync|stats]
查看yum事务的历史;
安装、升级、卸载等操作的时候,yum会开启事务;

* load-transaction [txfile]
重新启动已经停止的事务;

* check

* help [command]


几个不错的官方的文件服务器或者镜像站点:http://mirrors.aliyun.comhttp://mirrors.sohu.comhttp://mirrors.163.comhttps://mirrors.tuna.tsinghua.edu.cnhttp://mirrors.hust.edu.cn

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2280端口映射到公网,发现经常被暴力破解,自己写了个临时封禁ip功能的脚本,实现5分钟内同一个ip登录密码错误10次就封禁这个ip5分钟,并且进行邮件通知使用步骤openwrt为19.07.03版本,其他版本没有测试过安装bashmsmtpopkg
#!/bin/bashcommand1&command2&wait从Shell脚本并行运行多个程序–杨河老李(kviccn.github.io)
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/phpls-ls 2.编辑修改.bash_profile文件(没有.bash_profile文件的情况下回自动创建)sudovim~/.bash_profile在文件的最后输入以下信息,然后保存退出exportPATH="/Applications/MAMP/bin/php/php7.2.20/b
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如zh_CN之类的语言包,进行中文语言包装:apt-getinstalllanguage-pack-zh-hans3、安装好后我们可以进行临时修改:然后添加中文支持: locale-genzh_CN.UTF-8临时修改> export LC_ALL='zh_CN.utf8'> locale永久
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexadecimalbash2#[0~1]0[0~7]0x[0~f]or0X[0~f]perl0b[0~1]0[0~7]0x[0~f]tcl0b[0~1]0o[0~7]0x[0~f]bashdifferentbaserepresntationreference2.StringlengthLanguageStr
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全命令补全方法:yum-yinstallbash-completionsource/usr/share/bash-completion/bash_completionsource<(kubectlcompletionbash)echo"source<(kubectlcompletionbash)">>~/.bashrc 
参考这里启动jar包shell脚本修改过来的#!/bin/bash#默认应用名称defaultAppName='./gadmin'appName=''if[[$1&&$1!=0]]thenappName=$1elseappName=$defaultAppNamefiecho">>>>>>本次重启的应用:$appName<
#一个数字的行#!/bin/bashwhilereadlinedon=`echo$line|sed's/[^0-9]//g'|wc-L`if[$n-eq1]thenecho$linefidone<1.txt#日志切割归档#!/bin/bashcd/data/logslog=1.logmv_log(){[-f$1]&&mv$1$2
#文件增加内容#!/bin/bashn=0cat1.txt|whilereadlinedon=[$n+1]if[$n-eq5]thenecho$lineecho-e"#Thisisatestfile.\n#Testinsertlineintothisfile."elseecho$linefidone#备份/etc目录#
# su - oraclesu: /usr/bin/ksh: No such file or directory根据报错信息:显示无法找到文件 /usr/bin/ksh果然没有该文件,但是发现存在文件/bin/ksh,于是创建了一个软连接,可以规避问题,可以成功切换到用户下,但无法执行系统自带命令。$. .bash_profile-ksh: .: .b