From 16417c0ac8e221ae2c04fa8e250dd814a644bd58 Mon Sep 17 00:00:00 2001 From: DSOE1024 Date: Fri, 20 Oct 2023 00:56:38 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=A1=8C=E9=9D=A2=E7=A7=BB=E6=A4=8D?= =?UTF-8?q?=E6=8C=87=E5=8D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../image-1.png" | Bin 0 -> 29701 bytes .../image.png" | Bin 0 -> 9523 bytes ...57\345\242\203\347\247\273\346\244\215.md" | 217 ++++++++++++++++++ 3 files changed, 217 insertions(+) create mode 100644 "\347\244\276\345\214\272\345\274\200\345\217\221\346\214\207\345\215\227/assets/\346\241\214\351\235\242\347\216\257\345\242\203\347\247\273\346\244\215/image-1.png" create mode 100644 "\347\244\276\345\214\272\345\274\200\345\217\221\346\214\207\345\215\227/assets/\346\241\214\351\235\242\347\216\257\345\242\203\347\247\273\346\244\215/image.png" create mode 100644 "\347\244\276\345\214\272\345\274\200\345\217\221\346\214\207\345\215\227/\346\241\214\351\235\242\347\216\257\345\242\203\347\247\273\346\244\215.md" diff --git "a/\347\244\276\345\214\272\345\274\200\345\217\221\346\214\207\345\215\227/assets/\346\241\214\351\235\242\347\216\257\345\242\203\347\247\273\346\244\215/image-1.png" "b/\347\244\276\345\214\272\345\274\200\345\217\221\346\214\207\345\215\227/assets/\346\241\214\351\235\242\347\216\257\345\242\203\347\247\273\346\244\215/image-1.png" new file mode 100644 index 0000000000000000000000000000000000000000..364f5e5e6a3cbb49efd9de7d98ce65e9e76d6d5e GIT binary patch literal 29701 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[IcXh8D=l7!d@eZrinl> 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 literal 0 HcmV?d00001 diff --git "a/\347\244\276\345\214\272\345\274\200\345\217\221\346\214\207\345\215\227/assets/\346\241\214\351\235\242\347\216\257\345\242\203\347\247\273\346\244\215/image.png" "b/\347\244\276\345\214\272\345\274\200\345\217\221\346\214\207\345\215\227/assets/\346\241\214\351\235\242\347\216\257\345\242\203\347\247\273\346\244\215/image.png" new file mode 100644 index 0000000000000000000000000000000000000000..a2ee5e93bfd9f08e731796216f0c33940b097a69 GIT binary patch literal 9523 zcmb`NRa9JCx2+2=+>0QA!rg-;xI4iq+=IIlAh>(51Sf3V-L}C+IEqf7>}P z_dJ}|?#pcTu-05sbB@vb*H@&9vJ55~2^s(Zz?74fR09Cuq+q`bfXJ{BKq@#60Du8< zl42TOna5drR-`)FFI~FQisI-S0p##;J<{YRsJH4?>w_MV(ghOn!%+?<;d8R0)t~V?9!Xj)qG>8Tr%qpEJUb*Pm5p23c>cMM>@; z$~2zj#_QX{re~stgsK_Ro4g&r{3)lyxqx-HBq-8hbMxGI zeH|_+T{ZMKgO;sS$66TO71i!EIa4XlK5#|GX;V85?Y$1-6^! zbv_2Gl98nKeBhU6Q3>g*_mxDn%sYy0{mtf8NNKcn&Ji}fi(ialBkOk$C<~~7l+4(~ z?--`8LEb?E!cm;;JUXLDT@|6L5!Ht+$5l4vmsp^fAg?Rro^Dc>7|qrY5^^&|@mo3;sV}mA0@9aDqks^lWqWnge#JD43uOu-D8( z&If8&+KN*K#E8`~F#RTGn3zsi=T()YQTY=+X@dXUiv9@aeXfKaoCk=&tdL}iaYlnq;BRBdeLH-+n86@cW+y9*t`p(^<2{ZuZ$i4Xag z!5o~tE&Wde_d#_kK{h$wz9ZPVEVqlO)0iIRJQ_V$07#CgaCLlc6OyDQ4sycA4F_FT zZ6sAe32qFEbIIeRh38sfQq>CpP;A!`xaCeg_N3CQ-~i;8GTga!qU=LWahwk>AWA?R zB@`%{ejma5Cj1T3 zML1goNPPF<3M=FWlAY_n1??@OiI{y`OE7_Y9Ijc?WVbAug+$P5>tsF1!GpTCC!-Ow zXang7bQmBZ>DqXX0O_BAm1xFhSG-LB{ax!Q=1P+cQUPO629RA2B8-E2v-A z-)u|?7_T5u1fZ4ovu7}1amIgbwi@yyXQY?)o0nWU3>zv(Th(y%BotkwI&zA6WCM@3 zvDOu}h>xt11v1lf2YWS}^eKZR^*Po5#2Qb*F!%(rJa{)J0+7hOPX8RtX9>rZr!fvf?X_Y8zr zi#)-i4UKM#B%4m*N>KjwVLFloW1=5_+GYSM^QF%7$G`CmbJ_rD@u)&CPG_yED;dG2 zk4MdvS5{?e0@8NJ1RG((lP7vNU~hBKU;TBB*gW_EOOpL!eDSHi+5sCp=>>nxk^RIA zJz2Yh*iDmZAJUBl(UZ$xnYG^5Z((KF{X0s$CCSB#Jro|3--FaH?*pr}C7jPPq?n=` zH^70kZMb{=8Z{zNT0o0Y(lP<{ZRVJtFuRRNK0G~$?wEH^k>Y1A+?O>WSn=JdnOdVy z9iatv38>T^T~@6F+XK6~25L(%qvbYW4~Ly4d*T+d+Vlwc(8s}#PU{sk)kngCsxFw8 zBb=i2PDgNN$(_=M4;iZ2BgP&AF0aloG=1rs5FGISwnwgAp^5v5Cuv&=nS&0rxyr}MYK!;r}y zw-}D!4}FQ}tF$i6CNnJ!fa>toT=^qJ1px668ML6SgO?hujWwbrgj@3br<`Ut&sex5 zd44s^ec@*LLB*ei0kZ#lL|aZO{Ueh_*)~q{Rv9_H98L%=-=vx#b?1ZyLlnG}D(pB> zFMWqEX(D{>QEncDwfW#DozITtJ0r4GSo>0z+|#9Q-RI6^-m(!+pq$@$V}4oTcN0st zim+#k)mp!G-?A)JWS1Tjj-`$l+@SDmQXEdA0ouwE#JN-0_q`kmM==ET8 z!qB;^{=OTURFh;KU3N2E{w6+0q7p35aUxJf)P3|Khf|1=1d$i>p#%Sw=X_gq$w>WP zX4Cx0O^GmEDrRimHYkE!1d2 zc-3rgdckQLNM#y!;8n_F|CXLMB6m(Rm}yZ%d{fps=o4 zG1oItT-$&>NRqJ5v}bY|fG?!g;p7rjR?i2wx)WF#QmmUpB70)BIBIOuCUzYkSvDet z#4a;jjK}(okfB;m-c8BFTq;%8#D0!W>O*9z;c$jWP+?a6Fay=0UXveZj>ga9EhTAO zB{?#)TA8Ox^2xZ_sJmg$sJjY(>mBS>#=GNNc^%c{3yPP#wXfPcA-|id2z)QFX?2e4 zsUOcP{4)-2ql|wGi|Hc?%POc+KWeB}w8qCqhO-o~2Ws3U=i|R{iJQ{Wzm9_R1pEbsbLpPsJ^&| zP&lJ4N^4?$iAMgr0{Bto9u(BX_|5Lkddjdgsb}Ko+mwT1QCC-HS=4)o*$wXQ%y^~v zcy#)QOH|?|KNQz8l!4)v_NBo_0tT@q3|RuWPu9b4ogY}1YlaMIDV>Hv?()iSdeH(> zFdkOE{i?w4Jv|(%D|g&GJ5Z zp{j8TUrI_tmF2yoNivY(JoHgmff_;1vZllpOf6Jif_8wyF`+4mI=Rw7r zO6)t|$LASf)kGc{(nj=>28maKgI>U*6B4GE1?zzu^+pyMhR< z+?B>j8w&l$O?t@tB_jvxWc8w)Ys>~&Z)C@VYv3DUG=`&=xsF-em%dHz{;bBB!{6h= z852^6A5SM}pP9iHIg!jUFaxozHg$*b__ylIprij&*~kepCyNVeTtiO6l6QdSgoS4q z_$uK+F_U>dWL-qtMiX&XIq;Vdp5%u7zdpmc4z+3`_qiH4sB8HRCo8a4@KYDQm_8Lv z6!bkeOpm)lI*uH0By(U>;2`#h<;(tWM}5-T$oxtMkXR-PO;lfZ+H?Dch+0K^aZP4% zjc5>;bz+MS2i+<1-oxV zv!y`LiN`^uT{F1C9d|&Nu%`FzwXe>%KQ!OZu&J07L;h}Prv<$>XR@EFyR@Dm&7}zp zE5@~v$OQ=_kEym3@5~KHgKrbB;8Unc(Z{(lb+oH(Fv=9z*3RC#@EjUkJu&pEHlv5G zG%M*Nz|?(Y4=qnyB)zN<%gx-tQR%>z8T8)CIo4j%!(ga<_1Nr?LPg}L>sSo63fn~W z(xK8IU7T;_q1A`WuYw+k4x2#oRps%3f3&0vI2gm~T?fp*p+tOCcA}M_Ut1LX^|Z#U z_i*MI#LWI7xa4@ic>2^v6UrO7HEw6rkjt#+2<}004)7%VgkBVIiv=3rl&X0ZkV@bW zljLO=Q=}b-V}@GH4py66aE2ZOoEZ$YO`r9u=z#*TO9zp(;q&q1nx-6GgwiqX0Y6Gx za>i13tiyY(axhEV%S8AzH>t&&Tr=~9z}@5N*}=E+j-JgFcll%gH2eaORvd&sj|Bba zvIH(`*@5a5rpzPjU$uDJ;@<1VHnmaHgE=+}-o^%|0t3+{uUv}3?J}|#+Df#mqx5EABr*kv#JMNPn35NU!qzR;@Ov7SG` z;+tQhf)gSMPCj?5yf0lkQd;<=zL6ALPad2t#DzEmDZyPjlNS82mGECREPo`Q zoVw8ijnc=6kQo%7Jaea5(mKXaQ(8^5Xy?pU_WgJUPc$X%RFShYu@_c0)S{Gb=k52n zF6Toi=V{W8>dudyS)8%+@CzClev4m)E$!ms8sc^FiG%beZ1d5;$NZd-u><=1RQZ0Bd*6+|7`m0byrbY`!fhdY8xfQ+ z>_4)0OBf$f%qf8Z?|&M#v91l`uL|upTwv}QxpYS+Bf%zo-)b+ulfh^#ObteyV6@?C@0tJKDl7Mse`@ zCS}_rt7d9}D~=wUl&|mpg2HJ3KKXC(`rT@$+G2wMpTufwT=2PIy}u_h-^K-{f-{W@ zkBAw?=x(0omMvvxMbpWGBYBg6p~&>pJ+w)%>`)yBMBqg79DoRO*?MQ4K3GOts)-7v zJPy~&10Ja1C$oXgKEL!_q~SC#x$P`n$#tbVsomS_T`!b84sCO$pO8iI-N{#R18)Ah zefIq4KH(=T?>g+>fexT6{DMx6&~{%#TCxb&VAv-2U7LQaL>i1hBDr@q78k)eqO|yX z&kIPYAlV3q5sS)0e!sbd2SK#r?>Xd)=hb!hK9ipAT@FKzls%DKSbSJAr}q70SUhDS zfi6?l3~`|zxEuxyq0L&bU5Qw_Q}n`~>>Qz5)bCXcO6E^cn74EnF_02<7g^Cn=@ut^ zlqia?;i)hCbe$#37F*X$_eJU3BH8y`-4C;GTykU(H7_SOUkh3-A_^b*LC7to{!jnX z2OS(k7YT^@6PA*wPLA}4d#q=VquJ2WIMNjVWy==Cmrv;8ZegKv8a;7UJUE&6K+~sg zI$sm~MsOv~)y}a=u8qHT0Db{EIat`cL!Lv0u%`^WWnvbtbjLFA!@7R@{a&qr_!7r| z7Oer9%P_~d-2pCg>_iZ1!tqI5}Rw zNgiHNa0$S;7Q4@S5n)SQ1Zt*ZSVjM*3ZeU|J2!in7zn z?&E4$4MzD)Q@Ka>5uoj+4k zC|cR|ewD{~rH@{FL`$px32D9>&kZdKg;{N(dH;hLc(JCxbB-ov*A6Jc4 zSFN4a73}~1y!Bf=o82=v?=x{#zt@GC!{yqZ0kXSBHDAPGFOjllK!e#lAprsao4Kai zJ3tUtymcb7_0=d$H5AL(VM<^C#c<<_Y?ae`!h1@XSe1Cn{}(yeV;d!m2iuBZPQ^H0 z>;jGq4a*2+GV;_we&Q#W47qqk)J2wZ>Yt9cKht53Zt8gd9p~5~qh<x`M_MOIV1d*yY2O$k0lQV@Gbt!cMgm*OsoINGg0KSRB&^<8-60aPEuMu2OrI z*9fNRT*aV0g-+duG954dakrt$u^{`RoaoE3m&$E zsfwZd!2Pmj58#vzCdVwV^Xvq?66AqL6#gRk0i8}e% z)g+lxbWj6ZScAtTdh~0Zu(^Q3_C0>b4d)H#^&OUr;^<~r^I?mA9Vuc8^&4a+XZa=I z6wOD6Y{{hXrQJh73O{WGI;_w@ilL0ov8ra-10|w}FcL%v6?9Z0Lb%6K$i#ypiT_6x zpTLL(B1$CH|7sk>BPHN@h^Xn!GWGFS*ex_CW0%>6P`z_?fl`;>qPHV@lwv#dhz^q zr7yr-)f_kd=%~&#iO-o|7{5itO@Y8?+vr?j_A_UTn*-L zLvxlA&u#+!2i^$BQDdXxhD$V@8AAEd$Kt)=>kQTkpzA<;Md`ZGDC%&6KORt9 zrGX>-TUzq(#KnE3p$9CxC!Gm6>;Sdq%^>OQ^HsAUm?707V5myMd56wAA?YR@Svzd1 zuHtW}8gL~wy3*00ljcVNS8E+Izxu})Z-1glT8Il#%xyg^imI+TJ1kHQ?GHEZw<1v% zmi-UAw5dVj`F=DuXd<6p2j)1Qt{_b8ie*KR5F>sx4Q*!VEff^)3Lhi}_kDDXNAX zNZ%h)ZB6(Ad?91pd3!s;yV~oMw7T!mV~^XCIQ#LHIQtvhR`gPPPrfIp%BL?|^J)oM{V;j6}ItJE&f1TRV3*O^Lzj;6&m z6TTVW4lm`U&&$d#0=hbOU9=tHW>x`+$#ow1vt@lO`hqAH6Gm#oXmj2&UUVFHQ%k_Q zXr}J{+!B60%bjZVds0RY7)s_s3x3oH%pZbe@i<6vN(D7DI21G3IK5!HfVAtAUy0Tp z;ckXOsGyagBaEmi1E*iCh;Kx+7+@CCax*L{pDxTBD9v20mmm7{kWZh*ygM0=F?1!RKorQ$-F&t^lqFAwlNT}aIc^(R3tgj6!67B$7aSkex z>Oo*&9O=QUyuV+r2c$kkC#pV2)?;{nH1WQ540{seXh@3cD zwe9{*uzn1NOF9FmNS6fD`Ht!8KYZML{|VpDU}G*n6xN}2tLkh7n%zyivMe6LHs44V zE%PlGWpG%Fd?(-Nmn{066H&SKj6gooCH7&9$Y!=?^$;mnON!%HxGEgrjf{^YR@6Q> zEcn3Tn>rN{IBfB2ZieLv+lKHX{wjsr)KvWF7LHS~3ot023pacSgZCeLcju2F)<~ z#s};bcz468H9N>UlMQZo!bfCJXoA>=ze4zJIFDa(*Jpt9VN`}xznXRN(-f0CQ86zBI1*T+25S*GZCHDr6@ zVasjijByy(jLE23RDWjG4@+HOU>mvM7b3ye^ca)tmQb*drdZO9ywC{P9RK?q2?ZI9 zr6`FC+VwitcApqiPKo<24v;Jhhw^_Zig!K4UVVJ48B)PQ@Rw(!IXHAU@$E_QkMGKx zUmjmjoyGKAV&)bYL-t~H9${(Bzqt^^%XDz)6n-NK1$_nN!akNAM*IDrD!&E(IB7>LO)%L=U;QvMH5f|EhZwzG%#$eKCYJ6ilCV9KGHe||c}Stt=!9nS z%MR3zkM-(}`m zKGG6;x1k4I;+b%qnL58zl=xJ`7D6}W(SV{^fmY(DwA%_%^C@W1Es7^)yIxtl8K#Rm zBRX+|n)X>ZV>jZgB1eynQN@@+K^da;u3yk)3dQ5PBq3vx301!`JzXf>uIphC8DVFc0ymcr7F#af3MQVM*_{Pvh zPhYgdeMj#GBJy@IhI&lTHQPEOZ`^q?gsvG9(?MHkcG38Z%mXRVLd6BZARu_(p7PnE z>8xjhbDH~PQheDwGSIMg?9-nxxdjTeNRD{SXw+q(Ko`b;><@QLSuuDf$v$Dm!k zV*s>K*%!H`OdqqR*NKAb*BqE_z5G<5qn3qI!?Q6EtV|I*qYYbUvyofcnS_pJdHXC+ z-bqTPaD;_~5tm1N-7&Zis|qhF`P-Q|g&MZ` zYK}D&pC;>LPw0$4wqu!KQQKjA>(p@l+cAnzNE= z{Ew%)2%;8cg`b!vM*07+I600h-#l!pFI%mjO>w*@0#?;o^A)mqSvr`v>c#x}@hR+| zWvw)pn>`?V3*}L^_y)Nf9i5}tuYR#krRj_v8exarT^F;<-K`|3;W@^82H z=fK#%_O0(!r8GT_+*)=a>7o%n3v4ytG3x!nVY>za);HmSYj&2c#I{CR%|gLjs=-UU z>+gBKoooz{5o}@)a$|a*@|p%BleJ+ss<^9P;V1uBSSt|C*e(pm`O9jMDRd8mD=(P4 zZ2|znP<0r&u*yHK^!(>ox(S2%6%2+q!$_6LrlpwI3epk0IK`rFzbjHkWOr(H zIx!2YhdrrBrL7d5GMl-_QgKYT9~SH>tsEH9`-+_x$De2%M#0{0TDLmx!9{pd%YLj5 zqm;{IB)5tZb8IfR6|mKZa>FTf+O=l%^nyLj1Q4G8bDX^yi@;l<5V4>izh*Ffz(Pj- z_6SecdeGcp=xD5F_1g#JSHi|tUiZ5cBN9G3h2neTCg?`u9cTWWKG0;RF52>&H-XQp%E*;>JP$2k!jnCIA2c literal 0 HcmV?d00001 diff --git "a/\347\244\276\345\214\272\345\274\200\345\217\221\346\214\207\345\215\227/\346\241\214\351\235\242\347\216\257\345\242\203\347\247\273\346\244\215.md" "b/\347\244\276\345\214\272\345\274\200\345\217\221\346\214\207\345\215\227/\346\241\214\351\235\242\347\216\257\345\242\203\347\247\273\346\244\215.md" new file mode 100644 index 00000000..088d3c9a --- /dev/null +++ "b/\347\244\276\345\214\272\345\274\200\345\217\221\346\214\207\345\215\227/\346\241\214\351\235\242\347\216\257\345\242\203\347\247\273\346\244\215.md" @@ -0,0 +1,217 @@ +# openKylin桌面环境移植 + +## 1. 前言 + +为了满足用户对多种桌面环境的需求,主流的Linux发行版大多支持多个桌面环境,让用户有更多选择。在openKylin社区各个桌面环境SIG组的努力下,目前openKylin已经支持了KDE,Xfce,Cutefish,DDE等桌面环境和特色应用 + +这个文档将会简单介绍现有主流桌面环境,桌面环境的软件包和模块,以及进行移植演示,文档并不能包括所有桌面环境的移植方法,一些桌面环境可能与文档不同,一些问题需要根据实际情况判断处理 + +## 2. 主流桌面环境 +知名Linux发行版Ubuntu以及debian官方支持以下桌面环境,以下为主流Linux桌面环境 + +- GNOME +- KDE +- LXQT +- Cinnamon +- Mate +- Xfce + + +## 3. 桌面环境的软件包和模块 + +Linux桌面环境一般包括以下组件: + +- 桌面环境(Desktop Environment, DE) + + 图形用户界面的主要部分,GNOME、KDE、XFCE等,桌面环境的核心 + +- 窗口管理器(Windows Manager, WM) + + 图形用户界面的一部分,控制和管理着窗口的外观、桌面菜单、图标、虚拟桌面以及按钮样式等一切显示在屏幕上的样式 + +- 显示管理器(Display Manager, DM) + + 显示管理器是提供图形登录功能的程序,控制用户会话并管理用户认证 + + 如果是Gnome桌面环境,默认登录管理器应该为GDM,如果是KDE桌面环境,默认登录管理器应该为SDDM(UKUI默认登录管理器),也有桌面环境使用LightDM作为登录管理器,LightDM是一个现代化的登录显示器,支持多个桌面环境,可以根据桌面环境要求选择登录管理器 + +- 应用程序(特色应用) + + 一些桌面环境的特色应用,比如计算器,邮箱,特色浏览器(如KDE的Konqueror)等,这些软件包建议作为可选组件安装 + +- 系统工具 + + 如终端,设置等实用工具,移植桌面环境必须提供这些工具的软件包 + +- 主题 + + 桌面环境一般会自带一些默认的主题包,比如icon,wallpaper,cursor和theme软件包,它们控制桌面图标,壁纸,光标和主题,这些软件包需要全部移植,否则桌面部分图标,光标无法正常显示,在默认主题移植完成的基础上,你也可以移植一些第三方主题包 + +- QT插件 + + 一些桌面环境需要的QT插件,需要移植,否则显示可能会出现问题,一些功能无法正常使用 + +在移植工作最开始,建议先确认上游源码包的具体软件包和组件以及其功能,对软件包进行分类,可以分为必须移植(桌面环境基础组件和软件包),可选移植(一些特色应用,比如计算器),无需移植(完全不需要的功能,比如启动动画,文档手册),当然也可以采用你喜欢的其他分类方式,目的是为了分清移植工作的主次 + +同时可以根据时间相近和主版本号来确定移植的软件包版本,如果某一版本的软件包本地打包失败,可以尝试其他版本是否能修复该问题 + +如果你移植的桌面有可以参考的Linux发行版,比如Deepin,Ubuntu可以先在虚拟机安装一个,可以参考系统内桌面环境各个软件包的版本 + + + + + +## 4. 移植示例 + +接下来简单演示移植桌面环境的软件包,建议先移植一些简单的,有参考对象的桌面环境,建议先在本地练习打包和传包,成功后再传到openKylin的仓库 + +打包需要使用ci源,在软件发布后可以先在ci源中查看,可以验证打包是否成功。软件包依赖问题建议解决一个传一个,否则依赖容易乱 + +换源 +```bash +deb http://archive.build.openkylin.top/openkylin yangtze main +deb http://archive.build.openkylin.top/OTHER/Internal-mirror/repack5/baseok0.fix yangtze main +deb http://archive.build.openkylin.top/OTHER/Internal-mirror/stage0 yangtze main +deb http://archive.build.openkylin.top/openkylin yangtze-security main +deb http://archive.build.openkylin.top/openkylin yangtze-updates main +deb http://archive.build.openkylin.top/openkylin yangtze-proposed main +``` +换完源后更新一下软件包 + +```bash +sudo apt update && sudo apt upgrade +``` + +安装打包和传包需要的软件包 +```bash +sudo apt install git devscripts git-buildpackage pristine-tar build-essential +``` +### 1. 获取上游源码 + +我们首先需要找到桌面环境上游的源码仓库,下载对应版本的源码包,也可以克隆仓库对应的tag,下载全部桌面环境需要的源码包,并进入到源码目录,删除一些不需要的目录和文件 +```bash +rm -rf .github .gitlab .obs +``` +### 2. 修改debian/changelog文件,修改对应的版本号,版本信息描述等 + +通过 dch -m "Build for openkylin" 指令生成新的 changelog,并手动修改版本加上`-ok1`,信息修改成自己的维护者名称以及邮箱 + +```bash +package-name (0.1-ok1) yangtze; urgency=medium + + * Build for openkylin + + -- Maintainers Thu, 14 Sep 2023 08:55:53 +0800 + +``` +### 3. 解决依赖问题 + +有了源码包之后,由于依赖关系问题,我们还需要知道应该先编译打包哪个源码包,一般我们可以先选择移植桌面环境的库(如libcutefish),进入到源码目录后,通过以下命令检查和安装依赖 +```bash +sudo apt build-dep . +``` +如果这一步依赖出现问题,首先需要检查openKylin是否缺少这个包的源码仓库,通过以下命令获取软件包信息并找到源码名,然后在Gitee上找到对应的仓库,如果没有可以新增软件包维护列表,也可以提交issue给对应的SIG组补充或修复依赖 + +依赖可以到在 `debian/control` 中查看,通过以下命令查找依赖包名称的软件包 +```bash +apt show package +``` +注意,补全依赖时通过debian上游,这里演示GNOME桌面环境的EOG,在 https://packages.debian.org 找到源码包 + +![Alt text](./assets/桌面环境移植/image-1.png) + +在页面的右侧找到 下载源码包 通过dget下载dsc文件(需要安装devscripts),如下 +![Alt text](./assets/桌面环境移植/image.png) +```bash +dget http://deb.debian.org/debian/pool/main/e/eog/eog_43.2-1.dsc +``` +这会在当前目录下载三个文件 `eog_43.2-1.debian.tar.xz` `eog_43.2-1.dsc` `eog_43.2.orig.tar.xz` + +如果你希望通过wget下载,则需要手动下载以上全部源码包 + +```bash +wget http://deb.debian.org/debian/pool/main/e/eog/eog_43.2-1.dsc +wget http://deb.debian.org/debian/pool/main/e/eog/eog_43.2.orig.tar.xz +wget http://deb.debian.org/debian/pool/main/e/eog/eog_43.2-1.debian.tar.xz +``` + +下载完成后,通过`dpkg-source -x`解压出源码 + +```bash +dpkg-source -x .dsc +``` +然后在当前目录会解压出一个源码目录,修改,构建和测试后可将源码传到openKylin的仓库 + + +### 4. 本地打包测试 + + +进入到源码目录,生成规范化格式文件 +```bash +dpkg-buildpackage -S -nc --no-sign +``` +编译打包并在上级目录生成软件包,可以通过`dpkg -i`安装,一些软件包可能会存在配置文件路径冲突的问题,需要修改源码包 +```bash +dpkg-buildpackage -us -uc -b +``` +编译完成后不要忘记清除,防止污染源码,同时你也可以选择拷贝一份源码进行编译测试 + +```bash +dh clean +``` +> 注意:有时okbs构建错误时首先检查是否清除了编译生成的文件 + +### 5. 从dsc文件导入源码到Git仓库 + +在源码目录上级目录,会找到生成的dsc文件,通过以下命令构建Git仓库,注意dsc文件名称和仓库生成路径 +```bash +gbp import-dsc --pristine-tar --debian-branch=openkylin/yangtze --upstream-branch=upstream example.dsc example_dir +``` +其中: + +--pristine-tar + +保留原始的 tar 文件的元数据。这包括保留原始的许可证信息、版本号等。这样可以使源代码在导入后保持原版,不丢失任何与原始 Debian 包相关的信息,pristine tar 分支( Git 存储库中使用的默认分支名称是 pristine tar )包含必要的附加信息,以从上游分支重新创建原始tarball + +要使用此功能,您需要安装 pristine-tar 软件包。 + +--debian-branch=openkylin/yangtze + +指定打包分支名称,openkylin/yangtze 为当前openkylin1.0的版本系列。debian branch Git 存储库中使用的默认分支名称是 master )保存当前的开发工作。 这是通常用来发布版本的分支,并且新的上游版本会合并到该分支上 + +--upstream branch=upstream + +指定上游分支名称,需为upstream + +--example.dsc + +通过源码生成的dsc文件 + +--example + +生成的目标目录 + +接下来进入源码构建目录,推送到Git仓库 + +```bash +# 创建quilt的分支,用于正式打包 +git branch packaging/openkylin/yangtze + +# 上传到源码仓库 +git remote add origin git@gitee.com:openkylin/example.git +git push --tags +git push --all +``` + +推送完成后,查看issue是否有okbot的构建失败提示,等待okbs构建完成后,建议找一个干净的系统通过apt安装桌面环境的包来测试是否仍存在依赖问题,如果仍存在依赖问题需要修复依赖,或者修改源码包并重复上述步骤 + + +## 7. 参考文献 + +https://userbase.kde.org/ + +https://www.debian.org/distrib/packages + +https://wiki.deepin.org/zh/%E5%BE%85%E5%88%86%E7%B1%BB/02_deepin%E6%B7%B1%E5%85%A5/02_DDE%E7%9B%B8%E5%85%B3/00_DDE%E6%A1%8C%E9%9D%A2%E7%A7%BB%E6%A4%8D/%E8%BD%AF%E4%BB%B6%E5%8C%85%E5%88%86%E7%B1%BB%E4%B8%8E%E7%AE%80%E4%BB%8B + +https://www.debian.org/doc/manuals/debmake-doc/index.zh-cn.html \ No newline at end of file -- Gitee From 9495d6c17f09916ebdb1594edfbf330512f0e0f5 Mon Sep 17 00:00:00 2001 From: DSOE1024 Date: Tue, 24 Oct 2023 10:06:00 +0000 Subject: [PATCH 2/2] =?UTF-8?q?update=20=E7=A4=BE=E5=8C=BA=E5=BC=80?= =?UTF-8?q?=E5=8F=91=E6=8C=87=E5=8D=97/=E6=A1=8C=E9=9D=A2=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=E7=A7=BB=E6=A4=8D.md.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: DSOE1024 --- ...16\257\345\242\203\347\247\273\346\244\215.md" | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git "a/\347\244\276\345\214\272\345\274\200\345\217\221\346\214\207\345\215\227/\346\241\214\351\235\242\347\216\257\345\242\203\347\247\273\346\244\215.md" "b/\347\244\276\345\214\272\345\274\200\345\217\221\346\214\207\345\215\227/\346\241\214\351\235\242\347\216\257\345\242\203\347\247\273\346\244\215.md" index 088d3c9a..f127896b 100644 --- "a/\347\244\276\345\214\272\345\274\200\345\217\221\346\214\207\345\215\227/\346\241\214\351\235\242\347\216\257\345\242\203\347\247\273\346\244\215.md" +++ "b/\347\244\276\345\214\272\345\274\200\345\217\221\346\214\207\345\215\227/\346\241\214\351\235\242\347\216\257\345\242\203\347\247\273\346\244\215.md" @@ -33,7 +33,7 @@ Linux桌面环境一般包括以下组件: 显示管理器是提供图形登录功能的程序,控制用户会话并管理用户认证 - 如果是Gnome桌面环境,默认登录管理器应该为GDM,如果是KDE桌面环境,默认登录管理器应该为SDDM(UKUI默认登录管理器),也有桌面环境使用LightDM作为登录管理器,LightDM是一个现代化的登录显示器,支持多个桌面环境,可以根据桌面环境要求选择登录管理器 + 如果是Gnome桌面环境,默认登录管理器应该为GDM,如果是KDE桌面环境,默认登录管理器应该为SDDM,也有桌面环境使用LightDM作为登录管理器,LightDM(UKUI默认登陆管理器)是一个现代化的登录管理器,支持多个桌面环境,可以根据桌面环境要求选择登录管理器 - 应用程序(特色应用) @@ -55,7 +55,7 @@ Linux桌面环境一般包括以下组件: 同时可以根据时间相近和主版本号来确定移植的软件包版本,如果某一版本的软件包本地打包失败,可以尝试其他版本是否能修复该问题 -如果你移植的桌面有可以参考的Linux发行版,比如Deepin,Ubuntu可以先在虚拟机安装一个,可以参考系统内桌面环境各个软件包的版本 +如果你移植的桌面有可以参考的Linux发行版,比如Deepin、Ubuntu、Linux Mint可以先在虚拟机安装一个,可以参考系统内桌面环境各个软件包的版本 @@ -70,8 +70,6 @@ Linux桌面环境一般包括以下组件: 换源 ```bash deb http://archive.build.openkylin.top/openkylin yangtze main -deb http://archive.build.openkylin.top/OTHER/Internal-mirror/repack5/baseok0.fix yangtze main -deb http://archive.build.openkylin.top/OTHER/Internal-mirror/stage0 yangtze main deb http://archive.build.openkylin.top/openkylin yangtze-security main deb http://archive.build.openkylin.top/openkylin yangtze-updates main deb http://archive.build.openkylin.top/openkylin yangtze-proposed main @@ -110,13 +108,15 @@ package-name (0.1-ok1) yangtze; urgency=medium ```bash sudo apt build-dep . ``` -如果这一步依赖出现问题,首先需要检查openKylin是否缺少这个包的源码仓库,通过以下命令获取软件包信息并找到源码名,然后在Gitee上找到对应的仓库,如果没有可以新增软件包维护列表,也可以提交issue给对应的SIG组补充或修复依赖 +如果这一步依赖出现问题,首先需要检查openKylin是否缺少这个包的源码仓库,通过以下命令获取软件包信息并找到源码名,然后在Gitee上找到对应的仓库,如果没有需要提交issue给对应的SIG组补充或修复依赖 依赖可以到在 `debian/control` 中查看,通过以下命令查找依赖包名称的软件包 ```bash apt show package ``` -注意,补全依赖时通过debian上游,这里演示GNOME桌面环境的EOG,在 https://packages.debian.org 找到源码包 +注意,补全依赖时通过debian上游,这里演示GNOME桌面环境的EOG,社区鼓励从upstream拉取源码 GNOME的上游代码在:download.gnome.org/sources 可跳过下面步骤,直接到修改changelog步骤开始 + +也可以在 https://packages.debian.org 找到源码包 ![Alt text](./assets/桌面环境移植/image-1.png) @@ -143,6 +143,7 @@ dpkg-source -x .dsc 然后在当前目录会解压出一个源码目录,修改,构建和测试后可将源码传到openKylin的仓库 + ### 4. 本地打包测试 @@ -177,7 +178,7 @@ gbp import-dsc --pristine-tar --debian-branch=openkylin/yangtze --upstream-branc --debian-branch=openkylin/yangtze -指定打包分支名称,openkylin/yangtze 为当前openkylin1.0的版本系列。debian branch Git 存储库中使用的默认分支名称是 master )保存当前的开发工作。 这是通常用来发布版本的分支,并且新的上游版本会合并到该分支上 +指定打包分支名称,openkylin/yangtze (yangtze是1.0的版本代号,nile是2.0的版本代号)。debian branch Git 存储库中使用的默认分支名称是 master )保存当前的开发工作。 这是通常用来发布版本的分支,并且新的上游版本会合并到该分支上 --upstream branch=upstream -- Gitee