linux第十二天

软件包管理rpm以及yum,编译安装

linux 第十二天

软件包管理

最原始的软件包:编译安装。

我们可以使用rpm管理软件的安装卸载等,

avatar

avatar

rmp内的文件一般有各种tar打包文件

avatar

二进制文件运行要依赖各种库,window和linux依赖的abi不同

avatar

avatar

ldconfig -v查看系统加载的库文件

avatar

avatar

avatar

-v显示详细,vv就更详细,-h是进度条

avatar

假装安装:rpm -ivh sl-5.02-9.fc29.x86_64.rpm --test

有些包需 要一些依赖,可以使用:rpm -ivh sl-5.02-9.fc29.x86_64.rpm --test --nodigest

我们可以看某个包有没有装上:rpm -q tree。可以看其中的文件:rpm -ql tree。如果我们不小心把它里面的内容删了,可以使用replacepkgs覆盖安装(注意是所有文件覆盖)。我们可以使用rpm2cpio这个命令把rpm命令转化为cpio的数据流,rpm2cpio tree-1.6.0...|cpio -tv查看里面的内容,然后我们可以挑一部分解压。rpm2cpio tree-1.6.0...|cpio -id ./usr/bin/tree

如果有这种情况:A包中有a.text文件,但是B包也有,那么可以用replacefiles(一般文件都不会带版本号)

avatar

注意内核包是可以并存的,在开机的时候会让你选择启动哪个。如果你要安装一个低版本的,可以使用oldpackage降级。装完以后,可以在boot下面看到两个版本

avatar

avatar

注意如果你/var/lib/rpm文件不存在那么rpm -qa是无法查询的.qf查询文件来自哪个包(就算文件被删了也可以查到,因为查的是数据库)

rpm -q tree可以跟上某个包单独查询,但是必须准确写出包名,可以用grep,或者:rpm -qa "*tre*"

除了上面所说的cpio,也可以这样查未安装的包里面的文件 rpm -qlp sl-5.02-9.fc29.x86_64.rpm

查看是谁提供的:rpm -q --whatprovides tree

被哪个包依赖:rpm -q --whatrequires bash

avatar

查看包提供的能力:rpm -q --provides bash

查询某个包的依赖:rpm -qR tree

如果你想看包的配置文件:rpm -qc bash(小工具可能没有配置文件)

查看包的脚本:rpm -q --scripts bash,如果要看没装的包的脚本:rpm -qp --scripts 包名

avatar

–allmatches全部卸载某个软件的所有版本,–nodeps强制卸载

rpm -V centos-release查看文件跟我们刚安装好的时候的状态发生了什么差别

avatar

S代表字节大小,5代表md5hash值(内容只要变一点点那么hash值就会改变)D是设备的主要编号

avatar

-k rpm包,如果你没导入公私,那么就算完整也还会报错

钥匙放在:rpm -qa "gpg-pubkey*"先查看

卸载也是用e卸载key

yum

avatar

yum依赖yum仓库,里面除了你要装的东西(元素据)之外还记录了包的分组信息,这些信息都会下载下来缓存在你的机器上,下次你查询都是在这些缓存里面查。

当然如果你路径变了,记得清缓存。

学号yum:会写配置文件,会清缓存

我们yum的配置文件是;/etc/yum.conf。这个是默认配置。但是我们实际改的是,在/etc/yum.repos.d里面创建file.repo文件,可以参考。

.repo文件的创建格式

1
2
3
4
5
6
7
8
9
10
11
[base] ##名字随便起,但是也别瞎起
baseurl=file:///run/media/root/CentOS\ 7\ x86_64/ ##路径这里是文件
##gpgcheck=0 ##不检查
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
name=centos7.4 ##描述而已,

[epel]
name=epel
baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/
gpgcheck=0
enabled=0 ##表示禁用

avatar

yum repolist`列出仓库名称

yum缓存目录:du -sh /var/cache/yum,清理缓存:yum cleam all

如果你装了不同版本的软件,可以共存,用yum list tree查看。如果你再重装,会安装最新的,再次查看就是最新的了

如果你觉得这警告:Repository 'base' is missing name。。觉得碍眼 可以加上name设置

自己动手搭建yum源

最简单的方法就是把光盘都复制到一个目录下,可以参考下阿里云的:https://mirrors.aliyun.com/centos/7/os/x86_64/

最简单的方法把光盘挂到我们目录下:

  • 先创建目录:mkdir /var/ftp/pub/centos/7/os/x86_64/ -pv
  • 挂载:mount /dev/sr0 /var/ftp/pub/centos/7/os/x86_64/ .这个是只读提示
  • 安装ftb :yum install vsftpd
  • 启动ftp:systemctl start vsftpd
  • 关闭防火墙并防止开机启动:systemctl stop firewalld systemctl disable firewalld
  • 可以用 iptables -vnL查看防火墙是否关闭成功
  • slinux问题。用sesed -i.back 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config 。然后用命令setenforce 0.可以用getenforce命令确认确实变成permissive了
1
2
3
4
5
[base]
name=centos7.4 base
baseurl=ftp://192.168.0.106/pub/centos/$releasever/os/$basearch/
gpgcheck=0

我们这里使用两个变量替换了7跟x86_64,这里参考的是/etc/yum.conf文件

如果你需要挂载6的同样的参考上面的挂载:echo '- - -' > /sys/class/scsi_host/host2/scan.再加了块光盘后可以执行这条命令

如果你手上只有rpm包,可以这样做:

  • 先创建一个yum源:mkdir /var/ftp/pub/app
  • 然后执行:createrepo /var/ftp/pub/app/
1
2
3
4
[app]
name=app
baseurl=ftp://192.168.0.106/pub/app
grpcheck=0

如果你后面又来了10个新的包,需要重新构建,那么必须把文件删了:rm -rf repodata/

先清空缓存然后重新执行上面的操作

yum remove httpd卸载软件包(含依赖的)

判断有没有安装如果没有安装那就安装:package=httpd;rpm -q $package &> /dev/null || yum -y install $package。-y自动装

我们可以配置多个baseurl,不过得这么写:

1
2
baseurl=ftp://192.168.0.106/pub/centos/$releasever/os/$basearch/
ftp://192.168.0.106/pub/app

还可以用文件存放url路径

-q静默安装

avatar

yum list后面跟有@符号的都是已经安装的

avatar

生成默认的repo文件,指定url:yum-config-manager --add-repo=file:///misc/cd

yum update这样回更新所有安装

avatar

avatar

搜索或包含summer

cat /var/log/yum.log查看简单日志

yum history undo 8把第八步后悔,安变成卸,卸变成安。redo重做

avatar

yum install /misc/cd/pa....可以安装本地包

yum底层还是调用rpm,因此无法用yum卸载rpm

avatar

yum grouplist查看包组

yum groupinfo "File and Print Server"查看包组信息

avatar

编译安装

avatar

make项目管理器已经集成了不少现成的功能,需要用到Makefile文件,里面定制了需要编译的功能(甚至可以指定安装的地方)。用configure脚本来生成Makefile,开发的人已经帮你写好了

Makefile.in是同一个模板文件,我们可以参考这个文件来生成Makefile文件,但是我们也不需要去看

avatar

make命令就在系统中,来编译我们的应用程序

avatar

我们直接安装Devlopment Tool工具来进行编译工作,server那就给开发人员吧:yum groupinstall "Development Tools"

我们来用httpd软件为例子来进行一次编译安装

  • 在官网下载源码压缩文件,解压,习惯性的看下README,INSTALL(告诉你怎么装)-

  • ./configure --help,看看选项,可以选择安装哪去(–prefix,所有东西都安装在一个目录,总目录,–enable-xxx,启动特性)

  • 运行:`./configure –prefix=/app/httpd24 –sysconfdir=/etc/httpd24/ \

    –enable-ssl
    –enable-proxy-fcgi。回发现报错,缺了APR,接着运行:yum install apr-devel` 记得加上devel

  • 发现又缺:yum install apr-util-devel

  • 又缺pcre-config:yum install pcre-devel

  • 又缺mod_ssl:yum install openssl-devel

  • 最后再一次安装,最终生成Makefile文件

  • 运行make -j 4,-j代表使用多线程编译,但是如果我们编译一个更大的软件,可以:make && make install.make install是我们的最后一步。或者再make之后:make install && echo -e "\a"

  • 最后我们启动这个软件,但是我们如果不把路径写入path变量的话得输入路径,因此我们还是把路径加入path:vim /etc/profile.d/http24.sh。写入:PATH=/app/httpd24/bin:$PATH.然后. /etc/profile.d/http24.sh

  • 启动apachectl.然后看看80端口有没有启动:ss -ntl.页面是放在/app/httpd24/htdocs/下

  • 安装后你可以把原来的解压文件夹删了

  • 如果没有man帮助则可以手动导入,编辑/etc/man.config|man_db.config文件添加一个MANPATH


linux第十二天
http://www.kju147.com/2019/01/09/linux第十二天/
作者
个人学习
发布于
2019年1月9日
许可协议