Linux下软件的安装与卸载(命令行模式)



Linux下软件的安装与卸载(命令行模式)

国内较快开源软件镜象站点,包括Debian、Ubuntu、Fedora、Gentoo、Centos、FreeBSD、Eclipse等开源软件的镜象

http://mirrors.163.com,http://mirrors.sohu.com,http://centos.ustc.edu.cn

Linux下是除了二进制形式的软件分发外,还有源代码形式的软件包,讲一讲这些软件的安装与卸载:
一、二进制分发软件包的安装与卸载
Linux软件的二进制分发是指事先已经编译好二进制形式的软件包的发布形式,其优点是安装使用容易,缺点则是缺乏灵活性,如果该软件包是为特定的硬件/操作系统平台编译的,那它就不能在另外的平台或环境下正确执行。
1、*.rpm形式的二进制软件包
安装:rpm -ivh *.rpm 升级:rpm -Uvh *.rpm 卸载:rpm -e packgename
说明:RPM(RedHat Packge Manager)是RedHat公司出的软件包管理器,使用它可以很容易地对rpm形式的软件包进行安装、升级、卸载、验证、查询等操作,安装简单,而卸载时也可以将软件安装在多处目录中的文件删除干净。rpm的参数中-i是安装,-v是校验,-h是用散列符显示安装进度,*.rpm是软件包的文件名(这里的*.rpm特指*.src.rpm以外的以rpm为后缀的文件);参数-e是删除软件包。
2、*.tar.gz/*.tgz、*.bz2形式的二进制软件包
安装:tar zxvf *.tar.gz 或 tar yxvf *.bz2
卸载:手动删除
说明:*.tar.gz/*.bz2形式的二进制软件包是用tar工具来打包、用gzip/bzip2压缩的,安装时直接解包即可。对于解压后只有单一目录的软件,卸载时用命令“rm -rf 软件目录名”;如果解压后文件分散在多处目录中,则必须一一手动删除,想知道解压时向系统中安装了哪些文件,可以用命令“tar ztvf *.tar.gz”/“tar ytvf *.bz2”获取清单。tar的参数z是调用gzip解压,x是解包,v是校验,f是显示结果,y是调用bzip2解压,t是列出包的文件清单。
3、提供安装程序的软件包
这类软件包已经提供了安装脚本或二进制的安装向导程序(setup、install、install.sh等),只需运行它就可以完成软件的安装;而卸载时也相应地提供了反安装的脚本或程序。而且在软件安装后提供反安装的功能,目前这种类型的软件包还比较少。

二、源代码分发软件包的安装与卸载
Linux软件的源代码分发是指提供了该软件所有程序源代码的发布形式,需要用户自己编译成可执行的二进制代码并进行安装,其优点是配置灵活,可以随意去掉或保留某些功能/模块,适应多种硬件/操作系统平台及编译环境,缺点是难度较大,一般不适合初学者使用。
1、*.src.rpm形式的源代码软件包
安装:rpm -rebuild *.src.rpm
cd /usr/src/dist/RPMS
rpm -ivh *.rpm
卸载:rpm -e packgename
说明:rpm –rebuild *.src.rpm命令将源代码编译并在/usr/src/dist/RPMS下生成二进制的rpm包,然后再安装该二进制包即可。packgename如前所述。
2、*.tar.gz/*.tgz、*.bz2形式的源代码软件包
安装:tar zxvf *.tar.gz 或 tar yxvf *.bz2 先解压然后进入解压后的目录:
./configure 配置
make 编译
make install 安装
卸载:make uninstall 或 手动删除
说明:建议解压后先阅读说明文件,可以了解安装有哪些需求,有必要时还需改动编译配置。有些软件包的源代码在编译安装后可以用make install命令来进行卸载,如果不提供此功能,则软件的卸载必须手动删除。由于软件可能将文件分散地安装在系统的多个目录中,往往很难把它删除干净,那你应该在编译前进行配置,指定软件将要安装到目标路径:./configure –prefix=目录名,这样可以使用“rm -rf 软件目录名”命令来进行干净彻底的卸载。与其它安装方式相比,需要用户自己编译安装是最难的。
导入非官方库地址方法
检查是否存在ls -l /etc/yum.repos.d/dag.repo
如果不存在就vi /etc/yum.repos.d/dag.repo
导入如下内容
[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
enabled=1
然后,要导入GPG的检查文件
wget http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
rpm –import RPM-GPG-KEY.dag.txt

为CentOS/RHEL添加EPEL软件仓库(RPMForge,rpmfusion)
CentOS是RHEL编译过来的,去掉了所有关于版权问题的东西。因此,在没有使用第三方软件库的情况下,很多软件无法用yum install来直接安装。Redhat Fedora项目下有一个 EPEL(Extra Packages for Enterprise Linux),EPEL是RHEL和Fedora的第三方软件仓库.安装EPEL 非常简单.官方地址是http://fedoraproject.org/wiki/EPEL/FAQ#howtouse
1.要安装yum-priorities插件,确保官方源首选。yum install yum-priorities
安装完后需要编辑/etc/yum.repos.d/ 目录下的.repo相关文件(如CentOS-Base.repo),在这些文件每小段末尾插入顺序指令:priority=N (N为1到99的正整数,数值越小越优先)
一般[base], [addons], [updates], [extras] 末尾加priority=1
[CentOSplus],[contrib]末尾加priority=2
其他第三的软件源末尾加priority=N (N>10)
2.下载与安装相应EPEL的rpm文件包
(1)下载与安装EPEL的rpm文件包
32位系统su -c ‘rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm’
64位系统su -c ‘rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm’
(2)导入DAG的PGP Key
rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
(3)设置/etc/yum.repos.d/epel.repo文件中源的级别,就是添加priority=11这句
编辑此文件在[epel]段最后加上priority=11
3.安装rpmforge的rpm文件包
RPMForge库现在已经拥有超过10000种的CentOS的软件包,被CentOS社区认为是最安全也是最稳定的一个第三方软件库。
(1)下载rpmforge的rpm文件包
32位系统wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.i386.rpm
64位系统wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm
(2)安装DAG的PGP Key
rpm –import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
(3)验证rpmforge的rpm文件包
rpm -K rpmforge-release-0.5.1-1.el5.rf.*.rpm
(4)安装rpmforge的rpm文件包
rpm -i rpmforge-release-0.5.1-1.el5.rf.*.rpm
(5)设置/etc/yum.repos.d/rpmforge.repo文件中源的级别,就是添加priority=12这句。
编辑此文件在[rpmforge]段最后加上priority=12
4.安装rpmfusion的rpm文件包(选装)
CentOS官方说这个软件库里面的软件稳定性不如rpmforge,这里仅供选用
在上面安装完epel后输入su -c ‘yum install foo’然后
CentOS 5输入如下命令
su -c ‘rpm -Uvh http://download1.rpmfusion.org/free/el/updates/testing/5/i386/rpmfusion-free-release-5-0.1.noarch.rpm http://download1.rpmfusion.org/nonfree/el/updates/testing/5/i386/rpmfusion-nonfree-release-5-0.1.noarch.rpm’
CentOS 6输入如下命令
su -c ‘rpm -Uvh http://download1.rpmfusion.org/free/el/updates/testing/6/i386/rpmfusion-free-release-6-0.1.noarch.rpm http://download1.rpmfusion.org/nonfree/el/updates/testing/6/i386/rpmfusion-nonfree-release-6-0.1.noarch.rpm’
卸载方法 rpm -e rpmfusion*

如果遇到Header V3 DSA signature: NOKEY这是由于yum安装了旧版本的GPG keys造成的,解决办法就是
rpm –import /etc/pki/rpm-gpg/RPM*
———————————–
关于文件系统格式的比较ext4 , ext3 , jfs , xfs , reiserfs
看了不少测试,都是大和小文件读写,感觉还缺少实际应用的测试,实际生产环境的测试才能说明问题。
在写入方面ext4>ext2>reiserfs>ext3>jfs>xfs
在读取方面ext2>ext3>ext4>jfs>xfs>reiserfs
实际应用方面jfs=ext4>xfs>reiserfs>ext3>ext2
———————————–
Debian常用命令总结
安装Debian时需要镜像官方软件包,/etc/apt/sources.list文件可以得到相关站点
每行的第一个单词deb或deb-src,描述了文件类型,目录中包含的是二进制软件包(deb),即我们通常使用的已编译好的软件包;或包含的是包源码(deb-src),源码包包含源程序编码、Debian管理文件(.dsc)和“Debian化”该程序所做更改的记录文件diff.gz。
如果安装个别软件包要用到apt和dpkg两个命令。
apt
APT(the Advanced Packaging Tool)是Debian软件包管理系统的高级界面,由几个名字以“apt-”打头的程序组成。apt-get、apt-cache、apt-cdrom ,apt-config是处理软件包的命令行工具,它们也是其它用户前台程序的后端,如dselect和aptitude。
apt-get update 从 /etc/apt/source.list 中源的更新软件包列表
apt-cache search search-string 描述如 search-string 的软件包
apt-cache policy package-name 显示软件包的版本和优先级
apt-cache show package-name 显示文件的描述信息
apt-cache showpkg package-name 显示软件包的依赖关系
apt-get install package-name 从源安装软件包及其所有依赖包
apt-get upgrade 将当前安装的软件包更新到最新
我们看到有些包被阻止更新(kept back)
apt-get dist-upgrade
如 apt-get upgrade, 会自动解决冲突
apt-get remove package-names 删除软件包, 及其所有依赖它的
apt-get –purge remove 彻底删除这些包及其配置文件
apt-get –purge remove gnome-panel nautilus+
在删除软件包时,如果你在软件包名字后面紧跟一个“+”,那么该软件包就会被安装而不是删除。
apt-cache depends package-names 列出指定包的所有依赖包
apt-cache rdepends package-names列出依赖于给定包的所有软件包
apt-file upgrade 从源更新内容列表
apt-file search file-name 查找包含文件的软件包
apt-file search package-name 列出软件包的内容
auto-apt
如果需要可以自动安装软件包, 可以替代 apt-file, 需要安装 auto-apt.
aptitude APT 的控制台接口, 需要安装 aptitude
synaptic APT的GUI接口, 需要安装synaptic
apt-get clean
删除保存在缓存目录下(/var/cache/apt/archives)的被下载的软件包。
将删除/var/cache/apt/archives目录和/var/cache/apt/archives/partial目录下的所有文件,除了被锁定的文件。再次安装某个软件包时,APT将重新下载它。
apt-get autoclean 仅删除那些不需要再次下载的文件。
在dselect中选好了软件包后,运行:
apt-get -u dselect-upgrade
比较同apt-get dist-upgrade时的情形
可以看到在前例中许多软件包被安装是其它软件包“推荐”或“建议”的结果。另外一些软件包被安装或删除通过dselect工具作出的决定。由此可见dselect与APT结合起来将是一个功能强大的工具。
apt-get –reinstall install gdm 软件包的修复
apt-get check 从默认服务器下载软件包数据库
apt-get upgrade package_name升级指定的软件包,并升级其依赖的软件包apt-cache showpkg package_name显示软件包的一些常规信息apt-cache stats显示相关的统计信息
apt-cache dump 显示缓存中的每个软件包简要描述信息
apt-cache unmet 显示不符合一致性的依赖关系。
apt-cache show 显示指定软件包的记录信息,类似于rpm -qi
apt-cache search 查找软件包
apt-cache depends 显示软件包的依赖性关系。
apt-cache pkgnames 列出所有的软件包
apt-config apt-config dump 显示目前的配置信息。
apt-get install nessus-server 自动下载安装依赖包
apt-get source package_name 下载软件包的source rpm
dpkg
它是操作软件包文件的主要工具;
dpkg由几个原始的辅助程序演化而来。
·dpkg-deb:操作.deb文件。dpkg-deb(1)
·dpkg-ftp:一个旧的软件包获取命令。dpkg-ftp(1)
·dpkg-mountable:一个旧的软件包获取命令。dpkg-mountable(1)
·dpkg-split:将大软件包分割成小包。dpkg-split(1)
dpkg -l [names] 列出软件包
dpkg -I pkg.deb 显示软件包相关信息
dpkg -c pkg.deb 列出软件包的内容
dpkg -S filename 显示哪个包包含这个文件
dpkg -i pkg.deb 安装软件包
deborphan 显示没有被依赖(孤儿)的软件包, 需要安装deborphan
debsums 审计安装的软件报, 需要安装debsums
dpkg-divert [option] file 重写一个软件包的版本
dpkg –compare-versions v1 gt v2 比较版本, 用 echo $? 检查
dpkg-query -W –showformat=format 查询已安装软件包, 格式 例如’$ $ $ ‘.
dpkg –get-selections 将选择的软件包写入一个文件
dpkg –set-selection 从文件读取软件包选择

aptitude update 更新可用的包列表
aptitude upgrade 升级可用的包
aptitude dist-upgrade 将系统升级到新的发行版
aptitude install pkgname 安装包
aptitude remove pkgname 删除包
aptitude purge pkgname 删除包及其配置文件
aptitude search string 搜索包
aptitude show pkgname 显示包的详细信息
aptitude clean 删除下载的包文件
aptitude autoclean 仅删除过期的包文件
升级指令aptitude update && aptitude upgrade
———————————–
VI VIM的使用
vim有3种工作模式
Command(命令)模式,用于输入命令 (使用ESC键切换)
Insert(插入)模式,用于插入文本
Visual(可视)模式,用于视化的的高亮并选定正文
保存及退出
:w 保存
:q! 不保存退出
:w filename 另存为filename
:wq! 保存退出
:wq! filename 注:以filename为文件名保存后退出
:x 应该是保存并退出 ,功能和:wq!相同3.5 插入模式(文本的插入)
进入插入模式
i 在光标之前插入(这个最常用了)
a 在光标之后插入;
I 在光标所在行的行首插入
A 在光标所在行的行末插入
o 在光标所在的行的上面插入一行
O 在光标所在的行的下面插入一行
s 删除光标后的一个字符,然后进入插入模式
S 删除光标所在的行,然后进入插入模式
删除字符
x 一个字符(这个最常用了)
#x 删除几个字符,#表示数字,比如3x
dw 删除一个单词
dw 删除几个单词,#用数字表示,比如3dw表示删除三个单词
dd 删除一行
#dd 删除多个行,#代表数字,比如3dd 表示删除光标行及光标的下两行
d$ 删除光标到行尾的内容
J 清除光标所处的行与上一行之间的空格,把光标行和上一行接在一起
撤销编辑
u 撤消修改或删除操作
:u
搜索
/key key及搜索关键字,支持正则
————————————————————–
yum 不能用的解决方法
1.rpm数据库出错了
rm -f /var/lib/rpm/__db.* 将rpm所用的数据库删除
# rpm –rebuilddb 重建该数据库
# yum clean all
2.或者问题是快速搜寻源出错
yum –disableplugin=fastestmirror update
yum –disableplugin=fastestmirror -y install pam-devel
或者vi /etc/yum/pluginconf.d/fastestmirror.conf使得enabled=0
3.重装yum
显示卸载所有相关软件rpm -qa | grep yum再卸载
然后安装三个软件即可到这里下载http://centos.ustc.edu.cn/centos/5.4/os/i386/CentOS/
将yum,yum-fastestmirror,yum-metadata-parser下载到一个文件夹,然后执行rpm -ivh yum*.rpm