yum
- yum: Yellowdog Update Modifier,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具
[root@Centos7~]#which yum
/usr/bin/yum
-
yum repository: yum repo,存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录repodata下)
http:// https:// ftp:// file://
-
yum客户端配置文件:
/etc/yum.conf:为所有仓库提供公共配置 /etc/yum.repos.d/*.repo:为仓库的指向提供配置
- yum软件的配置信息
yum的repo配置文件中可用的变量:
$releasever: 当前OS的发行版的主版本号
$arch: 平台,i386,i486,i586,x86_64等
$basearch:基础平台;i386, x86_64
$YUM0-$YUM9:自定义变量
[root@Centos7~]#cat /etc/yum.conf 查看yum的默认信息
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0 * 是否保留rpm文件*
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1 *检查rpm文件的完整性*
plugins=1
installonly_limit=5
# PUT YOUR REPOS HERE OR IN separate files named file.repo 新建文件后缀必须为 repo
# in /etc/yum.repos.d 新建立yum配置文件存放位置
yum.repos.d目录下默认存在的仓库指向配置文件
[root@Centos6yum.repos.d]#ls
CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo
CentOS-Debuginfo.repo CentOS-Media.repo
[root@Centos7/etc/yum.repos.d]#vim base.repo 文件后缀必须为.repo格式
[base]
name=Centos7.4 cdrom
baseurl=file:///misc/cd 挂载的源是光盘
gpgcheck=1
gpgkey=file:///misc/cd/RPM-GPG-KEY-CentOS-7
[epel] epel指向方式
name=epel
baseurl=http://172.18.0.1/epel/7/x86_64/
gpgcheck=0 0代表不检测安装文件的完整性
查看yum源挂载情况
[root@Centos7/etc/yum.repos.d]#yum repolist
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
源标识 源名称 状态
base Centos7.4 cdrom 9,591
epel epel 5,919
repolist: 15,510
查看yum缓存信息
[root@Centos6yum.repos.d]#du -sh /var/cache/yum
35M /var/cache/yum
清除 yum 本地缓存
yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
[root@Centos7/etc/yum.repos.d]#yum clean all
已加载插件:fastestmirror, langpacks
源 'base' 在配置文件中未指定名字,使用标识代替
正在清理软件源: base
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors
[root@Centos7/etc/yum.repos.d]#du -sh /var/cache/yum
4.0K /var/cache/yum
yum软件常出现异常的两个原因,一个仓库源的路径问题!
另外一个就是yum缓存的问题,出现异常检查路径及清除yum缓存!
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]
查看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 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 源。
- 例如:
- 如果是局域网情况,准备好需要的rpm等文件,简单搭建一个共享服务。
- 可以使用httpd 或者 vsftpd 软件来搭建。
- 把准备好的源文件(包含源数据及rpm安装包等文件)放到 /var/www/html 目录下或者
- /var/ftp/pub 目录下即可
- 对于建立的yum源目录管理,要单独建立。
[root@Centos7/var/ftp/pub]#mkdir centos/6/os/x86_64/ -pv mkdir: 已创建目录 "centos" mkdir: 已创建目录 "centos/6" mkdir: 已创建目录 "centos/6/os" mkdir: 已创建目录 "centos/6/os/x86_64/" [root@Centos7/var/ftp/pub]#tree . └── centos └── 6 └── os └── x86_64 4 directories, 0 files
- 将准备好的源文件全部下载到x86_64目录下既可以(由于目前学习阶段,就把光盘挂在到当前目录下即可)
[root@Centos7/var/ftp/pub]#df 文件系统 1K-块 已用 可用 已用% 挂载点 /dev/sda2 52403200 3597996 48805204 7% / devtmpfs 724776 0 724776 0% /dev tmpfs 739476 0 739476 0% /dev/shm tmpfs 739476 9216 730260 2% /run tmpfs 739476 0 739476 0% /sys/fs/cgroup /dev/sda3 20961280 32944 20928336 1% /app /dev/sda1 1247232 161556 1085676 13% /boot tmpfs 147896 8 147888 1% /run/user/0 /dev/sr0 3878870 3878870 0 100% /var/ftp/pub/centos/6/os/x86_64 [root@Centos7/var/ftp/pub]#df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda2 50G 3.5G 47G 7% / devtmpfs 708M 0 708M 0% /dev tmpfs 723M 0 723M 0% /dev/shm tmpfs 723M 9.0M 714M 2% /run tmpfs 723M 0 723M 0% /sys/fs/cgroup /dev/sda3 20G 33M 20G 1% /app /dev/sda1 1.2G 158M 1.1G 13% /boot tmpfs 145M 8.0K 145M 1% /run/user/0 /dev/sr0 3.7G 3.7G 0 100% /var/ftp/pub/centos/6/os/x86_64
启动ftp服务
[root@Centos7~]#systemctl start vsftpd
关闭防火墙命令
[root@Centos7~]#systemctl stop firewalld --------->(Centos 6 service iptables stop)
开机默认不开启防火墙命令
[root@Centos7~]#systemctl disable firewalld ------->(Centos6 chkconfig iptables off)
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
查看防火墙是否开启命令
[root@Centos7~]#iptables -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 byteskts bytes target prot opt inout source destination
关闭selinux 配置(修改为SELINUX=permissive)
[root@Centos7~]#cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
**SELINUX=enforcing**
[root@Centos7~]#getenforce
Permissive
- 客户端yum源设置
[root@Centos6yum.repos.d]#pwd /etc/yum.repos.d [root@Centos6yum.repos.d]#vim base.repo [base] name=ftp.centos6.9 base baseurl=ftp://172.18.7.77(服务器ip地址)/pub/centos/$releasever/os/$basearch/ gpgcheck=0
建立第三方软件安装包目录,在目录下生成目前安装软件的元文件等信息。
[root@Centos7/var/ftp/pub/app3]#createrepo . ---------> 在当前目录下生成当前所有软件的元文件 Saving Primary metadata Saving file lists metadata Saving other metadata Generating sqlite DBs Sqlite DBs complete [root@Centos7/var/ftp/pub/app3]#ls linux-4.13.16.tar.xz repodata ------------> repodata 为生成的元文件目录
- 系统光盘yum仓库
系统安装光盘作为本地yum仓库:
(1) 挂载光盘至某目录,例如/mnt/cdrommount /dev/cdrom /mnt/cdrom
(2) 创建配置文件
[CentOS7]
name=
baseurl=
gpgcheck=
enabled=创建yum仓库:
createrepo [options] <directory>
程序包编译
- 程序包编译安装:
- 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
-
开源程序源代码的获取:
官方自建站点:
apache.org (ASF:Apache Software Foundation)
mariadb.org
...
代码托管:
SourceForge.net
Github.com code.google.comc/c++编译器: gcc (GNU C Complier)
-
编译C源代码:
准备:
提供开发工具及开发环境
开发工具:make, gcc等 开发环境:开发库,头文件
glibc:标准库实现
通过“包组”提供开发组件
Development Tools
Server Platform Development -
httpd 软件编译安装
下载源码软件包
准备编译环境,安装包组yum groupinstall "Development Tools"
-
第一步:configure脚本
选项:指定安装位置、指定启用的特性
--help: 获取其支持使用的选项
选项分类:
安装路径设定:--prefix=/PATH: 指定默认安装位置,默认为/usr/local/
--sysconfdir=/PATH:配置文件安装位置
System types:支持交叉编译
Optional Features: 可选特性--disable-FEATURE
--enable-FEATURE[=ARG]Optional Packages: 可选包
--with-PACKAGE[=ARG],依赖包
--without-PACKAGE,禁用依赖关系注意:通常被编译操作依赖的程序包,需要安装此程序包的“开发”组件,其包名一般类似于name-devel-VERSION
-
第二步make -j 2
看提示补充安装相应的包例如:apr-devel apr-util-devel openssl-devel pcre-devel
- 第三步make install,配置运行环境
安装后的配置: 二进制程序目录导入至PATH环境变量中
编辑文件/etc/profile.d/NAME.shexport PATH=/PATH/TO/BIN:$PATH
导入库文件路径
编辑/etc/ld.so.conf.d/NAME.conf
添加新的库文件所在目录至此文件中
让系统重新生成缓存:ldconfig [-v]导入头文件 基于链接的方式实现:ln -sv
导入帮助手册编辑/etc/man.config|man_db.conf文件
添加一个MANPATH
来源:oschina
链接:https://my.oschina.net/u/4265528/blog/4293706