打包 deb 的一个实例 CONKY 插件脚本 CONKY.zip
解压到桌面 右键点击桌面 打开终端输入 dpkg-deb -b CONKY cn.i8520.conky.deb
dpkg-deb -b CONKY cn.i8520.conky.deb
安装 sudo dpkg -i cn.i8520.conky.deb -y 或者 sudo apt install ./cn.i8520.conky.deb -y
安装好以后 reboot 重启系统
应为有一个桌面启动器文件,需要复制到家目录的 /home/用户名/.config/autostart
/home/用户名/.config/autostart
因为deb安装的时候DEBIAN下的脚本都是ROOT权限执行的也就是 $USER = root 而不是 $USER = 用户名
$USER = root 而不是 $USER = 用户名
就变成了/root/.config/autostart而不是/home/用户名/.config/autostart
获取当前登入用户名的另外一种写法 这个更简单一点
#!/bin/bash NAME_ID=`getent passwd ${SUDO_UID:-$(id -u)} | cut -d: -f 6` MY_USER_DIR="${NAME_ID}" MY_USER_NAME="${MY_USER_DIR##*/}" echo '显示当前登入用户路径' echo ${MY_USER_DIR} echo '--------------------------' echo '显示当前登入用户名' echo ${MY_USER_NAME} echo '--------------------------' echo "当root执行\$USER = root" echo "当用户执行\$USER = 用户名" MY_ROOT_NAME='root' if [[ ! X${MY_ROOT_NAME} = X${USER} ]];then # 在用户下的操作 echo "1. $USER" else # 在root下的操作 echo "2. $USER" fi echo '--------------------------' echo "有用户的情况下,且需要操作用户目录,这个使用就要主要归属和群组的问题" echo "在执行直接执行 chmod 755 的时候其实是root下的chmod 755" echo "需要这样执行" # chown 用户名 文件或文件夹的路径 # chgrp 用户名 文件或文件夹的路径 echo "123" > ${MY_USER_DIR}/123 echo "[归属]为当前用户:${MY_USER_NAME}" echo 'chown ${MY_USER_NAME} ${MY_USER_DIR}/123' chown ${MY_USER_NAME} ${MY_USER_DIR}/123 echo "[群组]为当前用户:${MY_USER_NAME}" echo '${MY_USER_NAME} ${MY_USER_DIR}/123' chgrp ${MY_USER_NAME} ${MY_USER_DIR}/123 echo '--------------------------' echo "没有用户的情况下" echo -e "在root下 直接执行 chmod 755 给文件或文件夹加权限不用考虑归属和群组\n但是/www 目录的时候需要主要"
怎么得到当前用户名?简单就是 cd /home/*/桌面 然后pwd 打印一下当前路径,截取字符串
cd /home/*/桌面 然后pwd 打印一下当前路径,截取字符串
截取字符串的笔记 https://note.youdao.com/s/LRSAIUR4
还有一个问题就是 需要把一些文件的归属者、群组设置成当前用户
# 假设 用户名是 ${MY_USER} # chown 用户名 文件路径或文件夹路径 # chgrp 用户名 文件路径或文件夹路径 # 归属 chown ${MY_USER} /home/${MY_USER}/conkyrcXX.desktop 群组 chgrp ${MY_USER} /home/${MY_USER}/conkyrcXX.desktop
下面贴一下DEBIAN下的配置文件
DEBIAN/control
Package:后面是 实际上的包名 Version:后面是版本 Depends:后面是依赖项
Maintainer:后面是作者信息 Description:后面是软件包说明
Package: cn.i8520.conky Version: 0.1 Prioritt: optional Architecture: amd64 Installed-Size: 8 Depends: wget,conky-all Maintainer: [i8520 <123.@123.com>] Description: 基于conky的插件脚本
DEBIAN/postinst
#!/bin/bash set -e mkdir -p /tmp/CN-i8520-MILLET MY_TMP='/tmp/CN-i8520-MILLET' #---------------------------- # 判断系统是否是服务器,服务器一般不会有桌面文件夹. # 间接 区分root和用户 #---------------------------- MY_USER_U_NED_R(){ A='/home/*/桌面' B='/home/*/Desktop' cd ${A} 2>/dev/null if [ $? -ne 0 ]; then cd ${B} 2>/dev/null if [ $? -ne 0 ]; then echo "/root" else MY_USER=$(echo `pwd`) echo ${MY_USER%/*} fi else MY_USER=$(echo `pwd`) echo ${MY_USER%/*} fi } MY_USER_U_NED_R > ${MY_TMP}/MY_USER_DIR.TXT #-------------------------------- # 定义用户路径 和用户名 # /home/用户/.config/autostart开机执行起动器文件 #-------------------------------- MY_ROOT_DIR='/root' MY_USER_DIR=`cat ${MY_TMP}/MY_USER_DIR.TXT` MY_USER="${MY_USER_DIR##*/}" MY_CONKY_DIR="${MY_USER_DIR}/.config/autostart" #-------------------------------- # 在用户下的操作 #-------------------------------- MY_USER_U(){ if [ ! -d "${MY_CONKY_DIR}" ] then mkdir -p ${MY_CONKY_DIR} #这个脚本是在ROOT执行的所以需要修改权限 chown ${MY_USER} ${MY_CONKY_DIR} chgrp ${MY_USER} ${MY_CONKY_DIR} fi #+------------------------------ CONKY_SH_DIR='/opt/CN-i8520-MILLET/cn.i8520.conky' chmod 755 ${CONKY_SH_DIR} chown ${MY_USER} ${CONKY_SH_DIR} chgrp ${MY_USER} ${CONKY_SH_DIR} chown ${MY_USER} ${CONKY_SH_DIR}/* chgrp ${MY_USER} ${CONKY_SH_DIR}/* cp -r /opt/CN-i8520-MILLET/cn.i8520.conky/conkyrcXX.desktop ${MY_CONKY_DIR} echo "修改${MY_CONKY_DIR}/conkyrcXX.desktop的权限为755" echo "修改文件属性${MY_CONKY_DIR}/conkyrcXX.desktop为" echo "[归属]为当前用户:${MY_USER}" chown ${MY_USER} ${MY_CONKY_DIR}/conkyrcXX.desktop echo "[群组]为当前用户:${MY_USER}" chgrp ${MY_USER} ${MY_CONKY_DIR}/conkyrcXX.desktop bash /opt/CN-i8520-MILLET/cn.i8520.conky/ConkyrcFile.sh #+------------------------------ #/tmp/CN-i8520-MILLET rm -rf ${MY_TMP} } #-------------------------------- # 在root下的操作 #-------------------------------- MY_USER_R(){ chmod 755 /opt/CN-i8520-MILLET/cn.i8520.conky cp -r /opt/CN-i8520-MILLET/cn.i8520.conky/conky-X /etc/profile.d bash /opt/CN-i8520-MILLET/cn.i8520.conky/ConkyrcFile.sh #+------------------------------ # /tmp/CN-i8520-MILLET rm -rf ${MY_TMP} } #-------------------------------- # 根据自定义函数 MY_USER_U_NED_R 的输出 # 输出为 /home/用户 就是系统管理员,没有ROOT权限 # 输出为 /root 超级管理员权限,有ROOT权限 #-------------------------------- if [[ ! X${MY_ROOT_DIR} = X${MY_USER_DIR} ]];then # 在用户下的操作 MY_USER_U else # 在root下的操作 MY_USER_R fi exit 0
DEBIAN/postrm
#!/bin/bash set -e mkdir -p /tmp/CN-i8520-MILLET MY_TMP='/tmp/CN-i8520-MILLET' #---------------------------- # 判断系统是否是服务器,服务器一般不会有桌面文件夹. # 间接 区分root和用户 #---------------------------- MY_USER_U_NED_R(){ A='/home/*/桌面' B='/home/*/Desktop' cd ${A} 2>/dev/null if [ $? -ne 0 ]; then cd ${B} 2>/dev/null if [ $? -ne 0 ]; then echo "/root" else MY_USER=$(echo `pwd`) echo ${MY_USER%/*} fi else MY_USER=$(echo `pwd`) echo ${MY_USER%/*} fi } MY_USER_U_NED_R > ${MY_TMP}/MY_USER_DIR.TXT #-------------------------------- # 定义用户路径 和用户名 # /home/用户/.config/autostart开机执行起动器文件 #-------------------------------- MY_ROOT_DIR='/root' MY_USER_DIR=`cat ${MY_TMP}/MY_USER_DIR.TXT` MY_USER="${MY_USER_DIR##*/}" MY_CONKY_DIR="${MY_USER_DIR}/.config/autostart" #-------------------------------- # 在用户下的操作 #-------------------------------- MY_USER_U(){ echo "删除卸载残留" rm -rf ${MY_CONKY_DIR}/conkyrcXX.desktop rm -rf ${MY_USER_DIR}/.conkyrc rm -rf /opt/CN-i8520-MILLET/cn.i8520.conky/wk.txt rm -rf /root/.conkyrc rm -rf /tmp/URL_LINK } #-------------------------------- # 在root下的操作 #-------------------------------- MY_USER_R(){ echo "删除卸载残留" rm -rf /etc/profile.d/conky-X rm -rf /root/.conkyrc rm -rf /opt/CN-i8520-MILLET/cn.i8520.conky/wk.txt rm -rf /tmp/URL_LINK } #-------------------------------- # 根据自定义函数 MY_USER_U_NED_R 的输出 # 输出为 /home/用户 就是系统管理员,没有ROOT权限 # 输出为 /root 超级管理员权限,有ROOT权限 #-------------------------------- if [[ ! X${MY_ROOT_DIR} = X${MY_USER_DIR} ]];then # 在用户下的操作 if [[ ! -f ${MY_CONKY_DIR}/conkyrcXX.desktop ]];then echo "OK" else MY_USER_U fi else # 在root下的操作 if [[ ! -f /etc/profile.d/conky-X ]];then echo "OK" else MY_USER_R fi fi exit 0
不明觉厉
学习了!
感谢分享
有没兴趣来给人培训打包哈哈
Featured Collection
Popular Events
打包 deb 的一个实例 CONKY 插件脚本 CONKY.zip
解压到桌面 右键点击桌面 打开终端输入
dpkg-deb -b CONKY cn.i8520.conky.deb安装 sudo dpkg -i cn.i8520.conky.deb -y 或者 sudo apt install ./cn.i8520.conky.deb -y
安装好以后 reboot 重启系统
应为有一个桌面启动器文件,需要复制到家目录的
/home/用户名/.config/autostart因为deb安装的时候DEBIAN下的脚本都是ROOT权限执行的也就是
$USER = root 而不是 $USER = 用户名就变成了/root/.config/autostart而不是/home/用户名/.config/autostart
获取当前登入用户名的另外一种写法 这个更简单一点
怎么得到当前用户名?简单就是
cd /home/*/桌面 然后pwd 打印一下当前路径,截取字符串截取字符串的笔记 https://note.youdao.com/s/LRSAIUR4
还有一个问题就是 需要把一些文件的归属者、群组设置成当前用户
下面贴一下DEBIAN下的配置文件
DEBIAN/control
Package:后面是 实际上的包名 Version:后面是版本 Depends:后面是依赖项
Maintainer:后面是作者信息 Description:后面是软件包说明
DEBIAN/postinst
DEBIAN/postrm