- rpm -i -e -qi -ql -qf -qa --scripts。
- yum install remove info list repolist provides。
- 配置系统源。
- 搭建私有仓库服务器。
- 源码编译安装。
- ubuntu dpkg apt /etc/apt/sources.list。
虽然有很多开源项目将软件打成 RPM 包,供人们使用,但并不是所有源代码都打成包,如果想使用开源软件,大部分可能需要自行下载源码,进行编译安装。
另外即使提供了 RPM 包,在生产中经常针对软件的某些特性,比如对软件版本的要求。仍然需要自行编译安装。但源代码编译安装是比较繁琐的,庆幸的是有相关的项目管理工具可以大大减少编译过程的复杂度。
1)使用 yum 安装软件可以确保便捷性,但它可能限制了一些自定义选项。
比如 yum 安装会自动将软件安装到其默认路径。然而,对于更多的自定义需求,编译安装(configure 编译安装)可能是更灵活的选择。
编译安装允许您传递参数,指定安装路径,启用或禁用特定功能,并满足特定的需求。
这种方式提供了更多的控制权,适用于需要定制化配置的情况,但也需要更多的手动工作和处理依赖关系。
2)使用 yum 安装的软件通常会根据软件包的默认路径分散安装在系统中,而编译安装可以将所有文件统一存放在指定目录中,提供了更好的管理和维护灵活性。
这有助于集中管理并更加容易卸载整个应用程序,只需删除相关目录即可。
3)使用 yum 安装软件时,系统通常会将软件的所有默认特性都安装,这可能会导致资源浪费,尤其是如果您只需要其中一部分特性。
此外,某些特定特性可能不是默认安装的,你还需要手动配置或单独安装,这会增加配置的复杂性。
在这种情况下,编译安装允许您更精确地选择所需的特性,并自定义软件的安装配置,以确保满足项目需求,同时减少不必要的资源占用。
这种方式提供了更大的灵活性,可以更好地满足特定用例的要求,而不是盲目地安装所有默认特性。
源代码 >> 预处理 >> 编译 >> 汇编 >> 链接 >> 执行
./configure --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_perl_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module
注意:安装前可以通过查看 README,INSTALL 获取帮助。
yum install gcc make autoconf gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel vim lrzsz tree tmux lsof tcpdump wget net-tools iotop bc bzip2 zip unzip nfs-utils man-pages
运行 configure 脚本:生成 Makefile 文件。
注意:通常被编译操作依赖的程序包,需要安装此程序包的 "开发" 组件,其包名一般类似于 name-devel-VERSION。
export PATH=/PATH/TO/BIN:$PATH
编辑 /etc/man.config|man_db.conf 文件,添加一个 MANPATH
wget http://mama.indstate.edu/users/ice/tree/src/tree-2.1.1.tgz
tar xzvf tree-2.1.1.tgz -C /usr/local/src
[ 可以看到,该目录下并没有 configure 脚本,直接存在的 Makefile 文件,这是什么原因呢?]
这种情况通常发生在软件项目非常简单,不需要复杂的配置步骤时。在这种情况下,开发者可能会直接提供一个简单的 Makefile 文件,而不使用更复杂的 configure 脚本。这样可以简化软件的构建过程,使其更容易使用和编译。
yum install gcc make autoconf gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel vim lrzsz tree tmux lsof tcpdump wget net-tools iotop bc bzip2 zip unzip nfs-utils man-pages
[ 所有用户都会优先寻找 /usr/local/bin 下的二进制文件,因此所有用户都会优先执行该版本 tree 命令 ]
[15:41:29 root@blog ~] which tree
// `查看 PATH 默认会找寻哪些目录下的 bin 文件`
[15:43:58 root@blog ~] echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
// `将新版本 tree 执行另一个 PATH 也会找寻的路径 "并且优先级比 /usr/bin 高"`
[15:44:36 root@blog ~] ln -s /apps/tree/bin/tree /usr/local/bin/
[15:44:36 root@blog ~] hash -r
// `系统会优先找寻 /usr/local/bin 下的二进制文件进行执行` "/usr/local/bin 优先级更高"
echo 'PATH=/apps/cmatrix/bin:$PATH' > /etc/profile.d/cmatrix.sh
source /etc/profile.d/cmatrix.sh
yum install gcc make autoconf gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel vim lrzsz tree tmux lsof tcpdump wget net-tools iotop bc bzip2 zip unzip nfs-utils man-pages
wget https://github.com/abishekvashok/cmatrix/releases/download/v2.0/cmatrix-v2.0-Butterscotch.tar
tar xvf cmatrix-v2.0-Butterscotch.tar
// more configure # configure 是一个脚本
// configure --help # 查看 configure 帮助
./configure --prefix=/apps/cmatrix
// 4.1 make 编译报错, 缺 curses.h 文件 [ 2. make 编译报错, 缺 autoheader 命令, 也可执行 yum provides xxx 找到命令依赖的软件包名称, 而后安装即可 ]
// 4.2 yum provides 查找该文件所属哪个软件包
yum install ncurses-devel-5.9-14.20130511.el7_4.i686
yum -y install ncurses* gcc gcc-c++
tar xvf cmatrix-v2.0-Butterscotch.tar
./configure --prefix=/apps/cmatrix
echo 'PATH=/apps/cmatrix/bin:$PATH' > /etc/profile.d/cmatrix.sh
source /etc/profile.d/cmatrix.sh
// ln -s /apps/cmatrix/bin/cmatrix /usr/local/bin/
标签:cmatrix,--,make,tree,编译,001,源码,Linux,安装 From: https://www.cnblogs.com/wuhanjiayou/p/17863873.html