yum管理及源码安装
一、配置YUM库及更新操作
yum概述
基于RPM包构建的软件更新机制,自动解决软件依赖关系
YUM仓库格式
本地:file://
网络:ftp://或http://
yum源里面包含的内容
、rpm包
、元数据文件
mount /dev/cdrom /media
cd /media/Server
ls re*
在每个yum仓库中,都有repodata目录(存放的是仓库数据)
#baseurl代表yum在互联网上所查找的链接地址。这里需要解释一下
#$basearch代表了系统的构架格式如i386和repodata存放repomd.xml文件的文件夹位置。
Linux yum配置文件详解
yum的配置一般有两种方式: 一种是直接配置/etc目录下的yum.conf文件, 另外一种是在/etc/yum.repos.d目录下增加.repo文件。
yum的配置文件yum.conf详解
$ cat /etc/yum.conf
[main] cachedir=/var/cache/yum #yum下载的RPM包的缓存目录
keepcache= #缓存是否保存,1保存,0不保存。
debuglevel= #调试级别(-),默认为2(具体调试级别的应用,我也不了解)。
logfile=/var/log/yum.log #yum的日志文件所在的位置
exactarch= #在更新的时候,是否允许更新不同版本的RPM包,比如是否在i386上更新i686的RPM包。
obsoletes= #这是一个update的参数,具体请参阅yum(),简单的说就是相当于upgrade,允许更新陈旧的RPM包。
gpgcheck= #是否检查GPG(GNU Private Guard),一种密钥方式签名。
plugins= #是否允许使用插件,默认是0不允许,但是我们一般会用yum-fastestmirror这个插件。
installonly_limit= #允许保留多少个内核包。
exclude=selinux* #屏蔽不想更新的RPM包,可用通配符,多个RPM包之间使用空格分离。
配置YUM客户端
1、yum的配置文件
-基本配置:/etc/yum.conf
-仓库配置:/etc/yum.repos.d/*.repo
-日志文件:/var/log/yum.log
2、yum缓存目录
-
存放下载软件包、仓库记录等数据
-/var/cache/yum/$basearch/$releasever
yum缓存:
/var/cache/yum:存放服务器的软件信息 当执行yum install 软件包 时,首先查看/var/lib/rpm数据库下有没有下载的软件包,如果没有则从/etc/yum.repos.d/下的.repo配置文件把软件信息下载到本地,
并缓存在/var/cache/yum,然后在/var/cache/yum里面找到某一软件的下载地址,然后把软件安装上。 .先备份
.wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
.yum makecache #生成缓存
.yum install 软件包 -y cat /etc/yum.conf 复制代码
[main]
cachedir=/var/cache/yum #yum下载的RPM包的缓存目录
keepcache= #缓存是否保存,1保存,0不保存。
debuglevel= #调试级别(-),默认为2(具体调试级别的应用,我也不了解)。
logfile=/var/log/yum.log #yum的日志文件所在的位置
exactarch= #在更新的时候,是否允许更新不同版本的RPM包,比如是否在i386上更新i686的RPM包。
obsoletes= #这是一个update的参数,具体请参阅yum(),简单的说就是相当于upgrade,允许更新陈旧的RPM包。
gpgcheck= #是否检查GPG(GNU Private Guard),一种密钥方式签名。
plugins= #是否允许使用插件,默认是0不允许,但是我们一般会用yum-fastestmirror这个插件。
installonly_limit= #允许保留多少个内核包。
exclude=selinux* #屏蔽不想更新的RPM包,可用通配符,多个RPM包之间使用空格分离。
# This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
# It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
metadata_expire=90m #设定保存时长
# PUT YOUR REPOS HERE or IN separate files named file.repo
# in /etc/yum.repos.d keepcache=0修改成keepcacche=
保存,退出。
以后安装、更新的包,都会保存在/var/cache/yum/DT60SP3_Repository/packages目录下面
3、.repo基本配置项
[源名称]:自定义名称,具有惟一性
name:本软件源的描述字串
baseurl:指定YUM服务端的URL地址
enabled:是否启用此频道
gpgcheck:是否验证待安装的RPM包
gpgkey:用于RPM验证的密钥文件 [fedora] #方括号里面的是软件源的名称,将被yum取得并识别 name=Fedora $releasever - $basearch #这里也定义了软件 仓库的名称,通常是为了方便阅读配置文件,一般没什么作用,$releasever变量定义了发行版本, 通常是8,9,10等数字,$basearch变 量定义了系统的架构,可以是i386、x86_64、ppc等值,这两个变量根据当前系统的版本架构不同而有不同的取值,
这可以方便yum升级的时候选择 适合当前系统的软件包,以下同…… failovermethod=priority #failovermethod 有两个值可以选择,priority是默认值,表示从列出的baseurl中顺序选择镜像服务器地址,
roundrobin表示在列出的服务器中随机选择 exclude=compiz* *compiz* fusion-icon* #exclude这个选项是后来我自己加上去的,用来禁止这个软件仓库中的某些软件包的安装和更新,
可以使用通配符,并以空格分隔,可以视情况需要自行添加 #baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/
#上面的一行baseurl第一个字符是'#'表示该行已经被注释,将不会被读取,这一行的意思是指定一个baseurl(源的镜像服务器地址) #mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch
#上面的这一行是指定一个镜像服务器的地址列表,通常是开启的,本例中加了注释符号禁用了,我们可以试试,
将$releasever和$basearch替换成自己对应的版本和架构,
例如10和i386,在<a href="http://www.it165.net/edu/ewl/" target="_blank" class="keylink">浏览器</a>中打开,
我们就能看到一长串镜可用的镜像服务器地址列表。 选择自己访问速度较快的镜像服务器地址复制并粘贴到repo文件中,我们就能获得较快的更新速度了,格式如下baseurl所示:
baseurl=
ftp://ftp.sfc.wide.ad.jp/pub/<a href="http://www.it165.net/os/oslin/" target="_blank" class="keylink">Linux</a>/Fedora/releases/10/Everything/i386/os
http://ftp.chg.ru/pub/<a href="http://www.it165.net/os/oslin/" target="_blank" class="keylink">Linux</a>/fedora/linux/releases/10/Everything/i386/os
http://ftp.yz.yamagata-u.ac.jp/pub/linux/fedora/linux/releases/10/Everything/i386/os
http://mirror.nus.edu.sg/fedora/releases/10/Everything/i386/os
http://mirror.yandex.ru/fedora/linux/releases/10/Everything/i386/os
http://ftp.twaren.net/Linux/Fedora/linux/releases/10/Everything/i386/os
http://ftp.itu.edu.tr/Mirror/Fedora/linux/releases/10/Everything/i386/os
enabled=1 #这个选项表示这个repo中定义的源是启用的,0为禁用21.
gpgcheck=1 #这个选项表示这个repo中下载的rpm将进行gpg的校验,已确定rpm包的来源是有效和安全的
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$basearch #定义用于校验的gpg密钥,就是数位签章的公钥档所在位置!23.
4、创建server.repo配置,添加本地仓库
vim /etc/yum.repos.d/server.repo
baseurl=file:///media/RHEL_5.9%20x86_64%20DVD/Server //空格用%20代替
yum仓库中的元数据文件:
、primary.xml.gz
a、所有RPM包的列表;
b、依赖关系;
c、每个RPM安装生成的文件列表; 、filelists.xml.gz
a、当前仓库中所有RPM包的所有文件列表;
、other.xml.gz
a、额外信息,RPM包的修改日志; 、repomd.xml
a、记录的是上面三个文件的时间戳和校验和; 、comps*.xml: RPM包分组信息
注意:
、红帽6把yum仓库的所有rpm放到一个目录下,但是把repodata放到另外一个目录下,所以repodata并不在挂载的目录下;
、使用yum仓库时,一定要指向repodata所在的目录
、红帽5的rpm包和repodata都放到同一个目录;而红帽6的rpm包和repodata不在同一个目录下
yum客户端操作
格式:yum [-y] 指令 [软件名]
list 查看软件包列表及安装状态
search 查看软件包名称或者描述重要关键字
info 查看软件包的说明信息,类似于rpm -qi
install 安装指定软件包,类似于rpm -i
update 升级指定软件包,类似于rpm -F
remove 卸载指定软件包,类似于rpm -e
provides 查看文件由那个包产生,类似于rpm -qf
--nogpgcheck 不验证gpg签名
yum clean all
yum -y localinstall 本地安装 [-y=yes] 本地无gpg公钥签名的安装
yum -y localinstall [安装包] --nogpgcheck list: 列表
支持glob
all
available:可用的,仓库中有但尚未安装的
installed: 已经安装的
updates: 可用的升级 repolist: 显示repo列表及其简要信息
all
enabled: 默认
disabled
软件组基本操作
yum
grouplist 查看软件组列表
groupinfo 查看软件组说明信息
groupinstall 安装指定软件组
groupupdate 升级软件组
groupremove 卸载软件组
清空本地yum缓存
1、适用于yum缓存存在错误时
-再次查询或更新时,会自动重建缓存
yum clean all //清空所有缓存
yum list //再次查询时更新
clean: 清理缓存
[ packages | headers | metadata | dbcache | all ]
搭建自定义yum源
.先安装createrepo软件包
yum -y install createrepo
.将搜集的*.rpm包文件集中到自定义的文件夹,例如:
mkdir /mydata
cp *.rpm /mydata
.使用createrepo生成仓库定义数据
createrepo /mydata
.配置/etc/yum.repos.d目录下的repo文件,注意把gpgcheck改为0,因为不是红帽认证的。
例子:
YUM高级配置
. 将rhel6. iso里面的软件全部拷贝到/data/rhel6
. mkdir /data/rhel6/nsd1409,把相应的rpm包拷贝进去
. 安装createrepo软件包
. createrepo /data/rhel6/nsd1409
. 修改yum客户端配置文件
[root@localhost ~]# cat /etc/yum.repos.d/rhel6..repo
[rhel-6.5]
name=Red Hat Enterprise Linux Server
baseurl=file:///data/rhel6/
enabled=
gpgcheck=
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[rhel-nsd1409]
name=Red Hat Enterprise Linux Nsd1409
baseurl=file:///data/rhel6/nsd1409
enabled=
gpgcheck=
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
. yum clean all
. yum list linuxqq
YUM 源优先级插件
Linux 发行版比较多,同时还有很多个人或组织维护了某些特定用途的安装/升级源。Yum Priorities 插件可以用来强制保护源。它通过给各个源设定不同的优先级,使得系统管理员可以将某些源(比如 Linux 发行版的官方源)设定为最高优先级,从而保证系统的稳定性(同时也可能无法更新到其它源上提供的软件最新版本)。
在控制台运行 Yum Priorities 安装指令
yum install yum-priorities
配置使用 Yum Priorities
1.使用熟悉的文本编辑器(如 vim)打开 Yum Priorities 配置文件 /etc/yum/pluginconf.d/priorities.conf
vim /etc/yum/pluginconf.d/priorities.conf
2.确保配置文件中包含下面的行
[main]
enabled=
保存并关闭该文件
3.打开 CentOS base 源配置文件 /etc/yum.repos.d/CentOS-Base.repo
将下面的文本分别添加到 Base, Updates, Addons, 和 Extras 这几个源记录的后面*
priority=
将下面的文本添加到 CentOSPlus 源记录的后面*
priority=
注意:
* 源记录(repository entry)是由 [ 和 ] 括起来的源名称。例如,Base 源记录就标记为 [base] 。
** 优先级由 ~ 的 个数表示, 的优先级最高。优先级小的源即使有某软件的较新版本,如果优先级高的源中没有,
在启用该插件的情况下,系统也无法安装/升级到该较新版本。图形界面的 YUM 工具一般默认就已经包含了优先级插件。
*** 要禁用 YUM 优先级功能,只需要在(.A.) /etc/yum/pluginconf.d/priorities.conf 中将 enable= 改为 enable= 即可。不建议!
本地yum源优先级比官网base源高,因此在yum安装包时,首先会在本地查找,没有找到才会去官网查找
备注:
、要使priority参数有效,必须安装yum-plugin-priorities插件
、N为整型数.默认优先级为99.数值越小优先级越高;
二、源码包的编译安装
1. 准备开发环境gcc、g++、make
2. 源码安装基本过程
tar 一般解包到/usr/src
./configure 配置,使用--prefix=/usr/local/软件名 指定安装位置
make 编译
make install 安装
三 源码包编译安装
深入研究编译
语言进行编译,一般进行如下步骤:
) 先检查程序代码中的语法是否正确 ) 将程序代码转换为机器码 ) 程序代码中如果使用其它的链接库的机器码,则链接之 ) 产生操作系统相关信息 ) 存储为可执行文件
链接
是把存储在链接库中的机器码存储到程序中,这样开发人员就不需要重复编写相同的程序代码,加快程序的开发速度。
链接分为:静态链接和动态链接
静态链接:
静态链接是包含给用户调用函数的集合,通常这些函数被其它程序调用的方法是,在程序编译时,把函数的执行代码写入到应用程序中。
使用ar工具生成,一般以.a作为库的文件名。
特点:
l
产生执行文件的体积较大 执行时需要较多内存空间 可独立使用
动态链接
编译程序时不会把链接库的机器码复制到程序中,而是存储执行文件执行时需要的哪个链接库、链接库版本等信息;当程序执行时,可根据文件中记载链接库信息,加载所需的链接库的机器码。
以“.so”作为库的文件名
特点:
体积较小 内存空间少 无法独立使用
查询执行文件的链接方法
[root@noc hello]# file /bin/ls /bin/ls: ELF -bit LSB executable, Intel , version (SYSV), for GNU/Linux 2.6., dynamically linked (uses shared libs), for GNU/Linux 2.6., stripped
看到:
dynamically linked:动态链接 static linked:静态链接
查询连接到的链接库
[root@noc hello]# ldd /usr/sbin/setup linux-gate.so. => (0x00323000) libnewt.so.0.52 => /usr/lib/libnewt.so.0.52 (0x001a4000) libc.so. => /lib/libc.so. (0x00686000) libslang.so. => /usr/lib/libslang.so. (0x001bf000) libm.so. => /lib/libm.so. (0x003a8000) /lib/ld-linux.so. (0x00178000) libdl.so. => /lib/libdl.so. (0x00d37000)
准备源代码编译环境
1、开源软件多使用C/C++语言开发
需要gcc、make等编译工具
#gcc --version
#g++ --version
#make --version
通过yum安装“开发工具”、“开发库”包组,可解决编译环境
前提:准备开发环境(编译环境)
编译安装的三步骤:
前提:准备开发环境(编译环境)
安装"Development Tools"和"Development Libraries"
RHEL5:"Development Tools"和"Development Libraries"
RHEL6::"Development Tools"和"Compatibility Libraries "
# tar
# cd
# ./configure
--help :获取脚本的使用格式
--prefix=/path/to/somewhere
--sysconfdir=/PATH/TO/CONFFILE_PATH
configure的功能:、让用户选定编译特性;、检查编译环境;
# make
# make install # tar xf tengine-1.4..tar.gz
# cd tegnine-1.4.
./configure -- help | less
# ./configure --prefix=/usr/local/tengine --conf-path=/etc/tengine/tengine.conf
# make
# make install
# /usr/local/tengine/sbin/nginx
加入出现要依赖PCRE库的解决方法:
a、在configure的过程中加上--without-http-rewrite_module
b、yum install pcre-devel 安装软件包的时候,如果把它安装在非默认路径,要注意:
、修改PATH环境变量,以能够识别此程序的二进制文件路径;
修改/etc/profile文件
在/etc/profile.d/目录建立一个以.sh为名称后缀的文件,在里面定义export PATH=$PATH:/path/to/somewhere
、默认情况下,系统搜索库文件的路径/lib, /usr/lib; 要增添额外搜寻路径:
在/etc/ld.so.conf.d/中创建以.conf为后缀名的文件,而后把要增添的路径直接写至此文件中;
# ldconfig 通知系统重新搜寻库文件
-v: 显示重新搜寻库的过程 要使用一个程序调用其它库时,都要使用include来包含这些 、头文件:输出给系统
默认:/usr/include
增添头文件搜寻路径,使用链接进行:
/usr/local/tengine/include/ /usr/include/
两种方式:
ln -s /usr/local/tengine/include/* /usr/include/ 或
ln -s /usr/local/tengine/include /usr/include/tengine
4、man文件路径:安装在--prefix指定的目录下的man目录;/usr/share/man
1、man -M /PATH/TO/MAN_DIR COMMAND
2、在/etc/man.config中添加一条MANPATH
编译安装的基本过程
make: 项目管理工具,能够把C程序的多个不同文件做成一个项目,并且把这个项目的编译过程通过一个配置文件来启动,这个配置文件叫makefile;
makefile: 定义了make(gcc,g++)按何种次序去编译这些源程序文件中的源程序 automake, --> makefile.in(半成品) --> makefile
autoconf, --> configure makefile的生成
automake:让程序的作者对自己的源程序做一个简单的定义,然后生成一个makefile的半成品(makefile.in),makefile无法跟用户交互;此时makefile.in还可以接受另外一个工具所生产的脚本(autoconf)做配置 autoconf:给项目生成一个脚本(configure)
configure:配置脚本如何定义
编译安装的基本过程
下载源码包后的安装步骤:
、tar解包,释放源代码至指定目录
、./configure配置,指定安装目录/功能模块等选项
、make编译,生成可执行的二进制程序文件
、make install安装,将编译好的文件复制到安装目录
解包
-使用tar解包,建议释放到/usr/src目录
-解包后位置:/usr/src软件名-版本号/
配置
-
使用源码目录下的configure脚本
执行“./configure --help”可以查看帮助
./configure --prefix=/usr/local/apache2【 --prefix安装指定路径命令】 【查看软件包里多一个Makefile文件就说明执行成功】
编译
执行make命令,如果编译出错,需要执行make clean再执行make
安装
执行 make install命令
参考:http://cnzhx.net/blog/yum-priorities/
http://www.it165.net/os/html/201409/9273.html
yum管理及源码安装的更多相关文章
- 06 swap命令,进程管理,rmp命令与yum命令,源码安装python
作业一: 1)开启Linux系统前添加一块大小为15G的SCSI硬盘 2)开启系统,右击桌面,打开终端 3)为新加的硬盘分区,一个主分区大小为5G,剩余空间给扩展分区,在扩展分区上划分1个逻辑分区,大 ...
- Linux基础--------监控系统、进程管理、软件包管理-------free、dd、kill、 rpm、yum、源码安装python
作业一:1) 开启Linux系统前添加一块大小为15G的SCSI硬盘 2) 开启系统,右击桌面,打开终端 3) 为新加的硬盘分区,一个主分区大小为5G,剩余空间给扩展分区,在扩展分区上划分1个逻辑分区 ...
- Linux基础(4)-硬盘分区、格式化及文件系统的管理、软件包的管理、yum管理RPM包和python的源码安装
一: 1) 开启Linux系统前添加一块大小为15G的SCSI硬盘 2) 开启系统,右击桌面,打开终端 3) 为新加的硬盘分区,一个主分区大小为5G,剩余空间给扩展分区,在扩展分区上划分1个逻辑 ...
- salt源码安装软件和yum安装软件
上面简单列出了源码安装的sls文件书写思路. 涉及到一些固定的思路:如, 1,拷贝 解压安装时候需要依赖tar.gz存在 如果已安装则无需再次安装. 2,启动脚本 加入chk时候需要文件存在,如果已添 ...
- 源码安装Nginx以及用systemctl管理
一.源码安装Nginx: 先安装gcc编译器(安装过的可以忽略) [root@localhost ~]# yum -y install gcc gcc-c++ wget 进入src目录 [root@l ...
- [svc]salt源码安装软件和yum安装软件
上面简单列出了源码安装的sls文件书写思路. 涉及到一些固定的思路:如, 1,拷贝 解压安装时候需要依赖tar.gz存在 如果已安装则无需再次安装. 2,启动脚本 加入chk时候需要文件存在,如果已添 ...
- linux 软件管理--yum工具及源码包
目录 linux 软件管理--yum工具及源码包 一.yum基本概述 二.yum源的配置 三.yum实践案例 四.yum全局配置文件 五.yum签名检查机制 五.制作本地yum仓库 六.构建企业级yu ...
- NFS, web,负载均衡,Nginx yum 源码安装
作业一:nginx服务1.二进制安装nginx 2.作为web服务修改配置文件 3.让配置生效,验证配置 [root@localhost ~]# systemctl stop firewalld.s ...
- 源码安装和yum安装的区别。
yum是将yum源中别人已经编译好的rpm包下载到本地,然后安装,不需要考虑依赖,主要是方便.源码安装没法人为的控制,安装的版本也很低. 源码安装需要自己编译,安装,编译过程中可以设置参数.可安装的版 ...
随机推荐
- 美国权威媒体CRN预测:2020年值得关注的10个新兴云计算趋势
云计算在过去一年里极速发展,其速度之快,让人难以预测未来会发生什么.即使依照这些趋势而新发明的技术在不断变化并且极其脆弱,而推动这些趋势和技术不断发展的企业和组织最终也很有可能发生变化,但不妨碍这些大 ...
- Prometheus + Grafana 部署说明之「安装」
说明 在前面的Prometheus学习系列文章里,大致介绍说明了Prometheus和Grafana的一些使用,现在开始介绍如何从头开始部署Prometheus+Grafana,来监控各个相关的指标数 ...
- 【题解】地精部落(DP)
[题解]地精部落(DP) 设\(f_i\)表示强制第一个是谷的合法方案数 转移枚举一个排列的最大值在哪里,就把序列分成了互不相干的两个部分,把其中\(i-1\choose j-1\)的数字分配给前面部 ...
- 洛谷$P$2522 $Problem\ b\ [HAOI2011]$ 莫比乌斯反演
正解:莫比乌斯反演 解题报告: 传送门! 首先看到这个显然就想到莫比乌斯反演$QwQ$? 就先瞎搞下呗$QwQ$ $gcd(x,y)=k$,即$gcd(\left \lfloor \frac{x}{k ...
- ResponsibilityChainPattern(责任链模式)-----Java/.Net
职责链模式(称责任链模式)将请求的处理对象像一条长链一般组合起来,形成一条对象链.请求并不知道具体执行请求的对象是哪一个,这样就实现了请求与处理对象之间的解耦
- 如何使用CSS3中的结构伪类选择器和伪元素选择器
结构伪类选择器介绍 结构伪类选择器是用来处理一些特殊的效果. 结构伪类选择器属性说明表 属性 描述 E:first-child 匹配E元素的第一个子元素. E:last-child 匹配E元素的最后一 ...
- 纯css 实现大白
首先是用html 语言来搭建框架 <!DOCTYPE html> <html lang="en"> <head> <meta charse ...
- JVM之GC(二)
昨天总结了GC之前要做的事情,今天介绍一下主流的GC算法. 先介绍一下几个名词: Stop The World(STW):JVM进行GC的时候总不能一边清理垃圾一边制造垃圾把,那么垃圾鉴定的准确性根本 ...
- 变量键盘读取、数组与宣告:read,array,declare
1.read 2.declare/typeset 宣告变量的类型 3.数组(array)变量类型 4.与文件系统及程序的限制关系:ulimit 限制用户的某些系统资源,包括,可以开启的文件的数量,可以 ...
- Spring工程报错
错误日志: 2014-09-24 10:50:16 [org.springframework.context.support.FileSystemXmlApplicationContext]-[INF ...