Linux程序包管理
API:Application Programming Interface
POSIX:Portable OS
程序源代码-->预处理-->编译-->汇编
静态编译:
共享编译:.so
ABI:Application Binary Interface
Windows与linux不兼容
库级别的虚拟化:
liunx:WINE
Windows:Cywin
静态和动态链接
链接主要作用是把各个模块之间相互引用的部分处理好,使得各个模块之间能
够正确地衔接,分为静态链接和动态链接
静态链接
把程序对应的依赖库复制一份到包
libxxx.a
嵌入程序包
升级难,需重新编译
占用较多空间,迁移容易
动态链接
只把依赖加做一个动态链接
libxxx.so
连接指向
占用较少空间,升级方便
系统级开发:
C
C++
应用级开发:
java
Python
php
二进制应用程序包的组成部分:
二进制文件、库文件、配置文件、帮助文件
程序包管理器:
debian:deb,dpt,dpkg包管理器
redhat:rpm,rpm
rpm:Redhat Package Manager
RPM is Package Manager
Gentoo
Archlinux
file命令:查看文件类型
开放源码:就是程序代码,写给人类看的程序语言,但机器并不认识,所以无法执行;
编译程序:将程序代码转译为机器看得懂的语言,就类似翻译者的角色;
可执行文件:经过编译程序变成二进制程序后,机器看的懂所以可以执行的文件;
函式库:就类似子程序的角色,可以被呼叫来执行的一段功能函数;
安装gcc等软件开发工具:
yum groupinstall 'Development Tools'
编译安装步骤:
解压:tar
./configure
make clean 非必要步骤
make
make install 安装到预定的目录中
ldconfig -p:列出目前有的所有函式库资料内容(在/etc/ld.so.cache内的资料!)
ldconfig [-f conf] [-C cache]
/etc/ld.so.conf
/etc/ld.co.cache
ldd:判断某个可执行的binary文件还有什么动态函式库
ldd [-vdr] [filename]
-v:列出所有内容信息;
-d:重新将资料有遗失的link点绣出来;
-r:将ELF有关的错误内容绣出来;
md5sum/sha1sum/sha256sum [-bct] filename
md5sum/sha1sum/sha256sum [--status|--warn] --check filename
-b:使用binary的读档方式,默认为Windows/DOS文件型态的读取方式;
-c:校验文件指纹;
-t:以文字型态来读取文件指纹;
包命名
源代码:name-VERSION.tar.gz
VERSION:major.minor.release
rpm包命名方式:
name-VERSION-release.ARCH.rpm
VERSION:major.minor.release
ARCH:release.os.arch
release.arch:
release:release.OS
常见的arch:
x86:i386,i486,i586,i686
x86_64:x64,x86_64,amd64
powerpc:ppc
跟平台无关:noarch
包工具
testapp:分类和拆包
testapp-VERSION-ARCH.rpm:主包
testapp-devel-VERSION-ARCH.rpm:开发子包
Application-utils-VERSION-ARHC.rpm 其它子包
Application-libs-VERSION-ARHC.rpm 其它子包
包之间:可能存在依赖关系,甚至循环依赖
X,Y,Z
解决依赖包管理工具:
yum:rpm包管理器的前端工具;
apt-get:deb包管理器前端工具;
zypper:suse上的rpm前端管理工具;
dnf:Fedora 22+ rpm包管理器前端管理工具;
库文件
查看二进制程序所依赖的库文件:
ldd /path/to/BINARY_FILE
管理及查看本机已经转载的库文件:
ldconfig:
-p:显示本机已经缓存的所有可用库文件及文件路径映射关系;
配置文件为:/etc/ld.so.conf /etc/ld.so.conf.d/*.conf
缓存文件:/etc/ld.so.cache
映射关系
配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
缓存文件:/etc/ld.so.cache
程序包管理:
功能:将编译好的应用程序的各组文件打包一个或几个程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作;
1、程序包文件的组成清单(每个包独有)
RPM包内的文件清单
RPM的元数据,如名称,版本,依赖性,描述等
安装或卸载时运行的脚本
2、数据库(公共)
程序包名称及版本
依赖关系
功能说明
安装生成的各文件的文件路径及校验码信息
管理程序包的方式:
使用包管理器:rpm
使用前端工具:yum,dnf
获取程序包的途径:
1、系统发版的光盘或官方的服务器:
CentOS镜像:
https://opsx.alibaba.com/mirror
http://mirrors.aliyun.com
http://mirrors.163.com/
http://mirrors.sohu.com/
2、项目官方站点
3、第三方组织:
Fedora-EPEL
Extra Packages for Enterprise Linux
Rpmforge:RHEL推荐,包很全
搜索引擎:
http://pkgs.org
http://rpmfind.net
http://rpm.pbone.net
https://sourceforge.net/
4、自己制作
建议:第三方包建议要检查其合法性,来源合法性,程序包的完整性
CentOS系统上rpm命令管理程序包:
安装、卸载、升级、查询、校验、数据库维护
安装:
rpm {-i|--install} [install-options] PACKAGE_FILE ...
rpm -ivh package_name
-i:install的意思
-v:verbose,查看更详细的安装信息画面
-vv:更详细的安装信息
-h:以#显示程序包管理执行进度:每个#表示2%的进度,以安装信息列显示安装进度
rpm -ivh PACKAGE_FILE ...
[install-options]
--test:测试安装,但不真正执行安装过程;dry run模式;
强制安装时的参数:
--nodeps:忽略依赖关系;
--replacepkgs:重新安装;重新安装某个已经安装过的软件!可使用这个选项来重复安装!
--replacefiles:如果在安装的过程当中出现了[某个文件已经被安装在你的系统上面]的信息,
又或许出现版本不合的讯息(confilcting files)时,可以使用这个参数来直接覆盖文件。
--nosignatue:不检查来源合法性;
--nodigest:不检查包完整性
--noscripts:不执行程序包脚本片段;
%pre:安装前脚本; --nopre
%post:安装后脚本; --nopost
%preun:卸载前脚本 --nopreun
%postun:卸载后脚本 --nopostun
升级:
-Uvh:如果没有安装过,系统将予以直接安装;如果有安装过旧版软件,则系统自动更新至新版;
-Fvh:只有安装在linux系统内的软件才会被升级;
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
upgrade:安装有旧版程序包,则“升级”;如果不存在旧版程序包,则“安装”;
freshen:安装有旧版程序包,则“升级”;如果不存在旧版程序包,则不执行升级操作;
rpm -Uvh PACKAGE_FILE ...
rpm -FVH PACKAGE_FILE ...
--oldpackage:降级;
--force:强制升级;这个参数其实就是 --replacefiles 与 --replacepkgs的综合体;
注意: 1、不要对内核做升级操作:linux支持多内核版本并存,因此,直接安装新版本内核;
2、如果原程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一配置文件并不会直接覆盖老版本的配置文件,
而把新版本的文件重命名(FILENAME,rpmnew)后保留;
查询:
rpm {-q|--query} [select-options] [query-options]
rpm -qa
rpm -q[lcdR] 已安装的软件名称
rpm -qf 存在于系统上面的某个文件名
rpm -qp[licdR] 未安装的某个文件名
-q:仅查询,后面接的软件名称是否有安装;
-qa:列出所有的,已经安装在本机Linux系统上面的所有软件名称;
-qi:列出该软件的详细信息(information),包含开发商、版本与说明等;
-ql:列出该软件所有的文件与目录所在完整文件名(list);
-qc:列出该软件的所有配置文件(找出在/etc/底下的档名而已);
-qd:列出该软件的所有说明文件(找出与man有关的文件而已);
-qR:列出与该软件有关的相依软件所含的文件(Required的意思);
-qf:由后面接的文件名,找出该文件属于哪一个已安装的软件;
-q --scripts:列出是否含有安装后需要执行的脚本档,可用以debug喔!
查询某个RPM文件内含有的信息:
-qp[icdlR]:注意-qp后面接的所有参数以上面的说明一致。但用途仅在于找出某个RPM文件内的信息,而非已安装的软件信息!注意!
[select-options]:
-a:所有包
-f:查询指定的文件由那个程序包安装生成
-p /PARH/TO/PACKAGE_FILE:针对尚未安装的程序包文件做查询操作;
--whatprovides CAPABILITY:查询指定的CAPABILITY由那个包所提供;
--whatrequires CAPABILITY:查询指定的CAPABILITY由那个包所依赖;
rpm2cpio 包文件|cpio –itv 预览包内文件
rpm2cpio 包文件|cpio –id “*.conf” 释放包内文件
[query-options]:
--changelog:查询rpm包的changelog;
-c:查询程序包的配置文件;
-d:查询程序的文档;
-i:information;
-l:查看指定的程序包安装后生成的所有文件;
--scripts:程序包自带的脚本片段;
-R:查询指定的程序包所依赖的CAPABILITY;
--provides:列出指定程序包所提供的CAPABILITY;
用法:
-qi PACKAGE,-qf FILE,-qc PACKAGE,-ql PACKAGE,-qd PACKAGE
-qpi PACKAGE_FILE,-qpl PACKAGE_FILE,...
-qa
卸载:rpm -e:移除,注意移除的依赖问题
rpm {-e|--erase} [--allmatches] [--justdb] [--nodeps] [--noscripts]
[--notriggers] [--test] PACKAGE_NAME ...
当包卸载时,对应的配置文件不会删除, 以FILENAME.rpmsave形式保留
校验:
rpm {-V|--verify} [select-options] [verify-options]
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
包来源合法性验证及完整性验证:
完整性检查:SHA256
来源合法性验证:RSA
公钥加密:
对称加密:加密、解密使用同意密钥
非对称加密:密钥是成对儿的,
public key:公钥,公开
secret key:私钥,不公开
导入所需要公钥:
rpm --import /PATH/FROM/GPG-PUBKEY-FILE
Centos 7发行版光盘提供的密钥文件:RPM-GPG-KEY-CentOS-7
rpm -K|checksig rpmfile 检查包的完整性和签名
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
CentOS 7发行版光盘提供:RPM-GPG-KEY-CentOS-7
rpm -qa “gpg-pubkey*”
数据库重建:
/var/lib/rpm/:目录,RPM文件被安装到系统上,该软件的信息就会被写入/var/lib/rpm/目录下的数据库文件中了
rpm {--initdb|--rebuilddb}
initdb:初始化
如果事先不存在数据库,则新建之;否则,不执行任何操作;
rebuilddb:重建数据库,重建已安装的包头的数据库索引目录(/var/lib/rpm/内的文件破损)
无论当前存在与否,直接重新创建数据库;
下面大括号的部分暂时未找到相关资料,建议暂时不要关注这部分内容
{
--prefix 新路径:
验证与数字签名(Verify/signature)
rpm -Va
rpm -V 已安装的软件名称
rpm -Vp 某个RPM文件的档名
rpm -Vf 在系统上面的某个文件
选项与参数:
-V:后面加的是软件名称,若该软件所含的文件被更动过,才会列出来;
-Va:列出目前系统上面所有可能被更动过的文件;
-Vp:后面加的是文件名,列出该软件内可能被更动过的文件;
-Vf:列出某个文件是否被更动过;
}
CentOS:yum,dnf
YUM:yellow dog,yellowdog update modifier
rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具
yum repository:yum repo
存储了众多rpm包,以及包的相关的元数据文件(放置于特定目录下:repodata):
文件服务器:
ftp://
http://
nfs://
file:///
yum客户端:
配置文件:
/etc/yum.conf:为所有仓库提供公共配置
/etc/yum.repos.d/*.repo:为仓库的指向提供配置
列出目前yum server所使用的软件库:yum repolist all 显示结果中最右边有写enabled才是有激活的。
修改软件库产生的问题与解决之道
由于使用的软件库版本有新旧之分,yum会先下载软件库的清单到本机的/var/cache/yum里面去!
注意:由于修改了网址却没有修改软件库名称(中括号内的文字),可能机会造成本机的列表与yum服务器的列表不同步,此时就会出现无法更新的问题了!
此时,需要清除掉本机上面的旧数据即可!
yum clean [packages|headers|all]
packages:将已下载的软件文件删除
headers :将下载的软件文件头删除
all :将所有软件库数据都删除
仓库的定义:
[repositoryid]
name=Some name for this repository
baseurl=url://path/to/repository/
enabled=[1|0]
gpgcheck=[1|0]
gpgkey=URL
enablegroups={1|0}
failovermethod={roundrobin|priority}
默认为roundrobin即随机挑选
priority:按顺序访问
cost=
开销数字,默认为1000
yum仓库
yum的repo配置文件中可用的变量:
$releasever: 当前OS的发行版的主版本号
$arch: 平台,i386,i486,i586,x86_64等
$basearch:基础平台;i386, x86_64
$YUM0-$YUM9:自定义变量
http://mirrors.magedu.com/centos/$releaserver/$basearch/os
示例:
http://server/centos/$releasever/$basearch/
http://server/centos/7/x86_64
http://server/centos/6/i386
yum源
阿里云repo文件
http://mirrors.aliyun.com/repo/
CentOS系统的yum源
阿里云:https://mirrors.aliyun.com/centos/$releasever/os/x86_64/
清华大学:https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/x86_64/
EPEL的yum源
阿里云:https://mirrors.aliyun.com/epel/$releasever/x86_64
阿里巴巴开源软件
https://opsx.alibaba.com/
yum-config-manager
生成172.16.0.1_cobbler_ks_mirror_CentOS-X-x86_64_.repo
yum-config-manager --add-repo= http://172.16.0.1/cobbler/ks_mirror/7/
yum-config-manager --disable “仓库名" 禁用仓库
yum-config-manager --enable “仓库名” 启用仓库
yum命令的用法:
yum [options] [command] [package ...]
yum [option] [查询工作项目] [相关参数]
* install package1 [package2] [...]
* update [package1] [package2] [...]
* update-to [package1] [package2] [...]
* update-minimal [package1] [package2] [...]
* check-update
* upgrade [package1] [package2] [...]
* upgrade-to [package1] [package2] [...]
* distribution-synchronization [package1] [package2] [...]
* remove | erase package1 [package2] [...]
* autoremove [package1] [...]
* list [...]
* info [...]
* provides | whatprovides feature1 [feature2] [...]
* clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
* makecache [fast]
* groups [...]
* search string1 [string2] [...]
* shell [filename]
* resolvedep dep1 [dep2] [...]
(maintained for legacy reasons only - use repoquery or yum provides)
* localinstall rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use install)
* localupdate rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use update)
* reinstall package1 [package2] [...]
* downgrade package1 [package2] [...]
* deplist package1 [package2] [...]
* repolist [all|enabled|disabled]
* repoinfo [all|enabled|disabled]
* repository-packages [package2] [...]
* version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]
* history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
* load-transaction [txfile]
* updateinfo [summary | list | info | remove-pkgs-ts | exclude-updates | exclude-all | check-running-ker‐
nel]
* fssnapshot [summary | list | have-space | create | delete]
* fs [filters | refilter | refilter-cleanup | du]
* check
* help [command]
显示仓库列表:
* repolist [all|enabled|disabled]
显示程序包:列出目前yum所管理的所有的软件名称与版本,有点类似rpm -qa;
* list [...]
yum list [all | glob_exp1] [glob_exp2] [...]
yum list available [glob_exp1] [...]
yum list updates [glob_exp1] [...]
yum list installed [glob_exp1] [...]
安装程序包:
* install package1 [package2] [...]
重新安装程序包:
* reinstall package1 [package2] [...]
升级程序包:
* update [package1] [package2] [...]
若要整个系统都升级,就直接update即可
降级:
* downgrade package1 [package2] [...]
检查可用升级:
* check-update
卸载程序包:移除功能
* remove | erase package1 [package2] [...]
查看程序包information 有点类似rpm -qai的执行结果;
* info [...]
查看指定的特性(可以使某文件)是由哪个程序包所提供:从文件去搜寻软件!类似rpm -qf的功能;
* provides | whatprovides feature1 [feature2] [...]
清理本地缓存:
* clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
构建缓存:
* makecache [fast]
搜索:搜寻某个软件名称或者是描述(description)的重要关键字;
* search string1 [string2] [...]
以指定的关键字搜索程序包名及summary信息;
查看指定包所依赖的capabilities:
* deplist package1 [package2] [...]
查看yum事务历史:
* history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
yum history undo 任务ID 撤销ID对应的任务
yum history redo 任务ID 重做ID对应的任务
安装及升级本地程序包:
* localinstall rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use install)
* localupdate rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use update)
包组管理的相关命令:
* groupinstall group1 [group2] [...]
* groupupdate group1 [group2] [...]
* grouplist [hidden] [groupwildcard] [...]
* groupremove group1 [group2] [...]
* groupinfo group1 [...]
如何使用光盘当做本地yum仓库:
1、挂载光盘至某目录,例如/media/cdrom
mount -r -t iso9660 /dev/cdrom /media/cdrom
2、创建设置文件
#注意[]中的名称不能有空格,如果有空格,使用yum repolist时会提示Bad id
[CentOS7]
name=
baseurl=
gpgcheck=
enabled=
yum的命令行选项:
--nogpgcheck:禁止进行gpg check;
-y:自动回答为“yes”;当yum要等待用户输入时,这个选项可以自动提供yes的响应;
-q:静默模式;
--disablerepo=repoidglob:临时禁用此处指定的repo;
--enablerepo=repoidglob:临时启用此处指定的repo;
--noplugins:禁用所有插件;
######## --installlroot=/some/path:将该软件安装在/some/path而不使用默认路径
创建yum仓库:
yum -y install createrepo
用法:
createrepo [options]
DNF:
DNF 介绍:新一代的RPM软件包管理器。DNF 发行日期是2015年5月11日,DNF 包管理器采用Python 编写,发行许可为GPL v2,首先出现在Fedora 18 发行版中。在 RHEL 8.0 版本正式取代了 YUM,DNF包管理器克服了YUM包管理器的一些瓶颈,提升了包括用户体验,内存占用,依赖分析,运行速度等
安装所需软件包,依赖epel源
wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/dnf-conf-0.6.4-2.sdl7.noarch.rpm
wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64//dnf-0.6.4-2.sdl7.noarch.rpm
wget http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/python-dnf-0.6.4-2.sdl7.noarch.rpm
yum install python-dnf-0.6.4-2.sdl7.noarch.rpm dnf-0.6.4-2.sdl7.noarch.rpm dnf-conf-0.6.4-2.sdl7.noarch.rpm
配置文件:/etc/dnf/dnf.conf
仓库文件:/etc/yum.repos.d/ *.repo
日志: /var/log/dnf.rpm.log
帮助:man dnf
dnf 用法:与yum一致
dnf [options] [...]
dnf --version
dnf repolist
dnf clean all
dnf makecache
dnf list installed
dnf list available
dnf search nano
dnf history
dnf history undo 1
程序包的编译安装:
testapp-VERSION-release.src.rpm --> 安装后,使用rpmbuild命令制作成二进制格式的rpm包,而后再安装;
源代码——预处理——编译(编译器gcc)——汇编——链接——执行
源代码组织格式:
多文件:文件中的代码之间,很可能存在跨文件依赖关系;
C、C++:make 项目管理器
make(configure脚本 --> Makefile.in --> makefile)
java:maven
C语言源代码编译安装三步骤:
./configure
a、通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及makefile.in文件生成makefile;
b、检查依赖到的外部环境;
make
根据makefile文件,构建应用程序
make install
复制文件到相应路径
开发工具:
autoconf:生成configure脚本;
automake:生成Makefile.in
建议:安装前查看INSTALL,README
开源程序源代码的获取:
官方自建站点;
apache.org(ASF:Apache Software Foundation))
mariadb.org
代码托管:
SourceForge
Github.com
code.google.com
c、c++编译器:gcc(GNU C Complier)
编译C源代码:
前提:提供开发工具及开发环境
开发工具:make,gcc等
开发环境:开发库,头文件
glibc:标准库
实现:通过“包组”提供开发组件
CentOS6:Development tools Server Platform Development
CentOS7:Development tools
生产实践:(基于最小化安装的系统)
yum install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel vim lrzsz tree screen lsof tcpdump wget ntpdate net-tools iotop bc zip unzip nfs-utils
编译安装:
第一步:configure脚本
选项:指定安装位置、指定启用的特性
--help:获取其支持的选项
选项分类:
安装路径设定:
--prefix=/path/to/somewhere:指定默认安装位置:默认为/usr/local
--sysconfdir=/path/to/somewhere:配置文件安装位置;
System types:支持交叉编译
Optional Features:可选特性
--disable-FEATURE
--enable-FEATURE[=ARG]
Optional Packages:可选包
--with-PACKAGE[=ARG] 依赖包
--without-PACKAGE 禁用依赖关系
注意:通常被编译操作依赖的程序包,需要安装此程序包的“开发”组件,其包名一般类似于name-devel-VERSION
第二步:make
第三步:make install
安装后的配置:
a、导出二进制程序目录至PATH环境变量中:
编辑/etc/profile.d/NAME.sh
export PATH=/PATH/TO/BIN:$PATH
b、导出库文件路径
编辑/etc/ld.so.conf.d/NAME.conf
添加新的库文件所在目录至此文件中;
让系统重新生成缓存:
ldconfig [-v]
c、导出头文件
基于链接的方式实现:
ln -sv
d、导出帮助手册
编辑/etc/man.config文件
添加一个MANPATH
练习:
1、yum的配置和使用:保罗yum repository的创建;
2、编译安装apache2.4;启动此服务;
博客作业:程序包管理:rpm、yum、编译
yum实验:
1、关闭selinux和firewalld
1.1、关闭selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
1.2、关闭firewalld
centos7:设置为开机禁止启动和关闭防火墙(重启的话不需要关闭也可以)
systemctl disable firewalld
systemctl stop firewalld
centos6:设置为开机禁止启动和关闭防火墙iptables(重启的话不需要关闭也可以)
chkconfig iptables off
service iptables stop
2、安装httpd
yum -y install httpd
浏览器可以访问即为成功
网站默认的存放目录为:
/var/www/html
根据阿里云等的源配置创建目录:mkdir -pv /var/www/html/centos/{6,7}/os/x86_64/
3、挂载centos7和centos6的光盘
注意在虚拟机中设置6和7的镜像后,如果无法识别,请执行以下命令
一般执行第一个中的host0即可,如果不行再执行host1,host2,执行完毕后,可以使用lsblk命令查看分区
echo '- - -' > /sys/class/scsi_host/host0/scan
echo '- - -' > /sys/class/scsi_host/host1/scan
echo '- - -' > /sys/class/scsi_host/host2/scan
光盘挂载
mount /dev/sr0 /var/www/html/centos/7/os/x86_64/
mount /dev/sr1 /var/www/html/centos/6/os/x86_64/
4、配置yum源
centos7:
备份/etc/yum.repos.d下的所有文件
mkdir /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup
创建/etc/yum.repos.d/base.repo文件
[Centos7]
name=Centos7
baseurl=http://192.168.41.151/centos/7/os/x86_64/
gpgcheck=0
centos6:
备份/etc/yum.repos.d下的所有文件
mkdir /etc/yum.repos.d/backup
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup
创建/etc/yum.repos.d/base.repo文件
[base]
name=base
baseurl=http://192.168.41.151/centos/6/os/x86_64/
gpgcheck=0
配置完成后,使用yum repolist查看是否成功。
扩展:
一、配置yum源
1、yum源配置:以centos7为例
编辑/etc/yum.repos.d/base.repo文件,注意baseurl的位置
[Centos7]
name=Centos7
baseurl=file:///var/www/html/centos/7/os/x86_64/
http://192.168.41.151/centos/7/os/x86_64/
gpgcheck=0
2:创建一个文件
vim /root/yumlise.txt
内容如下:
file:///var/www/html/centos/7/os/x86_64/
http://192.168.41.151/centos/7/os/x86_64/
修改/etc/yum.repos.d/base.repo文件,使用mirrorlist配置
[Centos7]
name=Centos7
#baseurl=file:///var/www/html/centos/7/os/x86_64/
http://192.168.41.151/centos/7/os/x86_64/
mirrorlist=file:///root/yumlise.txt
gpgcheck=0
注意:
删除虚拟除了eth0、ens33、lo之外的等其他网卡
yum remove libvirt-daemon
类似pan0的需要设置虚拟机USB设备中与蓝牙有关的选项取消勾选
二、强制卸载rpm还原方法
rpm -e rpm --nodeps:忽略依赖关系,强制卸载
虚拟机启动滚动条按ESC键一次,只能按一次,否则不能进入选择CD-ROM的界面
选择cd-rom启动后,进入营救模式,输入1继续
键入rpm命令看是否能否使用,继续查看光盘是否挂载没,如果没有挂载,请重新挂载
重新安装rpm:需要使用--root参数指定root根目录的位置
rpm -ivh /run/install/repo/Packages/rpm-4.11.3-35.el7.x86_64.rpm --root=/mnt/sysimage/