Linux 挂载光盘镜像配置本地 yum 源安装软件

  • 2019 年 10 月 4 日
  • 筆記

Yum(全称为 Yellowdog Updater, Modified)是一个在 Fedora 和 RedHat 以及 CentOS 中的 Shell 前端软件包管理器。CentOS 和 Redhat 版本的 Linux 一般安装软件包选择 rpm 和 yum 安装方式,这也是比较常见的方式。不过 rpm 安装时如果有其他依赖的包则需要先安装依赖包,比较麻烦, yum 则可以解决依赖关系,也可同时安装多个 rpm 包。当然 deb 软件包安装以及源码方式安装也有使用。deb 软件包一般以 .deb 后缀结尾,dpkg -i 包名即可安装。源码方式的包一般都以.tar.gz 或者 .tar.bz2 结尾,下载后校检md5值,解压后经过配置(./configure)、编译(make)、安装(make install)便可以完成。

一般传统行业的公司的生产环境均是内网环境,是没有办法上网的,故网络 yum 源就不用考虑了,大公司基本上会使用局域网内的 FTP 服务器,配置 ftp 方式的 yum 源,通过局域网安装软件,也可挂载光盘镜像。个人学习使用或小公司基本上会配置本地 yum 源,以后有时间可以说说网络 yum 源,下面就先说说配置本地 yum 源以及安装软件的方式。

本次演示使用 Oracle VM VirtualBox 下的 Redhat6.4 以及 VMware Workstation Pro 下的 CentOS 7.6 以及简略说明 linuxone 下的 suse12sp4 环境

  • Redhat6.4 下配置 yum 源

一、插入光盘镜像

图形化界面上能够看到新增光盘图标,默认自动弹出窗口显示光盘中文件

二、 查看光盘对应路径

切换到光盘目录,使用 Tab 补齐的方法进入,便可以看到很多软件包,但由于默认路径有空格,不方便配置 yum 源,故需要重新挂载光盘。

[root@JiekeXu ~]# cd /media/RHEL_6.4 x86_64 Disc 1/  [root@JiekeXu RHEL_6.4 x86_64 Disc 1]# ls

三、创建目录

光盘加载到光驱后默认挂载点(访问入口)为 /media/RHEL_6.4 x86_64 Disc 1 路径中包含空格,不方便使用。

创建目录 作为新挂载点 (访问光盘的入口)

[root@JiekeXu ~]# mkdir /mnt/dvd  [root@JiekeXu ~]# ls -ld /mnt/dvd

四、重新挂载

df -Th 查看光盘对应设备名称 /dev/sr0

挂载光盘到新建的挂载点

[root@JiekeXu ~]# mount /dev/sr0 /mnt/dvd  [root@JiekeXu ~]# df -Th

使用新挂载点即可访问光盘中文件

[root@JiekeXu ~]# ls /mnt/dvd

/mnt/dvd/Server 是配置 yum 仓库要用到的路径

五、修改配置文件配置 yum 源

[root@JiekeXu ~]# cd /etc/yum.repos.d/  [root@JiekeXu yum.repos.d]# ll  total 16K  -r--r--r--  1 root root 114 Jul  2  2015 packagekit-media.repo  -rw-r--r--. 1 root root 358 Oct 19  2017 redhat.repo  -rw-r--r--  1 root root 656 Oct 20  2017 rhel64.repo  -rw-r--r--. 1 root root 529 Jun 12  2015 rhel-source.repo  [root@JiekeXu yum.repos.d]#

配置文件目录 /etc/yum.repos.d/

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta,file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release 表示公钥文件地址

编辑配置文件,在最后追加写入内容 baseurl 中 file:// 表示本地文件,第三个 / 表示 根目录

[root@JiekeXu yum.repos.d]# cp rhel-source.repo rhel-source.repo.bak  [root@JiekeXu yum.repos.d]# vi rhel-source.repo  [rhel64]  name=rhel64 repo  baseurl=file:///mnt/dvd/Server  gpgcheck=0  [root@JiekeXu yum.repos.d]# tail -5 rhel-source.repo

六、yum 基本操作

清除缓存

[root@JiekeXu yum.repos.d]# yum clean all  Loaded plugins: product-id, refresh-packagekit, security, subscription-manager  This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.  Repository rhel-source is listed more than once in the configuration  Repository rhel-source-beta is listed more than once in the configuration  Cleaning repos: InstallMedia rhel67 rhel67rpm  Cleaning up Everything

列出软件包

[root@JiekeXu yum.repos.d]# yum list  Loaded plugins: product-id, refresh-packagekit, security, subscription-manager  This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.  [root@JiekeXu yum.repos.d]# yum list | grep zsh  Repository rhel-source is listed more than once in the configuration  Repository rhel-source-beta is listed more than once in the configuration  zsh.x86_64                             4.3.11-4.el6                    @rhel64

yum 安装、查看、删除软件包

[root@JiekeXu yum.repos.d]# yum install zsh  [root@JiekeXu yum.repos.d]# yum info zsh  [root@JiekeXu yum.repos.d]# yum remove zsh

七、 yum install XXX 安装其他的包

本地镜像源内的 rpm 包便可以自由安装了,使用 -y 则不用提示直接安装。

[root@JiekeXu yum.repos.d]# yum install vim* -y  [root@JiekeXu yum.repos.d]# yum install x11*  Loaded plugins: product-id, refresh-packagekit, security, subscription-manager  This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.  Repository rhel-source is listed more than once in the configuration  Repository rhel-source-beta is listed more than once in the configuration  Setting up Install Process  Resolving Dependencies  --> Running transaction check  ---> Package xorg-x11-apps.x86_64 0:7.7-6.el6 will be installed  --> Finished Dependency Resolution
  • CentOS 7.6 下配置 yum 源

CentOS 系列的 Linux 操作系统目前市场上使用的还是比较多的,而且很多公司也都陆陆续续使用 7 系列版本,那么本次将使用 CentOS 7.6 作为演示版本。

一、关闭防火墙

  • 临时关闭防火墙 systemctl stop firewalld
  • 永久防火墙开机自关闭 systemctl disable firewalld
  • 临时打开防火墙 systemctl start firewalld
  • 防火墙开机启动 systemctl enable firewalld
  • 查看防火墙状态 systemctl status firewalld
[root@JiekeXu ~]# systemctl status firewalld  ● firewalld.service - firewalld - dynamic firewall daemon     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)     Active: active (running) since 六 2019-09-07 08:33:48 CST; 18h ago       Docs: man:firewalld(1)  Main PID: 8220 (firewalld)      Tasks: 2     CGroup: /system.slice/firewalld.service             └─8220 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid    9月 07 08:33:40 JiekeXu systemd[1]: Starting firewalld - dynamic firewall daemon...  9月 07 08:33:48 JiekeXu systemd[1]: Started firewalld - dynamic firewall daemon.  9月 07 08:33:55 JiekeXu firewalld[8220]: WARNING: /etc/sysconfig/network-scripts/ifcfg-ens32: Duplicate option definition: 'BOO...tatic"'  Hint: Some lines were ellipsized, use -l to show in full.  [root@JiekeXu ~]#  [root@JiekeXu ~]# systemctl stop firewalld  [root@JiekeXu ~]# systemctl status firewalld  ● firewalld.service - firewalld - dynamic firewall daemon     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)     Active: inactive (dead) since 日 2019-09-08 03:19:50 CST; 3s ago       Docs: man:firewalld(1)    Process: 8220 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)  Main PID: 8220 (code=exited, status=0/SUCCESS)    9月 07 08:33:40 JiekeXu systemd[1]: Starting firewalld - dynamic firewall daemon...  9月 07 08:33:48 JiekeXu systemd[1]: Started firewalld - dynamic firewall daemon.  9月 07 08:33:55 JiekeXu firewalld[8220]: WARNING: /etc/sysconfig/network-scripts/ifcfg-ens32: Duplicate option definition: 'BOO...tatic"'  9月 08 03:19:46 JiekeXu systemd[1]: Stopping firewalld - dynamic firewall daemon...  9月 08 03:19:50 JiekeXu systemd[1]: Stopped firewalld - dynamic firewall daemon.  Hint: Some lines were ellipsized, use -l to show in full.  [root@JiekeXu ~]#  [root@JiekeXu ~]# systemctl disable firewalld  Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.  Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.  [root@JiekeXu ~]#  [root@JiekeXu ~]# systemctl status firewalld  ● firewalld.service - firewalld - dynamic firewall daemon     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)     Active: inactive (dead)       Docs: man:firewalld(1)    9月 07 08:33:40 JiekeXu systemd[1]: Starting firewalld - dynamic firewall daemon...  9月 07 08:33:48 JiekeXu systemd[1]: Started firewalld - dynamic firewall daemon.  9月 07 08:33:55 JiekeXu firewalld[8220]: WARNING: /etc/sysconfig/network-scripts/ifcfg-ens32: Duplicate option definition: 'BOO...tatic"'  9月 08 03:19:46 JiekeXu systemd[1]: Stopping firewalld - dynamic firewall daemon...  9月 08 03:19:50 JiekeXu systemd[1]: Stopped firewalld - dynamic firewall daemon.  Hint: Some lines were ellipsized, use -l to show in full.

二、关闭 SELINUX

编辑 /etc/selinux/config 文件,将其设置为 disabled,注意编辑 /etc/sysconfig/selinux 文件也可。

[root@JiekeXu sysconfig]# pwd  /etc/sysconfig  [root@JiekeXu sysconfig]# ls -l selinux  lrwxrwxrwx. 1 root root 17 7月   4 02:03 selinux -> ../selinux/config  [root@JiekeXu ~]# cat /etc/sysconfig/selinux  [root@JiekeXu ~]# more /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=disabled  # SELINUXTYPE= can take one of three values:  #     targeted - Targeted processes are protected,  #     minimum - Modification of targeted policy. Only selected processes are protected.  #     mls - Multi Level Security protection.  SELINUXTYPE=targeted

四、设置域名解析

[root@JiekeXu ~]# vi /etc/resolv.conf  # Generated by NetworkManager  nameserver 192.168.32.1  nameserver 192.168.32.0  nameserver 8.8.8.8  nameserver 114.114.114.114

五、挂载镜像

首先插入光盘镜像

六、建立目录,挂载镜像,将其写入开机自启动文件

mkdir /mnt/centos  mount -t iso9660 -o loop /dev/sr0 /mnt/centos  vim /etc/fstab

添加如下一行

/dev/cdrom /mnt/contos iso9660 defaults 0 0 0 0    [root@JiekeXu sysconfig]# cat /etc/fstab  # /etc/fstab  # Created by anaconda on Thu Jul  4 01:57:56 2019  #  # Accessible filesystems, by reference, are maintained under '/dev/disk'  # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info  #  /dev/mapper/centos-root /                       xfs     defaults        0 0  UUID=d40ff30e-48ce-4286-8e3f-bc9e30f3a6bb /boot                   xfs     defaults        0 0  /dev/mapper/centos-swap swap                    swap    defaults,size=1024M        0 0  /dev/cdrom /mnt/centos                          iso9660 defaults        0 0               0 0

七、配置 yum 源

进入/etc/yum.repos.d 目录修改CentOS-Media.repo文件

mv CentOS-Base.repo CentOS-Base.repo_bak  vi CentOS-Media.repo  [local] //id:local 表示本地  name=CentOS-$releasever - local  baseurl=file:///mnt/centos //挂载镜像的文件夹路径  gpgcheck=0 //设置此源是否检验文件,1为校验,0为不校验  enabled=1 //启用该yum源  gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7//公钥文件地址

注意:如果没有注释掉 CentOS-Base.repo 则会出现如下未知错误。

[root@JiekeXu yum.repos.d]# yum clean all;  已加载插件:fastestmirror, langpacks  正在清理软件源:base extras local updates  Cleaning up list of fastest mirrors  [root@JiekeXu yum.repos.d]# yum repolist  已加载插件:fastestmirror, langpacks  Determining fastest mirrors  Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was  14: curl#6 - "Could not resolve host: mirrorlist.centos.org; 未知的错误"  Loading mirror speeds from cached hostfile  Loading mirror speeds from cached hostfile  Loading mirror speeds from cached hostfile  Loading mirror speeds from cached hostfile  源标识                                                            源名称                                                              状态  base/7/x86_64                                                     CentOS-7 - Base                                                     0  extras/7/x86_64                                                   CentOS-7 - Extras                                                   0  local                                                             CentOS-7 - local                                                    0  updates/7/x86_64                                                  CentOS-7 - Updates                                                  0  repolist: 0

八、简单应用

清空缓存 yum clean all  查看可用 yum 源 yum repolist  [root@JiekeXu yum.repos.d]# yum clean all;  已加载插件:fastestmirror, langpacks  正在清理软件源:local  Cleaning up list of fastest mirrors  [root@JiekeXu yum.repos.d]# yum repolist  已加载插件:fastestmirror, langpacks  Determining fastest mirrors  local                                                                                                              | 3.6 kB  00:00:00  (1/2): local/group_gz                                                                                              | 166 kB  00:00:00  (2/2): local/primary_db                                                                                            | 3.1 MB  00:00:00  源标识                                                       源名称                                                                  状态  local                                                        CentOS-7 - local                                                        4,021  repolist: 4,021
  • SUSE 12sp4 环境下 zypper 源配置

1. zypper 的几个重要选项:

选项

说明

repos, lr

列出库

sl

列出库(目的是与rug兼容)

addrepo, ar

添加库

sa

添加库(目的是与rug兼容)

renamerepo, nr

重命名指定的安装源

modifyrepo, mr

修改指定的安装源

refresh, ref

刷新所有安装源

clean

清除本地缓存

2. zypper 软件管理:

选项

说明

install, in

安装软件包

remove, rm

删除软件包

verify, ve

检验软件包依赖关系的完整性

update, up

更新已安装的软件包到新的版本

dist-upgrade, dup

整个系统的升级

source-install, si

安装源代码软件包和它们的编译依赖

3. zypper 的查询选项:

选项

说明

search, se

安装软件包

packages, pa

列出所有可用的软件包

patterns, pt

列出所有可用的模式

products, pd

列出所有可用的产品

what-provides, wp

列出能够提供指定功能的软件包

下面实操说明配置 zypper 源

JiekeXu2:~ # zypper clean  All repositories have been cleaned up.  JiekeXu2:~ # zypper clean all  Repository 'all' not found by its alias, number, or URI.  Use 'zypper repos' to get the list of defined repositories.  Could not clean the repositories because of errors.  JiekeXu2:~ # cat /etc/issue  Welcome to SUSE Linux Enterprise Server 12 SP4  (s390x) - Kernel r (l).  JiekeXu2:~ # zypper rr 1  Removing repository 'SLES12-SP4 12.4-0' ......................................................................[done]  Repository 'SLES12-SP4 12.4-0' has been removed.  JiekeXu2:~ # zypper rr 1  Repository '1' not found by alias, number or URI.  JiekeXu2:~ # zypper rr 1  Repository '1' not found by alias, number or URI.  JiekeXu2:~ # zypper ar ftp://[email protected]/suse/suse12sp4s390x suse  Adding repository 'suse' .....................................................................................[done]  Repository 'suse' successfully added  URI         : ftp://[email protected]/suse/suse12sp4s390x  Enabled     : Yes  GPG Check   : Yes  Autorefresh : No  Priority    : 99 (default priority)  Repository priorities are without effect. All enabled repositories share the same priority.  JiekeXu2:~ # zypper lr  Repository priorities are without effect. All enabled repositories share the same priority.  # | Alias | Name | Enabled | GPG Check | Refresh  --+-------+------+---------+-----------+--------  1 | suse  | suse | Yes     | ( p) Yes  | No  JiekeXu2:~ # zypper ref  Retrieving repository 'suse' metadata ---------------------------------------------------------------------------[]  Authentication required for 'ftp://[email protected]/suse/suse12sp4s390x'  User Name: ftpuser  Password:  Retrieving repository 'suse' metadata ........................................................................[done]  Building repository 'suse' cache .............................................................................[done]  All repositories have been refreshed.  JiekeXu2:~ # zypper -n in libaio-devel  Loading repository data...  Reading installed packages...  Resolving package dependencies...  The following NEW package is going to be installed:    libaio-devel  1 new package to install.  Overall download size: 6.5 KiB. Already cached: 0 B. After the operation, additional 9.1 KiB will be used.  m                                     | 9.43-8.1                                | s390x                       | s390   | SLES12-SP4 12.4-0 | hfsutils                                   | 3.2.6-1240.71                           | s390x  | SLES12-SP4 12.4-0 | gnome-session-lang                         | 3.20.2-19.2                             | noari  | SLES12-SP4 12.4-0 | hicolor-icon-theme                         | 0.15-4.1                                | noarch | SLES12-SP4 12.4-0 | gnome-settings-daemon                      | 3.20.1-50.5.8                           | s390   | SLES12-SP4 12.4-0 | hmaccalc                                   | 0.9.13-2.3                              | s390x  | SLES12-SP4 12.4-0 | gnome-settings-daemon-lang                 | 3.20.1-50.5.8                           | noar   | SLES12-SP4 12.4-0 | hostinfo                                   | 1.0-17.12                               | noarch | SLES12-SP4 12.4-0 | gnome-shell                                | 3.20.4-77.17.1                          | s390   | SLES12-SP4 12.4-0 | hplip                                      | 3.16.11-1.33                            | s390x  | SLES12-SP4 12.4-0 | gnome-shell-browser-plugin                 | 3.20.4-77.17.1                          | s390   | SLES12-SP4 12.4-0 | hplip-hpijs                                | 3.16.11-1.33                            | s390x  | SLES12-SP4 12.4-0 | gnome-shell-classic                        | 3.20.1-24.27.44                         | noar   | SLES12-SP4 12.4-0 | hplip-sane                                 | 3.16.11-1.33                            | s390x  | SLES12-SP4 12.4-0 | gnome-shell-extensions-common              | 3.20.1-24.27.44                         | noari  | SLES12-SP4 12.4-0 | hunspell                                   | 1.3.2-18.1                              | s390x  | SLES12-SP4 12.4-0 | gnome-shell-extensions-common-lang         | 3.20.1-24.27.44                         | noar   | SLES12-SP4 12.4-0 | hunspell-32bit                             | 1.3.2-18.1                              | s390x  | SLES12-SP4 12.4-0 | gnome-shell-lang                           | 3.20.4-77.17.1                          | noari  | SLES12-SP4 12.4-0 | hunspell-tools                             | 1.3.2-18.1                              | s390x  | SLES12-SP4 12.4-0 | gnome-shell-search-provider-gnome-terminal | 3.20.2-8.62                             | s390Continue? [y/n/...? shows all options] (y): y  Retrieving package libaio-devel-0.3.109-17.15.s390x                            (1/1),   6.5 KiB (  9.1 KiB unpacked)  Retrieving: libaio-devel-0.3.109-17.15.s390x.rpm .............................................................[done]  Checking for file conflicts: .................................................................................[done]  (1/1) Installing: libaio-devel-0.3.109-17.15.s390x ...........................................................[done]

当然,局域网也有不通的时候,那么我们只要挂载光盘镜像或者上传镜像到系统某个目录下,如下 5 步也很方便配置 zypper 源,还等什么,赶快来试试吧。

1、首先建立挂载目录

mkdir /mnt/iso

2、上传光盘镜像到 /app 目录,并挂载镜像

mount -t iso9660 /app/SLES-11-SP4-DVD-x86_64-GM-DVD1.iso /mnt/iso

3、添加库,配置本地 repo

zypper ar file:///mnt/iso ss

4、查看列出本地库

zypper lr

JiekeXu2:/app/oracle # zypper lr  Repository priorities are without effect. All enabled repositories share the same priority.  # | Alias     | Name      | Enabled | GPG Check | Refresh  --+-----------+-----------+---------+-----------+--------  1 | suse12sp4 | suse12sp4 | Yes     | (r ) Yes  | No  

5、 zypper install 或者 zypper in xxx 安装包

zypper in binutils-2.19

80%