dpkg-deb: 错误: 维护者的脚本 postinst 的权限位是 644 (必须 >=0555 且 <=0775)
时间: 2024-03-26 12:35:38 浏览: 543
这个错误是因为在安装 Debian 软件包时,安装程序发现该软件包中的 postinst 脚本权限不正确。postinst 脚本是在软件包安装后自动运行的脚本,它用于执行一些必要的配置步骤。
为了解决这个问题,你需要修改该软件包中的 postinst 脚本的权限,使其符合要求。你可以使用以下命令将权限设置为 755:
```
chmod 755 /var/lib/dpkg/info/<package-name>.postinst
```
其中,<package-name> 是出现错误的软件包名称。请注意,这个命令需要使用 root 权限执行。
完成修改后,你可以重新运行软件包的安装程序,或者使用以下命令强制重新安装该软件包:
```
sudo dpkg -i --force-overwrite /var/cache/apt/archives/<package-name>.deb
```
同样,<package-name> 是出现错误的软件包名称。这个命令也需要使用 root 权限执行。
相关问题
把drawio的war做成一个deb程序,在统信系统上安装使用,给出一个细致的流程
要把draw.io的war包制作成一个Debian软件包(deb程序),以便在统信系统(UOS)上安装和使用,你需要遵循以下步骤:
1. **准备工作**:
- 在统信系统上安装必要的开发工具,如`make`, `dpkg-dev`, `equivs`等。
- 确保你有一个draw.io的WAR包文件。
2. **创建DEBIAN目录和控制文件**:
- 在你的项目目录中,创建一个名为`DEBIAN`的目录。
- 在`DEBIAN`目录中创建一个控制文件(control),这个文件包含了软件包的基本信息,如软件包名称、版本号、维护者信息、依赖关系等。
3. **编写preinst、postinst等脚本(如果需要)**:
- 根据需要,你可能需要编写`preinst`(安装前执行)、`postinst`(安装后执行)、`prerm`(移除前执行)、`postrm`(移除后执行)等脚本,以实现一些特定的安装或卸载任务。
4. **复制draw.io的WAR文件到合适的目录**:
- 将draw.io的WAR文件复制到`DEBIAN`目录下的某个位置,例如`usr/share/tomcat/webapps`(这里假设你使用的是Tomcat服务器)。
5. **创建合适的文件结构**:
- 在项目的根目录下创建文件结构,确保Debian打包系统能够正确识别和安装文件。例如:
```
/path/to/drawio-deb
├── DEBIAN
│ ├── control
│ ├── postinst
│ └── prerm
└── usr
└── share
└── tomcat
└── webapps
└── drawio.war
```
6. **打包**:
- 使用`dpkg-deb`命令来创建deb包。在终端中执行:
```
dpkg-deb --build /path/to/drawio-deb
```
- 这将在当前目录下生成一个名为`drawio-deb.deb`的文件。
7. **安装**:
- 将生成的`drawio-deb.deb`文件传输到统信系统上。
- 在统信系统上打开终端,执行:
```
sudo dpkg -i drawio-deb.deb
```
- 这将安装你的deb包。
8. **配置与启动**:
- 根据draw.io的部署需求,可能还需要对Tomcat或draw.io进行一些配置。
- 启动Tomcat服务器,以便能够访问draw.io。
这个流程可能需要根据你的具体环境和draw.io的部署需求进行适当的调整。确保你熟悉Debian包的构建和管理流程,以及统信系统上的操作。
统信uos系统下,现在有一个qt编译生成的release可执行程序,怎么制作成uos deb安装包,并且支持安装完自动在桌面和启动器中显示程序桌面图标,重复安装和启动器卸载卸载
首先,需要在统信uos系统中安装dpkg-dev和devscripts这两个软件包,用于生成和打包deb包。可以使用以下命令进行安装:
```shell
sudo apt-get install dpkg-dev devscripts
```
接下来,将编译生成的可执行程序和相关的资源文件放在一个文件夹中,例如/usr/local/myapp。
然后,进入该文件夹,创建一个DEBIAN文件夹,并在其中创建一个control文件,用于描述软件包的信息和依赖关系。示例control文件内容如下:
```text
Package: myapp
Version: 1.0
Architecture: amd64
Maintainer: Your Name <your@email.com>
Depends: libc6 (>= 2.15), libqt5gui5 (>= 5.5), libqt5widgets5 (>= 5.5)
Description: My App Description
```
其中,Package字段表示软件包名称,Version表示版本号,Architecture表示架构,Maintainer表示维护者信息,Depends表示依赖关系,Description表示软件包描述。
接着,在DEBIAN文件夹中创建一个postinst文件,用于安装完成后的操作,例如在桌面和启动器中创建快捷方式。示例postinst文件内容如下:
```shell
#!/bin/sh
set -e
# Add desktop shortcut
cat > /usr/share/applications/myapp.desktop <<EOL
[Desktop Entry]
Name=My App
Exec=/usr/local/myapp/myapp
Icon=/usr/local/myapp/myapp.png
Terminal=false
Type=Application
Categories=Utility;
EOL
# Add launcher shortcut
cat > /usr/share/applications/myapp-launcher.desktop <<EOL
[Desktop Entry]
Name=My App
Exec=/usr/local/myapp/myapp
Icon=/usr/local/myapp/myapp.png
Terminal=false
Type=Application
Categories=Utility;
X-GNOME-Autostart-enabled=true
X-GNOME-Autostart-Delay=0
EOL
# Reload desktop environment
if [ -n "$(pidof gnome-shell)" ]; then
dbus-send --session --type=method_call --dest=org.gnome.Shell /org/gnome/Shell org.gnome.Shell.Eval "string:global.reexec_self()"
elif [ -n "$(pidof xfce4-panel)" ]; then
xfce4-panel --restart
fi
exit 0
```
其中,第1行#!/bin/sh表示使用shell脚本语言,set -e表示在出现错误时立即退出脚本,接下来的两个cat命令用于创建桌面和启动器快捷方式,最后的if语句用于重新加载桌面环境。
最后,使用dpkg-deb命令将整个文件夹打包成deb包:
```shell
sudo dpkg-deb --build /usr/local/myapp
```
生成的deb包在/usr/local目录下,可以使用dpkg命令进行安装和卸载:
```shell
sudo dpkg -i myapp_1.0_amd64.deb # 安装
sudo dpkg -r myapp # 卸载
```
阅读全文