yum
YUM: Yellowdog Update Modifier,rpm的前端程序,用来解决软件包相关依赖性,可以在多个库之间定位软件包,up2date的替代工具
yum repository: yum repo,存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下)
yum对软件包的管理机制
—–引用了鸟哥linux私房菜的图
yum配置文件
yum客户端配置文件:
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置
仓库指向的定义格式:
[repositoryID]
name=Some name for this repository
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch= $basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
enabled={1|0}
gpgcheck={1|0}————-(相当于rpm -K 查找钥匙!)
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
enablegroups={1|0}
failovermethod={roundrobin|priority}
默认为:roundrobin,意为随机挑选;
cost= 默认为1000
意义:
-
[base]:代表容器的名字!中刮号一定要存在,里面的名称则可以随意取。但是不能有两个相同的容器名称, 否则 yum 会不知道得该到哪里去找容器相关软件列表档案。
-
name:只是说明一下这个容器的意义而已,重要性不高!
-
mirrorlist=:这个的意思是指定多个baseurl的文件路径,就能使用多个baseurl了;
-
baseurl=:这个最重要,因为后面接的就是容器的实际网址! mirrorlist 是由 yum 程序自行去捉映像站台, baseurl 则是指定固定的一个容器网址!我们刚刚找到的网址放到这里来啦!
-
enable=1:就是让这个容器被启动。如果不想启动可以使用 enable=0 !
-
gpgcheck=1:还记得 RPM 的数字签名吗?这就是指定是否需要查阅 RPM 档案内的数字签名!
-
gpgkey=:就是数字签名的公钥文件所在位置!使用默认值即可
其中 baseurl= 所指定的文件路径有三种
文件服务器:
ftp://
http://
file:/// —————(最后一个表示根/的意思)
注意在配置yum仓库的时候要到 /etc/yum.repos.d/ 里面 新建一个 *.repo 文件,然后把里面其他的 .repo 文件移走。这样才能使用你所配置的yum仓库文件。(文件不能有错误)!!
yum-config-manager —-一个能直接生成yum仓库 .repo的命令
生成 172.16.0.1_cobbler_ks_mirror_CentOS-X86_64_.repo
yum-config-manager –add-repo= http://172.16.0.1/cobbler/ks_mirror/CentOS-Xx86_64/
-
yum-config-manager –disable “仓库名" 禁用仓库
-
yum-config-manager –enable “仓库名” 启用仓库
yum命令用法
语法:yum [options] [command] [package …]
安装: install package1 [package2] […]
install :后面接要安装的软件!
重新安装:reinstall package1 [package2] […] (重新安装)
update :后面接要升级的软件,若要整个系统都升级,就直接 update 即可
显示程序包:yum list [all | glob_exp1] [glob_exp2] […]
list :列出目前 yum 所管理的所有的软件名称不版本,有点类似 rpm -qa;
显示仓库列表: repolist [all|enabled|disabled]
升级程序包:
update [package1] [package2] […]
downgrade package1 [package2] […] (降级
检查可用升级:yum check-update
卸载程序包: remove | erase package1 [package2] […]
卸载时也会把依赖于此的包也会卸载
查看程序包information:
info […] 类似 rpm -qai 的执行结果;
查看指定的特性(可以是某文件)是由哪个程序包所提供:provides | whatprovides feature1 [feature2] […]
provides:仍档案去搜寻软件!类似 rpm -qf 的功能!
搜索:search string1 [string2] […]
以指定的关键字搜索程序包名及summary信息
查看指定包所依赖的capabilities:
deplist package1 [package2] […]
清理本地缓存:clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
root@www ~]# yum clean [packages|headers|all]
选项
packages:将已下载的软件档案删除
headers :将下载的软件文件头删除
all :将所有容器数据都删除!
构建缓存:
makecache
其他一些选项
-
-y :当 yum 要等待用户输入时,这个选项可以自动提供 yes 的响应;
-
–nogpgcheck:禁止进行gpg check
-
-q:静默模式
-
–disablerepo=repoidglob:临时禁用此处指定的repo
-
–enablerepo=repoidglob:临时启用此处指定的repo
-
–noplugins:禁用所有插件
例如列出 yum 服务器上面提供的所有软件名称
[root@www ~]# yum list Installed Packages <==已安装软件 Deployment_Guide-en-US.noarch 5.2-9.el5.centos installed Deployment_Guide-zh-CN.noarch 5.2-9.el5.centos installed Deployment_Guide-zh-TW.noarch 5.2-9.el5.centos installed ....(中间省略).... Available Packages <==还可以安装的其他软件 Cluster_Administration-as-IN.noarch 5.2-1.el5.centos base Cluster_Administration-bn-IN.noarch 5.2-1.el5.centos base ....(底下省略).... # 上面提供的意丿为:『 软件名称 版本 在那个容器内 』
列出目前服务器上可供本机进行升级的软件有哪些?
[root@www ~]# yum list updates <==一定要是 updates ! Updated Packages Deployment_Guide-en-US.noarch 5.2-11.el5.centos base Deployment_Guide-zh-CN.noarch 5.2-11.el5.centos base Deployment_Guide-zh-TW.noarch 5.2-11.el5.centos base # 上面就列出在那个容器内可以提供升级的软件不版本!
列出提供 passwd 这个档案的软件有哪些
[root@www ~]# yum provides passwd passwd.i386 : The passwd utility for setting/changing passwords using PAM passwd.i386 : The passwd utility for setting/changing passwords using PAM # 就是上面的这个软件提供了 passwd 这个程序!
删除已下载过的所有容器的相关数据 (含软件本身与列表)
[root@www ~]# yum clean all
如何使用光盘当作本地yum仓库:
(1) 挂载光盘至某目录,例如/media/cdrom
# mount /dev/cdrom /media/cdrom(2) 创建配置文件
[CentOS7]
name=
baseurl=
gpgcheck=
enabled=
高级yum使用
包组管理的相关命令:
语法 :[root@www ~]# yum [群组功能] [软件群组]
选项:
-
grouplist :列出所有可使用的『套件组』,例如 Development Tools 之类的;
-
groupinfo :后面接 group_name,则可了解该 group 内含有的所有套件名;
-
groupinstall:这个好用!可以安装一整组的套件群组!
-
groupremove :移除某个套件群组;
例:查阅目前容器不本机上面的可用与安装过的软件群组有哪些? [root@www ~]# yum grouplist Installed Groups: Office/Productivity Editors System Tools ....(中间省略).... Available Groups: Tomboy Cluster Storage Engineering and Scientific
查看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
安装及升级本地程序包:
localinstall rpmfile1 [rpmfile2] […]
(用install替代)
localupdate rpmfile1 [rpmfile2] […]
(用update替代)
yum 的 repo 配置文件中可用的变量
$releasever : 当前OS的发型版的主版本号 $arch : 平台(x86_64 i386) $basearch :基础平台 内置自定义变量 $YUM0--YUM9 从网上ftp下载时 lftp 网址 在这里面!mkdir --- !表示用shell内部的命令 lcd 表示用本地shell的cd命令 mget 文件名 表示下载该文件
yum仓库
yum的repo配置文件中可用的变量:
$releasever: 当前OS的发行版的主版本号
$arch: 平台,i386,i486,i586,x86_64等
$basearch:基础平台;i386
$YUM0-$YUM9:自定义变量
实例:
http://server/centos/$releasever/$basearch/
http://server/centos/7/x86_64
http://server/centos/6/i384
创建yum仓库:
createrepo [options] 要创建的仓库的目录所在位置
1 、 把要用的软件包下载到本地 , 自建一个目录
2 、 用 createrepo 后面加上这个目录名,就可以得出生成的软件的元数据。
3 、 把此目录设置成软件baseurl 的地址。
4 、 设置好了以后用 yum repolist 或者 yum makecache
生成一下列表就可以使用了!
程序包编译
程序包编译安装:
Application-VERSION-release.src.rpm –> 安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装
src————》这种得就表示是源码包!
-
源代码–>预处理–>编译(gcc)–>汇编–>链接–>执行
-
源代码组织格式:
多文件:文件中的代码之间,很可能存在跨文件依赖关系
C、C++:make (项目管理器,configure –> Makefile.in –> makefile)
java: maven
makefile.in文件就是一个makefile的模板
configure脚本用处就是允许用户传递参数用来自定义安装位置等信息,编译参数,启用特性,安装位置!
此脚本运行能结合 Makefile.in 文件,用来生成makefile
编译安装
C代码编译安装三步骤:
-
1、./configure:
-
(1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及makefile.in文件生成makefile
-
(2) 检查依赖到的外部环境
-
2、make:依赖于makefile文件,构建应用程序,它只是一个项目管理工具,
-
3、make install:复制文件到相应路径
注意:make自己不是编译器,它是调用类似 gcc 编译器来完成功能的
开发工具:
有可能configure脚本不会给你下面的命令就是解决这个问题的
autoconf: 生成configure脚本
automake:生成Makefile.in
注意:安装前查看INSTALL,README
开源程序源代码的获取:
官方自建站点:
apache.org (ASF)
mariadb.org
…
代码托管:
SourceForge.net
Github.com
code.google.com
c/c++编译器: gcc (GNU C Complier)
编译C源代码
前提:
-
提供开发工具及开发环境
-
开发工具:make, gcc等
-
开发环境:开发库,头文件
-
glibc:标准库
通过“包组”提供开发组件
CentOS 6: "Development Tools"
Centos 7: "Server Platform Development"
编译安装
第一步:configure脚本
选项:指定安装位置、指定启用的特性
–help: 获取其支持使用的选项
选项分类:
安装路径设定:
–prefix=/PATH: 指定默认安装位置,默认为/usr/local/
–sysconfdir=/PATH:配置文件安装位置
System types:支持交叉编译
Optional Features: 可选特性
–disable-FEATURE
–enable-FEATURE[=ARG]
Optional Packages: 可选包,
–with-PACKAGE[=ARG],依赖包
–without-PACKAGE,禁用依赖关系
第二步:make
第三步:make install
安装后的配置:
(1) 二进制程序目录导入至PATH环境变量中;
编辑文件/etc/profile.d/NAME.sh
export PATH=/PATH/TO/BIN:$PATH
(2) 导入库文件路径
编辑/etc/ld.so.conf.d/NAME.conf
添加新的库文件所在目录至此文件中
让系统重新生成缓存:
ldconfig [-v]
两个问题:
1、把rpm软件、内核不小心删除怎么恢复
[root@qzx ~]# rpm -e kernel --nodeps grubby fatal error: unable to find a suitable template grubby: doing this would leave no kernel entries. Not writing out new config. warning: erase unlink of /lib/modules/2.6.32-642.el6.x86_64/weak-updates failed: No such file or directory warning: erase unlink of /lib/modules/2.6.32-642.el6.x86_64/modules.order failed: No such file or directory [root@qzx yum.repos.d]# rpm -e rpm --nodeps [root@qzx yum.repos.d]# yum list
进光盘救援模式恢复
以下是CentOs 6演示
开机就快按 esc 进入上图模式
进入修复模式
回车下一步,语言键盘默认就好
这个是设置网络,不用设置,no
继续
直接下一步
默认,就选第一个打开一个shell
在此中用rpm把删的文件重新装回原来系统即可,这一步centos6&7都通用,7就是前面不太相同
寻找故障模式
进入修复模式
输入 1 继续
这句话就是要打开一个shell 回车就行
后边的和centos6就一样了
2、编译安装apache服务
1、先从网上下载要安装的程序包
httpd-2.2.29.tar.bz2
2、解压文件
tar xvf httpd-2.2.29.tar.bz2
3、查看INSTALL文件
cd 到 httpd-2.2.29 文件中
cat INSTALL 文件
可以看到
For complete installation documentation, see [ht]docs/manual/install.html or http://httpd.apache.org/docs/2.2/install.html $ ./configure --prefix=PREFIX $ make $ make install $ PREFIX/bin/apachectl start
对于此中提到的 configure 文件的选项可以用 configure –help来查看
Fine tuning of the installation directories:---指定安装路径的
4、指明安装路径./configure –prefix=PREFIX
我这里写的是 /testdir/Apache
5、make(make后可以用 du -sh 查看 会发现变大了许多)
6、make install
安装完成就可以看到生成的文件了
[root@qzx httpd-2.2.29]# cd /testdir/Apache/ [root@qzx Apache]# ls bin build cgi-bin conf error htdocs icons include lib logs man manual modules
7、开启
到bin目录下 有一个 apachectl 文件,此文件就控制着apache的工作
[root@qzx bin]# ./apachectl start httpd: apr_sockaddr_info_get() failed for qzx.centos6.8 httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
用 netstat -tan 查看 :80 端口是否开启
如果开启就表示服务已经运行。
或者 links 10.1.253.75
如果不成功表示有可能防火墙没关
telnet 10.1.253.75 80
ping这个端口
不能连上表示可能防火墙没关
关闭防火墙命令
iptables -F
8、安装后补充
-
(1)、导出二进制程序目录至环境变量 PATH中;
-
export PATH=/testdir/Apache/bin:$PATH
-
编辑配置文件 /etc/profile.d/apache.sh(创建程序名.sh)
-
(2)、由于不是默认安装,所以要导出库路径
-
ldconfig [-v]
-
添加新的库文件所在目录至此文件中 即在文件中写 /testdir/Apache/lib
-
编辑 /etc/ld.so.conf.d/apache.conf
-
让系统重新生成缓存:
-
(3)、导出头文件(创建连接)
-
ln -sv /testdir/Apache/include /usr/include/apach
-
由于默认是include 文件下,而安装后是安装在当前路径下所以要导出到 /usr/include下
-
(4)、导出帮助手册
-
添加即可
-
编辑/etc/man.config文件
# MANPATH /testdir/Apache/man
原创文章,作者:qzx,如若转载,请注明出处:http://www.178linux.com/39971
评论列表(1条)
内容整体很完整,有理论有操作,突显用心;整篇博客还是能让人看到很多专业性所在,还能看出很用心的地方,革命尚未成功,同志仍需努力啊,加油!