• 【Linux】Ubuntu、Debian下对deb包进行修改后重新打包——以MySQL安装包为例


    需求

    关于MySQL的lower_case_table_names参数,在Windows系统下和在Linux系统下,默认值是不同的。

    • Unix,Linux下默认为0,大小写敏感。创建的库表名将原样保存在磁盘上。如create database TeSt;将会创建一个TeSt的目录,create table AbCCC …将会原样生成AbCCC.frm文件,SQL语句也会原样解析。
    • Windows下默认为1,大小写不敏感。创建的库表时,MySQL将所有的库表名转换成小写存储在磁盘上。 SQL语句同样会将库表名转换成小写。 如需要查询以前创建的TeSt(生成TeSt.frm文件),即便执行select * from TeSt,也会被转换成select * from test,致使报错表不存在。
    • macOS下默认为2, 创建的库表名将原样保存在磁盘上, 但SQL语句将库表名转换成小写。
    • 在Linux上不支持值2。

    我们实际用的时候,需求的是 设置 lower_case_table_names=1。 并且MySQL8.x 必须在安装程序初始化之前设置 lower_case_table_names 才起作用,不设置的话取跟随系统的默认值。如果已经初始化之后,再在mysqld.cnf配置文件中修改 lower_case_table_names 的值,然后重启服务也不起作用。
    因此,在通过deb包离线安装MySQL服务的时候,需要提前将lower_case_table_names=1的配置添加到对应的初始化安装包配置文件中,修改后重新打包成新的deb包,用修改后的deb包安装,从而保证在Ubuntu、Debian上安装的MySQL服务是库表名大小写不敏感的。修改步骤如下:

    官网下载deb包

    • 官网下载地址
      选择对应的 Ubuntu Linux 或者Debian Linux 版本,下载对应的 DEB Bundle 包。

    上传到Linux系统

    将上一步官网下载的deb包上传到Linux系统(这里以Ubuntu18.04 64位系统为例,安装包以mysql8.0.28为例)。
    当然,如果上一步直接是通过Ubuntu系统下载安装包的话,这里就不用上传了。
    在Ubuntu系统下解压tar包

    tar -xf mysql-server_8.0.28-1ubuntu18.04_amd64.deb-bundle.tar
    
    • 1

    修改并重新打包指定的deb

    切换到解压目录后,需要修改配置文件重新打包的deb文件名为:mysql-community-server_8.0.28-1ubuntu18.04_amd64.deb

    1. 解压 mysql-community-server_8.0.28-1ubuntu18.04_amd64.deb 这个deb包到一个自定义的临时目录 ./tmp/ 下
      dpkg -x mysql-community-server_8.0.28-1ubuntu18.04_amd64.deb ./tmp/
      
      • 1
      在这里插入图片描述
      解压后的临时目录 ./tmp/ 如下: 在这里插入图片描述
      在这里插入图片描述
    2. 解压出包的控制信息到 ./tmp/DEBIAN/ 目录下(/DEBIAN/ 目录自动生成)
      dpkg -e mysql-community-server_8.0.28-1ubuntu18.04_amd64.deb ./tmp/DEBIAN/
      
      • 1
      在这里插入图片描述
      在这里插入图片描述
      进入 ./tmp/DEBIAN/ 下查看解压出来的控制信息
      在这里插入图片描述
    3. 修改默认配置
      修改默认配置文件 ./tmp/etc/mysql/mysql.conf.d/mysqld.cnf
      # 添加配置后配置文件如下
      [mysqld]
      pid-file        = /var/run/mysqld/mysqld.pid
      socket          = /var/run/mysqld/mysqld.sock
      datadir         = /var/lib/mysql
      log-error       = /var/log/mysql/error.log
      
      lower_case_table_names=1
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      在这里插入图片描述
    4. 修改配置后重新打包deb文件,打包后的新包名可以自定义
      dpkg-deb -b ./tmp/ mysql-community-server_8.0.28-1ubuntu18.04_amd64_edit.deb
      
      • 1
      在这里插入图片描述
      打包后的包名定义为 mysql-community-server_8.0.28-1ubuntu18.04_amd64_edit.deb,因为打包后的新deb包和旧的deb包mysql-community-server_8.0.28-1ubuntu18.04_amd64.deb在同一目录下,所以起个别名区分一下。
      在这里插入图片描述
      到了这一步,deb的修改后重新打包就全部完成了。后面用修改后 mysql-community-server_8.0.28-1ubuntu18.04_amd64_edit.deb 按照步骤在Ubuntu、Debian系统上安装MySQL服务,就是大小写不敏感的了。

    说明:

    截图是在全部做完之后截的,正常情况下,

    • 第一步解压后 /tmp/ 目录下只有etc、lib、usr这三个目录;
    • DEBIAN目录是第二步生成的;
    • mysql-community-server_8.0.28-1ubuntu18.04_amd64_edit.deb是打包生成的新deb文件。

    deb文件解包压包总结

    1. 解压出包的内容到指定的目录
      dpkg -x target.deb target/
      
      • 1
    2. 解压出包的控制信息到 上一步种内容目录的子目录 /DEBIAN/ 目录下
       dpkg -e target.deb target/DEBIAN/
      
      • 1
    3. 修改后内容重新打包生成新的deb包
       dpkg-deb -b target/ target.deb
      
      • 1
  • 相关阅读:
    Python图像处理算法实战【1】超详细整理 | 新手入门实用指南 | 图像处理基础
    【技术积累】Python中的NumPy库【一】
    nc前端合计行、按钮组
    使用Selenium发邮件附件
    python的几种数据类型的花样玩法(三)
    newstarctf
    Springboot 自定义模板导出Excel文件
    mongoose 查询返回的数据无法更改问题
    HiveServer2负载均衡
    c++基础学习第四天(内存分区,引用)
  • 原文地址:https://blog.csdn.net/baidu_15338861/article/details/127904241