linux软件管理
阅读目录
linux发行版本
Linux的发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的Red Hat(RHEL红帽)为代表,后者以Debian为代表。
Redhat系列
Redhat系列的包管理方式采用的是基于RPM包和YUM包的管理方式,包分发方式是编译好的二进制文件。
- RHEL (Redhat Enterprise Linux):也就是所谓的Redhat Advance Server,收费版本,稳定性非常好,适合服务器使用。
- Fedora Core :由原来的Redhat桌面版本发展而来,免费版本,稳定性较差,最好只用于桌面应用, 用户可免费体验到最新的技术或工具,而功能成熟后会被加入到RHEL系统中。因此也被称为RHEL系统的“试验田”。
- CentOS:RHEL的社区克隆版本,免费版本,稳定性非常好,适合服务器使用,CentOS 是RHEL源代码再编译的产物,而且在RHEL的基础上修正了不少已知的 Bug ,相对于其他 Linux 发行版,其稳定性值得信赖。
- OpenSUSE: 德国著名的Linux系统,全球范围内有着不错的声誉及市场占有率,发行量在欧洲占第一位。。OpenSUSE对个人来说是完全免费的,包括使用和在线更新。
Debian系列
包括Debian和Ubuntu等。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。提供了接近十万种不同的开源软件支持,在国外用于很高的认可度和使用率。对于各类内核架构支持性良好,稳定性、安全性强更有免费的技术支持。
Debian最具特色的是apt-get / dpkg包管理方式。
分为三个版本分支(branch):
- unstable,为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,适合桌面用户。
- testing,经过unstable中的测试,相对较为稳定,也支持了不少新技术。
- stable,一般只用于服务器,上面的软件包大部分都比较过时,但是稳定和安全性都非常的高。
Linux安装目录
这里借用实验楼的一张图说明linux文件的关系:
opt目录
/opt目录用来安装附加软件包,是用户级的程序目录,可以理解为D:/Software。安装到/opt目录下的程序,它所有的数据、库文件等等都是放在同个目录下面。opt有可选的意思,这里可以用于放置第三方大型软件(或游戏),当你不需要时,直接rm -rf掉即可。在硬盘容量不够时,也可将/opt单独挂载到其他磁盘上使用。
/usr与/usr/local目录
/usr:系统级的目录,可以理解为C:/Windows/。
/usr/lib:理解为C:/Windows/System32。
/usr/local:用户级的程序目录,可以理解为C:/Progrem Files/。用户自己编译的软件默认会安装到这个目录下。
/usr/local这是大多数手动安装(即,在软件包管理器外部)的软件的去向。它的结构与/usr相同。 最好将/usr留给软件包管理器,并将所有自定义脚本和内容放入/usr/local,因为通常没有什么重要的东西存在于/usr/local中。
/usr/local和/usr目录具有相类似的目录结构。让软件包管理器来管理/usr目录,而把自定义的脚本(scripts)放到/usr/local目录下面。
如下图所示:
- which命令
搜索命令所在路径及别名,使用which查找文件,会去查找环境变量中存在的文件
系统环境变量:/etc/profile
个人环境变量:
root用户: /root/.bash_profile
普通用户: /home/用户名/.bash_profile
- whereis 命令
搜索命令所在路径及帮助文档所在位置
只能用于查找在linux系统中存在或安装的程序文件(二进制文件),不能用于查找普通文件,支持模糊查询
软件安装的几种方式
rpm包安装软件
- rpm安装
rpm -ivh 包全名
选项:
-i (install) 安装
-v (verbose) 显示详细信息
-h (hash) 显示进度
--nodeps 不检测依赖性(实际中绝不允许使用)
2. 升级
rpm -Uvh 包全名
选项:
-U (upgrade) 升级
- 卸载
rpm -e 包名
选项:
-e (erase)卸载
--nodeps 不检测依赖性(实际工作中也不允许使用)
3、查询包中文件安装位置
rpm -ql 包名
选项:
-q 查询(query)
-l 列表(list)
-a 所有(all)
-p 查询未安装包信息(package)
yum工具相关命令
# yum install package -y
默认是安装来自仓库里的软件,指定的是软件名字。多个包空格隔开;-y (取消交互)
# yum install ./xxx.rpm
或者
# yum localinstall ./xxx.rpm
安装来自本地指定路径下的rpm包,而不是来自仓库
# yum remove 或者 erase package
卸载软件包
# yum update
更新仓库里所有比本机已经安装过的软件要的软件
# yum update package
指定升级的软件
# yum search mysql
搜索出所有软件名字“mysql”关键字的软件
# yum provides "libaudiofile.so.0"
找出模块由哪些软件包提供
# yum clean all
清空之前的yum列表缓存
# yum makecache
创建新的缓存
# yum list
列出仓库里的所有软件包
# yum repolist
列出已配置的软件仓库
# yum list |grep 关键字
@代表已经安装成功
# yum list installed
查看已安装的包
# yum grouplist
查看包组
# yum groupinstall "包组"
安装包组
# yum groupremove "包组"
二进制安装
二进制包的安装比较简单,我们需要做的只是将从网络上下载的二进制包解压后放到合适的目录,然后将包含可执行的主程序文件的目录添加进PATH环境变量即可。
源代码安装方式
源码安装(.tar、tar.gz、tar.bz2、tar.Z)
首先解压缩源码压缩包然后通过tar命令来完成
a.解xx.tar.gz:tar zxf xx.tar.gz
b.解xx.tar.Z:tar zxf xx.tar.Z
c.解xx.tgz:tar zxf xx.tgz
d.解xx.bz2:bunzip2 xx.bz2
e.解xx.tar:tar xf xx.tar
然后进入到解压出的目录中,建议先读一下README之类的说明文件,因为此时不同源代码包或者预编译包可能存在差异,然后建议使用ls -F --color或者ls -F命令(实际上我的只需要 l 命令即可)查看一下可执行文件,可执行文件会以*号的尾部标志。
一般依次执行:
./configure (检查编译环境)
make (对源代码进行编译)
sudo make install (将生成的可执行文件安装到当前计算机中)
make clean (选择执行,主要是用来清除一些临时文件)
即可完成安装。
解释:
1、configure,这一步一般用来生成 Makefile,为下一步的编译做准备,你可以通过在 configure 后加上参数来对安装进行控制,比如代码:./configure –prefix=/usr 意思是将该软件安装在 /usr 下面,执行文件就会安装在 /usr/bin (而不是默认的 /usr/local/bin),资源文件就会安装在 /usr/share(而不是默认的/usr/local/share)。同时一些软件的配置文件你可以通过指定 –sys-config= 参数进行设定。有一些软件还可以加上 –with、–enable、–without、–disable 等等参数对编译加以控制,你可以通过允许 ./configure –help 察看详细的说明帮助。
2、make,这一步就是编译,大多数的源代码包都经过这一步进行编译(当然有些perl或python编写的软件需要调用perl或python来进行编译)。如果 在 make 过程中出现 error ,你就要记下错误代码(注意不仅仅是最后一行),然后你可以向开发者提交 bugreport(一般在 INSTALL 里有提交地址),或者你的系统少了一些依赖库等,这些需要自己仔细研究错误代码。
3、make insatll,这条命令来进行安装(当然有些软件需要先运行 make check 或 make test 来进行一些测试),这一步一般需要你有 root 权限(因为要向系统写入文件)。
deb打包的软件安装
这是 Debian Linux 提供的一个包管理器,它与 RPM 十分类似。但由于 RPM 出现得更早,所以在各种版本的 Linux 都常见到。而 Debian 的包管理器 dpkg 则只出现在 Debina Linux 中,其它 Linux 版本一般都没有。
1、安装:dpkg –i deb软件包名,如:dpkg –i software-1.2.3-1.deb
安装:
1、找到相应的软件包,比如 software-1.2.3-1.deb,下载到本机某个目录;
2、打开一个终端,su -成root用户;
3、cd software-1.2.3-1.deb所在的目录;
4、输入dpkg -i software-1.2.3-1.deb
卸载:
dpkg –e 软件名,如:dpkg –e software
查询:
dpkg –l ‘*软件包名*’,如:dpkg –l '*software*'
apt安装方式
apt-get 是 Debian,Ubuntu 发行版的包管理工具,与红帽中的 yum 工具非常类似。
apt-get 命令一般需要 root 权限执行,所以一般跟着 sudo 命令,例 sudo apt-get xxxx
apt-cache search package 搜索包
apt-cache show package 获取包的相关信息,如说明、大小、版本等
apt-cache depends package 了解使用依赖
apt-cache rdepends package 查看该包被哪些包依赖
sudo apt-get install package 安装包,apt会自动下载安装,若有依赖性软件包,apt也会自动下载安装
sudo apt-get install package --reinstall 重新安装包
sudo apt-get -f install 修复安装"-f = --fix-missing"
sudo apt-get remove package 删除包,如有依赖的软件包,则会一并移除
sudo apt-get remove package --purge 删除包,包括删除配置文件等
sudo apt-get update 更新源(该指令是用来取得记录在 /etc/apt/sources.list 内的远端服务器的软件包清单,在使用apt-get dist-upgrade指令升级软件前,一定要记得先用此指令将软件包清单更新)
sudo apt-get upgrade 更新已安装的软件包
sudo apt-get dist-upgrade 升级系统
sudo apt-get dselect-upgrade 使用 dselect 升级
sudo apt-get build-dep package 安装相关的编译环境
apt-get source package 下载该包的源代码
sudo apt-get clean && sudo apt-get autoclean 清理无用的包(当使用 apt-get install 指令安装后,下载的软件包会放置在 /var/cache/apt/archives,使用apt-get clean指令可将其删除)
sudo apt-get check 检查是否有损坏的依赖