第八次课第七章预习笔记
第八次课预习内容
7.1 安装软件包的三种方法
7.2 rpm包介绍
7.3 rpm工具用法
7.4 yum工具用法
7.5 yum搭建本地仓库(视频中ppt小错误: gpcheck改为gpgcheck,yum cean 改为 yum clean)
7.6 yum更换国内源
7.7 yum下载rpm包
7.8/7.9 源码包安装
扩展
1. yum保留已经安装过的包 http://www.360doc.com/content/11/0218/15/4171006_94080041.shtml
2. 搭建局域网yum源 https://blog.csdn.net/miouqi/article/details/73159297
3. 把源码包打包成rpm包 https://jin-yang.github.io/post/linux-create-rpm-package.html
7.1 安装软件包的三种方法
widow 下载EXE文件下一步下一步 或自定义一下就完成了
linux 是二进制 文件 不能看内容, rpm第一种像widows EXE包
yum 另外一种工具,用phthon开发的一个工具,操作对象也是rpm包,比RPM工具的优势是自动的安装依赖的包,类似苹果手机的App Store。
源码包,widows没有这种安装方式,通过一种编译器把源码包,编译成识别的程序
yum最简单,源码包最难

7.2 rpm包介绍

首先打开虚拟机右下角 ,右击连接
[root@linux02 ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/cl-root 18G 1022M 17G 6% /
devtmpfs 478M 0 478M 0% /dev
tmpfs 489M 0 489M 0% /dev/shm
tmpfs 489M 6.7M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 197M 117M 81M 60% /boot
tmpfs 98M 0 98M 0% /run/user/0
[root@linux02 ~]# ls /mnt/
[root@linux02 ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
因为我们的光驱,光盘是只读的不能写东西
[root@linux02 ~]# cd /mnt/
[root@linux02 mnt]# ls
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
我们安装光盘光驱后就有这些目录,其中有个Packages
[root@linux02 Packages]# cd Packages/
[root@linux02 Packages]# ls 有很多rpm包文件,这些文件就是RPM包

从左到右可以划分为字符串(包名),-版本 (主次更小的或加修正版本号),发布版本号, 平台位数(32,64位) centos 7 不区分64 32位了
64位平台可以安装32位的包的,32位不能安装64位的, 最后是后缀名
7.3 rpm工具用法

iinstall v可视化 ,h 更人性化显示
[root@linux02 Packages]# rpm -ivh zsh-5.0.2-25.el7.x86_64.rpm
警告:zsh-5.0.2-25.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:zsh-5.0.2-25.el7 ################################# [100%]
升级一个RPM包
[root@linux02 Packages]# rpm -Uvh zsh-5.0.2-25.el7.x86_64.rpm
卸载一个RPM直接跟包名就可以
[root@linux02 Packages]# rpm -e zsh 什么不显示证明正常的,如果不正常会有错误提示
[root@linux02 Packages]# rpm -qa 查询到的都是我们安装过的包,不要随便卸载,像下面

有时候会提示先卸载依赖的包
[root@linux02 Packages]# rpm -q ppp 查询指定的包,如果安装了显示指定的包,如果没有安装显示未安装
ppp-2.4.5-33.el7.x86_64
[root@linux02 Packages]# rpm -q ppp11
未安装软件包 ppp11
[root@linux02 Packages]# rpm -qi ppp 查询包的详细信息
Name : ppp --名称
Version : 2.4.5 --版本
Release : 33.el7
Architecture: x86_64
Install Date: 2018年07月01日 星期日 20时49分47秒 ----安装时间
Group : System Environment/Daemons ----------组
Size : 872624 -----------大小
License : BSD and LGPLv2+ and GPLv2+ and Public Domain
Signature : RSA/SHA256, 2014年07月04日 星期五 12时34分15秒, Key ID 24c6a8a7f4a80eb5
Source RPM : ppp-2.4.5-33.el7.src.rpm
Build Date : 2014年06月10日 星期二 14时27分03秒
Build Host : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://www.samba.org/ppp
Summary : The Point-to-Point Protocol daemon
Description :
The ppp package contains the PPP (Point-to-Point Protocol) daemon and
documentation for PPP support. The PPP protocol provides a method for
transmitting datagrams over serial point-to-point links. PPP is
usually used to dial in to an ISP (Internet Service Provider) or other
organization over a modem and phone line.
[root@linux02 Packages]# rpm -ql ppp 列出安装的文件
/etc/logrotate.d
/etc/logrotate.d/ppp
/etc/pam.d/ppp
/etc/ppp
/etc/ppp/chap-secrets
/etc/ppp/eaptls-client
/etc/ppp/eaptls-server
/etc/ppp/options
/etc/ppp/pap-secrets
/usr/lib/tmpfiles.d/ppp.conf
[root@linux02 Packages]# rpm -qf /usr/share/doc/ppp-2.4.5/scripts/pon 可以查到这个路径是由谁安装的
ppp-2.4.5-33.el7.x86_64
[root@linux02 Packages]# rpm -qf `which ls` 因为which ls有两行我们查询的也是两行内容有一行不是路径,所以会提示这个
rpm: --color=auto': 未知的选项
[root@linux02 Packages]# which ls
alias ls='ls --color=auto'
/usr/bin/ls
[root@linux02 Packages]# rpm -qf `which cd` 因为which cd出来的结果就是路径所以可以用, 是用的反引号
bash-4.2.46-20.el7_2.x86_64
[root@linux02 Packages]# which cd
/usr/bin/cd
7.4 yum工具用法

安装一个包需要依赖,实际卸载一个包也需要依赖, 有个工具YUM是自动解决依赖关系的
[root@linux02 Packages]# yum install texlive
=
安装 1 软件包 (+223 依赖软件包)
总下载量:118 M
安装大小:226 M
如果一个个安装需要安装226个很累的很麻烦 ,所以它可以直接全面安装依赖的包
[root@linux02 Packages]# yum list 可以列出已经安装的包
名字加相关的信息, 中间列是版本号 及平台版本号, 最后是仓库名字,库名哪里来的

[root@linux02 Packages]# ls /etc/yum.repos.d/ 其中第一个文件是最核心的配置文件
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
[root@linux02 Packages]# ls /etc/yum.repos.d/CentOS-CR.repo
/etc/yum.repos.d/CentOS-CR.repo
[root@linux02 Packages]# cat /etc/yum.repos.d/CentOS-Base.repo
其中有段
[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-7
我们把这些包放在容器里,容器在仓库里,就在base里面的地址里找
[root@linux02 Packages]# yum search vim 可以搜索一个包可以搜到很多和vim相关的包 ,不太精准只要有vim都会出来

更精准一些,把yum list 的结果给后面
[root@linux02 Packages]# yum list |grep 'vim'
vim-minimal.x86_64 2:7.4.160-1.el7 @anaconda
protobuf-vim.x86_64 2.5.0-8.el7 base
vim-X11.x86_64 2:7.4.160-4.el7 base
vim-common.x86_64 2:7.4.160-4.el7 base
vim-enhanced.x86_64 2:7.4.160-4.el7 base
vim-filesystem.x86_64 2:7.4.160-4.el7 base
vim-minimal.x86_64 2:7.4.160-4.el7 base
[root@linux02 Packages]# yum grouplist 可用的组列出来
可用的环境分组:
最小安装
基础设施服务器
计算节点
文件及打印服务器
基本网页服务器
虚拟化主机
带 GUI 的服务器
GNOME 桌面
KDE Plasma Workspaces
开发及生成工作站
可用组:
传统 UNIX 兼容性
兼容性程序库
图形管理工具
安全性工具
开发工具
控制台互联网工具
智能卡支持
科学记数法支持
系统管理
系统管理工具
完成
当时我们选的最小化安装,所以当时没有安装其他组的系统,我们可以通过yum后期安装这些组的套件
yum groupinstll GNOME 桌面 等安装这些组可以
可以显示英文
[root@linux02 Packages]# LANG=en
[root@linux02 Packages]# yum grouplist
[root@linux02 Packages]# yum groupinstall 'KDE Plasma Workspaces' 如果这个组一个词组就可以不加符号,如果两个三个就得加单引号。这里我们不安装,只看下有多少组件,所以不加y
像[root@linux02 Packages]# yum remove ppp 卸载一个包,会把这个包的所有依赖的包一起卸载,很危险 ,所以我们选择不卸载
yum update 升级所有包,甚至包括系统,如果你安装6.5 他可以升级到6.9 ,如果安装7.0 他可以升到7.4, 加文件名就升级一个包
一般我们安装完系统后用这个命令,如果做了一些操作最好不要用这个命令
[root@linux02 Packages]# yum provides "/*/vim" 搜一个包是用什么安装,前提是不存在的没安装的包
7.5 yum搭建本地仓库

有时候yum不能用是因为不能连网,安装一个操作系统,yum不能连网,默认的参考是用网络连一个网站的资源,从这个网站下载rpm包 然后安装,
如果不能连网我们可以搭建一个本地的仓库,我们可以让他在本地找资源
首先由一个光盘 光驱 镜像文件,可以访问到这里面的RPM包
刚才我们已经挂载了一个光驱在mnt 下
下面会删除一些文件所以删除前做一些备份
[root@linux02 Packages]# cp -r /etc/yum.repos.d /etc/yum.repos.d.bak
[root@linux02 Packages]# cd /etc/yum.repos.d
[root@linux02 yum.repos.d]# ls
CentOS-Base.repo CentOS-Media.repo CentOS-fasttrack.repo
CentOS-CR.repo CentOS-Sources.repo
CentOS-Debuginfo.repo CentOS-Vault.repo
[root@linux02 yum.repos.d]# rm -rf ./*
[root@linux02 yum.repos.d]# vi dvd.repo
[dvd]
name=instll dvd
baseurl=file:///mnt
enable=1
gpcheck=0
~
rpm包在mnt下
是否可用,0是源不可以
最后一列是是否检测,我们不需要检测
[root@linux02 yum.repos.d]# yum clean all
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
Cleaning repos: dvd
Cleaning up everything
Cleaning up list of fastest mirrors
先做个清除
[root@linux02 yum.repos.d]# yum list
[root@linux02 yum.repos.d]# yum list|less 可以翻屏看 带@的说明已经安装过的,f可以一屏屏看 ,下面是可以安装的包
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Installed Packages
GeoIP.x86_64 1.5.0-11.el7 @anaconda
NetworkManager.x86_64 1:1.4.0-12.el7 @anaconda
NetworkManager-libnm.x86_64 1:1.4.0-12.el7 @anaconda
NetworkManager-team.x86_64 1:1.4.0-12.el7 @anaconda
NetworkManager-tui.x86_64 1:1.4.0-12.el7 @anaconda
NetworkManager-wifi.x86_64 1:1.4.0-12.el7 @anaconda
acl.x86_64 2.2.51-12.el7 @anaconda
aic94xx-firmware.noarch 30-6.el7 @anaconda
alsa-firmware.noarch 1.0.28-2.el7 @anaconda
alsa-lib.x86_64 1.1.1-1.el7 @anaconda
alsa-tools-firmware.x86_64 1.1.0-1.el7 @anaconda
atk.x86_64 2.14.0-1.el7 @anaconda
atkmm.x86_64 2.22.7-3.el7 @anaconda
audit.x86_64 2.6.5-3.el7 @anaconda
Available Packages
389-ds-base.x86_64 1.3.5.10-11.el7 dvd
389-ds-base-libs.x86_64 1.3.5.10-11.el7 dvd
ElectricFence.x86_64 2.2.2-39.el7 dvd
GConf2.x86_64 3.2.6-8.el7 dvd
ImageMagick.x86_64 6.7.8.9-15.el7_2 dvd
ImageMagick-c++.x86_64 6.7.8.9-15.el7_2 dvd
ImageMagick-perl.x86_64 6.7.8.9-15.el7_2 dvd
LibRaw.x86_64 0.14.8-5.el7.20120830git98d925 dvd
ModemManager.x86_64 1.6.0-2.el7 dvd
ModemManager-glib.x86_64 1.6.0-2.el7 dvd
[root@linux02 yum.repos.d]# yum install LibRaw
You have enabled checking of packages via GPG keys. This is a good thing.
However, you do not have any GPG public keys installed. You need to download
the keys for packages you wish to install and install them.
You can do that by running the command:
rpm --import public.gpg.key
网上找的先
[root@linux02 yum.repos.d]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[root@linux02 yum.repos.d]# yum install GConf2
方便使用本地yum仓库安装.
7.6 yum更换国内源

因为本身带的源是国外的,国内下载肯定很慢,所以我们像办法更换一个国内的源 ,首先把之前备份的那个文件恢复了
删掉我们创建的
[root@linux02 yum.repos.d]# rm -f dvd.repo
把之前备份拷贝回来
[root@linux02 yum.repos.d]# cp ../yum.repos,d.bak/* .
[root@linux02 yum.repos.d]# wget http://mirrors.163.com/.htlp/CentOS7-Base-163.repo
-bash: wget: 未找到命令
我们刚把yum命令删掉这下比较尴尬,那我们用另外一个命令安装wget
[root@linux02 yum.repos.d]# curl -O http://mirrors.163.com/.help/CentOS7-Base-163.repo
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1572 100 1572 0 0 21045 0 --:--:-- --:--:-- --:--:-- 21243
大写的O
[root@linux02 yum.repos.d]# ls
CentOS-CR.repo CentOS-Sources.repo CentOS7-Base-163.repo
CentOS-Debuginfo.repo CentOS-Vault.repo
CentOS-Media.repo CentOS-fasttrack.repo
[root@linux02 yum.repos.d]# vi CentOS7-Base-163.repo
其中有段库的介绍
[base]
name=CentOS-$releasever - Base - 163.com
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7
#released updates
[root@linux02 yum.repos.d]# yum list 是base库
zenity.x86_64 3.22.0-1.el7 base
zip.x86_64 3.0-11.el7 base
zlib.i686 1.2.7-17.el7 base
zlib-devel.i686 1.2.7-17.el7 base
zlib-devel.x86_64 1.2.7-17.el7 base
zlib-static.i686 1.2.7-17.el7 base
zlib-static.x86_64 1.2.7-17.el7 base
[root@linux02 yum.repos.d]# yum install zsh 看下不安装
有的同学怀疑是不是用的163.的源下面我们做个试验
[root@linux02 yum.repos.d]# mv CentOS7-Base-163.repo CentOS7-Base-163.repo.123
[root@linux02 yum.repos.d]# yum clean all 缓存清掉
[root@linux02 yum.repos.d]# yum install zsh
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
There are no enabled repos.
Run "yum repolist all" to see the repos you have.
To enable Red Hat Subscription Management repositories:
subscription-manager repos --enable <repo>
To enable custom repositories:
yum-config-manager --enable <repo>
报错了 然后恢复就可以正常安装了
[root@linux02 yum.repos.d]# mv CentOS7-Base-163.repo.123 CentOS7-Base-163.repo
[root@linux02 yum.repos.d]# yum repolist all

[root@linux02 yum.repos.d]# yum clean all
[root@linux02 yum.repos.d]# yum install zsh
[root@linux02 yum.repos.d]# yum install -y wget 这时候可以安装wget 了
Installed:
wget.x86_64 0:1.14-15.el7_4.1
7.7 yum下载rpm包

光一个基础源base不够用,有的好的包这个源没有,所以需要安装一个扩展源
默认的有7个文件这个目录
[root@linux02 yum.repos.d]# ls
CentOS-CR.repo CentOS-Sources.repo CentOS7-Base-163.repo
CentOS-Debuginfo.repo CentOS-Vault.repo
CentOS-Media.repo CentOS-fasttrack.repo
[root@linux02 yum.repos.d]# yum install -y epel-release
[root@linux02 yum.repos.d]# ls
CentOS-CR.repo CentOS-Sources.repo CentOS7-Base-163.repo
CentOS-Debuginfo.repo CentOS-Vault.repo epel-testing.repo
CentOS-Media.repo CentOS-fasttrack.repo epel.repo
装完后9个文件 我们看下他的核心内容
[root@linux02 yum.repos.d]# cat epel.repo 这个是官网的扩展源
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch/debug
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$base
[root@linux02 yum.repos.d]# yum list 可以看到两个源的包
yelp-xsl.noarch 3.20.1-1.el7 base
yelp-xsl-devel.noarch 3.20.1-1.el7 base
yersinia.x86_64 0.8.2-1.el7 epel
ykclient.x86_64 2.15-1.el7 epel
ykclient-devel.x86_64 2.15-1.el7 epel
ykpers.x86_64 1.19.0-1.el7 epel
ykpers-devel.x86_64 1.19.0-1.el7 epel
ykushcmd.x86_64 1.1.0-1.el7 epel
yourls.noarch 1.7.1-1.el7 epel
为了方便可这样看
[root@linux02 yum.repos.d]# yum list |grep epel

怎么样使用yum下载RPM包,网上RPM很多,虽然可以在光盘找到,但想repl 这些包在光盘是找不到的,但是我们还想要,想下载到本机,并且可以让其他机器用,怎么办呢 ,其实用的是yum一个插件
我们先确认是不是已经安装过了,我们想要下载的包
[root@linux02 yum.repos.d]# yum install zsh --downloadonly 第二行显示将会被安装 ,我们看下安装没
--> Running transaction check
---> Package zsh.x86_64 0:5.0.2-28.el7 will be installed
--> Finished Dependency Resolution
[root@linux02 yum.repos.d]# rpm -q zsh 没有安装 就是用这个插件 --downloadonly
package zsh is not installed
下载到哪里呢
[root@linux02 yum.repos.d]# ls /var/cache/yum/x86_64/7/
C7.0.1406-base C7.1.1503-fasttrack base-debuginfo extras
C7.0.1406-centosplus C7.1.1503-updates base-source extras-source
C7.0.1406-extras C7.2.1511-base c7-media fasttrack
C7.0.1406-fasttrack C7.2.1511-centosplus centosplus timedhosts
C7.0.1406-updates C7.2.1511-extras centosplus-source timedhosts.txt
C7.1.1503-base C7.2.1511-fasttrack cr updates
C7.1.1503-centosplus C7.2.1511-updates dvd updates-source
C7.1.1503-extras base epel
[root@linux02 yum.repos.d]# ls /var/cache/yum/x86_64/7/base/packages/ 这就是我们下载的包
zsh-5.0.2-28.el7.x86_64.rpm
[root@linux02 yum.repos.d]# yum install zsh --downloadonly --downloaddir=/tmp/ 可以指定路径下载
[root@linux02 yum.repos.d]# ls /tmp/
zsh-5.0.2-28.el7.x86_64.rpm
[root@linux02 yum.repos.d]# yum install ppp --downloadonly --downloaddir=/tmp/
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* epel: mirrors.tongji.edu.cn
Package ppp-2.4.5-33.el7.x86_64 already installed and latest version
Nothing to do
提示已经安装过了,如果就是想要那怎么办,最笨办法,卸载安装,会造成隐患
我们可以用下面的
[root@linux02 yum.repos.d]# yum reinstall ppp --downloadonly --downloaddir=/tmp/
[root@linux02 yum.repos.d]# ls /tmp/
ppp-2.4.5-33.el7.x86_64.rpm
7.8 源码包安装(上下)

以后源码包放在, 方便你我他大家方便管理
[root@linux02 yum.repos.d]# cd /usr/local/src/
[root@linux02 src]# wget http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.34.tar.gz
[root@linux02 src]# ls
httpd-2.4.34.tar.gz
[root@linux02 src]# tar -zxvf httpd-2.4.34.tar.gz
[root@linux02 src]# ls
httpd-2.4.34 httpd-2.4.34.tar.gz
[root@linux02 src]# cd httpd-2.4.34
[root@linux02 httpd-2.4.34]# ls 每个下载包都有一些说明的文件
ABOUT_APACHE LAYOUT ROADMAP configure.in libhttpd.dsp
Apache-apr2.dsw LICENSE VERSIONING docs libhttpd.mak
Apache.dsw Makefile.in acinclude.m4 emacs-style modules
BuildAll.dsp Makefile.win ap.d httpd.dep os
BuildBin.dsp NOTICE apache_probes.d httpd.dsp server
CHANGES NWGNUmakefile build httpd.mak srclib
CMakeLists.txt README buildconf httpd.spec support
INSTALL README.cmake config.layout include test
InstallBin.dsp README.platforms configure libhttpd.dep
[root@linux02 httpd-2.4.34]# cat README介绍apache 的
[root@linux02 httpd-2.4.34]# cat INSTALL 安装步骤
$ ./configure --prefix=PREFIX
$ make
$ make install
$ PREFIX/bin/apachectl start
那就直接安装吧
[root@linux02 httpd-2.4.34]# ./configure --prefix=/usr/local/apache2
checking for chosen layout... Apache
checking for working mkdir -p... yes
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... x86_64-pc-linux-gnu
configure:
configure: Configuring Apache Portable Runtime library...
configure:
checking for APR... no
configure: error: APR not found. Please read the documentation.
[root@linux02 httpd-2.4.34]# echo $?
1
如果非0表示上一个命令是错的
echo $?
make
echo $?
make install
会把编辑文件放到prefix指定的目录

浙公网安备 33010602011771号