1. 배경개요
실제 프로덕션 환경에서 Linux 시스템에 rpm 패키지를 설치할 때 크게 두 가지 실질적인 문제가 있습니다.
1) rpm 패키지 설치 과정, 의존성 문제 지속적으로 등장하고 있어 프롬프트나 정보 쿼리에 따라 더 많은 패키지를 수동으로 설치해야 합니다
2) 내부 네트워크와 외부 네트워크가 분리되어 있어 외부 네트워크의 yum 소스를 연결할 수 없습니다
위 내용을 고려하여 이번 글에서는 yum 도구와 로컬 yum 소스를 구성하는 방법을 자세히 소개하겠습니다
2. yum 도구 소개
• yum 도구는 rpm 패키지의 소프트웨어 관리 역할을 합니다. 서버는 rpm 패키지 설치, 업그레이드, 삭제 등 일상적인 관리 작업을 수행할 수 있으며, rpm 패키지 간의 종속성을 자동으로 분석할 수 있어 rpm 패키지의 유지 관리 비용을 크게 단순화합니다.
•yum 도구의 구성은 주로 /etc/yum.conf 및 /etc/yum.repos.d/filename.repo의 두 파일에 의해 제어됩니다. • /etc/yum 정보. conf 파일 : 주로 전역 구성을 담당합니다[main]. 또한 여기에서 소프트웨어 저장소(리포지토리)를 구성할 수도 있습니다
• /etc/yum.repos.d/filename.repo 정보: 주로 다음을 담당합니다. 특정 소프트웨어 저장소의 구성(위의 yum.conf에서 소프트웨어 웨어하우스가 구성된 경우 여기에서 구성하지 않도록 선택할 수도 있음), 파일 이름은 직접 정의할 수 있습니다.
3. /etc/yum.conf 파일의 주요 매개변수에 대한 자세한 설명
여기서 저장소를 구성하지 않으면 주로 이 파일이 담당합니다. 파일의 경우 일반적으로 변경이 필요하지 않습니다.
다음은 yum 시스템의 기본 yum.conf 구성입니다.
[root@sunny yum.repos.d]# cat /etc/yum.conf [main] --main定义全局属性,只能有一个 cachedir=/var/cache/yum --定义yum缓存目录,用于储存下载存储的rpm包等 keepcache=0 --成功安装后,缓存数据是否保存。0:不保存,1:保存 debuglevel=2 --调试级别(0-10),默认为2 logfile=/var/log/yum.log --定义yum日志目录 distroverpkg=redhat-release --通过指定针对系统发行版的rpm包,判断当前系统的版本。默认值为redhat-release tolerant=1 --定义是否容忍命令行发生与软件包有关的错误。0:不容忍,1:容忍 exactarch=1 --定义当更新rpm包时,yum是否仅仅升级当前架构的包。 --当设置为1,不会发生i386包升级到i686 obsoletes=1 gpgcheck=1 --定义是否对rpm包进行GPG校验。0:不校验,1:校验 plugins=1 --定义是否使用插件。0:不允许,1:允许 # Default. # installonly_limit = 3 # PUT YOUR REPOS HERE OR IN separate files named file.repo # in /etc/yum.repos.d
그 외에도 위의 매개변수 중 사용할 수 있는 주요 매개변수는 다음과 같습니다.
exclude: 이 매개변수는 주로 업데이트하지 않으려는 RPM 패키지를 차단하는 데 사용됩니다. 와일드카드를 사용하고 공백을 사용하여 여러 RPM 패키지를 구분할 수 있습니다.
4. /etc/yum.repos.d/filename.repo 파일의 주요 매개변수에 대한 자세한 설명
이 파일은 주로 다음의 구성을 담당합니다. 특정 소프트웨어 웨어하우스가 /etc에 있는 경우 /yum.conf 파일에 구성되어 있으므로 구성하지 않도록 선택할 수 있습니다.
다음은 시스템 yum 기본 소프트웨어 웨어하우스 구성 파일입니다.
[root@sunny yum.repos.d]# cat rhel-debuginfo.repo [rhel-debuginfo] name=Red Hat Enterprise Linux $releasever - $basearch - Debug baseurl=ftp://ftp.redhat.com/pub/redhat/linux/enterprise/$releasever/en/os/$basearch/Debuginfo/ enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
매개변수에 대한 설명은 다음과 같습니다.
[rhel-debuginfo]: 사용됨 서로 다른 저장소를 구별하기 위해 filename.repo 파일에서 하나 이상의 저장소를 정의할 수 있습니다.
name: 저장소를 설명하는 데 사용됨
baseurl: 사용됨 http://, ftp:// 및 file:// 프로토콜을 지원하는 rpm 패키지를 얻기 위한 소스 위치입니다.
활성화됨: 이 소프트웨어 저장소를 사용할 수 있는지 여부를 정의하는 데 사용됩니다. 0: 사용할 수 없음, 1: 사용 가능
gpgcheck: rpm 패키지에 대해 GPG 검증을 수행할지 여부를 정의합니다.
gpgkey: 확인을 정의하는 데 사용되는 gpg 키 파일의 위치입니다.
5. 공통 명령어 소개
다음은 yum 관리를 위한 공통 명령어입니다
yum repolist: 사용 가능한 소프트웨어 저장소 정보 보기
yum list rpm 패키지: rpm 패키지의 설치 상태 보기, 와일드카드 지원 *, 설치된 경우 사용 가능한 소프트웨어 저장소가 표시됩니다.
yum list install | grep rpm package : rpm 패키지 설치 여부 확인
yum info rpm package: rpm 패키지 세부 정보 확인
yum check-update: 사용 가능한 rpm 패키지 업데이트 확인
yum install rpm 패키지: rpm 패키지 설치, 와일드카드 지원 *
yum Remove rpm 패키지: rpm 패키지 삭제
yum clean 패키지: rpm 패키지 캐시 지우기
yum clean headers: rpm 헤더 파일 캐시 지우기
yum clean all: rpm 헤더 파일 및 패키지 캐시 지우기
6. 로컬 yum 소스 구성의 구체적인 예
이 예에서 사용된 시스템은 redhat 5.8 64비트입니다.
--安装gcc-c++包,提示因为依赖关系缺少包而无法安装--若采用手工安装,在安装提示的rpm包过程中,可能还存在其他需要的依赖关系包[root@sunny Desktop]# rpm -ivh gcc-c++-4.1.2-52.el5.x86_64.rpm warning: gcc-c++-4.1.2-52.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186 error: Failed dependencies: gcc = 4.1.2-52.el5 is needed by gcc-c++-4.1.2-52.el5.x86_64 libstdc++-devel = 4.1.2-52.el5 is needed by gcc-c++-4.1.2-52.el5.x86_64 --下面开始通过配置本地源yum的方法从镜像光盘安装--查看文件系统,此时未挂载cdrom [root@sunny ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-LogVol00 16G 6.1G 8.7G 42% / /dev/sda1 99M 13M 81M 14% /boot tmpfs 1004M 0 1004M 0% /dev/shm --创建cdrom的挂载点目录--挂载点目录名随意,此处作者创建目录名为cdrom的目录作为挂载点 [root@sunny ~]# mkdir /cdrom --挂载cdrom,并查看挂载情况 [root@sunny ~]# mount /dev/cdrom /cdrom [root@sunny ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-LogVol00 16G 6.1G 8.7G 42% / /dev/sda1 99M 13M 81M 14% /boot tmpfs 1004M 0 1004M 0% /dev/shm /dev/sr0 3.9G 3.9G 0 100% /cdrom --进入cdrom目录,确定rpm包的位置--需要注意,rpm包所在的目录绝对路径将作为后面yum的url源路径 [root@sunny Server]# pwd /cdrom/Server --创建filename.repo文件,此处作者定义filename.repo名为newyum.repo--需要注意,由于是baseurl以及gpgkey均是本地位置,因此采用file://协议--需要注意,file://后面是文件所在的绝对路径,因此file://后面会以/开头,因此是file:///(三个/) [root@sunny yum.repos.d]# vi /etc/yum.repos.d/newyum.repo [redhatcdrom] name=local resource baseurl=fill:///cdrom/Server enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release --查询此时可用的软件仓库,显示刚刚配置的库可用 [root@sunny yum.repos.d]# yum repolist Loaded plugins: katello, product-id, security, subscription-manager Updating certificate-based repositories. Unable to read consumer identity redhatcdrom | 1.5 kB 00:00 redhatcdrom/primary | 920 kB 00:00 redhatcdrom 3285/3285 repo id repo name status redhatcdrom local resource 3,285 repolist: 3,285 --利用yum安装刚才的gcc-c++包--可以看到,安装过程中,yum处理了依赖关系,并将相应的包进行了安装 [root@sunny yum.repos.d]# yum install gcc-c++ -y Loaded plugins: katello, product-id, security, subscription-manager Updating certificate-based repositories. Unable to read consumer identity redhatcdrom | 1.5 kB 00:00 redhatcdrom/primary | 920 kB 00:00 redhatcdrom 3285/3285 Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package gcc-c++.x86_64 0:4.1.2-52.el5 set to be updated --> Processing Dependency: libstdc++-devel = 4.1.2-52.el5 for package: gcc-c++ --> Processing Dependency: gcc = 4.1.2-52.el5 for package: gcc-c++ --> Running transaction check ---> Package gcc.x86_64 0:4.1.2-52.el5 set to be updated --> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc ---> Package libstdc++-devel.x86_64 0:4.1.2-52.el5 set to be updated redhatcdrom/filelists | 2.8 MB 00:00 --> Running transaction check ---> Package glibc-devel.x86_64 0:2.5-81 set to be updated --> Processing Dependency: glibc-headers = 2.5-81 for package: glibc-devel --> Processing Dependency: glibc-headers for package: glibc-devel --> Running transaction check ---> Package glibc-headers.x86_64 0:2.5-81 set to be updated --> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers --> Processing Dependency: kernel-headers for package: glibc-headers --> Running transaction check ---> Package kernel-headers.x86_64 0:2.6.18-308.el5 set to be updated --> Finished Dependency Resolution Dependencies Resolved ====================================================================================== Package Arch Version Repository Size ====================================================================================== Installing: gcc-c++ x86_64 4.1.2-52.el5 redhatcdrom 3.8 M Installing for dependencies: gcc x86_64 4.1.2-52.el5 redhatcdrom 5.3 M glibc-devel x86_64 2.5-81 redhatcdrom 2.4 M glibc-headers x86_64 2.5-81 redhatcdrom 596 k kernel-headers x86_64 2.6.18-308.el5 redhatcdrom 1.4 M libstdc++-devel x86_64 4.1.2-52.el5 redhatcdrom 2.8 M Transaction Summary ====================================================================================== Install 6 Package(s) Upgrade 0 Package(s) Total download size: 16 M Is this ok [y/N]: Exiting on user Command Complete! --查询安装结果,确定安装完成。 [root@sunny yum.repos.d]# yum list gcc-c* Loaded plugins: katello, product-id, security, subscription-manager Updating certificate-based repositories. Unable to read consumer identity Installed Packages gcc-c++.x86_64 4.1.2-52.el5 installed
위 내용은 편집자가 제공한 내용입니다. RPM 패키지 설치 종속성을 해결하기 위해 YUM을 도입하셨고, yum 도구에서 로컬 소스 구성 방법을 자세히 소개하셨습니다. 궁금한 점이 있으면 메시지를 남겨주세요. 그러면 편집자가 제때에 답변해 드릴 것입니다. 또한 PHP 중국어 웹사이트를 지원해 주신 모든 분들께 감사드립니다!
RPM 패키지 설치 종속성에 대한 더 많은 YUM 솔루션과 로컬 소스 구성 방법에 대한 yum 도구 소개를 보려면 PHP 중국어 웹사이트에서 관련 기사를 주목하세요!