源服务器搭建以及deb包制作文档

源服务器搭建以及deb包制作文档

源服务器的搭建

1. 安装nginx

    1. cmd: yum -y install nginx
    1. 编辑配置文件: vim /etc/nginx/nginx.conf,增加以下内容:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    server {
    listen 81 default_server;
    listen [::]:81 default_server;
    server_name _;
    root /usr/cus/package/;

    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;

    location / {
    autoindex on; ##显示索引
    autoindex_exact_size on; ##显示大小
    autoindex_localtime on; ##显示时间
    }

    error_page 404 /404.html;
    location = /40x.html {
    }

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
    }
    }

其中,listen 81是nginx的监听端口,root是包的根路径。location /是开启目录访问。

    1. 配置nginx的systemctl服务管理:

    vim /usr/lib/systemd/system/nginx.service,写入以下内容:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    [Unit]
    Description=The nginx HTTP and reverse proxy server
    After=network.target remote-fs.target nss-lookup.target

    [Service]
    Type=forking
    PIDFile=/run/nginx.pid
    # Nginx will fail to start if /run/nginx.pid already exists but has the wrong
    # SELinux context. This might happen when running `nginx -t` from the cmdline.
    # https://bugzilla.redhat.com/show_bug.cgi?id=1268621
    ExecStartPre=/usr/bin/rm -f /run/nginx.pid
    ExecStartPre=/usr/sbin/nginx -t
    ExecStart=/usr/sbin/nginx
    ExecReload=/bin/kill -s HUP $MAINPID
    KillSignal=SIGQUIT
    TimeoutStopSec=5
    KillMode=process
    PrivateTmp=true

    [Install]
    WantedBy=multi-user.target

2. 创建源服务器的目录环境

    1. 创建文件夹,mkidr -p /usr/cus/package/debian/jessie/dvd1(这里其实是模仿的iso镜像盘的路径),在此路径下,继续创建文件夹:mkdir -p pool/main/ 以及 mkdir -p pool/contrib/,以上两个路径是用于存放deb包的路径
    1. 创建包信息文件路径,提供给客户端使用,路径是有固定写法的。在/usr/cus/package/debian/jessie/dvd1下面,创建文件夹:mkdir -p dists/jessie/main/binary-mips/ 以及 mkdir -p dists/jessie/contrib/binary-mips/,这两个路径分别用来,存放/usr/cus/package/debian/jessie/dvd1/pool/main//usr/cus/package/debian/jessie/dvd1/pool/contrib/的deb包的package的信息。
    1. 生成包信息:

      分别在/usr/cus/package/debian/jessie/dvd1/ 下面,

      执行命令:dpkg-scanpackages -m . | gzip -c > Packages.gz,那么这个压缩包内就会包含maincontrib所有的包信息。把这个包放到上一步骤中的两个文件夹中去。命令: cp Packages.gz dists/jessie/main/binary-mips/cp Packages.gz dists/jessie/contrib/binary-mips/。然后两个文件夹下进行解压gzip -c -d Packages.gz > Packages

    到此为止,源服务器就搭建好了,需要注意的是,每次往包文件夹里面更新包的时候,需要重复3步骤

二进制文件的普通包转为deb包

环境说明1

  • 机器ip地址: 172.16.30.40
  • 端口: 5188
  • 用户名: cbccom
  • 密码:******

环境说明2

  • 机器上必须要有dpkg 环境,已经安装好了。

准备环境,需要安装dpkg

  • cmd: yum -y install dpkg

准备deb的目录结构

  • 可执行文件说明:

    以下四个文件都是可选的,都需要可执行权限。

    这些是软件包安装前后自动运行的可执行脚本. 统称为控制文件, 是 Deian 软件包的”控制”部分它们是:

    preinst

    Debian软件包(“.deb”)解压前执行的脚本, 为正在被升级的包停止相关服务,直到升级或安装完成。 (成功后执行 ‘postinst’ 脚本)。

    postinst

    主要完成软件包(“.deb”)安装完成后所需的配置工作. 通常, postinst 脚本要求用户输入, 和/或警告用户如果接受默认值, 应该记得按要求返回重新配置这个软件。 一个软件包安装或升级完成后,postinst 脚本驱动命令, 启动或重起相应的服务。

    prerm

    停止一个软件包的相关进程, 要卸载软件包的相关文件前执行。

    postrm

    修改相关文件或连接, 和/或卸载软件包所创建的文件。
    当前的所有配置文件都可在 /var/lib/dpkg/info 目录下找到, 与 foo 软件包相关的命名以 “foo” 开头,以 “preinst”, “postinst”, 等为扩展。这个目录下的 foo.list 文件列出了软件包安装的所有文件。Debian里用apt-get安装或卸载软件时,会常发生前处理或后处理的错误,这时只要删除 对应的脚本文件,重新执行安装或卸载即可

  • 以下三个文件也是可选的

  • copyright

    顾名思义,这个文件包含了上游软件的版权以及许可证信息。

  • changeLog

    版本变更信息,对于一个需要长期维护的软件,版本变更信息的跟踪是非常有必要的。

  • rules

    每一个rules文件,就像其他的Makefile一样,包含若干的规则,每一列规则都定义了一些对于deb包的操作,主要作用是控制源码包的编译安装等行为。

  • deb包的目录结构分为两部分,结构大概如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    apt-falcon-agent-mips64    # 包的根路径
    ├─tmp # 这是我们想让包安装的位置,默认是从根分区开始写的也就是(/tmp)
    | ├─test
    | | └falcon-agent
    ├─DEBIAN # 固定写法
    | └control # 包信息的控制文件
    └postinst # 完成后所需的配置工作,(注:执行路径是根路径)
    └...
    # 对于这个demo,当我们执行dpkg -i <包名> 之后,那么falcon-agent就会安装在/tmp/test/目录下了
  • control文件的写法及要求:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Package:指该软件包的名字。如果你的软件包名称有两个词,用一个连字符(-)把它们连起来。软件包的名称只能有小写的英文字母,数字以及"+"和"-"。

    Version:版本。确保这里的值不包括连字符。

    Section:列出了你的软件属于的类别,可能的值包括admin(管理),games(游戏),gnome,kde,mail(电子邮件),misc(杂项)<译者注:misc是miscellaneous的简称>,net(网络),sound(声音),text(文本),utils(实用工具)和web(万维网)。

    Priority:声明这个包的优先级(大部分的时候使用optional(可选的))。

    Architecture:是该程序可运行的CPU架构(可能的值为i386,amd64和powerpc)<译者注:此处虽然是专有名词,但是由于linux是大小写敏感的,所以文件内还是应该小写>。

    Eseential:指该软件包是否是必须的(大部分的时候不是)。

    Depends:意味着要使用这个程序必须拥有的程序,

    Recommends:指除了极特殊情况下的安装之外,大多数时候都需要的依赖关系。

    Suggests:意味可能给这个软件带来更多功能的,但是没有完全没有问题的依赖关系<译者注:同Recommands>。

    你可以用英文的半角逗号分开不同的依赖关系(,)。如果两个软件中的任何一个可以工作,用竖线"|"分开它们。你也可以指定特定的版本,用在括号里用<<(小于),<=(小于或等于),=(等于),>=(大于或等于),或>>(大于)来表示。
    Install-Size是程序安装后的大小,按KB算。

    Maintainer:就是你(写上你的名字,后面的方括号"[ ]"里留下你的电子邮件地址)。

    Conflicts:表示跟这个程序冲突的软件。

    Replaces:表明哪些软件包将被这个程序取代。

    Description:显示你的描述。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# demo1
ackage: vim-common
Source: vim
Version: 2:8.0.1453-1ubuntu1.1
Architecture: all
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Installed-Size: 329
Depends: xxd
Recommends: vim | vim-gtk | vim-gtk3 | vim-athena | vim-nox | vim-tiny
Section: editors
Priority: important
Homepage: https://vim.sourceforge.io/
Description: Vi IMproved - Common files
Vim is an almost compatible version of the UNIX editor Vi.
.
This package contains files shared by all non GUI-enabled vim variants
available in Debian. Examples of such shared files are: manpages and
configuration files.
Original-Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org>
1
2
3
4
5
6
7
8
9
10
# demo2
Package: vpn-guard
Version: 1.04.121
Section: utils
Priority: optional
Architecture: amd64
Depends:
Installed-Size: 512
Maintainer: mxxxx@163.com
Description: This is a vpn-guard package
  • 打包:

    到包根目录的上一层,然后执行:

    dpkg -b 包目录/ /目的路径/包名.deb

  • 命名格式暂时定为:

    包名-大版本.月份.git版本-芯片架构.deb

    如:vpn-guard-1.04.121-amd64.deb

    1
    2
    3
    4
      软件名称:vpn-guard
    版本号:1.04.121 (大版本.月份.git版本)
    芯片架构:amd64
    软件包类型:deb
文章作者: 海龟先生
文章链接: http://haiguixiansheng.org.cn/2020/06/03/源服务器搭建以及deb包制作文档/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 海龟先生
打赏
  • 微信
  • 支付宝

评论