linux3 源代码安装

Posted 672530440

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux3 源代码安装相关的知识,希望对你有一定的参考价值。

源代码安装:
通过yum就不会有依赖关系(安装mysql是安装mysqlServer)。Rpm更新的时候,如果没有安装软件就回去安装。

应用程序和系统命令会放在不同的目录中(bin,sbin,usr/bin,usr/sbin),如果yum找不到并且也没有rpm包,就需要自己编译后安装。条件:
1.是否具备软件编译的环境。

首先查询操纵系统中是否安装了编译环境gcc:
$rpm -qa | grep gcc :如果找到libgcc,这个不是编译环境,只是一个库。
root@ubuntu:/# apt-get install gcc

2.应用程序源代码。

打开浏览器去下载nginx的源码(development开发版是比较新但是不稳定,stable是稳定版,beta是测试版)

Zip是windows,tar.gz是linux的。
root@ubuntu:/usr# find / -name nginx-1.13.8.tar.gz  
/home/yw1989/Downloads/nginx-1.13.8.tar.gz

1.解压压缩包。
root@ubuntu:/home/yw1989/Downloads# tar zxf nginx-1.13.8.tar.gz
root@ubuntu:/home/yw1989/Downloads# cd nginx-1.13.8 :进入这个目录里面去
root@ubuntu:/home/yw1989/Downloads/nginx-1.13.8# ls
auto     CHANGES.ru  configure  html     man     src
CHANGES  conf        contrib    LICENSE  README
root@ubuntu:/home/yw1989/Downloads/nginx-1.13.8# cd src :进入到源代码里面去
root@ubuntu:/home/yw1989/Downloads/nginx-1.13.8/src# ls
core  event  http  mail  misc  os  stream
core:是核心,linux里面很多方法都是用c语言写的。

2.编译前的配置工作(检查工作)(安装到哪个目录,是否需要相关的依赖程序等)。

进入到nginx-1.13.8根目录之后都会有一个config文件,或者叫脚本,程序的编译都要基于config,所以config用于完成编译前的配置工作。
root@ubuntu:/home/yw1989/Downloads/nginx-1.13.8# ./configure --help

  --help                             print this message
  --prefix=PATH                      要把软件安装到哪个目录
  --sbin-path=PATH                   nginx执行程序安装到哪个目录
  --modules-path=PATH                set modules path
  --conf-path=PATH                   配置文件安装到哪里
  --error-log-path=PATH              错误日志设置到哪
  --pid-path=PATH                    进程文件pid设置到哪里
  --lock-path=PATH                   锁定文件放到哪里
root@ubuntu:/home/yw1989/Downloads/nginx-1.13.8# ./configure(都走默认配置,什么都不指定)
checking for OS
 + Linux 4.13.0-32-generic x86_64
checking for C compiler ... found
 + using GNU C compiler
 + gcc version: 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 
checking for gcc -pipe switch ... found
checking for -Wl,-E switch ... found
checking for gcc builtin atomic operations ... found

./configure: error: the HTTP rewrite module requires the PCRE library.  : 出错,缺少PCRE相关依赖库
You can either disable the module by using --without-http_rewrite_module
ubuntu安装nginx时提示error: the HTTP rewrite module requires the PCRE library
需要安装pcre包。
sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev
你可能还需要安装
sudo apt-get install openssl libssl-dev
root@ubuntu:/home/yw1989/Downloads/nginx-1.13.8# ./configure:再次configure(检查当前环境是否满足编译需求,满足才可以进行编译,)
Configuration summary
  + using system PCRE library
  + OpenSSL library is not used
  + using system zlib library

Configure只是一个检查的check的过程:
checking for PCRE library ... found :找到pcre库
checking for zlib library ... found
checking for sys/filio.h ... not found
checking for sys/param.h ... found
checking for sys/mount.h ... found
checking for sys/statvfs.h ... found
checking for crypt.h ... found

  nginx path prefix: "/usr/local/nginx"   :将会安装的路径
  nginx binary file: "/usr/local/nginx/sbin/nginx" :将会安装的nginx的执行文件
  nginx modules path: "/usr/local/nginx/modules"
  nginx configuration prefix: "/usr/local/nginx/conf" :将会安装的配置文件
  nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
  nginx pid file: "/usr/local/nginx/logs/nginx.pid" :将会安装的pid文件
  nginx error log file: "/usr/local/nginx/logs/error.log" :将会安装的错误文件
  nginx http access log file: "/usr/local/nginx/logs/access.log"
  nginx http client request body temporary files: "client_body_temp"
  nginx http proxy temporary files: "proxy_temp"
  nginx http fastcgi temporary files: "fastcgi_temp"
  nginx http uwsgi temporary files: "uwsgi_temp"
  nginx http scgi temporary files: "scgi_temp"
1.编译。
make进行编译,make install进行安装。
root@ubuntu:/home/yw1989/Downloads/nginx-1.13.8# make
make -f objs/Makefile
make[1]: Entering directory \'/home/yw1989/Downloads/nginx-1.13.8\'
cc -c -pipe  -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g  -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \\
    -o objs/src/core/nginx.o \\
2.编译后安装。
root@ubuntu:/home/yw1989/Downloads/nginx-1.13.8# make install
make -f objs/Makefile install
root@ubuntu:/usr/local# cd nginx/
root@ubuntu:/usr/local/nginx# ls
conf  html  logs  sbin
root@ubuntu:/usr/local/nginx# cd sbin
root@ubuntu:/usr/local/nginx/sbin# ls
Nginx  :这就是执行程序(windows上的exe主执行程序)

root@ubuntu:/usr/local/nginx/sbin# ps -ef | grep nginx
root      12420   3626  0 21:39 pts/2    00:00:00 grep --color=auto nginx :没有执行起来

root@ubuntu:/usr/local/nginx/sbin# ./nginx :运行起来nginx

root@ubuntu:/usr/local/nginx/sbin# ps -ef | grep nginx
root      12422   2571  0 21:39 ?        00:00:00 nginx: master process ./nginx :运行起来了,master process和worker process两个主进程都运行起来了
nobody    12423  12422  0 21:39 ?        00:00:00 nginx: worker process
root      12425   3626  0 21:39 pts/2    00:00:00 grep --color=auto nginx

安装软件可以通过yum,rpm,源代码3中方式安装。首先通过yum安装,yum找不到就用rpm,rpm不行就用源代码安装。

用户和组的管理:

Linux的账号分为用户账号和组账号2种。

用户账号:分为普通用户和超级用户,普通用户只能在特定文件夹下操作,超级用户可以对所有文件夹操作并且控制普通用户。

组账号:组是用户的集合,组分为私有组和公共组,建议一个用户不指定组就会创建一个和该用户同名的私有组(私有组和用户名称同名,并且只有用户一个人),标准组可以容纳多个用户。
root@ubuntu:/etc# vim passwd :存储的是系统创建出来的用户信息

每一行的列(用户名,登陆的名字 :口令,x是密文:id号码:组的标识号:描述:登陆之后进去的目录:命令解释器,root用户登陆进来就默认要使用bash解释器,/usr/sbin/nologin表示是系统内置的账号,有一些功能,是不能登陆系统的)

root :x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false
systemd-network:x:101:103:systemd Network Management,,,:/run/systemd/netif:/bin/false
systemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd/resolve:/bin/false
systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false
syslog:x:104:108::/home/syslog:/bin/false
_apt:x:105:65534::/nonexistent:/bin/false
messagebus:x:106:110::/var/run/dbus:/bin/false
uuidd:x:107:111::/run/uuidd:/bin/false
(x是密码,在passwd文件是看不到的,shadow存放的是用户密码)
root@ubuntu:/etc# vim shadow
(第二列是加密后的密码,*因为是不能登陆系统,所以没有密码,)
root:$6$dNWnW/HB$pvRspIT9gcaUqvTDIuhRyCCyoNDfw6utsfRzCO9cxLsQZmql77t9T6fFkibsOeS3C3RIcTa.t2akNS3b19Zn4/:17574:0:99999:7:::
daemon:*:17379:0:99999:7:::
bin:*:17379:0:99999:7:::
sys:*:17379:0:99999:7:::
sync:*:17379:0:99999:7:::
games:*:17379:0:99999:7:::
man:*:17379:0:99999:7:::
proxy:*:17379:0:99999:7:::
www-data:*:17379:0:99999:7:::
backup:*:17379:0:99999:7:::
list:*:17379:0:99999:7:::
irc:*:17379:0:99999:7:::
root@ubuntu:/etc# vim group :查看组的信息
(第一列是组名:第二列是组密码:第三列是组的表示号:最后一列是组里面有哪些用户)
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,yw1989
tty:x:5:
disk:x:6:
kmem:x:15:
dialout:x:20:
cdrom:x:24:yw1989
floppy:x:25:
tape:x:26:
sudo:x:27:yw1989
查看组密码:(组密码保存的地方)
root@ubuntu:/etc# vim gshadow

root:*::
daemon:*::
bin:*::
sys:*::
adm:*::syslog,yw1989
tty:*::
disk:*::
lp:*::
mail:*::
news:*::
uucp:*::
man:*::
proxy:*::
------------------------------------------------------------------------------------------------------------------------

用的比较多的是passwd和group文件。
创建用户:root@ubuntu:/# useradd yw1
root@ubuntu:/# vim etc/passwd
yw1:x:1001:1001::/home/yw1: 

root@ubuntu:/# useradd -c "shushi" yw2 :添加用户
root@ubuntu:/# vim etc/passwd
yw2:x:1002:1002:shushi:/home/yw2:

root@ubuntu:/# passwd yw1 :添加密码
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

root@ubuntu:/# userdel yw2 :删除用户(删出用户的时候,私有组还在)
root@ubuntu:/# vim etc/passwd

创建用户的时候会创建一个同名的私有组出来(只能有一个用户,不能别的用户加进来),
root@ubuntu:/# vim etc/group
yw1:x:1001: :同名私有组
root@ubuntu:/# groupadd yw1group(创建的是标准组,其他用户可以加进来)
yw1group:x:1002:
root@ubuntu:/# groupdel  yw1group :删除组

root@ubuntu:/# useradd -G yw1group yw4 :用户yw4加入yw1group组(yw4是不存在的用户)
root@ubuntu:/# vim etc/group
yw1group:x:1002:yw4 :yw4用户在标准组里面
yw4:x:1005: :并且也会创建yw4的私有组
root@ubuntu:/# vim etc/passwd
yw4:x:1004:1005::/home/yw4:

Linux系统管理

Linux的用户必须要有密码,不然没法登陆系统。
Passwd:修改当前用户密码

root@ubuntu:/# vim etc/login.defs 
PASS_MAX_DAYS   99999  : 密码最大天数
PASS_MIN_DAYS   0   :密码最小天数 
PASS_WARN_AGE   7

su - root,su - yw1989 : 切换用户

sudo :是借用root账号权限做普通用户无法做的事

yw1989@ubuntu:~$ id  : 查看当前用户的uid,gid,groups
uid=1000(yw1989)                  
gid=1000(yw1989) groups=1000(yw1989),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare),999(docker)
yw1989@ubuntu:~$ groups  :  查看当前用户在哪个组
yw1989 adm cdrom sudo dip plugdev lpadmin sambashare docker

yw1989@ubuntu:~$ pwd  :查看当前目录
/home/yw1989

 

以上是关于linux3 源代码安装的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式Linux3.Visual Studio Code插件的安装(C/C++)

基于OMAPL:Linux3.3内核的编译

PHP代码-psysh调试代码片段工具

在Tomcat的安装目录下conf目录下的server.xml文件中增加一个xml代码片段,该代码片段中每个属性的含义与用途

VIM 代码片段插件 ultisnips 使用教程

linux3