# 为deepin添加来自debian或者ubuntu的软件包 目前deepin v23需要自行维护软件源,如果你想要添加来自Debian或者ubuntu的软件包,可以参考下面的方法。 ::: warning 不要从任何的混合源中安装软件包。它可能会打破软件包的一致性,这需要你要深厚的系统管理知识,例如 ABI 编译器、库版本和解释器特性等等。 ::: ## 从debian添加软件包 ### 1. 寻找合适的软件包 这里以neofetch为例子,首先在debian的软件包列表中搜索neofetch,找到对应的软件包,这里是`neofetch`。 1. 在此网站中搜索软件包[debian packages search](https://packages.debian.org/index) 2. 选择合适的软件包:deepin v23 是从debian11开始转向上游维护的,所以可以选择debian11以及以上的软件包,但是不建议选择unstable的软件包。同时需要注意,需要选择正确的架构,这里是amd64。 3. 下载软件包对应的源码包:在web页面右侧下载源码包栏目内,选择对应的源码包,这里是`neofetch_7.1.0-1.dsc`,鼠标右键复制链接地址,打开终端,选择一个合适的目录,使用dget命令下载源码包 ![image-20230217101546660](./image-20230217101546660.png) ```shell dget 来自devscripts工具包可以同步下载orig等压缩包,终端进行安装 apt install devscripts dget https://deb.debian.org/debian/pool/main/n/neofetch/neofetch_7.1.0-1.dsc ``` 同栏目的其他文件会被同步拉取,这里是`neofetch_7.1.0.orig.tar.xz`和`neofetch_7.1.0-1.debian.tar.xz`。 ### 2. 解压源码包 ```shell dpkg-source -x neofetch_7.1.0-1.dsc ``` 你可以获得一个`neofetch-7.1.0`的目录,进入目录,可以看到`debian`目录,这个目录就是debian的源码包。 :::tip 注意检查源码中是否包含发行版的判断,比如debian/rules、CMakeList 等构建时的判断检查等 ::: ### 3. 检查依赖 ```shell 进入源码目录执行,dpkg-checkbuilddeps ``` shell会提示你缺少哪些依赖,这里是`dh-autoreconf`,使用apt安装即可。 ```shell sudo apt install dh-autoreconf ``` 部分依赖源内有,但是需要检查一下版本是否满足要求。如果不满足,则需要对依赖包进行打包。(重复上述步骤) ### 4. 打包 建议使用pbuild/sbuild进行打包验证,详情参考[sbuild](https://wiki.ubuntu.com/SimpleSbuild) [pbuilder](https://wiki.ubuntu.com/PbuilderHowto),这些打包工具可以更方便帮助打包且不污染宿主机环境,但是请注意这里我们默认您有一些基础的知识,如仓库的添加,编写基础的脚本。打包完成后您会得到对应的deb包,下面可以进行安装 ### 5. 安装 ```shell sudo dpkg -i neofetch_7.1.0-1_amd64.deb // [!code error] ``` 上述操作是错误的,还记得我们之前的提示吗,不要使用`dpkg -i`安装软件包,这里我们使用`apt install`安装。 ```shell sudo apt install ./neofetch_7.1.0-1_amd64.deb ``` apt会自动解决依赖关系,安装完成后,可以使用`neofetch`命令查看效果。 ## 从ubuntu添加软件包 和Debian类似,ubuntu也有一个软件包搜索网站: [packages.ubuntu.com](https://packages.ubuntu.com/) 在这里搜索软件包,剩下的步骤和Debian类似。 ## 从其他源添加软件包 如果你想要添加来自其他源的软件包,可以参考上述步骤,但是需要注意的是,其他源的软件包可能会有一些不兼容的问题,需要自行解决。 ## 为deepin 贡献来自其他发行版的软件包 如果你想要为deepin贡献来自其他发行版的软件包,可以参考上述步骤,进行打包安装验证,确定没有问题后,可以提交到deepin-community仓库,deepin社区会进行审核,审核通过后,会合并到deepin仓库中。 ::: tip 建议软件包来源为Debian或者自己打包的软件包,这样可以保证软件包的一致性。 ::: 具体要求在[deepin-wiki](https://wiki.deepin.org/zh/01_deepin%E9%85%8D%E5%A5%97%E7%94%9F%E6%80%81/01_deepin%E5%85%A5%E9%97%A8/02_%E5%BC%80%E5%8F%91%E7%9B%B8%E5%85%B3/02_%E8%B4%A1%E7%8C%AE%E6%8C%87%E5%8D%97/deepin-community%E5%8D%8F%E4%BD%9C%E6%B5%81%E7%A8%8B)