Linux 软件包管理 第6天

2012-08-11 22:04:19 0  category: linux
rpm 包管理
RPM 软件包的一个例子:
sudo-1.7.2pl-5.el5.i386.rpm
其中包括软件名(sudo)
,版本号(1.7.2pl)
,发行号(5.el5)
,和硬件平台(i386)

(1)卸载
$rpm -e sudo
注意:如果其它软件包有依赖关系,卸载时会产生提示信息,可使用 --nodeps 强行卸
载。
$ rpm -e --nodeps 软件名
忽略依赖关系
(2)安装
$rpm -ivh sudo-1.7.2pl-5.el5.i386.rpm
挂载光盘:
1.创建挂载点 mkdir /mnt/cdrom
2.挂载 mount 设备 挂载点
$ mount /dev/cdrom /mnt/cdrom
$ cd /mnt/cdrom
--excludedocs 不安装帮助文档
rpm -ivh --excludedocs 软件包
--prefix=PATH 将软件安装到 PATH 指定的路径下。
(90%不能该路径,
取决于作者)
rpm -ivh --prefix=路径 软件包
--test 只对安装进行测试,并不实际安装。
--replacepkgs (软件包已被安装)
rpm -ivh --replacepkgs 软件包 覆盖安装,进行之前备份配置文件
--replacefiles 忽略错误信息(一个文件已在安装其他软件包时安装,发生文件
冲突时用)
--nodeps 强行安装(未安装依赖包时)
RPM 源包:/mnt/cdrom/CentOS/
(3)查询:
rpm -q 软件名
rpm -qa | grep 软件名
$ rpm -q sudo
$ rpm -q vim 无结果
$ rpm -qa | grep vim
-a 查询所有已安装的软件包
-f 查询文件所属软件包
$ rpm -qf /bin/ls
$ rpm -qf /etc/inittab
$ rpm -qf /etc/services
$ mv /etc/services /backup
$ rpm -qf /etc/services
-p
-i
-l
-d
无法复制移动时用光盘修复模式操作。
查询软件包
显示软件包信息
$ rpm -qi samba (samba 为安装过的软件)
$ rpm -qip rpm 包 (查询未安装的软件包信息时使用)
显示软件包中的文件列表
$ rpm -ql samba | more (samba 为安装过的软件)
$ rpm -qlp rpm 包 (查询未安装的软件包信息时使用)
显示被标注为文档的文件列表(查看软件帮助文档)
$ rpm -qd samba | more (samba 为安装过的软件)
$ rpm -qdp rpm 包 (查询未安装的软件包信息时使用)
-c 显示被标注为配置文件的文件列表
$ rpm -qc samba | more (samba 为安装过的软件)
$ rpm -qcp rpm 包 (查询未安装的软件包信息时使用)
(4)升级
$ rpm -Uvh sudo-.18.0pl-5.el5.i386.rpm
~/.vimrc 的注释符号不是#,而是".
$ rpm -qa | grep vim
$ rpm -qd vim-common (列出很多.gz 文件,但是看这些文件没多大意义)
$ rpm -ql vim-common | grep example (多用此方式查找帮助信息)
(5)校验
rpm -V 软件名称
$ rpm-V sudo 无输出结果表示文件未被修改过
missing 文件被删除
5 文件的 md5 校验值(文件被修改过后会显示)
S 文件大小
M 文件权限
T 文件的创建时间时间,文件别修改过,文件的时间也会改变
L 链接文件
D 设备文件
U 文件的用户
G 文件的权限
$ chmod 777 /usr/sbin/visudo
$ rpm -V sudo
.M......
/usr/sbin/visudo
软件安装后无法使用或有异常,可以使用 rpm -V 校验,获得反馈信息
$ rm /etc/pam.d/sudo
rm:是否删除 一般文件 “/etc/pam.d/sudo”? y
$rpm -V sudo
missing c /etc/pam.d/sudo
.M......
/usr/sbin/visudo
$ chgrp sys /usr/bin/sudo
$rpm -V sudo
missing c /etc/pam.d/sudo
.M....G.
/usr/bin/sudo
.M....G.
/usr/bin/sudoedit
.M......
/usr/sbin/visudo
$ md5sum /etc/inittab
92a39a223f68e67e9e6c412443851aeb /etc/inittab
$ rpm -qf /etc/inittab
initscripts-8.45.30-2.el5.centos
$ echo "#welcome#" >> /etc/inittab
$ rpm -V initscripts
S.5....T c /etc/inittab
(6)软件报文件提取
解压所有文件到当前目录
$ mkdir /mnt/cdrom
$ mount /dev/cdrom /mnt/cdrom
mount: block device /dev/cdrom is write-protected, mounting read-only
$ rpm2cpio /mnt/cdrom/CentOS/sudo-1.7.2p1-5.el5.i386.rpm | cpio -idv
./etc/pam.d/sudo
cpio -i(导入)d(保持目录)v
948 blocks
解压指定文件到当前目录
$ mkdir /mnt/cdrom
$ mount /dev/cdrom /mnt/cdrom
mount: block device /dev/cdrom is write-protected, mounting read-only
$
rpm2cpio
/mnt/cdrom/CentOS/sudo-1.7.2p1-5.el5.i386.rpm
|
cpio
-idv ./etc/pam.d/sudo
./etc/pam.d/sudo
cpio -i(导入)d(保持目录)v
948 blocks
$ ls ./etc/pam.d
sudo
$ cp ./etc/pam.d/sudo /etc/pam.d
或者到根目录下操作
$cd /
$rm /etc/pam.d/sudo
rm:是否删除 一般文件 “/etc/pam.d/sudo”? y
$
rpm2cpio
/mnt/cdrom/CentOS/sudo-1.7.2p1-5.el5.i386.rpm
|
cpio
-idv ./etc/pam.d/sudo
./etc/pam.d/sudo
948 blocks
如果/etc/inittab 文件删除,如何恢复
$ rm /etc/inittab
rm:是否删除 一般文件 “/etc/inittab”? y
$ reboot
Broadcast message from root (pts/0) (Wed Feb 23 04:21:54 2011):
The system is going down for reboot NOW!
进入光盘修复模式
$rpm -qf /etc/inittab 找不到文件
$rpm -qf /mnt/sysimage/etc/inittab 找不到文件
$chroot /mnt/sysimage
$ rpm -qf /etc/inittab/inittab
initscripts-8.45.30-2.e15.centos
$mount /dev/cdrom /mnt/cdrom (错误操作)
$mount -t iso9660 /dev/cdrom /mnt/cdrom (错误操作)
$ ls /dev/hd<TAB><TAB>可列出多个硬盘,hdc 为光盘,hdd 为第三个硬盘
$mount /dev/hdc /mnt/cdrom
$ pwd
/
$rpm2cpio /mnt/cdrom/CentOS/initscripts-8.45.30.-2.e15.centos.i386.rpm |
cpio -idv ./etc/inittab
$ exit 退出 chroot
$ exit 退出 光盘修复模式
[root@helen ~]# ls -l /dev/ | grep "^l"
lrwxrwxrwx 1 root root
3 03-13 09:38 cdrom -> hdc
lrwxrwxrwx 1 root root
13 03-13 09:38 fd -> /proc/self/fd
lrwxrwxrwx 1 root root
3 03-13 09:38 floppy -> fd0
lrwxrwxrwx 1 root root
15 03-13 09:38 stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root
15 03-13 09:38 stdout -> /proc/self/fd/1
YUM 包管理
有点:
1 自动解决软件包依赖关系
2.方便软件包升级
$ /etc/rc.d/init.d/network restart (让 Linux 上网)
安装
yum install 软件名
检测升级
yum check-update 软件名
升级
yum update 软件名
软件包查询 yum list 软件名
软件包信息 yum info 软件名
卸载
yum remove 软件名
帮助
yum -help、man yum
总结:安装、卸载用 yum,查询、校验用 rpm
源代码包安装
优点:
1.可定制。
2.适用性广,同一源代码包在 UNIX、Linux 上都可用,rpm 只支持 RedHat 系
列的 Linux。
在不支持中文的字符界面下删除中文文件名的文件
$ ls -i
$find -inum 63813(i 节点) -ok rm {} \;
此种方法也可用于删除文件名为"a b"、"-a"等的文件
标准安装步骤
$ tar -zxf proftpd-1.3.3d.tar.gz
$ cd proftpd-1.3.3d
$ ./configure --prefix=/usr/local/proftpd
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking target system type... i686-pc-linux-gnu
checking for gcc... no(未安装 gcc 编译工具)
checking for cc... no
checking for cl.exe... no
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details.
$ mount /dev/cdrom /mnt/cdrom
$ cd /mnt/cdrom/CentOS
$ rpm -ivh gcc-4.1.2-48.el5.i386.rpm
warning: gcc-4.1.2-48.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID
e8562897
error: Failed dependencies:
cpp = 4.1.2-48.el5 is needed by gcc-4.1.2-48.el5.i386
glibc-devel >= 2.2.90-12 is needed by gcc-4.1.2-48.el5.i386
libgomp >= 4.1.2-48.el5 is needed by gcc-4.1.2-48.el5.i386
$ rpm -ivh cpp-4.1.2-48.el5.i386.rpm
warning: cpp-4.1.2-48.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID
e8562897
Preparing...
########################################### [100%]
1:cpp
########################################### [100%]
$ rpm -ivh glibc-devel-2.5-49.i386.rpm
warning: glibc-devel-2.5-49.i386.rpm: Header V3 DSA signature: NOKEY, key ID
e8562897
error: Failed dependencies:
glibc-headers is needed by glibc-devel-2.5-49.i386
glibc-headers = 2.5-49 is needed by glibc-devel-2.5-49.i386
$ rpm -ivh glibc-headers-2.5-49.i386.rpm
warning: glibc-headers-2.5-49.i386.rpm: Header V3 DSA signature: NOKEY, key ID
e8562897
error: Failed dependencies:
kernel-headers is needed by glibc-headers-2.5-49.i386
kernel-headers >= 2.2.1 is needed by glibc-headers-2.5-49.i386
$ rpm -ivh kernel-headers-2.6.18-194.el5.i386.rpm
warning: kernel-headers-2.6.18-194.el5.i386.rpm: Header V3 DSA signature:
NOKEY, key ID e8562897
Preparing...
########################################### [100%]
1:kernel-headers
########################################### [100%]
$ rpm -ivh glibc-headers-2.5-49.i386.rpm
warning: glibc-headers-2.5-49.i386.rpm: Header V3 DSA signature: NOKEY, key ID
e8562897
Preparing...
########################################### [100%]
1:glibc-headers
########################################### [100%]
$ rpm -ivh glibc-devel-2.5-49.i386.rpm
warning: glibc-devel-2.5-49.i386.rpm: Header V3 DSA signature: NOKEY, key ID
e8562897
Preparing...
########################################### [100%]
1:glibc-devel
########################################### [100%]
$ rpm -ivh libgomp-4.4.0-6.el5.i386.rpm
warning: libgomp-4.4.0-6.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID
e8562897
Preparing...
########################################### [100%]
1:libgomp
########################################### [100%]
$ rpm -ivh gcc-4.1.2-48.el5.i386.rpm
warning: gcc-4.1.2-48.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID
e8562897
Preparing...
########################################### [100%]
1:gcc
########################################### [100%]
$ ./configure --prefix=/usr/local/proftpd
$make 编译(将源代码包编译成可执行文件)
$make install(将编译后的文件拷贝到相应的目录)
卸载
1.关闭服务。
2.rm 删除安装时--prefix 指定的目录。
脚本安装
分为 shell 脚本安装(webmin)
,Java 脚本安装(Openoffice)
# tar -xzf webmin-1.530.tar.gz
# cd webmin-1.530
# ls | grep configure 无输出结果找不到 configure 文件
# ls | grep README(查看帮助文档 README 或 INSTALL)
README
# cat README | more
Webmin can be installed in two different ways :
1) By just running the setup.sh script in the same directory as this README file,
with no arguments.
# ./setup.sh
Config file directory [/etc/webmin]:
Log file directory [/var/webmin]: /var/log/webmin
Full path to perl (default /usr/bin/perl):
Web server port (default 10000):
Login name (default admin):
Use SSL (y/n): y
Start Webmin at boot time (y/n): y
Created init script /etc/rc.d/init.d/webmin(服务脚本)
..done
Creating uninstall script /etc/webmin/uninstall.sh ..(卸载脚本)
..done
https://helen:10000/
访问时用 https://192.168.0.112:10000/不用主机名访问是因为 Linux 不支持
NetBIOS 协议
# iptables -F (关闭防火墙,便于 Windows 浏览器浏览)

 

APT 包管理
apt 包用于 Debian、Ubanto 系列的 Linux。
搜索软件包 apt-cache search
软件包信息 apt-cache show
安装 apt-get install (reinstall、-f)
删除 apt-remove (autoremove、--puuge)
更新软件源 apt-get update
更新已安装包 apt-get upgrade