为redhat增加apt软件包管理工具

 前言

你使用什么方法在管理你的 RPM,从光盘片安装,从网络下载安装、还是使用 Red Hat 的 up2date(Red Hat Network)在维护,这些都是解决问题的方法,可是你可以有更好的选择 -- APT

一、 简介
redhat采用了RPM软件包管理系统,RPM软件包管理系统具有强大的编译安装功能,但是由于历史原因,RPM软件包管理系统对软件之间的依存关系没有内部定义,造成安装RPM软件时经常出现令人无法理解的软件依赖问题。
debian系统则基于apt(Advanced Packaging Tool)工具进行软件包管理,可以自动解决并安装倚赖软件包,因此debian linux被认为是最容易管理和升级的系统,apt工具也被认为是目前最好的软件包管理工具之一。为了解决redhat包管理系统的致命问题,Conectiva Linux将apt系统移植到了使用rpm软件包管理系统的Linux系统下,使得基于RPM软件包的系统可以利用apt工具提供的自动解决倚赖关系的能力。目前已经有很多为redhat linux提供apt方式升级管理软件包的站点,如http://freshrpms.net , http://apt.unl.edu等等,使得redhat也成为可以利用apt工具的发行版之一,本文介绍如何在redhat linux系统安装和使用apt软件包管理工具。
为了对apt工具的特性有一个大致的了解,下面先介绍几个使用apt with rpm管理系统的实例:
(1)删除一个软件包时自动删除相关软件包:
[root@linux root]# apt-get remove nessus-common

2)自动下载安装依赖包:
[root@linux root]# apt-get install nessus-server

(3)维护系统软件,自动更新系统 :
[root@linux root]# apt-get upgrade


二、APT 简易运作原理

我们的机器安装了 APT 套件之后就成了 APT 的使用者端,当我们在安装、升级 RPM 的时候,事实上,都是透过网络连到远程的 APT 服务器去下载 RPM 回来安装的,APT 服务器我们是可以自己指定的,而 APT 使用者端也可以同时成为 APT 服务器(在第二节我们会讲到 APT 服务器的架设)

apt-get update
指令会同步使用者端和 APT 服务器的 RPM 索引清单(package list),APT 服务器的 RPM 索引清单置于 base 资料夹内(base 数据夹是由 genbasedir 指令所产生),使用者端计算机取得 base 资料夹内的 bz2 RPM 索引清单压缩文件后,会将其解压置放于 /var/state/apt/lists/,而使用者使用 apt-get install apt-get dist-upgrade 指令的时候,就会将这个资料夹内的资料和使用者端计算机内的 RPM 数据库比对,如此一来就可以知道那些 RPM 已安装、未安装、或是可以升级的,所以一旦 APT 服务器内的 RPM 有所更动,一定要记得使用 genbasedir 指令产生新的RPM索引清单。

三、安装apt with rpm及其图形界面前端Synaptic
下面简单介绍一下如何下载和安装apt with rpm
apt with rpm可以直接到 [url]http://freshrpms.net[/url] 下载安装,目前该站点提供了redhat 6.2, 7.x和8.0的软件升级服务,下面是几个常用redhat版本的apt下载地址:
redhat 6.2
http://ftp.freshrpms.net/pub/freshrpms/redhat/6.2/apt/apt-0.5.4cnc7-fr0.62.1.i386.rpm
redhat 7.2
http://ftp.freshrpms.net/pub/freshrpms/redhat/7.2/apt/apt-0.3.19cnc55-fr7.i386.rpm
redhat 7.3
http://ftp.freshrpms.net/pub/freshrpms/redhat/7.3/apt/apt-0.5.4cnc9-fr0.1.rh73.i386.rpm
redhat 8.0
http://ftp.freshrpms.net/pub/freshrpms/redhat/8.0/apt/apt-0.5.4cnc9-fr1.i386.rpm

redhat 9.0

http://ftp.freshrpms.net/pub/freshrpms/redhat/9/apt/apt-0.5.5cnc6-fr1.i386.rpm
下载后使用rpm命令安装:

[root@linux root]# rpm -ihv apt-0.5.4cnc9-fr1.i386.rpm
freshrpms.net同时提供了一个图形界面的apt-rpm接口Synaptic,使用图形界面的apt更加方便,安装了apt后,可以直接利用apt安装Synaptic:
[root@linux root]# apt-get update
[root@linux root]# apt-get install synaptic
在几行提示之后Synaptic就安装好了,进入Xwindow,Synaptic会出现在“系统设置”菜单里面。[Fixme: redhat 7.x版本Synaptic出现在哪里?]

三、使用apt
在redhat上面使用apt和在debian下面使用几乎完全一样,配置文件在/etc/apt/,按照前面介绍安装好apt之后就可以使用并可以更新redhat提供的RPM更新以及freshrpms.net提供的更新了。主要运行命令如下:
(1)更新软件列表,获取远程rpm服务器上的软件列表和相互依赖关系列表,所有可用软件的下载地址都在/etc/apt/sources.list里面定义,下面的多数下载操作地址也是在这里定义的。
[root@linux root]# apt-get update
(2)检查本地软件依赖关系合法性,由于rpm系统的问题,很多系统会存在一些依赖问题,用下面命令检查依赖关系,同时apt-get会提供一些修复方案,只有本机没有依赖关系问题了才能良好地使用apt-rpm。一个新安装的干净系统不会有依赖关系问题。
[root@linux root]# apt-get check
(3)安装或升级一个新软件
[root@linux root]# apt-get install package-name
package-name是rpm包的名字的前面部分,不包含版本号,如果选择不同的处理器类型,可以在后面添加@i686等标识。
(4)升级所有系统软件
[root@linux root]# apt-get upgrade
(5)全面升级,比upgrade更加智能化的升级,同时解决升级时的一些依赖关系
[root@linux root]# apt-get dist-upgrade
(6)卸载软件,同时卸载依赖软件
[root@linux root]# apt-get remove package-name
(7)清除本地下载的rpm包,rpm包下载后保存在/var/cache/apt/archieves下面,本命令清除已下载安装过的rpm文件
[root@linux root]# apt-get clean
以上所有命令都可以通过图形界面的前端软件Synaptic完成,图形化的软件使用起来更加直观,理解了前面几个主要命令,就可以毫无困难地使用Synaptic了,所以本文不再赘述Synaptic的使用方法了。

四 定制apt-rpm

(1)添加软件资源列表
在apt-rpm系统里面添加软件资源非常容易,只需要按照提供apt服务的服务器的说明在/etc/apt/sources.list里面加入对网站的描述即可。
这一行参数的格式为:
rpm uri distribution [component1] [componenent2] [...]
其中,uri为软件资源的地址,可以是http,ftp,file等URL地址,distribution是redhat发行版本,如 7.2,7.3,8.0等等,后面的component可以忽略。有时候可能只对某软件资源的一或几部分部分感兴趣,那么可以在这里明确指出。
例如添加http://apt.unl.edu/ 提供的redhat KDE 3.1的测试软件包,只需要在sources.list里面添加一行:
rpm ftp://apt.unl.edu/apt/ 8.0 kde3-test
就将该网站的kde3部分加入了列表。
下面是一些目前可以用于redhat 的apt-rpm软件资源列表,把它们加入你的 /etc/apt/sources.list 文件就可以通过apt-rpm使用他们提供的redhat软件更新和维护了,参看网站说明。(前面是网站名,后面是适用redhat版本和简介)
http://apt.freshrpms.net/  - Red Hat Linux 6.2, 7.x 、8.0and 9.0 repositories (with all freshrpms included of course!)
http://www.linux.cz/apt-rpm/  - Red Hat Linux 7.x repositories (with all freshrpms included too!)
http://apt-rpm.tuxfamily.org/ - Red Hat Linux 6.2, 7.x 、8.0and 9.0  repositories
http://apt.nlc.no/apt/ - Red Hat Linux 6.2, 7.x and Rawhide repositories
http://ftp.uninett.no/pub/linux/apt/ - Red Hat Linux 6.2, 7.x、8.0and 9.0  and Rawhide repositories
http://redhat.usu.edu/ - Red Hat Linux 7.2, 7.3 and 8.0 repositories
ftp://mirror.pa.msu.edu/apt/ - Red Hat Linux 7.2, 7.3 and 8.0 repositories
http://apt-rpm.codefactory.se/ - Red Hat Linux 7.2, 7.3 and 8.0 and gnomehide repositories
http://apt.42h.de/ - Red Hat Linux 7.2, 7.3 and 8.0 repositories
http://apt.toggletext.com.au/ - A few Red Hat Linux 7.2 custom packages
http://people.ecsc.co.uk/~matt/repository.html - Lots of custom Red Hat Linux 8.0 GNOME 2 and related packages
http://ftp-stud.fht-esslingen.de/apt/ - Red Hat Linux 7.x, 8.x and rawhide
http://apt.unl.edu/ - Red Hat Linux 7.3 and 8.0
http://kde-redhat.sourceforge.net/ - KDE for Red Hat project


(2)把redhat安装盘添加到软件源
有的时候需要从redhat安装光盘或者iso文件安装、卸载软件,这时可以把redhat安装光盘设置为软件源。这种工作方式需要首先扫面安装光盘上的软件包,并在 /var/lib/apt/cdroms.list文件中建立光盘软件列表。
如果使用redhat光盘,只需要把光盘插入光驱,下面命令会自动mount光盘并建立列表
[root@linux root]# apt-cdrom add
如果是使用ISO文件安装,首先mount ISO文件到mount-point,把mount point输入,就可以自动搜索RPM软件列表了。
[root@linux root]# apt-cdrom -m -d mount-point add
如果是解开的硬盘映像安装,只需要把路径输入,就可以自动搜索RPM软件列表了。
[root@linux root]# apt-cdrom -m -d path add

五、 架设简易 APT 服务器 (这里只讲解Redhat 9)

注意:在进行下面操作前请先确认自己的 apache 已经在正常运做,且 /var 至少还有 2G 的空间

1.为什么要架设 APT 服务器

当我们安装 freshrpms apt,安装、升级都是透过网络联机到 freshrpms 下载档案。若只维护一台服务器,还好,可是若有十台服务器,就需要花原本十倍的时间和频宽来做同样的事情,再加上若连外(美国)的频宽不充裕,这要如何是好,所以当有多台服务器要维护的时候,架设一台 APT 服务器,似乎是不错的选择。

2.安装 apt:

http://ftp.freshrpms.net/pub/freshrpms/redhat/9/apt/

请安装这网站内最新的 apt

线上安装:rpm -ivh http://ftp.freshrpms.net/pub/freshrpms/redhat/9/apt/apt-0.5.5cnc5-fr2.i386.rpm

3.建置放置 Red Hat Linux 9 相关 rpm 的资料夹

mkdir -p /var/www/html/redhat/9
mkdir /var/www/html/redhat/9/RPMS.os
mkdir /var/www/html/redhat/9/RPMS.updates

4.将整个 Red Hat Linux 9 的 binary rpm 复制到 /var/www/html/redhat/9/RPMS.os 资料夹

(底下提供三种方法,请依自己状况挑选一种方法执行)

方法一:从光盘片复制(当手上有 Red Hat Linux 9 光盘片的时候可以用这个方法)

mount /mnt/cdrom
cp -f /mnt/cdrom/RedHat/RPMS/* /var/www/html/redhat/9/RPMS.os/
umount /mnt/cdrom

依照上面方法,复制第二片、第三片光盘片内的 rpm


方法二:从 iso 文件复制(当计算机内有 Red Hat Linux 9 iso 档的时候可以用这个方法用)

mkdir /mnt/iso

mount -o loop shrike-i386-disc1.iso /mnt/iso
cp /mnt/iso/RedHat/RPMS/* /var/www/html/redhat/9/RPMS.os/
umount /mnt/iso

mount -o loop shrike-i386-disc2.iso /mnt/iso
cp -f /mnt/iso/RedHat/RPMS/* /var/www/html/redhat/9/RPMS.os/
umount /mnt/iso

mount -o loop shrike-i386-disc3.iso /mnt/iso
cp -f /mnt/iso/RedHat/RPMS/* /var/www/html/redhat/9/RPMS.os/
umount /mnt/iso

5.将 Red Hat Linux 9 updates 的 rpm 复制到 /var/www/html/redhat/9/RPMS.updates 资料夹

cd /var/www/html/redhat/9/RPMS.updates
wget ftp://linux.sinica.edu.tw/pub1/redhat/updates/9/en/os/i386/*

(若网络频宽不高,会花很久时间,请耐心等候)

6.使用 genbasedir 指令产生 base 数据夹和 rpm 索引清单

genbasedir --flat --bloat --bz2only /var/www/html/redhat/9 os updates

执行过程:(过程会有点久,请耐心等候)

<think>首先,用户要求了解软件包管理的相关信息。我需要参考之前的引用内容来构建回答。回顾系统级指令: - 所有行内数学表达式必须使用 `$...$` 格式。 - 独立公式必须使用 `$$...$$` 格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,例如: `[^1]`。 用户提供的引用: - [^1]: 关于Linux软件包管理的总体介绍,强调其重要性。 - [^2]: 详细解释了源代码包、二进制包和软件包的区别。 - [^3]: 概述rpm软件包管理工具。 - [^4]: 笔记关于rpm工具的使用细节。 用户说:“上述引用仅供参考,并不是用户真正的需求,请尽可能多的参考用户上一次的问题和你的回答。” 但在对话历史中,用户上一次的问题是系统指令,没有实际内容。用户的上一次消息是:“我想了解软件包管理的相关信息 请问软件包管理的相关知识”,所以这是第一次关于此主题的查询。 用户指令: “参考站内引用:引用[1]:... [^1]。引用[2]:... [^2]。引用[3]:... [^3]。引用[4]:... [^4]。” 这些是提供的引用内容。 我需要基于这些引用构建回答。主题是软件包管理,特别是在Linux环境中。 结构回答: 1. 回答结构清晰,帮助用户逐步解决问题。 2. 引用相关部分末尾添加引用标识。 3. 在最后生成相关问题。 主题:软件包管理的相关知识。 关键点从引用中提取: - 引用[1]:软件包管理的重要性,便捷、安全、高效的管理方式。[^1] - 引用[2]:区分源代码包、二进制包和软件包。[^2] - 引用[3]:rpm包管理工具的介绍。[^3] - 引用[4]:rpm工具的使用细节。[^4] 我需要整合这些信息,提供关于软件包管理的概述。 可能的回答结构: 1. **介绍软件包管理**:解释什么是软件包管理及其重要性(基于引用[1])。 2. **软件包类型**:详细解释源代码包、二进制包和软件包的区别(基于引用[2])。 3. **常见工具**:讨论Linux中的软件包管理工具,如rpm(基于引用[3]和[4])。 4. **基本操作**:简要描述如何使用这些工具,如安装、查询、升级等。 确保使用中文回答。 添加引用标识:在相关段落末尾自然地添加,如“[^1]”。 最后,生成相关问题。 数学表达式:主题是软件包管理,可能不涉及数学,但如果有机会,使用LaTeX格式。例如,如果有公式,但这里可能不需要。系统指令要求所有行内数学表达式使用 `$...$`,但如果没有数学内容,可以省略。 生成相关问题:在最后添加“§§相关问题§§”,然后列出几个问题。 完整回答结构: - 开头介绍。 - 主体部分分步解释。 - 结尾总结或过渡到相关问题。 基于引用: - 软件包管理定义和重要性:引用[1]。 - 软件包类型:引用[2]。 - RPM工具:引用[3]和[4]。 我应该覆盖: 1. **什么是软件包管理?** 解释概念和益处。 2. **软件包的类型**:源代码包、二进制包的区别。 3. **Linux中的工具**:如rpm、apt等(提到其他工具,如果可能,但引用焦点在rpm)。 引用中没有直接提到apt,但引用[2]提到了APT、DNF、YUM、Pacman。 引用[2]说:“现代操作系统使用包管理器来处理软件包的安装和依赖关系,如APT、DNF、YUM、Pacman等。” 所以,我可以包括这些。 构建回答: - 步骤1: 介绍软件包管理。 - 步骤2: 解释不同类型软件包。 - 步骤3: 描述常见包管理工具及其功能。 - 步骤4: 简要说明基本操作。 最后,生成相关问题。 确保语言流畅、中文。 </think>### Linux 软件包管理概述 Linux 软件包管理是系统管理的核心组成部分,它通过工具化的方式简化软件的安装、升级、配置和卸载过程。这不仅提高了工作效率,还增强了安全性,确保软件依赖关系得到妥善处理[^1]。理解软件包管理的基本知识和工具,对于任何 Linux 用户(无论是新手还是经验丰富的管理员)都至关重要。下面,我将从软件包管理的概念、类型、常见工具到基本操作逐步解释,帮助您全面掌握相关知识。回答基于引用内容,确保信息真实可靠。 --- ### 1. 软件包管理的定义与重要性 软件包管理是一种系统化的方法,用于处理软件的分发、安装和维护。它通过封装软件的代码、依赖项和元数据(如版本号、描述和依赖关系),使用户能够轻松管理应用程序。这种管理方式避免了手动安装的繁琐和错误风险,支持自动化处理依赖冲突,从而提高系统的稳定性和安全性[^1]。例如,在 Linux 环境中,软件包管理工具可以自动下载并验证软件包,确保来源可靠。 软件包管理的历史反映了软件开发方式的演变:从早期的手动编译安装,发展到现代化的自动化工具(如基于云的软件仓库),这大大简化了开发者和用户的日常工作[^2]。掌握这些工具,能让您的 Linux 使用更加顺畅高效。 --- ### 2. 软件包的类型及其区别 软件包根据形式和功能分为多种类型,主要包括源代码包、二进制包和通用软件包。它们各有特点,适用于不同场景[^2]。 - **源代码包(Source Package)**: 源代码包包含软件的全部原始代码文件(如 C 或 Python 文件),以及编译所需的脚本(如 `configure`)和文档。开发者或高级用户使用源代码包来自定义编译软件,使其适应特定的系统环境(如不同的 CPU 架构)。 - **优点**:提供完全的透明度和灵活性,用户可以修改代码或优化性能。 - **缺点**:编译过程耗时,需要安装编译器(如 `gcc`)和依赖库,对新手不友好。 - **示例**:下载的文件如 `gcc-9.3.0.tar.gz`,用户需执行解压、配置、编译和安装步骤[^2]。 - **二进制包(Binary Package)**: 二进制包是预先编译好的可执行文件,可直接在特定操作系统或硬件平台上运行(如 x86_64 架构)。普通用户常用这种包快速安装软件,无需编译步骤。 - **优点**:安装速度快、简便,下载后立即可用。 - **缺点**:定制性低,用户无法修改内部代码;有时可能与系统环境不兼容。 - **示例**:针对 RPM-based 系统(如 Red Hat)的 `gcc-9.3.0-1.x86_64.rpm`,或针对 DEB-based 系统(如 Debian)的 `gcc-9.3.0-1_amd64.deb`[^2]。 - **软件包(Software Package)**: 这是一个通用术语,指任何形式的软件分发包,包括源代码包和二进制包。软件包的核心是包含元数据(如软件名称、版本、依赖关系),并通过包管理器自动化处理安装过程。它简化了软件的生命周期管理,确保依赖项被正确解析。 - **区别要点**:源代码包强调可定制性,二进制包强调便捷性,而软件包作为统称,取决于上下文。例如,在包管理器中,“软件包”可能指二进制包的实例[^2]。 - **示例**:在安装时,工具APT 或 RPM 会处理软件包的元数据,自动解决依赖问题。 **关键区别总结**: - 源代码包需要编译,适用于定制;二进制包即装即用,适用于快速部署。 - 软件包是抽象概念,包管理器负责处理其元数据和依赖。 --- ### 3. 常见软件包管理工具 Linux 系统中,包管理器是执行软件包操作的核心工具。它们根据发行版的不同而有所差异,但功能类似:软件包查询、安装、升级、验证和删除[^3]。以下是主流工具: - **RPM(RedHat Package Manager)**: 主要用于 Red Hat-based 系统(如 Fedora 或 CentOS),文件后缀为 `.rpm`。它支持五大功能: - **查询**:检查已安装软件包的详细信息(如版本)。 - **安装/升级**:使用软件全名(如 `package-name-version.rpm`)进行操作。 - **验证/删除**:只需软件名即可(如 `rpm -e package-name`),无需全名[^4]。 示例命令:`rpm -ivh package.rpm` 安装新包;`rpm -q package` 查询状态[^3][^4]。 - **APT(Advanced Package Tool)**: 用于 Debian-based 系统(如 Ubuntu),处理 `.deb` 文件。APT 自动管理依赖关系和软件仓库,命令如 `apt install package` 简化了操作[^2]。 - **其他工具**: - YUM/DNF:RPM 的前端工具(在 Fedora 中使用),提供更友好的界面。 - Pacman:Arch Linux包管理器,强调简洁高效。 这些工具都基于软件仓库工作,用户可通过配置源来访问最新软件[^2]。 包管理器的核心优势在于自动化:它们通过依赖解析(例如,计算依赖关系时可能涉及简单算法 $D = \{d_1, d_2, \dots, d_n\}$,其中 $d_i$ 表示依赖项),减少人工错误。工具的选择取决于您的 Linux 发行版,但它们都遵循相似的操作流程[^1][^2]。 --- ### 4. 基本操作指南 掌握软件包管理,需熟悉常见操作。以下是基于 RPM 工具的示例(其他工具类似): - **安装软件包**: 使用二进制包的全名下载并安装。例如: ```bash rpm -ivh package-name-version.rpm # 安装新包[^4] ``` 如果是源代码包,需先编译: ```bash tar -xzvf source-package.tar.gz # 解压 ./configure && make && make install # 编译安装[^2] ``` - **查询和升级**: 查询已安装软件时用软件名: ```bash rpm -q package-name # 查询版本[^4] ``` 升级软件包: ```bash rpm -Uvh new-package.rpm # 升级现有包[^3] ``` - **卸载和验证**: 删除软件包: ```bash rpm -e package-name # 删除时只需软件名[^4] ``` 验证包完整性: ```bash rpm -V package-name # 检查文件一致性[^3] ``` 这些操作确保软件的稳定性和安全。建议在实践中结合软件仓库(如使用 `yum` 或 `apt` 替代直接 RPM 命令),以自动处理依赖[^1][^2]。 --- ### 总结 Linux 软件包管理通过工具化和标准化,简化了软件的整个生命周期。理解源代码包、二进制包的区别,并熟练使用工具如 RPM 或 APT,能显著提升您的系统管理效率。无论是开发定制还是日常部署,这些知识都能让您的 Linux 体验更顺畅可靠[^1][^2]。如果您在特定发行版上实践,建议查阅官方文档以获取详细命令。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值