Linux 不同架构、不同系统的问题

一、麒麟V10(kylin)操作系统中,sudo执行程序后,其环境变量依然为用户家目录。
(1)背景

我的程序在通过sudo,去安装程序安装包时,总会在用户目录下,新建一个root所属组的文件,导致程序后续都无法使用该配置文件。而在除了麒麟v10的系统上没有该问题。

// (1)安装deb包
sudo dpkg -i qq_1520.deb

// (2)deb解压后,包含postinst安装脚本,里面执行了升级程序
#!/bin/bash
/opt/QQ/qqupdate >/dev/null 2>&1 &

// (3)该升级程序使用QT生成,会有文件写入操作
QSettings s(QSettings::NativeFormat, QSettings::UserScope, "my_exe", "qq");
s.setValue("key", "value");

// (4)kylin会在家目录下生成,并且该文件所属组是root,当家目录用户使用该文件时,则没有权限
/home/guofucheng/.config/my_exe/qq.conf

// (5)展示文件信息
-rw-r--r-- 1 root root 22 220 16:00 qq.conf
(2)原因

写一个最直接的demo,可以说明根本的原因,当前在家目录下,麒麟v10操作系统的$home环境变量为用户目录,而其他操作系统的该变量为/root是正确的,因为sudo安装安装包时,运行就应该是以根用户运行,而新建的文件也应该生成到根目录下

// 麒麟v10
sudo bash -c 'echo $HOME'
/home/guofucheng

// 其他操作系统
sudo bash -c 'echo $HOME'
/root

如何知道是该环境变量导致的该问题呢?
因为在QSettings中,如果不指定确切的路径,它默认创建的目录会使用QDir::homePath()所获取的路径,该函数在linux下是通过$HOME环境变量来获取的。

在这里插入图片描述

(3)解决办法

就是在麒麟v10下,让文件生成到根目录,不影响到家目录用户。手动添加环境变量到根目录,影响面最小。

HOME=/root /opt/QQ/qqupdate >/dev/null 2>&1 &


二、统信(UOS)操作系统中,QWidget中插入图片,边框显示黑色
(1)原因

如果未开启窗口特效功能,那么程序中如果插入包含透明背景的图片,会显示黑色

(2)解决办法

图片本身去掉圆角,去掉透明。或者在系统设置中开启窗口特效功能。

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值