From 2fef45ae57d97ef61ef7be9c5546f784dbdf21b2 Mon Sep 17 00:00:00 2001 From: He Chenlan <210hcl@gmail.com> Date: Mon, 18 Jan 2021 15:41:29 +0800 Subject: [PATCH] Upload from He Chenlan's PC or VM --- LFS手册持续更新.txt | 886 +++++++++++++++++++++++++++++++++++++++++++ RPM参考指南.txt | 61 +++ versions.csv | 38 ++ versions.ods | Bin 0 -> 21760 bytes zypper-yast修改意见.txt | 7 + 参考资料重新整理.txt | 6 + 工作语言与IDE.txt | 10 + 服务器搭建需求.txt | 10 + 核心包二次确认.txt | 119 ++++++ 版本.txt | 2 + 系统发展规划.txt | 12 + 系统设定修订.txt | 33 ++ 项目分支小项目.txt | 12 + 13 files changed, 1196 insertions(+) create mode 100644 LFS手册持续更新.txt create mode 100644 RPM参考指南.txt create mode 100644 versions.csv create mode 100644 versions.ods create mode 100644 zypper-yast修改意见.txt create mode 100644 参考资料重新整理.txt create mode 100644 工作语言与IDE.txt create mode 100644 服务器搭建需求.txt create mode 100644 核心包二次确认.txt create mode 100644 版本.txt create mode 100644 系统发展规划.txt create mode 100644 系统设定修订.txt create mode 100644 项目分支小项目.txt diff --git a/LFS手册持续更新.txt b/LFS手册持续更新.txt new file mode 100644 index 0000000..03e888c --- /dev/null +++ b/LFS手册持续更新.txt @@ -0,0 +1,886 @@ +SUReLinux项目构建手册(内部文件,不要外传,参数说明见LFS官方文档) +第一章 准备系统 +1.1准备工作 +本文假定中途不会关机,推荐使用虚拟机挂起功能。 +作者在VMWare Workstation 15.5下测试。(请不要使用virtualbox,virtualbox的CPU利用率较低,在支持超线程的CPU上面甚至低于hyper-v。qemu存在桥接网卡的问题,方案自行检索。hyper-v, xen未测试) +内存推荐4G,最少2G, swap最少4G。硬盘80G(完整版内核需要15G以上空间编译,所以必须要这么大硬盘,使用虚拟机的话,直接创建80G以及以上硬盘即可),处理器能好点用好点的,只要是64位处理器就行。 +LFS系统宿主机要求(按照LFS要求筛选之后):OpenSUSE(leap, tumbleweeded均可,推荐) +mageia(推荐) +ubuntu/debian/kali(debian与kali请用su - root代替su,并请运行sudo dpkg-reconfigure bash,将默认shell从dash切为bash) +archlinux/manjaro(archlinux vmware剪贴板异常,manjaro安装gtkmm gtkmm3后没问题) +gentoo/funtoo(vmware剪贴板异常),debian/kali(普通用户的su请改为su - root) +已知存在问题的不符合要求的:fedora/centos/rhel(yacc这边不一致,fedora可用opensuse的bison安装包代替),alpine(使用的是musl,不是glibc),solus(多项不符合要求),WSL(没有lsblk,无法chroot)。 +另外请自行准备ocserv服务器/代理服务器,aria2c或者wget +使用如下代码检测是否安装全必要的软件 +cat > version-check.sh << "EOF" +#!/bin/bash +# Simple script to list version numbers of critical development tools +export LC_ALL=C +bash --version | head -n1 | cut -d" " -f2-4 +MYSH=$(readlink -f /bin/sh) +echo "/bin/sh -> $MYSH" +echo $MYSH | grep -q bash || echo "ERROR: /bin/sh does not point to bash" +unset MYSH + +echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3- +bison --version | head -n1 + +if [ -h /usr/bin/yacc ]; then + echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`"; +elif [ -x /usr/bin/yacc ]; then + echo yacc is `/usr/bin/yacc --version | head -n1` +else + echo "yacc not found" +fi + +bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6- +echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2 +diff --version | head -n1 +find --version | head -n1 +gawk --version | head -n1 +echo -n "pkg-config "; pkg-config --version +if [ -h /usr/bin/awk ]; then + echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`"; +elif [ -x /usr/bin/awk ]; then + echo awk is `/usr/bin/awk --version | head -n1` +else + echo "awk not found" +fi + +gcc --version | head -n1 +g++ --version | head -n1 +ldd --version | head -n1 | cut -d" " -f2- # glibc version +grep --version | head -n1 +gzip --version | head -n1 +cat /proc/version +m4 --version | head -n1 +make --version | head -n1 +patch --version | head -n1 +echo Perl `perl -V:version` +python3 --version +sed --version | head -n1 +tar --version | head -n1 +makeinfo --version | head -n1 # texinfo version +xz --version | head -n1 + +echo 'int main(){}' > dummy.c && g++ -o dummy dummy.c +if [ -x dummy ] + then echo "g++ compilation OK"; + else echo "g++ compilation failed"; fi +rm -f dummy.c dummy +EOF +bash version-check.sh + +额外,装qemu方便测试,lzip用于ed源代码解包。 +1.2创建变量 +export LFS=/mnt/lfs +使用如下命令确认变量(一定要在root账户下再确认一遍) +echo $LFS +1.3准备硬盘 +这里选用和LFS略有区别的方案,采用的是loop法,这里不做详细介绍。主要是为了方便测试。 +dd bs=1G count=60 if=/dev/zero of=60.img #划分60G的img空盘作为虚拟硬盘 +sudo cfdisk ~/60.img #dos分区,一个就行 +sudo kpartx -av ~/60.img #让img变成系统分区 +mkfs.ext4 /dev/mapper/loop0p1 #格式化,linux内核默认兼容ext4,这里请切换为su,后续将维持在su下,ubuntu可能为loop3,自行用lsblk确认下 +1.4挂载分区 +mkdir -pv $LFS +mount -v -t ext4 /dev/mapper/loop0p1 $LFS +请使用lsblk确认挂载成功 +1.5下包 +几点说明:①GNU,CPAN镜像用的是上海交通大学镜像,kernel.org为中科大镜像,openssh为清华大学镜像 +②内核为opensuse提供的定制的4.19LTS内核 +③从LFS中被删除的包:iana-etc, gdbm, gperf, expat, XML::Parser, intltool, libffi, python3(glibc编译需要py3, 但chroot后不安装), ninja, meson, check, kbd, libpipeline, vim, sysklogd, pkg-config, sysvinit, 加入的包:ed, nano, dhcpcd, openssh, wget, pkgconf, openrc +④OpenRC已加入,脚本还需重写 +⑤源代码ed是用lzip压缩的,请自行安装lzip,在chroot之前把ed解包,lzip暂不编译 +⑥file如果不好下载可以改为https://github.com/file/file/archive/FILE5_37.tar.gz, dhcpcd不好下可以改为https://github.com/rsmarples/dhcpcd/archive/dhcpcd-8.0.6.tar.gz +mkdir -pv $LFS/sources +chmod -v a+wt $LFS/sources #可选,方便非root用户复制源代码包到文件夹 +cat > wgetlist << "EOF" +https://mirrors.sjtug.sjtu.edu.cn/gnu/binutils/binutils-2.32.tar.xz +https://mirrors.sjtug.sjtu.edu.cn/gnu/gcc/gcc-9.2.0/gcc-9.2.0.tar.xz +https://mirrors.sjtug.sjtu.edu.cn/gnu/gmp/gmp-6.1.2.tar.xz +https://mirrors.sjtug.sjtu.edu.cn/gnu/mpfr/mpfr-4.0.2.tar.xz +https://mirrors.sjtug.sjtu.edu.cn/gnu/mpc/mpc-1.1.0.tar.gz +https://mirrors.sjtug.sjtu.edu.cn/gnu/m4/m4-1.4.18.tar.xz +https://mirrors.sjtug.sjtu.edu.cn/gnu/glibc/glibc-2.30.tar.xz +https://mirrors.sjtug.sjtu.edu.cn/gnu/dejagnu/dejagnu-1.6.2.tar.gz +https://mirrors.sjtug.sjtu.edu.cn/gnu/ncurses/ncurses-6.1.tar.gz +https://mirrors.sjtug.sjtu.edu.cn/gnu/bash/bash-5.0.tar.gz +https://mirrors.sjtug.sjtu.edu.cn/gnu/bison/bison-3.4.1.tar.xz +https://mirrors.sjtug.sjtu.edu.cn/gnu/coreutils/coreutils-8.31.tar.xz +https://mirrors.sjtug.sjtu.edu.cn/gnu/diffutils/diffutils-3.7.tar.xz +https://mirrors.sjtug.sjtu.edu.cn/gnu/findutils/findutils-4.7.0.tar.xz +https://mirrors.sjtug.sjtu.edu.cn/gnu/gawk/gawk-5.0.1.tar.xz +https://mirrors.sjtug.sjtu.edu.cn/gnu/gettext/gettext-0.20.1.tar.xz +https://mirrors.sjtug.sjtu.edu.cn/gnu/grep/grep-3.3.tar.xz +https://mirrors.sjtug.sjtu.edu.cn/gnu/gzip/gzip-1.10.tar.xz +https://mirrors.sjtug.sjtu.edu.cn/gnu/make/make-4.2.1.tar.gz +https://mirrors.sjtug.sjtu.edu.cn/gnu/patch/patch-2.7.6.tar.xz +https://mirrors.sjtug.sjtu.edu.cn/gnu/sed/sed-4.7.tar.xz +https://mirrors.sjtug.sjtu.edu.cn/gnu/tar/tar-1.32.tar.xz +https://mirrors.sjtug.sjtu.edu.cn/gnu/bc/bc-1.07.1.tar.gz +https://mirrors.sjtug.sjtu.edu.cn/gnu/texinfo/texinfo-6.6.tar.xz +https://mirrors.sjtug.sjtu.edu.cn/gnu/readline/readline-8.0.tar.gz +https://mirrors.sjtug.sjtu.edu.cn/gnu/libtool/libtool-2.4.6.tar.xz +https://mirrors.sjtug.sjtu.edu.cn/gnu/inetutils/inetutils-1.9.4.tar.xz +https://mirrors.sjtug.sjtu.edu.cn/gnu/autoconf/autoconf-2.69.tar.xz +https://mirrors.sjtug.sjtu.edu.cn/gnu/automake/automake-1.16.1.tar.xz +https://mirrors.sjtug.sjtu.edu.cn/gnu/groff/groff-1.22.4.tar.gz +https://mirrors.sjtug.sjtu.edu.cn/gnu/grub/grub-2.04.tar.xz +https://mirrors.sjtug.sjtu.edu.cn/gnu/nano/nano-4.4.tar.xz +https://mirrors.sjtug.sjtu.edu.cn/gnu/wget/wget-1.20.3.tar.gz +https://mirrors.sjtug.sjtu.edu.cn/gnu/ed/ed-1.15.tar.lz +https://mirrors.sjtug.sjtu.edu.cn/cpan/src/5.0/perl-5.30.0.tar.gz +https://mirrors.tuna.tsinghua.edu.cn/OpenBSD/OpenSSH/portable/openssh-8.0p1.tar.gz +https://mirrors.ustc.edu.cn/kernel.org/linux/utils/util-linux/v2.34/util-linux-2.34.tar.xz +https://mirrors.ustc.edu.cn/kernel.org/linux/libs/security/linux-privs/libcap2/libcap-2.27.tar.xz +https://mirrors.ustc.edu.cn/kernel.org/linux/utils/net/iproute2/iproute2-5.2.0.tar.xz +https://download.savannah.nongnu.org/releases/acl/acl-2.2.53.tar.gz +https://download.savannah.nongnu.org/releases/attr/attr-2.4.48.tar.gz +https://prdownloads.sourceforge.net/psmisc/psmisc/psmisc-23.2.tar.xz +https://prdownloads.sourceforge.net/tcl/Tcl/8.6.9/tcl8.6.9-src.tar.gz +https://prdownloads.sourceforge.net/expect/Expect/5.45.4/expect5.45.4.tar.gz +https://prdownloads.sourceforge.net/libpng/zlib-1.2.11.tar.xz +https://prdownloads.sourceforge.net/procps-ng/Production/procps-ng-3.3.15.tar.xz +https://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs/v1.45.3/e2fsprogs-1.45.3.tar.gz +https://sourceware.org/elfutils/ftp/elfutils-latest.tar.bz2 +https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz +https://github.com/openSUSE/kernel/archive/v4.19.75.tar.gz +https://github.com/shadow-maint/shadow/releases/download/4.7/shadow-4.7.tar.xz +https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz +https://github.com/OpenRC/openrc/archive/0.42.1.tar.gz +https://distfiles.dereferenced.org/pkgconf/pkgconf-1.1.0.tar.xz +https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tar.xz +https://data.iana.org/time-zones/releases/tzdata2019c.tar.gz +https://tukaani.org/xz/xz-5.2.4.tar.xz +http://www.greenwoodsoftware.com/less/less-551.tar.gz +https://roy.marples.name/downloads/dhcpcd/dhcpcd-8.0.6.tar.xz +https://www.openssl.org/source/openssl-1.1.1c.tar.gz +https://dev.gentoo.org/~blueness/eudev/eudev-3.2.8.tar.gz +ftp://ftp.astron.com/pub/file/file-5.37.tar.gz +EOF +wget --input-file=wgetlist --continue --directory-prefix=$LFS/sources +mv $LFS/sources/v4.19.75.tar.gz $LFS/sources/kernel-4.19.75.tar.gz #wget下载的文件名和浏览器不统一,修正下 +mv $LFS/sources/0.42.1.tar.gz $LFS/sources/openrc-0.42.1.tar.gz +或者 +aria2c -c -i wgetlist -d $LFS/sources #可以添加-j16和-x16提高速度 +1.6创建目录 $LFS/tools +mkdir -v $LFS/tools +ln -sv $LFS/tools / #创建 /tools 的符号链接。将其指向 SURE 分区中新建的目录。 +1.7添加 LFS 用户 +groupadd lfs +useradd -s /bin/bash -g lfs -m -k /dev/null lfs +passwd lfs +chown -v lfs $LFS/tools +chown -v lfs $LFS/sources +su - lfs +1.8设置环境 +cat > ~/.bash_profile << "EOF" +exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash +EOF +cat > ~/.bashrc << "EOF" +set +h +umask 022 +LFS=/mnt/lfs +LC_ALL=POSIX +LFS_TGT=$(uname -m)-lfs-linux-gnu +PATH=/tools/bin:/bin:/usr/bin +export LFS LC_ALL LFS_TGT PATH +EOF +source ~/.bash_profile +1.9解包说明与编译说明 +在sources里面tar xvf(v可以省略)文件夹,cd进去。编译完成,删除解包的文件夹 +自行在make后面-jx x为电脑线程数,可以额外+1,gcc,内核等SBU非常大的可以考虑x-1 +第二章 构建临时系统(参数请查阅LFS手册) +2.1 Binutils pass1(链接器与汇编器等) +mkdir -v build +cd build +../configure --prefix=/tools \ + --with-sysroot=$LFS \ + --with-lib-path=/tools/lib \ + --target=$LFS_TGT \ + --disable-nls \ + --disable-werror +make -j$(nproc --all) +case $(uname -m) in + x86_64) mkdir -v /tools/lib && ln -sv lib /tools/lib64 ;; +esac +make install +cd ../.. +2.2 gcc pass1 +tar xf ../mpfr-*.tar.xz +mv -v mpfr-* mpfr +tar xf ../gmp-*.tar.xz +mv -v gmp-* gmp +tar xf ../mpc-*.tar.gz +mv -v mpc-* mpc +for file in gcc/config/{linux,i386/linux{,64}}.h +do + cp -uv $file{,.orig} + sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \ + -e 's@/usr@/tools@g' $file.orig > $file + echo ' +#undef STANDARD_STARTFILE_PREFIX_1 +#undef STANDARD_STARTFILE_PREFIX_2 +#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/" +#define STANDARD_STARTFILE_PREFIX_2 ""' >> $file + touch $file.orig +done +case $(uname -m) in + x86_64) + sed -e '/m64=/s/lib64/lib/' \ + -i.orig gcc/config/i386/t-linux64 + ;; +esac +mkdir -v build +cd build +../configure \ + --target=$LFS_TGT \ + --prefix=/tools \ + --with-glibc-version=2.11 \ + --with-sysroot=$LFS \ + --with-newlib \ + --without-headers \ + --with-local-prefix=/tools \ + --with-native-system-header-dir=/tools/include \ + --disable-nls \ + --disable-shared \ + --disable-multilib \ + --disable-decimal-float \ + --disable-threads \ + --disable-libatomic \ + --disable-libgomp \ + --disable-libquadmath \ + --disable-libssp \ + --disable-libvtv \ + --disable-libstdcxx \ + --enable-languages=c,c++ +make -j$(nproc --all) +make install +cd ../.. +2.3 kernel header +make mrproper +make INSTALL_HDR_PATH=dest headers_install +cp -r dest/include/* /tools/include +cd .. +2.4 glibc(C函数库) +mkdir -v build +cd build +../configure \ + --prefix=/tools \ + --host=$LFS_TGT \ + --build=$(../scripts/config.guess) \ + --enable-kernel=3.2 \ + --with-headers=/tools/include +make -j$(nproc --all) +make install +请注意在此处进行一次测试 +echo 'int main(){}' > dummy.c +$LFS_TGT-gcc dummy.c +readelf -l a.out | grep ': /tools' +如果输出[Requesting program interpreter: /tools/lib64/ld-linux-x86-64.so.2]则成功,成功后执行 +rm -v dummy.c a.out +cd ../.. +2.5 libstdc++(标准C++库,包含在gcc里面,解包gcc) +mkdir -v build +cd build +GCCVER=9.2.0 +../libstdc++-v3/configure \ + --host=$LFS_TGT \ + --prefix=/tools \ + --disable-multilib \ + --disable-nls \ + --disable-libstdcxx-threads \ + --disable-libstdcxx-pch \ + --with-gxx-include-dir=/tools/$LFS_TGT/include/c++/${GCCVER} +make -j$(nproc --all) +make install +2.6 Binutils pass2 +mkdir -v build +cd build +CC=$LFS_TGT-gcc \ +AR=$LFS_TGT-ar \ +RANLIB=$LFS_TGT-ranlib \ +../configure \ + --prefix=/tools \ + --disable-nls \ + --disable-werror \ + --with-lib-path=/tools/lib \ + --with-sysroot +make -j$(nproc --all) +make install +make -C ld clean +make -C ld LIB_PATH=/usr/lib:/lib +cp -v ld/ld-new /tools/bin +2.7 gcc pass2 +cat gcc/limitx.h gcc/glimits.h gcc/limity.h > \ + `dirname $($LFS_TGT-gcc -print-libgcc-file-name)`/include-fixed/limits.h +for file in gcc/config/{linux,i386/linux{,64}}.h +do + cp -uv $file{,.orig} + sed -e 's@/lib\(64\)\?\(32\)\?/ld@/tools&@g' \ + -e 's@/usr@/tools@g' $file.orig > $file + echo ' +#undef STANDARD_STARTFILE_PREFIX_1 +#undef STANDARD_STARTFILE_PREFIX_2 +#define STANDARD_STARTFILE_PREFIX_1 "/tools/lib/" +#define STANDARD_STARTFILE_PREFIX_2 ""' >> $file + touch $file.orig +done +case $(uname -m) in + x86_64) + sed -e '/m64=/s/lib64/lib/' \ + -i.orig gcc/config/i386/t-linux64 + ;; +esac +tar xvf ../mpfr-*.tar.xz +mv -v mpfr-* mpfr +tar xvf ../gmp-*.tar.xz +mv -v gmp-* gmp +tar xvf ../mpc-*.tar.gz +mv -v mpc-* mpc +mkdir -v build +cd build +CC=$LFS_TGT-gcc \ +CXX=$LFS_TGT-g++ \ +AR=$LFS_TGT-ar \ +RANLIB=$LFS_TGT-ranlib \ +../configure \ + --prefix=/tools \ + --with-local-prefix=/tools \ + --with-native-system-header-dir=/tools/include \ + --enable-languages=c,c++ \ + --disable-libstdcxx-pch \ + --disable-multilib \ + --disable-bootstrap \ + --disable-libgomp +make -j$(nproc --all) +make install +ln -sv gcc /tools/bin/cc +请注意在此处进行一次测试 +echo 'int main(){}' > dummy.c +cc dummy.c +readelf -l a.out | grep ': /tools' +如果输出[Requesting program interpreter: /tools/lib64/ld-linux-x86-64.so.2]则成功,成功后执行 +rm -v dummy.c a.out +cd ../.. +2.8 tcl(测试套件1) +cd unix +./configure --prefix=/tools +make -j$(nproc --all) +make install +chmod u+w /tools/lib64/libtcl8.6.so +make install-private-headers +ln -sv tclsh8.6 /tools/bin/tclsh +cd ../.. +2.9 expect(测试套件2) +cp -v configure{,.orig} +sed 's:/usr/local/bin:/bin:' configure.orig > configure +./configure --prefix=/tools \ + --with-tcl=/tools/lib \ + --with-tclinclude=/tools/include +make -j$(nproc --all) +make SCRIPTS="" install +cd .. +2.10 dejagnu(测试套件3) +./configure --prefix=/tools +make install +cd .. +2.11 m4 +sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.c +echo "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h +./configure --prefix=/tools +make -j$(nproc --all) +make install +cd .. +2.12 ncurses +sed -i s/mawk// configure +./configure --prefix=/tools \ + --with-shared \ + --without-debug \ + --without-ada \ + --enable-widec \ + --enable-overwrite +make -j$(nproc --all) +make install +ln -s libncursesw.so /tools/lib/libncurses.so +cd .. +2.13 bash +./configure --prefix=/tools --without-bash-malloc +make -j$(nproc --all) +make install +ln -sv bash /tools/bin/sh +cd .. +2.14 bison +./configure --prefix=/tools +make -j$(nproc --all) +make install +cd .. +2.15 coreutils (系统基本工具) +./configure --prefix=/tools --enable-install-program=hostname +make -j$(nproc --all) +make install +cd .. +2.16-2.19 diffutils file findutils gawk +for package in diffutils-3.7 file-5.37 findutils-4.7.0 gawk-5.0.1; do + tar xf "${package}".tar.* + cd "${package}" || continue + ./configure --prefix=/tools + make -j$(nproc --all) + make install + cd $LFS/sources/ || break + rm -rvf "${package}" +done +2.20 gettext +./configure --prefix=/tools --disable-shared +make -j$(nproc --all) +cp -v gettext-tools/src/{msgfmt,msgmerge,xgettext} /tools/bin +cd .. +2.21-2.22 grep gzip +for package in grep-3.3 gzip-1.10; do + tar xvf "${package}".tar.* + cd "${package}" || continue + ./configure --prefix=/tools + make -j$(nproc --all) + make install + cd $LFS/sources/ || break + rm -rvf "${package}" +done +2.23 make +sed -i '211,217 d; 219,229 d; 232 d' glob/glob.c +./configure --prefix=/tools --without-guile +make -j$(nproc --all) +make install +cd .. +2.24 patch +./configure --prefix=/tools +make -j$(nproc --all) +make install +cd .. +2.25 perl +PERLVER=5.30.0 +sh Configure -des -Dprefix=/tools -Dlibs=-lm -Uloclibpth -Ulocincpth +make -j$(nproc --all) +cp -v perl cpan/podlators/scripts/pod2man /tools/bin +mkdir -pv /tools/lib/perl5/${PERLVER} +cp -Rv lib/* /tools/lib/perl5/${PERLVER} +cd .. +2.26-2.29 sed xz tar texinfo +for package in sed-4.7 tar-1.32 texinfo-6.6 xz-5.2.4; do + tar xvf "${package}".tar.* + cd "${package}" || continue + ./configure --prefix=/tools + make -j$(nproc --all) + make install + cd $LFS/sources/ || break + rm -rvf "${package}" +done +2.19 python3 +sed -i '/def add_multiarch_paths/a \ return' setup.py +./configure --prefix=/tools --without-ensurepip +make -j$(nproc --all) +make install +2.19 Stripping(清理无用内容) +strip --strip-debug /tools/lib/* +/usr/bin/strip --strip-unneeded /tools/{,s}bin/* +rm -rvf /tools/{,share}/{info,man,doc} +find /tools/{lib,libexec} -name \*.la -delete +2.20 改变属主 +exit #请确认是切换到root +chown -R root:root $LFS/tools +第三章 构建编译内核依赖以及ssh, dhcp和nano +3.1 准备虚拟内核文件系统 +mkdir -pv $LFS/{dev,proc,sys,run} +mknod -m 600 $LFS/dev/console c 5 1 +mknod -m 666 $LFS/dev/null c 1 3 +mount -v --bind /dev $LFS/dev +mount -vt devpts devpts $LFS/dev/pts -o gid=5,mode=620 +mount -vt proc proc $LFS/proc +mount -vt sysfs sysfs $LFS/sys +mount -vt tmpfs tmpfs $LFS/run +3.2 chroot +chroot "$LFS" /tools/bin/env -i \ + HOME=/root \ + TERM="$TERM" \ + PS1='(sure chroot) \u:\w\$ ' \ + PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \ + /tools/bin/bash --login +h +3.3 创建目录(几个lib文件夹请确认下,是否要改lib64或者添加lib64) +mkdir -p /{bin,boot,etc/{opt,sysconfig},home,lib64/firmware,mnt,opt} +mkdir -p /{media/{floppy,cdrom},sbin,srv,var} +install -d -m 0750 /root +install -d -m 1777 /tmp /var/tmp +mkdir -p /usr/{,local/}{bin,include,lib64,sbin,src} +mkdir -p /usr/{,local/}share/{color,dict,doc,info,locale,man} +mkdir -p /usr/{,local/}share/{misc,terminfo,zoneinfo} +mkdir -p /usr/libexec +mkdir -p /usr/{,local/}share/man/man{1..8} +case $(uname -m) in +x86_64) mkdir -p /lib64 ;; +i?86) mkdir -p /lib32 ;; +esac +mkdir -p /var/{log,mail,spool} +ln -sf /run /var/run +ln -sf /run/lock /var/lock +mkdir -p /var/{opt,cache,lib64/{color,misc,locate},local} +3.4 创建必要的文件和符号链接(几个lib文件夹请确认下,是否要改lib64或者添加lib64) +ln -sv /tools/bin/{bash,cat,chmod,dd,echo,ln,mkdir,pwd,rm,stty,touch} /bin +ln -sv /tools/bin/{env,install,perl,printf} /usr/bin +ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib64 +ln -sv /tools/lib/libstdc++.{a,so{,.6}} /usr/lib64 + +ln -sv bash /bin/sh +ln -sv /proc/self/mounts /etc/mtab +cat > /etc/passwd << "EOF" +root:x:0:0:root:/root:/bin/bash +bin:x:1:1:bin:/dev/null:/bin/false +daemon:x:6:6:Daemon User:/dev/null:/bin/false +messagebus:x:18:18:D-Bus Message Daemon User:/var/run/dbus:/bin/false +nobody:x:99:99:Unprivileged User:/dev/null:/bin/false +EOF + +cat > /etc/group << "EOF" +root:x:0: +bin:x:1:daemon +sys:x:2: +kmem:x:3: +tape:x:4: +tty:x:5: +daemon:x:6: +floppy:x:7: +disk:x:8: +lp:x:9: +dialout:x:10: +audio:x:11: +video:x:12: +utmp:x:13: +usb:x:14: +cdrom:x:15: +adm:x:16: +messagebus:x:18: +input:x:24: +mail:x:34: +kvm:x:61: +wheel:x:97: +nogroup:x:99: +users:x:999: +EOF + +exec /tools/bin/bash --login +h +touch /var/log/{btmp,lastlog,faillog,wtmp} +chgrp -v utmp /var/log/lastlog +chmod -v 664 /var/log/lastlog +chmod -v 600 /var/log/btmp +3.5 kernel header +make mrproper +make INSTALL_HDR_PATH=dest headers_install #lfs开发版有误,headers_install可用 +find dest/include \( -name .install -o -name ..install.cmd \) -delete +cp -rv dest/include/* /usr/include +3.6 glibc(二次编译需加入libidn2) +GCCVER=9.2.0 +#patch -Np1 -i ../glibc-2.28-fhs-1.patch #请确认是否需要打这个补丁,是否需要打其他补丁 +case $(uname -m) in +i?86) +GCC_INCDIR=/usr/lib32/gcc/$(uname -m)-pc-linux-gnu/${GCCVER}/include +ln -sf ld-linux.so.2 /lib32/ld-lsb.so.3 +;; +x86_64) +GCC_INCDIR=/usr/lib64/gcc/x86_64-pc-linux-gnu/${GCCVER}/include +ln -sf ../lib64/ld-linux-x86-64.so.2 /lib64 +ln -sf ../lib64/ld-linux-x86-64.so.2 /lib64/ld-lsb-x86-64.so.3 +;; +esac +mkdir -v build +cd build +##CC="gcc -ffile-prefix-map=/tools=/usr" \ +#../configure --prefix=/usr \ +# --disable-werror \ +# --enable-kernel=3.2 \ +# --enable-stack-protector=strong \ +# --with-headers=/usr/include \ +# libc_cv_slibdir=/lib ###原本为LFS提供 +CC="gcc" CXX="g++" CFLAGS="-O2 -mtune=generic -Wno-unused-but-set-variable -Wno-unused-variable -Wno-unused-function -Wno-maybe-uninitialized" ../configure \ + --host=x86_64-sure-linux-gnu --build=x86_64-sure-linux-gnu \ + --prefix=/usr \ + --libexecdir=/usr/libexec \ + --infodir=/usr/share/info \ + --enable-add-ons=libidn --without-cvs \ + --without-selinux \ + --enable-kernel=3.2 \ + --with-headers=/usr/include \ + --enable-obsolete-rpc \ + --enable-obsolete-nsl \ + --disable-crypts ##由mageia提供 +make -j1 +case $(uname -m) in + i?86) ln -sfnv $PWD/elf/ld-linux.so.2 /lib ;; + x86_64) ln -sfnv $PWD/elf/ld-linux-x86-64.so.2 /lib64 ;; +esac +make check -j$(nproc --all) #mageia的configure fail3,多出来了cond-mutex10 +#这里任何的fail都应该报告,xpass/xfail/unsupport不需要 + + + +以下未测试,请不要急着用 + + +touch /etc/ld.so.conf +sed '/test-installation/s@$(PERL)@echo not running@' -i ../Makefile +make install +cp -v ../nscd/nscd.conf /etc/nscd.conf +mkdir -pv /var/cache/nscd +make localedata/install-locales -j$(nproc --all) +cat > /etc/nsswitch.conf << "EOF" +# Begin /etc/nsswitch.conf +passwd: files +group: files +shadow: files +hosts: files dns +networks: files +protocols: files +services: files +ethers: files +rpc: files +# End /etc/nsswitch.conf +EOF +tar -xvf ../../tzdata*.tar.gz +ZONEINFO=/usr/share/zoneinfo +mkdir -pv $ZONEINFO/{posix,right} +for tz in etcetera southamerica northamerica europe africa antarctica asia australasia backward pacificnew systemv; do +zic -L /dev/null -d $ZONEINFO -y "sh yearistype.sh" ${tz} +zic -L /dev/null -d $ZONEINFO/posix -y "sh yearistype.sh" ${tz} +zic -L leapseconds -d $ZONEINFO/right -y "sh yearistype.sh" ${tz} +done +cp -v zone.tab zone1970.tab iso3166.tab $ZONEINFO +zic -d $ZONEINFO -p America/New_York +unset ZONEINFO +cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime +请检查下lib64 +cat > /etc/ld.so.conf << "EOF" +# Begin /etc/ld.so.conf +/usr/local/lib +/opt/lib +EOF +cat >> /etc/ld.so.conf << "EOF" +# Add an include directory +include /etc/ld.so.conf.d/*.conf +EOF +mkdir -pv /etc/ld.so.conf.d +3.7 调整工具链 +mv -v /tools/bin/{ld,ld-old} +mv -v /tools/$(uname -m)-pc-linux-gnu/bin/{ld,ld-old} +mv -v /tools/bin/{ld-new,ld} +ln -sv /tools/bin/ld /tools/$(uname -m)-pc-linux-gnu/bin/ld +gcc -dumpspecs | sed -e 's@/tools@@g' -e '/\*startfile_prefix_spec:/{n;s@.*@/usr/lib64/ @}' -e '/\*cpp:/{n;s@$@ -isystem /usr/include@}' > `dirname $(gcc --print-libgcc-file-name)`/specs +echo 'int main(){}' > dummy.c +cc dummy.c -v -Wl,--verbose &> dummy.log +readelf -l a.out | grep ': /lib64' +如果没有任何错误,应该输出[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2] +grep -o '/usr/lib64.*/crt[1in].*succeeded' dummy.log #查下是不是lib64 +应该输出/usr/lib64/../lib64/crt1.o succeeded +/usr/lib64/../lib64/crti.o succeeded +/usr/lib64/../lib64/crtn.o succeeded +grep -B1 '^ /usr/include' dummy.log +应该输出#include <...> search starts here: +/usr/include +grep 'SEARCH.*/usr/lib64' dummy.log |sed 's|; |\n|g' #查下是不是lib64 +应该输出SEARCH_DIR("/usr/lib64") +SEARCH_DIR("/lib64") +grep "/lib.*/libc.so.6 " dummy.log +应该输出attempt to open /lib64/libc.so.6 succeeded +grep found dummy.log +应该输出found ld-linux-x86-64.so.2 at /lib64/ld-linux-x86-64.so.2 +rm -v dummy.c a.out dummy.log +3.8 zlib +./configure --prefix=/usr --libdir=/usr/lib64 --sharedlibdir=/usr/lib64 +make -j$(nproc --all) +make check -j$(nproc --all) +make install +mv /usr/lib64/libz.so.* /lib64 +ln -sf ../../lib64/$(readlink /usr/lib64/libz.so) /usr/lib64/libz.so +3.9 file +./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 +make -j$(nproc --all) +make check -j$(nproc --all) +make install +3.10 readline +READLINEVER=8.0 +sed -i '/MV.*old/d' Makefile.in +sed -i '/{OLDSUFF}/c:' support/shlib-install +./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --disable-static --docdir=/usr/share/doc/readline-${READLINEVER} +make SHLIB_LIBS="-L/tools/lib64 -lncursesw" -j$(nproc --all) +make SHLIB_LIBS="-L/tools/lib64 -lncursesw" install +mv /usr/lib64/lib{readline,history}.so.* /lib64 +chmod u+w /lib64/lib{readline,history}.so.* +ln -sf ../../lib64/$(readlink /usr/lib64/libreadline.so) /usr/lib64/libreadline.so +ln -sf ../../lib64/$(readlink /usr/lib64/libhistory.so ) /usr/lib64/libhistory.so +#install -m644 doc/*.{ps,pdf,html,dvi} /usr/share/doc/readline-${READLINEVER} #可以不安装文档 +3.11 m4 +sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib64/*.c +echo "#define _IO_IN_BACKUP 0x100" >> lib64/stdio-impl.h +./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 +make -j$(nproc --all) +make check -j$(nproc --all) +make install +3.12 bc (LFS开发版使用的是https://github.com/gavinhoward/bc,这里还是使用GNU bc) +cat > bc/fix-libmath_h << "EOF" +#! /bin/bash +sed -e '1 s/^/{"/' \ + -e 's/$/",/' \ + -e '2,$ s/^/"/' \ + -e '$ d' \ + -i libmath.h + +sed -e '$ s/$/0}/' \ + -i libmath.h +EOF +ln -s /tools/lib64/libncursesw.so.6 /usr/lib64/libncursesw.so.6 +ln -sf libncursesw.so.6 /usr/lib64/libncurses.so +sed -i -e '/flex/s/as_fn_error/: ;; # &/' configure +./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --with-readline --mandir=/usr/share/man --infodir=/usr/share/info +make -j$(nproc --all) +echo "quit" | ./bc/bc -l Test/checklib.b +make install +3.13 binutils +expect -c "spawn ls" +如果输出spawn ls即可继续 +sed -i '/@\tincremental_copy/d' gold/testsuite/Makefile.in +mkdir -v build +cd build +../configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-gold --enable-ld=default --enable-plugins --enable-shared --disable-werror --enable-64-bit-bfd --with-system-zlib +make tooldir=/usr -j$(nproc --all) +make -k check -j$(nproc --all) #任何fail请报告 +make tooldir=/usr install +3.14 gmp +cp -v configfsf.guess config.guess +cp -v configfsf.sub config.sub +GMPVER=6.1.2 +./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-cxx --disable-static --docdir=/usr/share/doc/gmp-${GMPVER} +make -j$(nproc --all) +#make html +make check 2>&1 -j$(nproc --all) | tee gmp-check-log +awk '/# PASS:/{total+=$3} ; END{print total}' gmp-check-log #不等于190请报告 +make install +#make install-html +3.15 mpfr +MPFRVER=6.1.2 +./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-cxx --disable-static --docdir=/usr/share/doc/gmp-${MPFRVER} +make -j$(nproc --all) +#make html +make check -j$(nproc --all) #任何fail请报告 +make install +#make install-html +3.16 mpc +MPCVER=1.1.0 +./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --disable-static --docdir=/usr/share/doc/mpc-${MPCVER} +make -j$(nproc --all) +#make html +make check -j$(nproc --all) #任何fail请报告 +make install +#make install-html +3.17 shadow +sed -i 's/groups$(EXEEXT) //' src/Makefile.in +find man -name Makefile.in -exec sed -i 's/groups\.1 / /' {} \; +find man -name Makefile.in -exec sed -i 's/getspnam\.3 / /' {} \; +find man -name Makefile.in -exec sed -i 's/passwd\.5 / /' {} \; +sed -i -e 's@#ENCRYPT_METHOD DES@ENCRYPT_METHOD SHA512@' \ +-e 's@/var/spool/mail@/var/mail@' etc/login.defs +sed -i 's/1000/999/' etc/useradd +./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --sysconfdir=/etc --with-group-name-max-length=32 +make -j$(nproc --all) +make install +mv -v /usr/bin/passwd /bin +pwconv +grpconv +passwd root #已设置为lfslinux +3.18 gcc +GCCVER=9.2.0 +mkdir -v build +cd build +export LIBRARY_PATH=/usr/lib64:/lib64:/usr/lib:/lib +SED=sed ../configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --with-slibdir=/lib64 --enable-languages=c,c++ --disable-multilib --disable-bootstrap --disable-libmpx --with-system-zlib +make -j$(nproc --all) +ulimit -s 32768 +chown -Rv nobody . +su nobody -s /bin/bash -c "PATH=$PATH make -k check -j$(nproc --all)" +../contrib/test_summary +grep -A7 Summ #fail请报告 +make install +rm -rf /usr/lib64/gcc/$(gcc -dumpmachine)/${GCCVER}/include-fixed/bits/ +chown -v -R root:root /usr/lib64/gcc/*linux-gnu/${GCCVER}/include{,-fixed} +ln -sv ../usr/bin/cpp /lib64 +ln -sv gcc /usr/bin/cc +install -v -dm755 /usr/lib64/bfd-plugins +ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/${GCCVER}/liblto_plugin.so /usr/lib64/bfd-plugins/ +echo 'int main(){}' > dummy.c +cc dummy.c -v -Wl,--verbose &> dummy.log +readelf -l a.out | grep ': /lib64' +如果输出[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]即可继续 +grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log +应该输出 +/usr/lib64/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib64/crt1.o succeeded +/usr/lib64/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib64/crti.o succeeded +/usr/lib64/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../lib64/crtn.o succeeded + +grep -B4 '^ /usr/include' dummy.log +应该输出 +#include <...> search starts here: + /usr/lib64/gcc/x86_64-pc-linux-gnu/9.2.0/include + /usr/local/include + /usr/lib64/gcc/x86_64-pc-linux-gnu/9.2.0/include-fixed + /usr/include + +grep 'SEARCH.*/usr/lib64' dummy.log |sed 's|; |\n|g' +应该输出 +SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib64") +SEARCH_DIR("/usr/local/lib64") +SEARCH_DIR("/lib64") +SEARCH_DIR("/usr/lib64") +SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib") +SEARCH_DIR("/usr/local/lib") +SEARCH_DIR("/lib") +SEARCH_DIR("/usr/lib"); + +grep "/lib64.*/libc.so.6 " dummy.log +应该输出attempt to open /lib64/libc.so.6 succeeded +grep found dummy.log +应该输出found ld-linux-x86-64.so.2 at /lib64/ld-linux-x86-64.so.2 +rm -v dummy.c a.out dummy.log +mkdir -pv /usr/share/gdb/auto-load/usr/lib64 +mv -v /usr/lib64/*gdb.py /usr/share/gdb/auto-load/usr/lib64 +3.19 pkg-config +PKGCONFIGVER=0.29.2 +./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --with-internal-glib --disable-host-tool --docdir=/usr/share/doc/pkg-config-${PKGCONFIGVER} +make -j$(nproc --all) +make check -j$(nproc --all) +make install +3.20 ncurses +sed -i '/LIBTOOL_INSTALL/d' c++/Makefile.in +./configure --prefix=/usr --libdir=/usr/lib64 --libexecdir=/usr/lib64 --mandir=/usr/share/man --with-shared --without-debug --without-normal --enable-pc-files --enable-widec +make -j$(nproc --all) +make install +mv -v /usr/lib64/libncursesw.so.6* /lib64 +ln -sfv ../../lib64/$(readlink /usr/lib64/libncursesw.so) /usr/lib64/libncursesw.so +for lib in ncurses form panel menu ; do + rm -vf /usr/lib64/lib${lib}.so + echo "INPUT(-l${lib}w)" > /usr/lib64/lib${lib}.so + ln -sfv ${lib}w.pc /usr/lib64/pkgconfig/${lib}.pc +done +rm -vf /usr/lib64/libcursesw.so +echo "INPUT(-lncursesw)" > /usr/lib64/libcursesw.so +ln -sfv libncurses.so /usr/lib64/libcurses.so +#mkdir -v /usr/share/doc/ncurses-6.1 +#cp -v -R doc/* /usr/share/doc/ncurses-6.1 +3.21 attr +ATTRVER=2.4.48 +./configure --prefix=/usr --bindir=/bin --libdir=/usr/lib64 --libexecdir=/usr/lib64 --disable-static --sysconfdir=/etc --docdir=/usr/share/doc/attr-${ATTRVER} +make -j$(nproc --all) +make check -j$(nproc --all) +make install +mv -v /usr/lib64/libattr.so.* /lib64 +ln -sfv ../../lib64/$(readlink /usr/lib64/libattr.so) /usr/lib64/libattr.so +第四章 基本系统配置(这章需要根据实际文件大幅修改) + +第五章 构建内核 + +第六章 重新准备img,向rpm进发 diff --git a/RPM参考指南.txt b/RPM参考指南.txt new file mode 100644 index 0000000..f4f55f4 --- /dev/null +++ b/RPM参考指南.txt @@ -0,0 +1,61 @@ +RPM参考指南 +1.rpm编译 +2.rpm内容查看与解包 +3.打包环境准备 +3.rpm spec +4.rpmbuild +5.rpmlint + +0.说明 +RPM许可证为GPL2+ 以及LGPL2+除外 +https://rpm.org/ http://ftp.rpm.org/releases/rpm-4.16.x/rpm-4.16.1.2.tar.bz2 + +1.编译 +参考来自https://github.com/rpm-software-management/rpm/raw/master/INSTALL fedora的spec以及openSUSE的spec +编译必须的包: +popt https://github.com/rpm-software-management/popt http://ftp.rpm.org/popt/releases/popt-1.x/popt-1.18.tar.gz +zlib https://zlib.net/ https://zlib.net/zlib-1.2.11.tar.xz +libmagic 系统核心包file提供 +加密库二选一 +openssl(fedora选择的) https://www.openssl.org/ https://mirrors.cloud.tencent.com/openssl/source/openssl-1.1.1i.tar.gz (受制于EAR①,openssl 1系列许可证与GPL不兼容) //EAR 美国出口管制条例 +libgcrypt(openSUSE选择的) https://www.gnupg.org/software/libgcrypt/ https://www.gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-1.8.7.tar.bz2 (不受制于EAR) +数据库引擎 +主推荐ndb (rpm自己写的,rpm内建) +主推荐sqlite https://sqlite.org/index.html https://sqlite.org/2020/sqlite-src-3340000.zip https://sqlite.org/2020/sqlite-autoconf-3340000.tar.gz +BDB已经弃用 (BDB新版使用AGPLv3,是开源许可证,但是和GPLv2不兼容) +BDB RO版支持方案--enable-bdb-ro (rpm内建) +lua支持 (fedora的spec嵌入了大量lua源代码) https://www.lua.org/ https://www.lua.org/ftp/lua-5.4.2.tar.gz +SELinux (原文为可选依赖,但fedora和OpenSUSE都有) https://github.com/SELinuxProject https://github.com/SELinuxProject/selinux/releases/download/20200710/libselinux-3.1.tar.gz //Warning:SELinux编译依赖较多 +python (原文为可选依赖,但fedora和OpenSUSE都有) https://www.python.org/ https://mirrors.huaweicloud.com/python/3.9.1/Python-3.9.1.tar.xz //Python依赖非常多连Xorg都需要 +libcap (原文为可选依赖,但fedora和OpenSUSE都有) https://sites.google.com/site/fullycapable/ http://mirrors.ustc.edu.cn/kernel.org/linux/libs/security/linux-privs/libcap2/libcap-2.46.tar.xz +acl (原文为可选依赖,但fedora和OpenSUSE都有) https://savannah.nongnu.org/projects/acl https://download.savannah.nongnu.org/releases/acl/acl-2.2.53.tar.gz +autoconf +automake +libtool +makeinfo +m4 +存疑 gnupg2 ncurses dwz audit-libs dbus libarchive zstd cpio + +讨论:数据库默认引擎,python,selinux,存疑库 + +2.rpm内容查看与解包 +查看本地rpm内容 rpm -qlp *.rpm //任何rpm包,包括二进制包与src.rpm +查看已经安装的包的内容 rpm -ql bash +完全解压rpm rpm2cpio ./a.rpm | cpio -idmv //需要rpm2cpio与cpio +cpio的参数: +-i = extract +-d = make directories +-m = preserve modification time +-v = verbose +图形化软件如ark等也可以查看解压。(windows下用7zip) + +3.打包环境准备 +sudo zypper in rpm-build rpmconf rpmdevtools rpmlint ##build build在zypper未打包,自成体系前不要使用 spec +rpm-build为rpm提供 +rpmconf 处理.rpmnew, .rpmsave和.rpmorig文件 https://github.com/xsuchy/rpmconf https://github.com/xsuchy/rpmconf/archive/rpmconf-1.1.3-1.tar.gz +rpmdevtools 提供一些帮助打包的脚本 https://pagure.io/rpmdevtools https://releases.pagure.org/rpmdevtools/rpmdevtools-9.2.tar.xz +rpmlint 检查rpm包中的错误 https://github.com/rpm-software-management/rpmlint https://github.com/rpm-software-management/rpmlint/archive/rpmlint-1.11.tar.gz +build 自动在发行版内以chroot形式打包,自动解决依赖 +rpmdev-setuptree +执行后会自动在所在目录下新建rpmbuild文件夹,里面是rpm打包专用的目录。五个文件夹,BUILD文件夹,临时编译目录,宏%buildroot定义的目录,如果编译或打包失败,日志也在这个目录;RPMS文件夹,生成的二进制文件所在目录,.rpm前会有文件所属架构,如noarch,x86_64,aarch64;SOURCES文件夹,patch,源代码,额外的要打包进去的源文件放在这儿;SPEC文件夹,.spec文件就放这里;SRPM文件夹,生成的.src.rpm所在位置。 + diff --git a/versions.csv b/versions.csv new file mode 100644 index 0000000..233db6c --- /dev/null +++ b/versions.csv @@ -0,0 +1,38 @@ +Èí¼þ,ÓÃ;,Èí¼þ×îа汾,¸üÐÂÈÕÆÚ,¸üÐÂƵÂÊ,¹Ù·½ÍøÕ¾,ÏÂÔصØÖ·,ÏÂÔØÊÇ·ñ¿¨Ç½,±¸×¢ +bash,sh,5.1,2020/12/6,²»¾­³£,https://www.gnu.org/software/bash/,https://mirrors.cloud.tencent.com/gnu/bash/bash-5.1.tar.gz,, +bzip2,.bz2,1.0.8,2019/7/23,²»¾­³£,https://www.sourceware.org/bzip2/,https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz,y, +coreutils,cat lsµÈ,8.32,2020/3/5,²»¾­³£,https://www.gnu.org/software/coreutils/,https://mirrors.cloud.tencent.com/gnu/coreutils/coreutils-8.32.tar.xz,, +isc-dhcp,×Ô¶¯·ÖÅäIP,4.4.2,2020/1/22,²»¾­³£,https://www.isc.org/dhcp/,https://ftp.isc.org/isc/dhcp/4.4.2/,y,dhcpcd̫Ƶ·±£¬¸ÄΪisc-dhcp +diffutils,diff,3.7,2019/1/1,²»¾­³£,https://www.gnu.org/software/diffutils/,https://mirrors.cloud.tencent.com/gnu/diffutils/diffutils-3.7.tar.xz,, +e2fsprogs,extÎļþϵͳ,1.45.6,2020/3/23,²»¹Ì¶¨,http://e2fsprogs.sourceforge.net/,https://mirrors.ustc.edu.cn/kernel.org/linux/kernel/people/tytso/e2fsprogs/v1.45.6/e2fsprogs-1.45.6.tar.xz,, +file,file,5.39,2020/6/15,²»¾­³£,http://www.darwinsys.com/file/,http://ftp.astron.com/pub/file/file-5.39.tar.gz,y, +findutils,find,4.7.0,2019/8/30,²»¾­³£,https://www.gnu.org/software/findutils/,https://mirrors.cloud.tencent.com/gnu/findutils/findutils-4.7.0.tar.xz,, +gawk,awk,5.1.0,2020/4/14,²»¾­³£,https://www.gnu.org/software/gawk/,https://mirrors.cloud.tencent.com/gnu/gawk/gawk-5.1.0.tar.xz,, +gcc,ĬÈϱàÒëÆ÷,10.2,2020/7/23,²»¾­³£,https://gcc.gnu.org/,https://mirrors.cloud.tencent.com/gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.xz,,ÿ¸ö´ó°æ±¾·¢²¼µ±Äê¸üÐÂ2¸öС°æ±¾£¬ËæºóÿÄê¸üÐÂÒ»¸öС°æ±¾£¬¸üе½5Ϊֹ¡£Ä¬ÈÏ10ûÎÊÌ⣬µ«7 8 9Ôõô°ì +gettext,¹ú¼Ê»¯¿â,0.21,2020/7/27,²»¾­³£,https://www.gnu.org/software/gettext/,https://mirrors.cloud.tencent.com/gnu/gettext/gettext-0.21.tar.xz,,Ò»¶¨Òª²ð°ü£¬LFSµÚÒ»±é¶¼Ã»ÓÐÈ«²¿±àÒëÕâÍæÒâ +glibc,libc,2.32,2020/8/5,ÿÄêÁ½´Î,https://www.gnu.org/software/libc/,https://mirrors.cloud.tencent.com/gnu/glibc/glibc-2.32.tar.xz,, +grep,grep,3.6,2020/11/9,²»¹Ì¶¨,https://www.gnu.org/software/grep/,https://mirrors.cloud.tencent.com/gnu/grep/grep-3.6.tar.xz,, +gzip,.gz,1.9,2018/1/8,²»¾­³£,https://www.gnu.org/software/gzip/,https://mirrors.cloud.tencent.com/gnu/gzip/gzip-1.9.tar.xz,, +tnftp,ftp,20200704,2020/7/4,²»¾­³£,https://www.netbsd.org/,https://mirrors.tuna.tsinghua.edu.cn/NetBSD/misc/tnftp/tnftpd-20200704.tar.gz,, +hostname,hostname,3.23,2019/11/12,²»¾­³£,https://tracker.debian.org/pkg/hostname,https://mirrors.cloud.tencent.com/debian/pool/main/h/hostname/hostname_3.23.tar.gz,, +iprouter2,IP·Óɹ¤¾ß,5.1,2020/12/21,ÿÁ½¸öÔÂ,https://wiki.linuxfoundation.org/networking/iproute2,https://mirrors.ustc.edu.cn/kernel.org/linux/utils/net/iproute2/iproute2-5.10.0.tar.xz,,ºÃÏñûÓÐÌæ´úÆ·£¬µ«Õâ»õ¸üÐÂҲ̫Ƶ·±ÁË°É +iputils,ping,s20200821,2020/8/21,²»¹Ì¶¨,https://github.com/iputils/iputils,https://github.com/iputils/iputils/archive/s20200821.tar.gz,y, +kernel,ÄÚºË,,,ºÜƵ·±,https://www.kernel.org/,,,Ôݶ¨ºÍOpenSUSE Leapͬ²½ +less,less,563,2020/10/23,²»¾­³£,http://www.greenwoodsoftware.com/less/,https://mirrors.cloud.tencent.com/gnu/less/less-563.tar.gz,, +nano,»ù´¡±à¼­Æ÷,5.4,2020/12/2,ºÜƵ·±,https://www.nano-editor.org/,https://mirrors.cloud.tencent.com/gnu/nano/nano-5.4.tar.xz,,Õâ»õ¸üÐÂҲ̫Ƶ·±ÁË°É£¬Òª²»¸ÄΪvim£¿ +pciutils,PCI(-E)×ÜÏß¹ÜÀí,3.7.0,2020/5/31,²»¹Ì¶¨,https://mj.ucw.cz/sw/pciutils/,https://mirrors.ustc.edu.cn/kernel.org/software/utils/pciutils/pciutils-3.7.0.tar.xz,, +perl,perl,5.32.0,2020/6/20,²»¹Ì¶¨,https://www.perl.org/,https://mirrors.cloud.tencent.com/CPAN/src/perl-5.32.0.tar.gz,,¸üÐÂÀúÊ·Ïê¼û https://perldoc.perl.org/perlhist +procps-ng,ps killµÈ,3.3.16,2019/12/8,²»¾­³£,https://gitlab.com/procps-ng/procps,https://gitlab.com/procps-ng/procps/-/archive/v3.3.16/procps-v3.3.16.tar.bz2,y, +psmisc,killallµÈ,23.3,2019/11/12,²»¾­³£,https://gitlab.com/psmisc/psmisc,https://prdownloads.sourceforge.net/psmisc/psmisc-23.3.tar.xz,y, +sed,sed,4.8,2020/1/15,²»¾­³£,https://www.gnu.org/software/sed/,https://mirrors.cloud.tencent.com/gnu/sed/sed-4.8.tar.xz,, +shadow,ÃÜÂëÕÚµ²,4.8.1,2020/1/24,²»¾­³£,https://github.com/shadow-maint/shadow/,https://github.com/shadow-maint/shadow/releases/download/4.8.1/shadow-4.8.1.tar.xz,y, +sysfsutils,sysfs,2.1.0,2006/8/23,Í£¸ü,http://linux-diag.sourceforge.net/Sysfsutils.html,https://prdownloads.sourceforge.net/linux-diag/sysfsutils/2.1.0/sysfsutils-2.1.0.tar.gz,y, +tar,.tar,1.32,2019/2/23,²»¾­³£,https://www.gnu.org/software/tar/,https://mirrors.cloud.tencent.com/gnu/tar/tar-1.32.tar.xz,, +usbutils,USB¹ÜÀí,13,2020/10/22,²»¾­³£,http://www.linux-usb.org/,https://mirrors.ustc.edu.cn/kernel.org/linux/utils/usb/usbutils/usbutils-013.tar.xz,, +util-linux,lsblkµÈ,2.36.1,2020/11/16,ºÜƵ·±,https://github.com/karelzak/util-linux,https://mirrors.ustc.edu.cn/kernel.org/linux/utils/util-linux/v2.36/util-linux-2.36.1.tar.xz,, +which,which,2.21,2015/3/21,²»¾­³£,https://carlowood.github.io/which/,https://mirrors.cloud.tencent.com/gnu/which/which-2.21.tar.gz,, +xz,.xz,5.2.5,2020/3/17,²»¾­³£,https://tukaani.org/xz/,https://prdownloads.sourceforge.net/lzmautils/xz-5.2.5.tar.xz,y, +binutils,ld as(gccµÄÒÀÀµ),2.35.1,2020/9/19,²»¾­³£,https://www.gnu.org/software/binutils/,https://mirrors.cloud.tencent.com/gnu/binutils/binutils-2.35.1.tar.xz,, +hwdata,pciutilsµÄÒÀÀµ,0.342,2020/12/1,ºÜƵ·±,https://github.com/vcrhonek/hwdata,https://github.com/vcrhonek/hwdata/archive/v0.342.tar.gz,y, +grub,Òýµ¼,2.04,2019/7/5,²»¾­³£,https://www.gnu.org/software/grub/,https://mirrors.cloud.tencent.com/gnu/grub/grub-2.04.tar.xz,, +openrc,init,0.42.1,2019/8/21,²»¹Ì¶¨,https://wiki.gentoo.org/wiki/Project:OpenRC,https://github.com/OpenRC/openrc/archive/0.42.1.tar.gz,y, diff --git a/versions.ods b/versions.ods new file mode 100644 index 0000000000000000000000000000000000000000..d9cd81a26fb97765a42cfb17afd29908aa9467bf GIT binary patch literal 21760 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 Jtl{C&e*l9ba}EFi literal 0 HcmV?d00001 diff --git a/zypper-yast修改意见.txt b/zypper-yast修改意见.txt new file mode 100644 index 0000000..3888513 --- /dev/null +++ b/zypper-yast修改意见.txt @@ -0,0 +1,7 @@ +zypper修改意见: +1.滚更版合并zypper dup与zypper up +2.使用non-free仓库时(比如准备安装non-free软件)提出warning +3.调整zypper rm自动指向zypper rm --clean-deps(默认删除依赖),并单独设定zypper rm -s(--simple)(只删除,不删除依赖) + +yast意见 +给默认的wicked(怪兽)网络管理提供socks5代理 \ No newline at end of file diff --git a/参考资料重新整理.txt b/参考资料重新整理.txt new file mode 100644 index 0000000..7d1cdbe --- /dev/null +++ b/参考资料重新整理.txt @@ -0,0 +1,6 @@ +安同OS: https://lmy441900.github.io/mips/lfs/2016/12/12/lfs-on-mips64-notes.html https://github.com/AOSC-Dev/autobuild https://github.com/AOSC-Dev/autobuild3 +gentoo:https://wiki.gentoo.org/wiki/OpenRC(重点参考openrc与emerge) +alpine: https://wiki.alpinelinux.org/wiki/Category_talk:Developer_Documentation +opensuse: https://en.opensuse.org/Portal:Zypper(重点参考zypper, yast, obs) +fedora: https://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/index.html https://fedoraproject.org/wiki/Join/zh-cn(重点参考rpm打包,自动化构建包,网站社区开发) +archlinux: https://wiki.archlinux.org/ (各种问题的解决方案) diff --git a/工作语言与IDE.txt b/工作语言与IDE.txt new file mode 100644 index 0000000..25dfb9e --- /dev/null +++ b/工作语言与IDE.txt @@ -0,0 +1,10 @@ +vim emacs vscode atom +vs(仅用于跨平台c/c++,.net core, python和nodejs) +qtcreator, codeblocks, codelite(C/C++,codeblocks可用于fortran,codelite可用于php和nodejs) +eclipse +dbeaver(关系型数据库IDE) + +zypper->C/C++ +Yast,obs->C/C++/Ruby/Perl +自动化->bash/Perl/Perl6 +wiki->php diff --git a/服务器搭建需求.txt b/服务器搭建需求.txt new file mode 100644 index 0000000..c622097 --- /dev/null +++ b/服务器搭建需求.txt @@ -0,0 +1,10 @@ +1.主网站(除wiki, 论坛, build system外)用php? nodejs? aspx? java(spring boot)? +2.编译服务器,集成编译jenkins与gocd二选一,只要是自己修改过的项目需要编译的,扔到编译服务器上 +3.打包服务器(与编译服务器放在同一台机器上),obs稍微改下,分类改为deb/rpm/pkg +4.wiki,mediawiki(php+sql),规范化为第一位,archlinux风格与opensuse风格均可 +5.论坛,技术讨论,灌水要封号 +6.IRC专用服务器,给他们灌水用 +7.下载服务器(nginx与tengine二选一(后者为阿里修改的)) +8.高级会员与开发成员专用网盘 owncloud +9.VPN通道,ocserv协议,仅限开发者 +10.代码托管服务器,git/fossil \ No newline at end of file diff --git a/核心包二次确认.txt b/核心包二次确认.txt new file mode 100644 index 0000000..ca310bd --- /dev/null +++ b/核心包二次确认.txt @@ -0,0 +1,119 @@ +archlinux base组 +bash shell +bzip2 压缩 +coreutils 核心工具组 +cryptsetup (移除,为systemd与archboot依赖) +device-mapper 设备映射 +dhcpcd dhcp客户端 +diffutils diff +e2fsprogs ext4 +file 文件类型 +filesystem (附议,系统管理文件) +findutils find +gawk awk +gcc-libs gcc运行库,或者叫libstdc++ +gettext 输出修订,需要拆 +glibc libc +grep grep +gzip 压缩 +inetutils ftp等网络组件 +iproute2 IP路由 +iputils ping等网络组件 +jfsutils (JFS,暂时移除) +kernel 内核(提供kernel-libre kernel-lts-$version, 预留kernel-rc kernel-git kernel-rt方案,version=4.4, 4.9, 4.19. etc,只包含未EOL的) +less less +licenses (附议,系统许可证) +logrotate 日志管理 +lvm2 LVM +man-db 读取man工具 +man-pages linux文档 +mdadm RAID +nano 编辑器 +netctl (移除,arch自用) +pciutils pci总线管理 +perl perl +procps-ng 系统监视 +psmisc 管理proc与fuse +reiserfsprogs (ReiserFS,暂时移除) +s-nail (附议,可用gnu mailutils, mailman代替) +sed gnu ed +shadow 密码遮挡 +sysfsutils (附议,sysfs用) +systemd-sysvcompat (移除) +tar 打包 +texinfo (移除,gnu文本系统,移动到base-devel) +usbutils USB +util-linux lsblk等系统工具 +vi (附议,换成vim或者移除) +which which +xfsprogs (XFS,暂时移除) + +base-devel组 +autoconf GNU自动生成configure工具 +automake GNU自动生成make工具 +binutils 汇编 +bison GNU语法解析器 +fakeroot 模拟root +flex 生成语法 +groff +m4 GNU marco +make +patch +pkgconf +sudo (存疑) +texinfo + + +rpm, zypper, openrc(替代pacman与systemd) +OpenRC部分 +openrc init系统(OpenRC requires GNU make.) https://github.com/OpenRC/openrc 与 https://wiki.gentoo.org/wiki/Openrc +RPM依赖(附议) +lmdb 嵌入式数据库和键-值数据库编程库 额外说明:大部分系统还在使用berkeley db,但因为考虑到bdb的许可证的特殊性,rpm中加入了与bdb基本功能相近的lmdb的支持,而且lmdb的许可证也不会与rpm自身相冲突。 https://symas.com/lmdb/ https://github.com/LMDB/lmdb http://www.lmdb.tech/doc/ +rpm redhat package manager +zypper依赖 +augeas 配置工具 +curl 下载 +rubygem-asciidoctor 快速文本转换工具(zypper文档依赖,等同于zypper依赖ruby) +libzypp zypper管理库 +zypper 世界上最强大的包管理器 +构建依赖(其他在base-devel里面) +rpm构建依赖 +nss SSL安全 http://www.mozilla.org/projects/security/pki/nss/ +nspr 系统级API http://www.mozilla.org/projects/nspr/ +popt 兼容旧版rpm +zstd (存疑) +cpio 归档 +libcap (存疑) +zypper构建依赖 +ruby ruby,提供rubygem +boost boost库 +cmake 另一个make +doxygen 文档生成 +graphviz 可视化图形工具 +python zypper log生成 +libproxy 代理库 +libsolv 包求解库 https://github.com/openSUSE/libsolv +cmake依赖 +libuv 跨平台匿名I/O +python ninja的依赖 +ninja make的重写,提高效率 + +base库依赖 +acl +attr +eudev +gdbm +gmp +libcap +libelf +libpam +mpfr +ncurses +openssl +readline +zlib +存疑:pcre, audit, gettext的依赖,usbutils的依赖 +core组需要群成员二次确认 + +efi部分 +http://www.linuxfromscratch.org/hints/downloads/files/lfs-uefi.txt https://blog.yangmame.org/%E5%85%B3%E4%BA%8E%E5%86%85%E6%A0%B8%E7%9A%84%E4%B8%80%E4%BA%9B%E9%85%8D%E7%BD%AE.html#%E4%BD%BF%E7%94%A8efibootmgr%E5%90%AF%E5%8A%A8%E7%B3%BB%E7%BB%9F http://lists.linuxfromscratch.org/pipermail/hints/2018-April/003325.html \ No newline at end of file diff --git a/版本.txt b/版本.txt new file mode 100644 index 0000000..92d13a3 --- /dev/null +++ b/版本.txt @@ -0,0 +1,2 @@ +glibc 每年2、8月份各更新一次 +gcc 每三个月更新一次 diff --git a/系统发展规划.txt b/系统发展规划.txt new file mode 100644 index 0000000..5b5e603 --- /dev/null +++ b/系统发展规划.txt @@ -0,0 +1,12 @@ +系统概述 +系统名称:SUReLinux(已避开SUSE/OpenSUSE版权问题) +包管理器:rpm-zypper(并提供apt/aptitude(zypper已提供),dnf/yum(自行修改zypper)兼容层,有需要可以提供pacman兼容层) +init system:双轨制,先把openrc写出来,提供systemd(也可以改为单openrc,但提供systemctl/service兼容层) +主域名:surelinux.org(org可以考虑换成其他的),二级域名:git.surelinux.org(git仓库),fossil.surelinux.org(fossil仓库),storage.surelinux.org(核心成员以及高级会员(待定)个人存储空间,可以不放在二级域名),build.surelinux.org(打包机,ddns实现),ci.surelinux.org(集成编译,ddns实现),wiki.surelinux.org(系统百科,mediawiki实现),bbs.surelinux.org(技术论坛),irc.surelinux.org(灌水IRC通道),管理员专用邮箱(一定要有邮箱),download.surelinux.org/surelinux(软件仓库),rsync.surelinux.org(rsync专用),ocserv.surelinux.org(VPN通道,非紧急情况不要使用),预留在线workspace(在线编辑器) +主服务器暂时放在德国,年付48欧元左右(考虑到绕路等,有必要的话可以开cdn),坚决不备案 +暂定方案:lfs手册到tools准备完为止,mageia软件包翻译为lfs chroot之后部分(手册有范例),软件包精简到核心包,准备好基础编译系统,弄内核,弄grub-efi(很重要,LFS原文没说,但是我们自己得弄),引入rpm以及依赖,打包一切已安装软件并打包zypper准备引入。 +优先级:llvm与clang(llvm都出来了,那就把clang也弄了吧), xorg(wayland), alsa, xfce, i3, awesome, openbox, fluxbox, qt5(准备面对杀入的qt6吧),cups, bluez, wine, kde/budgie/lxqt/mate/gnome(wine优先级可以提高), yast(一定要保证网络管理,声音,蓝牙) +出完qt5就可以发布alpha了,至少要有centos的包的数量再发布正式版 +nvidia optimus的问题以及amd gpu的显卡切换问题也要在出图形化后提上日程 + +工作分配:全栈(zypper/yast/obs等代码修订,需要会C/C++/Ruby/Perl/Python3,可能需要会SQL/golang/汇编/cmake/makefile),前端(网站设计,vscode/atom插件设计与electron软件开发),打包,后端,运维 diff --git a/系统设定修订.txt b/系统设定修订.txt new file mode 100644 index 0000000..7a1b131 --- /dev/null +++ b/系统设定修订.txt @@ -0,0 +1,33 @@ +SSL意见 +默认使用libressl(https://www.libressl.org/ 与 https://mirrors.tuna.tsinghua.edu.cn/OpenBSD/LibreSSL/ )或者nspr/nss(rpm使用的就是这个方案)替代openssl +说明:libressl的出现就是为了避免心脏出血漏洞等漏洞的再次爆发(许可证方面存疑,openssl已修改为apache 2.0,但三大衍生版GmSSL(国产,https://github.com/guanzhi/GmSSL),libressl(https://www.libressl.org/),boringssl(https://boringssl.googlesource.com/boringssl)未修改许可证) + +zypper修改意见: +1.滚更版合并zypper dup与zypper up +2.使用non-free仓库时(比如准备安装non-free软件)提出warning +3.调整zypper rm自动指向zypper rm --clean-deps(默认删除依赖),并单独设定zypper rm -s(--simple)(只删除,不删除依赖) +4.添加yum/dnf兼容层,仿照apt兼容层,使用perl编写 + +yast意见 +给默认的wicked(怪兽)网络管理提供socks5代理 + +python意见 +默认使用python3->python +预留python2(小心安全) + +存疑:lmdb与bdb,apparmor与selinux + +scm管理 +个人意见git与fossil都使用 +fossil自带的web前端相较于git较为美观,可以不做二次修改或者只是简单修改,管理相对简单 +fossil用的是c/sql编程,编译依赖相对于git更少(opensuse为fuse(arch中没有), gcc, openssl, tcl, zlib, sqlite) +范例网站:https://core.tcl-lang.org/tcl/download https://sqlite.org/src/dir?ci=tip +小缺点:支持平台极少(本来就不准备主体放在osdn/github,这俩只是镜像站) +git的缺点(我后面才发现的):没法用proxychains,fossil并不存在 +更多参考:https://fossil-scm.org/fossil/doc/trunk/www/fossil-v-git.wiki https://sqlite.org/whynotgit.html +git用于kernel等原本就适合于git的 + +修订obs,方便项目使用 +重写一个仿AUR的RUR(RPM User Repo),方便用户自动获得rpm的spec,读取spec,以获得源代码 +另外写一个spec包管理器,用于用户获取RUR里面的包,自己打包成rpm + diff --git a/项目分支小项目.txt b/项目分支小项目.txt new file mode 100644 index 0000000..d9b00a0 --- /dev/null +++ b/项目分支小项目.txt @@ -0,0 +1,12 @@ +1.文本编辑器一个,qt外壳,lua扩展 +2.rpm-spec插件一个(早期typescript/coffeescript,用在vscode/atom上) +3.zypper魔改:调整zypper rm自动指向zypper rm --clean-deps(默认删除依赖),并单独设定zypper rm -s(--simple)(只删除,不删除依赖),添加yum/dnf兼容层,仿照apt兼容层,使用perl编写 +4.修订obs,方便项目使用 +5.重写一个仿AUR的RUR(RPM User Repo),方便用户自动获得rpm的spec,读取spec,以获得源代码 +6.另外写一个spec包管理器,用于用户获取RUR里面的包,自己打包成rpm +7.自制一个IRC,能传输图片与文字(后期加入语音,视频)支持群聊。(加密,一定要加密) +7.试试看自制一个类似于OpenWRT的路由器系统 +8.自制一个桌面,要求:复古,轻量(一定要轻量,啥资源占用最少用哪个,可以用wayland) +9.自动化-perl5/perl6优先 +10.全功能化(linux能干啥,我们就把这个功能塞进去,抄作业,改logo,本身不违反GPL/BSD,比如NAS系统,行星文件系统,ROS) +11.额外写个包管理器(可以在portage基础上修改,或者用portage模型),stage3->rpmspec建树->任何软件都需要获取源代码,获取spec与patch,编译成rpm并打包再安装,但中途可以自行修改spec \ No newline at end of file -- 2.11.0