第八次课第七章预习笔记

第八次课预习内容
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指定的目录

 

posted @ 2018-08-11 14:28  Linux操作系统爱好者  阅读(155)  评论(0)    收藏  举报