Linux源码包是Linux系统中软件包的一种形式,它包含了软件的源代码程序,这些程序是由程序员按照特定的格式和语法编写出来的。源码包通常需要经过编译过程,将源代码转换成计算机可以直接执行的二进制程序。
源码包通常可以从软件的官方网站、开源社区或第三方软件仓库中获取。它们通常以压缩包的形式存在,如tar.gz、tar.bz2等格式。用户可以使用相应的解压缩工具将源码包解压到指定目录。
综上所述,Linux源码包在提供高度可定制性和透明度的同时,也带来了安装过程复杂、编译时间长等挑战。用户需要根据自己的需求和技能水平来选择是否使用源码包。
从源码包安装软件的步骤相对固定,主要包括下载源码包、解压源码包、进入源码目录、执行配置和编译命令、以及安装软件等步骤。以下以安装Git和Nginx为例进行说明。
tar命令解压下载的源码包。例如,tar -xzvf git-2.xx.x.tar.gz(注意替换为实际文件名)。cd命令进入解压后的源码目录。例如,cd git-2.xx.x(注意替换为实际目录名)。configure脚本,用于检查编译环境、配置安装参数等。执行./configure命令进行配置。configure脚本支持多种选项,用于指定安装路径、启用或禁用特定功能等。具体选项可以通过查看configure脚本的帮助信息(通常使用./configure --help命令)或源码包中的README、INSTALL等文档来了解。make命令进行编译。make命令会根据Makefile文件(通常由configure脚本生成)中的指令来编译源码。make install命令将软件安装到系统中。如果源码包中有install脚本,也可以使用该脚本来安装软件。make install命令前加上sudo(在基于Debian的系统中)或切换到root用户(在基于RPM的系统中)。wget https://www.kernel.org/pub/software/scm/git/git-2.xx.x.tar.gz(替换为实际网页、版本号)tar -xzvf git-2.xx.x.tar.gz(替换为实际文件名)cd git-2.xx.x(替换为实际目录名)yum install apr* gcc* pcre* -y (创建本地yum源,后安装依赖环境)./configure(可以根据需要添加配置选项)makesudo make install(需要管理员权限)wget https://nginx.org/download/nginx-1.xx.x.tar.gz(替换为实际版本号)tar -xzvf nginx-1.xx.x.tar.gz(替换为实际文件名)cd nginx-1.xx.x(替换为实际目录名)yum install apr* gcc* pcre* -y (创建本地yum源,后安装依赖环境)./configure(同样可以根据需要添加配置选项,如指定安装路径等)makesudo make install(需要管理员权限)configure脚本会报错并提示您安装缺失的依赖项。RPM包管理工具(Red Hat Package Manager)是Linux系统中一个非常重要且强大的软件包管理工具,特别是在基于Red Hat的发行版如Red Hat Enterprise Linux (RHEL)、Fedora、CentOS等中广泛应用。RPM主要用于软件包的版本管理、安装、配置、卸载的自动化问题,通过提供一系列命令和工具来方便地管理.rpm格式的软件包。
RPM包管理工具提供了一系列命令,用于查询、安装、更新、卸载软件包。
rpm -q package_namerpm -qarpm -qpi filename.rpmrpm -qpl filename.rpmrpm -qpR filename.rpmsudo rpm -ivh package.rpm-i:安装软件包-v:显示详细输出-h:显示安装进度sudo rpm -e package_namesudo rpm -Uvh package.rpm-U:升级已安装的软件包补充:
| 基础命令 | 查询已安装的rpm软件信息 |
|---|---|
rpm -q 软件名 | 查询指定软件是否已安装 |
rpm -qi 软件名 | #显示已安装的指定软件的详细信息 |
rpm -ql 软件名 | 显示已安装的指定软件的文件列表 |
rpm -qc 软件名 | 列出已安装的指定软件的配置文件 |
rpm -qd 软件名 | 列出已安装的指定软件的软件包文档所在位置 |
rpm -qR 软件名 | 列出已安装的指定软件的依赖的软件包及文件 |
rpm -qf 文件或目录 | 查询已安装的指定软件属于哪个安装包 |
rpm -qa | 显示当前系统中以 rpm方式安装的所有软件列表 |
rpm -qa 管道符 grep postfix | 查询软件postfix是否已安装 |
| 基础命令 | 查询未安装的 RPM 软件包文件中信息 |
|---|---|
| rpm -qpi RPM包文件名 | 查询指定软件包的详细信息 |
| rpm -qpl RPM包文件名 | 查询指定软件包的文件列表 |
| rpm -qpc RPM包文件名 | 查询指定软件包的配置文件 |
| rpm -qpd RPM包文件名 | 查询指定软件包的软件包文档的位置 |
安装、升级、卸载 RPM 软件包
格式:
rpm [选项] RPM包文件 | 常用选项 | 含义 |
|---|---|
| i | 安装一个新的 RPM 软件包 |
| U | 升级某个软件包,若未安装过,则进行安装 |
| F | 升级某个软件包,若未安装过,则放弃安装 |
| h | 在安装或升级软件包的过程中,以“#”号显示安装进度 |
| v | 显示软件安装过程中的详细信息 |
| e | 卸载软件 |
| –force | 强制安装某个软件包,比如要安装版本更旧的软件包 |
rpm --initdb或rpm --rebuilddb命令来初始化或重建数据库。yum(Yellowdog Updater, Modified)是一种在基于RPM包管理系统的Linux发行版(如Fedora、Red Hat、CentOS等)中广泛使用的软件包管理工具。yum通过简化软件包的安装、更新、删除以及解决依赖关系等操作,极大地提高了系统管理员的工作效率。
/etc/yum.repos.d/目录下的.repo文件)来指定软件包仓库(Repository)的位置和访问信息。仓库中包含了软件包的元数据(如名称、版本、依赖关系等)以及软件包文件的位置。这些配置文件使得yum能够知道从哪里下载和安装软件包。/var/cache/yum/),将最近下载的软件包和元数据保存在本地。这样可以提高后续操作的速度,并减轻远程仓库的负载。用户可以通过yum的清理命令(如yum clean all)来清除本地缓存中的旧软件包和元数据,以释放磁盘空间。综上所述,yum通过仓库配置、元数据下载、依赖关系解析、软件包下载、安装与更新、本地缓存维护以及事务处理等步骤来实现对RPM软件包的管理。这些步骤共同构成了yum的工作原理,使得系统管理员能够方便地管理和维护Linux系统中的软件包。
/mnt/cdrom。mkdir /mnt/cdrom mount命令将ISO镜像挂载到刚才创建的挂载点。mount /dev/cdrom /mnt/cdrom 注意替换/dev/cdrom /mnt/cdrom为您的文件实际路径。df -h命令查看挂载情况,确认ISO镜像已正确挂载。备份原有yum仓库配置:
mkdir repos.bak 复制原有yum仓库配置到备份目录中:
/etc/yum.repos.d目录下的所有文件到/etc/yum.repos.d/repos.bak/。mv * repos.bak /etc/yum.repos.d/repos.bak/* 创建新的yum仓库配置文件:
/etc/yum.repos.d目录下创建一个新的yum仓库配置文件,例如Local-Yum.repo。vim /etc/yum.repos.d/Local-Yum.repo 编辑新的yum仓库配置文件:
[Local] name=Local baseurl=file:///mnt/cdrom enabled=1 gpgcheck=0 yum clean all命令清理yum缓存。yum clean all yum makecache命令重建yum缓存。yum makecache gcc*pcre*apr*configure 可执行程序prefix=/usr/local/htppdusergroup--with./configre --prefix=/usr/local/htppd make && make install /usr/local/htppd/bin/apachectl start 检查端口是否开启:
netstat -natp | grep PORT_ID 访问测试:
curl (相当于模拟http请求) HOST_IP/ domain/server name(域名 www.baidu.com) 直接打开网页输入IP或者域名测试访问
ln -s /usr/local/httpd/bin/* /usr/local/bin system工具是可以识别并且管理/lib/systemd/system/*.service为结尾的程序文件/lib/system/httpd.serice文件systemcl来管理httpdLinux源码包的依赖关系是一个复杂而重要的概念,它涉及到多个层面,包括内核与用户空间程序的依赖、库之间的依赖、模块之间的依赖以及软件包之间的依赖。




