Linux软件包的组成:源码包和二进制包。
Debian派系 | Redhat派系 | |
源码包 | ||
二进制包后缀 | deb | rpm |
底层工具 | dpkg | rpm |
用户工具 | apt | yum |
文件类型 | 保存目录 |
普通程序 | /usr/bin |
root权限程序 | /usr/sbin |
程序配置文件 | /etc |
日志文件 | /var/log |
文档文件 | /usr/share/doc |
源码包优点:开源免费、自由裁剪、修改源代码。
源码包缺点:安装步骤繁琐、编译时间长、新手无法解决编译问题。
二进制包优点:简单易用、安装速度快。
二进制包缺点:无法阅读修改源码、无法裁剪功能、依赖性强。
二进制包:deb包和rpm包。
deb包:Debian、Ubuntu、Deepin等Linux发行版的软件安装包。
rpm包:RedHat、Fedora、Centos等Linux发行版的软件安装包。
dpkg工具:底层的包管理工具,主要用于对已下载到本地和已经安装的deb包进行管理。
安装软件:dpkg -i xxx.deb
查看安装目录:dpkg -L xxx
显示版本:dpkg -l xxx
详细信息:dpkg -s xxx
目录打包:dpkg -b xxx xxx.deb,第一个为打包的目录名,第二个为生成包的名称。
罗列内容:dpkg -c xxx.deb
卸载软件:dpkg -r xxx
deb包文件结构分析
构建一个deb包
创建deb_pack文件夹,以存放build_deb.sh、helloworld文件夹和helloworld.deb。
打开vim编辑器,名称为build_deb.sh。deb_pack/build_deb.sh。修改权限777。
#!/bin/bash
package_dir="$1"
package_name="$2"
version="0.0.1"
author="superhero"
mkdir -p ./$package_dir/DEBIAN/
cat <<EOF > ./$package_dir/DEBIAN/changelog
VERSION:$version
AUTHOR:$author
DATE:$(date -R)
EOF
cat <<EOF > ./$package_dir/DEBIAN/copyright
*********************************************
*
* superhero + rock pi 4b+
*
*********************************************
EOF
cat <<EOF > ./$package_dir/DEBIAN/control
Source:superhero
Package:${package_name%.*}
Version:$version
Section:debug
Priority:optional
Architecture:arm64
Maintainer:$author
Description:Embedfile Tools
EOF
cat <<EOF > ./$package_dir/DEBIAN/postinst
#!/bin/sh
echo "*********************************************"
echo "*"
echo "* $package_name install over,no gratias!!!"
echo "*"
echo "*********************************************"
EOF
sudo chmod 775 ./$package_dir/DEBIAN/postinst
dpkg -b $package_dir $package_name
创建helloworld/usr/bin文件夹。进入deb_pack/helloworld/usr/bin,打开vim编辑器,名称为helloworld.sh。修改权限775。
#!/bin/bash
echo "hello world!!!"
返回deb_pack文件夹。
sudo ./build_deb.sh helloworld helloworld.deb
sudo dpkg -i helloworld.deb
helloworld
打包命令:
dpkg -b
dpkg -buildpackage
checkinstall
...
apt命令和apt-get命令
apt是新版的包管理工具;
解决apt-get命令过于分散的问题;
apt默认属性对用户友好(进度条、提示升级包数)