linux软件管理:centos7配置本地yum仓库安装wireshark,wget/配置epel仓库安装nginx/源码安装nginx/ubuntu1604安装wireshark/制作本地yum仓库

4:软件管理

4.0 实验原理

  • 通过手动制作一个软件仓库来了解软件仓库的工作原理,拷贝命令如下:
cp -rf /media/cd/Packages /data/centos7

如果单单使用/media/cd/Packages里面的rpm包集合,是不能形成一个完整的软件仓库,我们还需使用createrepo工具,将所有的包进行统计,生成一张“数据清单”,以xml等文件形式存放在生成的repodata目录下。这份“清单”整理了每个Packages目录下每个rpm软件包的基本信息:版本号,conf文件,依赖信息,描述每个rpm包的spec文件中的信息。(对服务器而言,这个repodata文件夹一般存放在与rpm包目录同级的目录里)

  • RPM/YUM

​ RPM/YUM两个都是适用于红帽系统的软件包管理工具(管理包括:软件的安装、查询、更新、卸载),但是RPM只能管理单个软件包,解决不了冗余的软件依赖问题,即:我安装某个软件包必须要先安装这个软件包所需要依赖的其他软件包,这还没有算入其他的软件包的安装还需要其他的什么依赖。基于这样的痛点,YUM管理工具就诞生了。

​ YUM软件仓库包括了:诸多.rpm格式软件包、repodata:软件列表文件、软件依赖性文件、软件包组列表文件。

​ YUM整理了软件包所需要的相关的依赖性软件包的元数据,再调用RPM的命令对一整个软件进行有顺序先后的安装,这个过程就已经解决了安装依赖性问题。

  • 缓存清理与仓库更新(centos7客户端)
yum clean all #对客户端而言,清理的是缓存在本地的旧repodata,路径在/var/cache/yum/x86_64/7
yum repolist  #根据/etc/yum.repo.d/*下的配置文件,从本地仓库或者镜像网站加载repodata相关文件到缓存区域里↑

4.1.配置本地yum仓库安装wireshark,wget

执行顺序:光盘挂载到本地->配置本地仓库文件->安装软件

Tip:手动安装的软件,卸载过程时候不能用yum命令,需要手动删除对应的安装目录以此达到卸载软件的目的

  • 光盘挂载到本地

    1. media目录下创建cd目录
    [root@ ~ 09:20:55]#cd /
    [root@ / 09:20:56]#mkdir -p /media/cd 
    [root@ / 09:34:56]#ls /media
    

    mkdir命令的-p选项可以一次操作多级文件夹

    1. 将光盘一整个文件系统挂载在/media/cd目录下,查看磁盘使用情况,查看挂载目录
    [root@ / 09:35:03]#mount -t iso9660 /dev/cdrom /media/cd   
    //挂载 -t指定文件系统类型,iso9660是标准的CD件格式
    mount: /dev/sr0 is write-protected, mounting read-only
    [root@ / 09:42:40]#df
    Filesystem     1K-blocks    Used Available Use% Mounted on
    /dev/sda2       10190100 1303756   8345672  14% /
    devtmpfs          488148       0    488148   0% /dev
    tmpfs             498976       0    498976   0% /dev/shm
    tmpfs             498976    7796    491180   2% /run
    tmpfs             498976       0    498976   0% /sys/fs/cgroup
    /dev/sda1         194235   94352     85547  53% /boot
    tmpfs              99796       0     99796   0% /run/user/0
    /dev/sr0         4364408 4364408         0 100% /media/cd
    [root@ / 09:42:44]#ls /media/cd
    CentOS_BuildTag  images    repodata
    EFI              isolinux  RPM-GPG-KEY-CentOS-7
    EULA             LiveOS    RPM-GPG-KEY-CentOS-Testing-7
    GPL              Packages  TRANS.TBL
    
  • 配置本地仓库文件

  1. 先删除默认仓库配置
[root@ / 09:44:34]#rm -rf /etc/yum.repos.d/*   //-f force强制删除 -r 递归删除
[root@ / 09:49:18]#ls /etc/yum.repos.d/
[root@ / 09:49:44]#
  1. 创建一个仓库配置文件,保存
[root@ / 09:49:44]#vim /etc/yum.repos.d/pinglinglab.repo
[localrepo]
name=This is a REPO from CDROM.
baseurl=file:///media/cd
gpgcheck=0
enabled=1
//注意:baseurl=协议+路径,字母不要写错
[tsinghuarepo]
name=This is a REPO from TsinghuaMirrorStation.
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos7/os/x86_6
    4/
gpgcheck=0
enabled=1
  1. 清理上个仓库的缓存文件并查看新的仓库信息
[root@ / 09:58:36]#yum clean all
Loaded plugins: fastestmirror
Cleaning repos: localrepo tsinghuarepo
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@ / 10:02:12]#yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
localrepo                                 | 3.6 kB     00:00     
tsinghuarepo                              | 3.6 kB     00:00     
(1/3): localrepo/group_gz                   | 166 kB   00:00     
(2/3): tsinghuarepo/group_gz                | 153 kB   00:00     
(3/3): tsinghuarepo/primary_db              | 6.1 MB   00:04     
repo id       repo name                                    status
localrepo     This is a REPO from CDROM.                    3,971
tsinghuarepo  This is a REPO from TsinghuaMirrorStation.   10,070
repolist: 14,041

  • 安装wireshark,wget,并用rpm命令查看软件包的安装情况
[root@ / 10:02:21]#yum -y install wget  //-y yes
...#此处省略安装过程
Installed:
  wget.x86_64 0:1.14-18.el7_6.1                                  
Complete!
[root@ / 10:05:07]#yum -y install wireshark
...#此处省略安装过程
Installed:
  wireshark.x86_64 0:1.10.14-24.el7                        
Dependency Installed:
  c-ares.x86_64 0:1.10.0-3.el7    gnutls.x86_64 0:3.3.29-9.el7_6 
  libpcap.x86_64 14:1.5.3-12.el7  libsmi.x86_64 0:0.4.8-13.el7   
  nettle.x86_64 0:2.7.1-8.el7     trousers.x86_64 0:0.3.14-2.el7 

Complete!
[root@ / 10:05:39]#rpm -qa wget
wget-1.14-18.el7_6.1.x86_64
[root@ / 10:09:01]#rpm -qa wireshark
wireshark-1.10.14-24.el7.x86_64

4.2 配置epel仓库,安装nginx

  • 查看本地仓库是否有epel仓库
[root@ / 10:27:07]#yum list |grep epel
[root@ / 10:27:16]#
  • 网络寻找适配Centos7_x86_64架构的epel仓库配置文件
[root@ / 10:27:16]#rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Retrieving http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
warning: /var/tmp/rpm-tmp.ddjDvh: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:epel-release-7-12                ################################# [100%]
  • 清除本地仓库缓存信息,更新本地仓库信息,查看本地仓库所在目录
[root@ / 10:30:20]#yum clean all
Loaded plugins: fastestmirror
Cleaning repos: epel localrepo tsinghuarepo
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@ / 10:30:29]#yum repolist  
//终端只能运行一个yum进程,所以遇到运行不了,必须先把先前还在运行的yum命令进程干掉,或者等命令运行完,释放进程空间再执行其他yum命令
... #此处省略处理过程
repo id      repo name                     status
epel/x86_64  Extra Packages for Enterprise Linux 7 - x86_6 13,415
localrepo    This is a REPO from CDROM.                     3,971
tsinghuarepo This is a REPO from TsinghuaMirrorStation.    10,070
repolist: 27,456
[root@ / 10:31:33]#ls /etc/yum.repos.d/
epel.repo  epel-testing.repo  pinglinglab.repo
  • 安装nginx
[root@ / 10:32:07]#yum -y install nginx
Loaded plugins: fastestmirror
...#此处省略安装过程
Dependency Updated:
  freetype.x86_64 0:2.8-14.el7      

Complete!

4.3 源码编译安装、运行、测试nginx

完成顺序:安装编译工具->配置安装位置、所需组件等参数->编译->链接

nginx需要依赖的库包括了:gcc、openssl-devel、pcre-devel、zlib-devel,如果跳过这些步骤,在对nginx源码编译的过程当中就会报错。错误报告会提示你必须先安装好这些依赖包,那么我们遇到这种情况就要顺势安装好,然后继续执行源码编译的命令:make

  • 安装编译工具:gcc、make
[root@ / 10:52:40]#yum install gcc make
  • 安装网络文件下载工具:wget
[root@ / 10:59:07]#yum -y install wget
  • 安装依赖库
[root@ / 11:01:03]#yum -y install pcre pcre-devel
[root@ / 11:03:00]#yum -y install zlib zlib-devel
[root@ / 11:03:19]#yum -y install openssl openssl-devel
  • 利用wget下载工具下载nginx源码包
[root@ / 11:03:45]#wget http://nginx.org/download/nginx-1.14.0.tar.gz 
...#此处省略处理过程
2020-07-21 23:41:06 (2.47 KB/s) - ‘nginx-1.14.0.tar.gz.1’ saved [1032347/1032347]
  • 解压nginx源码包(tar命令的选项不需要加斜杠,)
[root@ / 11:47:33]#tar xf /root/nginx-1.14.0.tar.gz
  • 配置configue

编译器在开始工作之前,需要知道当前的系统环境,比如标准库在哪里、软件的安装位置在哪里、需要安装哪些组件等等。

这是因为不同计算机的系统环境不一样,通过指定编译参数,编译器就可以灵活适应环境,编译出各种环境都能运行的机器码。这个确定编译参数的步骤,就叫做"配置"(configure)

源码肯定会用到标准库函数(standard library)和头文件(header)。它们可以存放在系统的任意目录中,编译器实际上没办法自动检测它们的位置,只有通过配置文件才能知道。

对于大型项目来说,源码文件之间往往存在依赖关系,编译器需要确定编译的先后顺序。假定A文件依赖于B文件,编译器应该保证做到下面两点。

[root@ / 11:48:11]# cd nginx-1.14.0 ./configure --prefix=/usr/local/nginx --with-http_ssl_module
  • 编译

头文件的预编译:不同的源码文件,可能引用同一个头文件(比如stdio.h)。编译的时候,头文件也必须一起编译。为了节省时间,编译器会在编译源码之前,先编译头文件。这保证了头文件只需编译一次,不必每次用到的时候,都重新编译了。

源码编译:预处理之后,编译器就开始生成机器码。对于某些编译器来说,还存在一个中间步骤,会先把源码转为汇编码(assembly),这种文件称为对象文件object file,然后再把汇编码转为机器码。

[root@ ~ 11:49:48]#cd /root/nginx-1.14.0
[root@ ~/nginx-1.14.0 11:49:54]#make
make -f objs/Makefile
make[1]: Entering directory `/root/nginx-1.14.0'
make[1]: Nothing to be done for `build'.
make[1]: Leaving directory `/root/nginx-1.14.0'
  • 链接

对象文件还不能运行,必须进一步转成可执行文件。如果你仔细看上一步的转码结果,会发现其中引用了stdout函数和fwrite函数。也就是说,程序要正常运行,除了上面的代码以外,还必须有stdout和fwrite这两个函数的代码,它们是由C语言的标准库提供的。

编译器的下一步工作,就是把外部函数的代码(通常是后缀名为.lib和.a的文件),添加到可执行文件中。这就叫做连接(linking)。这种通过拷贝,将外部函数库添加到可执行文件的方式,叫做静态连接(static linking),还有动态连接(dynamic linking)。

到这个步骤,连接所形成的的二进制代码可以形成完整的逻辑顺序地址,方便操作系统以下的物理存储进行物理存储映射,存储到我们可以溯源得到的物理区块。这一部分的内容属于计算机组成原理的内容。

[root@ / 11:25:26]#make install
make -f objs/Makefile install
...#省略
make[1]: Leaving directory `/root/nginx-1.14.0'
  • 启动nginx服务器
[root@ / 11:43:13]#/usr/local/nginx/sbin/nginx
  • 关闭防火墙并打开浏览器测试
[root@ / 11:44:50]#iptables -F

在这里插入图片描述

4.4 ubuntu1604中配置好清华的apt源,安装wireshark

寻找适配ubuntu1604的镜像->备份“源配置文件”->修改源配置文件内容->更新源配置文件->安装wireshark

  • 寻找适配ubuntu1604的镜像
    在这里插入图片描述

  • 备份源配置文件

root@lin:~#  cd /etc/apt
root@lin:/etc/apt# ls
apt.conf.d     sources.list~   trusted.gpg.d
preferences.d  sources.list.d
sources.list   trusted.gpg
root@lin:/etc/apt# sudo cp sources.list courece.list.haha
  • 修改源配置文件
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
root@lin:/etc/apt# vim /etc/apt/sources.list

  • 更新源配置文件

apt-get update 更新是仓库缓存更新

apt-get upgrade 是软件更新

Tip:如果镜像下载不了,可能是系统的某些系统网络组件版本老旧,那么就可能需要进行软件升级,在进行镜像下载

root@lin:/etc/apt# sudo apt-get update
    ...
Fetched 30.9 MB in 10s (2,950 kB/s)                   
Reading package lists... Done
  • 安装wireshark
root@lin:/etc/apt#sudo apt-get install wireshark
...
Processing triggers for dbus (1.10.6-1ubuntu3.3) ...
  • 测试
root@lin:/etc/apt# which wireshark
/usr/bin/wireshark

4.5 将光盘中的Package目录通过cp命令拷贝到/data/centos7/package中,然后将/data/centos7做成本地yum仓库

实验顺序:光盘文件系统挂载到本地目录才能被使用->挂载目录点中的Packages目录拷贝到指定路径/data/centos7/package -> 安装createrepo,利用其创建本地仓库->制作仓库配置文件,检查仓库信息

  • 光驱挂载到本地目录
[root@ / 09:20:56]#mkdir -p /media/cd
[root@ / 09:35:03]#mount -t iso9660 /dev/cdrom /media/cd
  • 拷贝Packages,并检查
[root@ ~/nginx-1.14.0 12:42:45]#mkdir -p /data/centos7/packages[root@ ~/nginx-1.14.0 12:43:58]#cp -r /media/cd/p
cp: missing destination file operand after ‘/media/cd/p’
Try 'cp --help' for more information.
[root@ ~/nginx-1.14.0 12:44:09]#cp -r /media/cd/Packages/ /data/centos7/packages/
[root@ ~/nginx-1.14.0 12:46:45]#ls /data/centos7/packages/
Packages
[root@ ~/nginx-1.14.0 12:47:12]#
  • 安装createrepo
[root@ ~/nginx-1.14.0 12:47:12]#yum -y install createrepo
...#忽略   
Complete!
  • 使用createrepo创建yum仓库,执行命令后产生repodata,表示成功创建yum仓库。
[root@ ~/nginx-1.14.0 12:54:06]#createrepo /data/centos7/packages/
Spawning worker 0 with 3971 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[root@ ~/nginx-1.14.0 12:59:04]#ls /data/centos7/packages/repodata/
018e9bc732f76918da880c1eab0daa54b576aaca01147c9bf5bfce20600f0b0a-other.sqlite.bz2
3787f2b5b084c56f39ca7cfaeb99f556c39862c13e689adc2ff7d20a48ea3568-filelists.sqlite.bz2
64148ea1f1a720283b6ceb9db49bd01491903a336fc864f7e038b7a46ff55b6b-other.xml.gz
94111e0f9eef58f55a6dd16efc5be40d4c5d0b8277834be5a4ca6769ae86d22e-primary.sqlite.bz2
ac6c181f362d5d0fca1b191d3d8268433e44996f02de3094c40e72dba60e0739-primary.xml.gz
d85ec63d569619a208145d8f93a7cc459f91de04bc0e556d00717310e78ec4ca-filelists.xml.gz
repomd.xml
  • 制作仓库配置文件、清楚仓库缓存文件、并查看最新仓库信息
[root@ ~/nginx-1.14.0 01:02:35]#vim  /etc/yum.repos.d/local.repo
  1 [localrepo]
  2 name=this is a REPO copyed from CDROM package
  3 baseurl=file:///data/centos7/packages
  4 gpgcheck=0
  5 enabled=1
~                   
[root@ ~/nginx-1.14.0 01:05:25]#yum clean all
Loaded plugins: fastestmirror
Repository localrepo is listed more than once in the configuration
Cleaning repos: epel localrepo tsinghuarepo
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@ ~/nginx-1.14.0 01:05:36]#yum repolist
...#忽略
repo id      repo name                                   status
epel/x86_64  Extra Packages for Enterprise Linux 7 - x86 13,415
localrepo    this is a REPO copyed from CDROM package     3,971
tsinghuarepo This is a REPO from TsinghuaMirrorStation.  10,070
repolist: 27,456

4.6 Centos7安装图形化环境,并进入图形化

大致思路:1.了解图形化窗口系统登录的运行级别 5;2.在线安装Gnome包组;3. init 5 ;(4.可以设置开机默认启动图形化界面)

猜你喜欢

转载自blog.csdn.net/weixin_31789689/article/details/107511010