Chinaunix首页 | 论坛 | 博客
  • 博客访问: 117972
  • 博文数量: 31
  • 博客积分: 781
  • 博客等级: 军士长
  • 技术积分: 350
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-30 16:52
文章分类

全部博文(31)

文章存档

2014年(1)

2012年(9)

2011年(21)

分类: LINUX

2011-05-18 16:36:33

APT-高级软件包管理
APT Debian推出了APT(Advanced Packaging Tool),Conectiva软件公司改造了APT用以支持RPM软件包
采用集中式的软件仓库管理机制,按类别放在软件仓库中,软件仓库放置在许多镜像文件服务器中,即软件源(Repository),在配置文件/etc/apt/sources.list。
APT的工作机制:
服务器端
在APT镜像服务器站点放置所有的deb软件包,以特定的软件功能分析deb文件的依赖性,并将分析资料以文件的形式放在服务器上,解决软件包依赖性文件
客户端
首先下载记载软件包依赖信息的文件,与客户端系统进行对比分析,然后下载相关软件包。镜像站点下载最迅捷的文件无法解决。
通过ping time和hops number(一个网络请求报文到达目标主机所经过的转发主机个数)评估镜像站点,选择评估值最小的镜像站点放置到source.list下
图形化管理工具Synaptic在APT基础上工作的,APT是一组命令集,包括以下
apt-get   用于管理软件包
apt-cache 用于查询软件包信息
apt-proxy 用于搭建APT代理服务器
apt-show-versions 显示系统中软件包的版本信息
apt-config  用于读取APT配置文件的简单工具
apt-cdrom   用于将CD-ROM加入软件源配置文件

应用APR软件包管理系统
1、配置APT软件源
配置文件是/etc/apt/sources.list,软件源配置格式:
DebType     AddressType://Hostaddress/debian Distribution Section1(Component)...
软件包类型 访问地址类型  主机地址             发行版本     节
DebType  deb和deb-src分别表示二进制软件包和源码包
Distribution  发行版本有 dapper、feisty等。
Compent 表示软件包组件类别由技术支持程度划分,main / restricated /universe /multiuniverse
注:每次修改完/etc/apt/sources.list后,一定要运行apt-get update 更新APT软件包数据库
2、更新APT软件包数据库
#apt-get update
3、查找APT软件包信息
#apt-cache subcommands [-chipqs] pkg   ;查看软件源和软件包的相关信息
dpkg命令将系统中已安装的软件包信息全部记录在/var/lib/dpkg/available文件中,而APT命令会扫描软件源中每一个镜像站点服务器,为可用的软件包资源建立索引文件,并存放

在/var/lib/apt/lists文件中。
#apt-cache pkgnames |wc -l  ;获取软件包的统计信息
#apt-cache stats    ;获取更细致的软件包统计数据
#apt-cache search dhcp   ;按关键字dhcp检索软件包,可以指定多个关键字
#apt-cache show dhcp-client;使用“apt-cache search”命令检索到用户关心的软件包,之后就可以使用如下命令进一步查询指定软件包的详细信息。
#apt-cache showpkg dhcp-client   ;获取软件包的常规信息
#apt-cache policy dhcp-client   ;显示dhcp-client软件包的安装状态
#apt-cache depends dhcp-client  ;显示dhcp-client软件包依赖于哪些软件包
#apt-cache rdepends dhcp-client  ;显示反向依赖于哪些包
4、管理APT软件包
#apt-get install samba  ;安装samba软件包
#apt-get --reinstall install samba    ;重新安装samba软件包
#apt-get upgrade    ;一次性将系统中所有的软件包升级到最新版本
#apt-get remove sambe   ;不完全卸载,卸载软件包及其关联软件包,依然保留这些包在系统中的配置文件
#apt-get --purge remove samba  ;完全卸载,彻底删除所有相关软件包及其配置文件。
#apt-get install ssh   ;安装时出现错误
#apt-get check   ;使用“apt-get check”命令对软件包的依赖关系进行检查
#apt-get -f install ;执行该命令,修复因系统故障导致软件包依赖关系出现错误的问题
#apt-get source wireshark
使用“apt-get source”命令获取源码包,通常,源码包中包含3个文件,分别为dsc、orig.tar.gz和diff.gz为后缀,该命令会将源码包下载到用户当前所在目录,并在命令执行过程中,调用dpkg-

source命令,根据dsc文件中的信息,将源码包解压到同名目录中,应用程序的源代码就放在这里。
注:下载wireshark源码包前,必须确保当前系统中已经安装了dpkg-dev软件包(若尚未安装可以执行命令“apt-get install dpkg-dev”进行安装),否则,系统只会下载源码包的3个文件,而不解压

源码包

YUM-智能化地RPM软件包管理
解决RPM软件包依赖关系的问题,强大的类APT软件包管理功能,YUM(Yellow dog Updater Modified)最初有Terra Soft研发,使用pathon语言编写而成,后由杜克大学的Linux@Duke开发团队改进并改名为YUM,使用一个中心软件仓库(repository),既可以是HTTP或FTP站点,也可以是本地软件池但必须包含RPM的header,YUM收集了header并加以分析,然后自动安装、升级、移除RPM。
配置文件/etc/yum.conf,能够支持大多数APT的软件源。
1、应用YUM软件包管理系统
(1)配置软件源
reposdir(/etc/yum/repos.d)目录下的“.repo”文件,可获得YUM软件包仓库的镜像站点地址,如设置远程仓库CentOS-Base.repo;设置本地仓库CentOS-Media.repo在以“.repo”为扩展名的文件中,配置语法是分段的,每一段语法配置一个软件仓库:
[repositoryid]
name=Some name for this repositiory
baseurl=url://server1/path/to/repository/
    url://server2/path/to/repository/
    url://server3/path/to/repository/
mirrorlist=url://path/to/mirrorlist/repository/
enabled=0/1
gpgcheck=0/1
gpgkey=A URL pointing to the ASCII-armoured GPG key file for the repository
各命令含义的描述
repositoryid: 用于指定一个软件仓库
name: 用于指定易读的仓库名称
baseurl:用于指定该软件仓库的URL,可以是如下3种类型:http/ftp/file(用于本地镜像或NFS挂载文件系统)
mirrorlist:用于指定仓库的镜像站点
enabled:用于指定是否使用本仓库,默认值为1
gpgcheck:是否检查软件包的GPG签名
gpgkey: 指定GPG签名文件的URL
注:在name和baseurl部分经常使用如下的变量
$releasever-当前系统的版本号
$basearch-当前系统的平台架构
为了加快更新,在确保更新服务器线路良好时,建议baseurl只指定一个URL
(2)设置使用安装光盘作为更新源
[c5-media]
name=CentOS-$releasever-Media
baseurl=file:///media/CentOS_5.3_Final/CentOS
        file:///media/CentOS/
    file:///media/cdrom/
    file:///media/cdrecorder/
gpgcheck=1
enable=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-beta
为了使用c5-media仓库将Base.repo设置成enable=0,而Media设置成enabled=1
(3)使用YUM管理RPM软件包
#yum install tsclient    ;安装终端服务客户端tsclient
#yum update tsclient    ;更新tsclient软件包
#yum remove tsclient    ;卸载tsclient软件包
(4)使用YUM查询RPM软件包
#yum list tsclient    ;查看软件仓库中的RPM软件包tsclient
#yum info tsclient    ;显示资料库中所有可以安装或更新的以及已经安装了的RPM包的信息
#yum grouplist     ;查看系统中已安装了的和可用的软件包集的情况,掌握了这些信息后,便可以按照需求定制安装需要的软件包集
#yum search Editors  ;查看有关Editors的所有软件包的信息,只有相关的片段信息的时候,可以使用该命令查找
#yum provides MTA  ;查看提供了MTA(Mail Transport Agent)服务的所有软件包
(5)使用YUM管理缓存资源
#yum clean all
清除在YUM缓存中RPM文件和头文件的目录/var/cache/yum/下的缓存数据,否则会消耗服务器的资源。

Linux内核的升级
Linux在英特尔x86架构上提供自由免费的类UNIX OS,用C语言写成,符合POSIX标准的类UNIX OS。该项目从1991年开始,从最初的一些Minix黑客协助,发展为最著名的开源项目。
Linux只是内核,是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。
Linux是一个单内核(monolithic kernel)系统,设备驱动程序可以访问硬件,Linux内的设备驱动程序可以方便地以模块化(modularize)的形式设置,并在系统运行期间直接装载或卸载。
在内核中,包括了进程管理(process management)、定时器(timer)、中断管理(interrupt management)、内存管理(memory management)、模块管理(module management)、虚拟文件系统接口(VFS layer)、文件系统(file system)、设备驱动程序(device driver)、进程间通信(inter-process communication)、网络管理(network management)以及系统启动(system init)等操作系统功能的实现。
1、获取内核源代码
官网地址:,正式的内核版本以gzip工具打包后的tar.bz2格式文件,而后续的补丁文件(用diff产生)也会以gzip工具压缩打包后的tar.bz2格式文件的形式推出。
#wget
#wget http:///pub/linux/kernel/v2.6/patch-2.6.29.1.bz2
#wget http:///pub/linux/kernel/v2.6/patch-2.6.29.2.bz2
2、配置内核
(1)解压源码包文件并升级系统补丁
#cd /usr/src
#mv linux linux.old
#tar -jxvf linux.2.6.29.tar.bz2
#ln -s linux-2.6.29 linux
注:先备份旧版的内核源码,由于系统要求内核源码放置的地点一定要在/usr/src/linux目录下(因为有两个符号链接/usr/include/linux和/usr/include/asm需要指向目前的内核源码),所以用link的方式将该目录链接到Linux目录
#bunzip2 -dv /root/patch-2.6.29.1.bz2 |path -p0
#bunzip2 -dv /root/patch-2.6.29.2.bz2 |path -p0
注:补丁级别有低到高的顺序依次执行
#find /usr/src/linux -follow -name "*.rej" -print
补丁时,无法修补的部分记录在“*.rej”文件中,查看是否存在该类文件,检查是否成功地修补了文件
(2)下载并按照内核升级工具
#wget http:///pub/linux/utils/kernel/module-init-tools/module-init-tools-3.2.tar.bz2
#wget ftp://ftp.muug.mb.ca/mirror/fedoralegacy/fedora/3/os/i386/mkinitrd-4.1.18-2.i386.rpm
#wget ftp://ftp.pbone.net/mirror/download.fedora.redhat.com/pub/fedora/linux/development/i386/os/Packages/lvm2-2.02.44-1.fc11.i386.rpm
#wget ftp://ftp.muug.mb.ca/mirror/fedoralegacy/fedora/3/os/i386/device-mapper-1.00.19-2.i386.rpm
安装module-init-tools工具
#cd /usr/src
#tar jxvf /root/module-init-tools-3.2.tar.gz2
#cd module-init-tools-3.2
#./configure --prefix=/
#make moveold
#make all install
#./generate-modprobe.conf /etc/modprobe.conf
安装mkinitd.lvm2和device-mapper工具
#cd /usr/src
#rpm -ivh --nodeps /root/mkinitrd-4.1.18-2.i386.rpm
#rpm -ivh --nodeps /root/lvm2-2.02.44-1.fc11.i386.rpm
#rpm -ivh --nodeps /root/device-mapper-1.00.19-2.i386.rpm
(3)设定内核的编译模式
参阅/usr/src/linux/README文件,了解目前的内核可以允许多种方式进行编译模式。
make config:需要逐行输入所需要设定的项目,无法往前修改设定,很少使用
make xconfig:以x-windows(Qt)为主要环境的设定模式,除非你在X-windows(Qt)执行,否则无法使用
make gconfig:以X-windows(Gtk)为主要环境的设定模式,要求有X-windows(Gtk)环境
make menuconfig:有点像蚊子界面的菜单模式,而且可以在纯文字界面执行编辑,较为常用
#make mrproper   ;清除先前内核编译过程中生成的垃圾数据
#make menuconfig   ;其中用方向键来选择,“Y”键来确定
注:大多数选项选择默认即可,但需要认真核对每个选项,否则编译很有可能出错,请参考相应的在线文档。
(4)编译内核
#uname -r
注:编译成模块的数据会被系统安装在“/lib/modules/内核版本号”目录下,如果内核版本号一样,会与旧模块版本冲突,所以需要先将旧版内核的模块移动到其他地方。另外编译出来的内核文件名称为vmlinuz,正确地存放位置是目录/boot下,系统映像数据System.map也放置在目录/boot下。
#make dep    ;决定哪些模块需要编译,哪些不需要
#make clean  ;删除之前编译步骤中产生的所有目标文件
#make bzImage  ;产生可开机引导的内核文件vmlinuz,但是由于内核文件较大,需要压缩,所以放置在/usr/src/linux/arch/i386/boot下,命名为bzImage
#make modules   
#make modules_install  ;生成相应的模块并把模块复制到需要的目录下,即/lib/modules/2.6.29
#make install
(5)安装内核
#cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmLinux-2.6.29
#cp /usr/src/linux/System.map /boot/System.map-2.6.29
通常,直接以硬盘开机的方式来测试新的内核,建议保留原内核,以防万一。
接下来进行内核开机配置的工作,以GRUB为例,编辑文件/boot/grub/menu.lst
#vi /boot/grub/menu.lst
title CentOS(2.6.29-2.e15)
    root(hd0,0)
    kernel /boot/vmlinuz-2.6.29 ro root=/dev/VolGroup00/LogVol rhgb quiet
注:将default=1改为default=0
阅读(1758) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~