LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 4275|回复: 65

关于gentoo特色的长篇疑问(望有资深gentoo指点)

[复制链接]
发表于 2009-12-9 09:42:24 | 显示全部楼层 |阅读模式

  • 首先,肯定像编译耗费时间、浪费电力、消磨硬件这类明显找抽的疑问就不问了。
  • 其次,我有一个理解——gentoo之特色在于Portage——Portage之精华在于USE。不知是否得当,望熟手指教!
  • 再次,优点找抽型的疑问。大家觉得BSD风格的init比较于SysV风格如何。gentoo很多地方都给予很大的自由和“可选方案”,为什么在这一点上都未曾提及,更不要说提供替代方案(或指南)呢?
  • 又来,关于e……系列的工具包。初略了看了下为什么不自己congfigue的文档,没完全看懂,这里提问。gentoo提供了econf到emake、dodoc……一套工具。为什么不把原汁原味的check install给用户展现出来呢?有什么理由必须这么做么?还是又什么充足的理由认为这样会好的多?
  • 继续,USE这个精华我理解的很肤浅。大致认为首先系统级别的USE就相当于在自定义通用的编译参数。然后各个软件包IUSE会根据软件的情况,每个IUSE对应一个可选编译项。系统编译的时候,拿着IUSE去查USE,如果不在USE之列或者USE之列取消(-USE_WORD)了,就不编译相应选项,否则包含改项。   简单的举例子说,加入一堆软件都有可选GTK支持,不用USE就每个软件都要加上--enable-gtk之类,用USE就只需要USE="gtk",然后每个软件包维护者分别加上conf=USE gtk? --enable-gtk。   不知这样理解是否正确,望指正!
  • 仍然。诚然gentoo宣言(算是吧)里说到:为什么gentoo这样做,是因为我们实在没必要为了一个可能基本不用的QT环境,而让所有的编译的包都加上QT支持和依赖。诚然,这很有道理。但是一个优秀的基础软件对于可选特性的支持,应该都是可以编译进去,但是不使用的吧。比如QT支持,编译时加入--with-qt,但是运行时没有QT也是可以正常使用的吧! 既然这样,用一小部分磁盘空间容纳多出来的-with-option总是好过用大部分时间来等待编译看gentoo文档的吧? 或者有别的说法?同样热烈的欢迎指正!
  • 最后,gentoo有Portage,用于保存ebuild这类。有distfile用来保存软件包源代码。那么distfile会保存所有portage中的包的源代码么(应该不会,那么他的选择标准是什么呢)?而且gentoo有一大特性就是多版本共存。第一个问题就是Portage和distfile中,会把gentoo成立至今所有的软件版本都囊括(也应该不会,那又是什么标准呢)?另外对于文档中关于多版本共存的介绍让我很疑惑,他以freetype和freetype2举了例子,但是我还是不明白。我的理解多版本共存意味着比如fcitx3.6.1和fcitx3.6.2共存,我以为是不可能的,因为他们二进制文件很多都相互覆盖的。而对于类似gtk和gtk2这类本身就不相互覆盖的,我想哪个distro都可以做到共存。
  • 结局,我对gentoo现在很着迷。就算花了几乎8个小时来编译了OOo(感谢上苍,除了没有中文支持,万事俱备)。目前唯一不满的就是init脚本的方式(当然gentoo采用的SysV为大多Linux所用,这是我自己的问题)。其他方面都是上列这类“疑惑”。尽管这些疑惑都还无法让我对gentoo“不着迷”。也许是编译时间(累积起来)很长的原因,gentoo对CLI的界面很投入。emerge出来的提示感觉很人性化(后来才发现是maintainer人性化)。虽然ebuild看上去有些复杂。


最后一句,我不是踢场子的,也不是找抽的,只是着迷这东西,来请教各位!
发表于 2009-12-9 10:29:52 | 显示全部楼层
Arch版主来了,哈哈
回复 支持 反对

使用道具 举报

发表于 2009-12-9 10:58:59 | 显示全部楼层
你好像之前用 arch 的?我也是,呵呵。

  • 其次,我有一个理解——gentoo之特色在于Portage——Portage之精华在于USE。不知是否得当,望熟手指教!

  • 用 use 可以定制自己的系统。gentoo 的 overylay 和 ebuild 的简单其实也算是特色。我想 arch 的 pkgbuild 应该是学了一些这个。

    portage 支持的 mask, unmask 也是一个特色,这样你可以很容易控制自己装的包的版本。

  • 又来,关于e……系列的工具包。初略了看了下为什么不自己congfigue的文档,没完全看懂,这里提问。gentoo提供了econf到emake、dodoc……一套工具。为什么不把原汁原味的check install给用户展现出来呢?有什么理由必须这么做么?还是又什么充足的理由认为这样会好的多?


  • 如果你一定要用那个 make install,也是可以用的,没说你不可以用。那些 econf 什么的是给你简化工作的。

    比如我要写一个 kde4 的包的 ebuild, 里面可能只需要简单的 inhert kde4-base 设置几个变量就可以了,都不用写别的了。

  • 继续,USE这个精华我理解的很肤浅。大致认为首先系统级别的USE就相当于在自定义通用的编译参数。然后各个软件包IUSE会根据软件的情况,每个IUSE对应一个可选编译项。系统编译的时候,拿着IUSE去查USE,如果不在USE之列或者USE之列取消(-USE_WORD)了,就不编译相应选项,否则包含改项。   简单的举例子说,加入一堆软件都有可选GTK支持,不用USE就每个软件都要加上--enable-gtk之类,用USE就只需要USE="gtk",然后每个软件包维护者分别加上conf=USE gtk? --enable-gtk。   不知这样理解是否正确,望指正!


  • 我觉得好像差不多是这样。这个 use 可以用来激活这些编译选项,也可以干别的的,比如复制文件,提示什么信息,依赖什么其它包等。

  • 仍然。诚然gentoo宣言(算是吧)里说到:为什么gentoo这样做,是因为我们实在没必要为了一个可能基本不用的QT环境,而让所有的编译的包都加上QT支持和依赖。


  • 你可以让所有包都用 qt,也可以只让某个包用。 use 可以只让某个包用,也可以让所有包用。

    诚然,这很有道理。但是一个优秀的基础软件对于可选特性的支持,应该都是可以编译进去,但是不使用的吧。比如QT支持,编译时加入--with-qt,但是运行时没有QT也是可以正常使用的吧! 既然这样,用一小部分磁盘空间容纳多出来的-with-option总是好过用大部分时间来等待编译看gentoo文档的吧? 或者有别的说法?同样热烈的欢迎指正!


    ...........
    如果你 with-qt 而没装 qt,这个包你能编译的过去?如果你编译进去了,运行时没有找到,你以为一定能用么?而 gentoo 其实也有 DEPEND 和 RDEPEND 的,一般来说 RDEPEND <= DEPEND。对这种包如果你非要干掉 qt 也不是不可以的。不过升级的时候你还是同样要用到 qt 的。

    当然,如果你觉得把 qt 装上也是无所谓的事情,那你就直接去用 arch debian ubuntu 去好了,干什么非要用 gentoo 呢? gentoo 就是给想更多的控制自己系统的人用的。如果一个用 gentoo 的人从来没有兴趣去选择那些 use,那这个人还不如不用 gentoo。

  • 最后,gentoo有Portage,用于保存ebuild这类。有distfile用来保存软件包源代码。那么distfile会保存所有portage中的包的源代码么(应该不会,那么他的选择标准是什么呢)?


  • gentoo 有 sync 服务器,里面放了所有的 ebuild,还有一个 gentoo_mirror 服务器,里面访了所有的 sync 服务器里面的 ebuild 指定的包。这里面可能也不是有所有的,gentoo 的 ebuild 里面是可以指定从哪里找源码的,如果 mirror 里面找不到,会去这些地方找的,比如 sf。

    你说的 distfile 应该是你本机里面存的。装包的时候,会从 mirror 下来需要的源码包,存到 distfile 里面,然后安装。当然,其实安装完了就没用了,你就可以把他们删掉的。下次如果再用到这个包,他还是会去下的,你如果空间足够,那就别删,下次就不用下了。distfile 里面的东西可以随意删除。

    你本机还有一个从 sync 服务器 sync 下来的所有 ebuild。这个是全量的。因为都是文本,也没多大。这个里面的东西是你自己控制来更新的。就是类似你执行 pacman -S , apt-get update 的时候一样。

    而且gentoo有一大特性就是多版本共存。第一个问题就是Portage和distfile中,会把gentoo成立至今所有的软件版本都囊括(也应该不会,那又是什么标准呢)?


    多版本对 gentoo 来说也就是这些版本的 ebuild 存在。这些 ebuild 里面指定了包的位置。mirror 里面没有,会去这些地方找。

    另外对于文档中关于多版本共存的介绍让我很疑惑,他以freetype和freetype2举了例子,但是我还是不明白。我的理解多版本共存意味着比如fcitx3.6.1和fcitx3.6.2共存,我以为是不可能的,因为他们二进制文件很多都相互覆盖的。而对于类似gtk和gtk2这类本身就不相互覆盖的,我想哪个distro都可以做到共存。


    我理解 fcitx 如果想要共存可能是装到了不同的位置。例如之前 kde3 和 kde4 就是共存的。文件覆盖肯定是没法共存吧。

  • 结局,我对gentoo现在很着迷。就算花了几乎8个小时来编译了OOo(感谢上苍,除了没有中文支持,万事俱备)。


  • 对这种包是没必要去编译的,对几个大的包,OOo, firefox, thunderbird 都提供了 bin 版本,你直接装这个就好了。性能也不差。

    目前唯一不满的就是init脚本的方式(当然gentoo采用的SysV为大多Linux所用,这是我自己的问题)。其他方面都是上列这类“疑惑”。尽管这些疑惑都还无法让我对gentoo“不着迷”。也许是编译时间(累积起来)很长的原因,gentoo对CLI的界面很投入。emerge出来的提示感觉很人性化(后来才发现是maintainer人性化)。虽然ebuild看上去有些复杂。


    我用了 linux 这么多年,还没有去想过修改什么 init 方式,我觉得那些事情不是一个用户干的,就和你去研究 windows 启动的时候那个条动来动去的后面在干什么一样,没什么意义。如果一个方式对大多数用户来说真的很好,那就会有人去弄一个方法出来的。你找找总能找到的。要不你就去做第一个吃螃蟹的吧。

    ebuild 其实很简单的。看这个吧 http://devmanual.gentoo.org/

    最后一句,我不是踢场子的,也不是找抽的,只是着迷这东西,来请教各位!


    我建议你还是真正去使用一段时间再说吧,至少让自己有质疑的资本。
    回复 支持 反对

    使用道具 举报

    发表于 2009-12-9 11:02:54 | 显示全部楼层
    楼主还是用一段时间,再来讨论讨论吧

    gentoo的精华在外人开来,可能就是限制
    回复 支持 反对

    使用道具 举报

    发表于 2009-12-9 11:19:50 | 显示全部楼层
    1.首先,肯定像编译耗费时间、浪费电力、消磨硬件这类明显找抽的疑问就不问了。
      谢谢。谁都知道项目自己调试时候浪费的电力不比我们用户加起来少。Gentoo在编译中为项目本身回馈的因为不严谨而导致的问题相信也不少,这本身也是调试。

    2.其次,我有一个理解——gentoo之特色在于Portage——Portage之精华在于USE。不知是否得当,望熟手指教!
      个人以为是这样。或许还有很多,但是个人以为更多的是这样。另外如上,mask和unmask对版本的控制功能也很不错。

    3.再次,邮电找抽型的疑问。大家觉得BSD风格的init比较于SysV风格如何。gentoo很多地方都给予很大的自由和“可选方案”,为什么在这一点上都未曾提及,更不要说提供替代方案(或指南)呢?
      有人在做upstart到gentoo的移植,不过目前没有消息。只是Bugzilla上有个ebuild。http://bugs.gentoo.org/150190。其它的项目应该也有,你也可以关注关注。只是工作量的问题。就像Arch关注OSSv4和BSD风格init等子项目一样,Gentoo的人力也分散在toolchain、Hardened这样的子项目上。分别看Arch和Gentoo,相信没有一个人手够的。
      另外,Gentoo/FreeBSD项目本身也降低了不少这种需求——想玩BSD就玩真的嘛!

    4.又来,关于e……系列的工具包。初略了看了下为什么不自己congfigue的文档,没完全看懂,这里提问。gentoo提供了econf到emake、dodoc……一套工具。为什么不把原汁原味的check install给用户展现出来呢?有什么理由必须这么做么?还是又什么充足的理由认为这样会好的多?
      不仅仅是简化工作,更可能是因为有sandbox。一些用户会启用sandbox,而一些用户可能会出于特殊的原因关闭(比如默认Gentoo/FreeBSD用户在开始会没有sandbox)。ebuild里不可能每个都写一个判断,说如果启用了sandbox就--prefix=/var/tmp/portage/xx-xx/xx/image/usr,如果没有就--prefix=/usr。于是这写了这样一些函数。

    5.继续,USE这个精华我理解的很肤浅。大致认为首先系统级别的USE就相当于在自定义通用的编译参数。然后各个软件包IUSE会根据软件的情况,每个IUSE对应一个可选编译项。系统编译的时候,拿着IUSE去查USE,如果不在USE之列或者USE之列取消(-USE_WORD)了,就不编译相应选项,否则包含改项。 简单的举例子说,加入一堆软件都有可选GTK支持,不用USE就每个软件都要加上--enable-gtk之类,用USE就只需要USE="gtk",然后每个软件包维护者分别加上conf=USE gtk? --enable-gtk。 不知这样理解是否正确,望指正!
      嗯。是这样。一般写成$(use_enable xattr),use_enable本身是一个判断。

    6.仍然。诚然gentoo宣言(算是吧)里说到:为什么gentoo这样做,是因为我们实在没必要为了一个可能基本不用的QT环境,而让所有的编译的包都加上QT支持和依赖。诚然,这很有道理。但是一个优秀的基础软件对于可选特性的支持,应该都是可以编译进去,但是不使用的吧。比如QT支持,编译时加入--with-qt,但是运行时没有QT也是可以正常使用的吧! 既然这样,用一小部分磁盘空间容纳多出来的-with-option总是好过用大部分时间来等待编译看gentoo文档的吧? 或者有别的说法?同样热烈的欢迎指正!
      不同的人有不同的想法。像鄙人这样连gcc都不能容许安装两个不同版本、新版本gcc出问题就一定要解决或等到解决然后再用的人,是非常愿意拿时间来清理系统的。另外,portage是个瑞士军刀,不同的人用的时候想法不一样,你可以看看置顶的讨论,里面有各色人士的不同心态。身处事外地看这些东西有的时候很好玩。另外,Sabayon是一个预处理好的Gentoo系统,符合你所提出的观点,当然Portage的不少特色就被掩盖了。但是也不是不能在Sabayon里用Portage的东西。

    7.最后,gentoo有Portage,用于保存ebuild这类。有distfile用来保存软件包源代码。那么distfile会保存所有portage中的包的源代码么(应该不会,那么他的选择标准是什么呢)?而且gentoo有一大特性就是多版本共存。第一个问题就是Portage和distfile中,会把gentoo成立至今所有的软件版本都囊括(也应该不会,那又是什么标准呢)?另外对于文档中关于多版本共存的介绍让我很疑惑,他以freetype和freetype2举了例子,但是我还是不明白。我的理解多版本共存意味着比如fcitx3.6.1和fcitx3.6.2共存,我以为是不可能的,因为他们二进制文件很多都相互覆盖的。而对于类似gtk和gtk2这类本身就不相互覆盖的,我想哪个distro都可以做到共存。
      对于普通的软件,只用版本不同相互又不兼容的软件才会设置SLOT。(SLOT就是你说的机制。)经典的有automake,在Ubuntu里,这些包叫automake19什么的,在Gentoo这里看来,这个是包管理的不足。因为它们本来就是一个包的不同版本而不是两个包。一般说所有软件能过安装到不同的位置可以做到共存,就算fcitx也是,只是比较麻烦。但是这不是SLOT要解决的问题。SLOT是一个相对比较被动的处理方案——除非用户一定要用到这个包的不同版本,而且不能相互兼容,否则不会设置SLOT的。
      当然内核是一个例外,内核不同版本说不上不兼容,但是会用SLOT作为一个处理手段,这样只是会更方便。GCC的处理个人以为也是这样。
      至于KDE个人以为又是一个另外的应用,目前不太理解,为什么KDE4.2和4.3要分成两个SLOT。
      官方的rsync服务器中的distfiles是包括近几日Portage中的所有版本的源代码的。即使rsync目录中没有,portage也会从项目官方网站上下载,这个在ebuild中的SRC_URI变量中有设置。distfiles中的一些代码会因为授权原因不包括的,比如sun-jdk,作为Arch的用户的你应该也理解。而自己的distfiles是只包括你以前安装过的包的源代码,即使那个包已经被删除,源代码还在的。也有工具清理这些代码,叫eclean。

    8.结局,我对gentoo现在很着迷。就算花了几乎8个小时来编译了OOo(感谢上苍,除了没有中文支持,万事俱备)。目前唯一不满的就是init脚本的方式(当然gentoo采用的SysV为大多Linux所用,这是我自己的问题)。其他方面都是上列这类“疑惑”。尽管这些疑惑都还无法让我对gentoo“不着迷”。也许是编译时间(累积起来)很长的原因,gentoo对CLI的界面很投入。emerge出来的提示感觉很人性化(后来才发现是maintainer人性化)。虽然ebuild看上去有些复杂。
      那么,欢迎加入Gentoo。

    鄙人以为,楼上这样往往会让人很受打击。没有仔细体验过的用户不会考虑那么多关于ebuild的问题。这里交流交流也无妨。什么都让大家自己领悟,论坛这种东西也就成FAQ全集了。
    回复 支持 反对

    使用道具 举报

    发表于 2009-12-9 12:29:20 | 显示全部楼层
    共存,只有部分有不同slots的软件可以多版本共存,其他的则不能,也没必要。谁有必要装两个fctix?但即使这样,也是远比arch人性化——你可以选择安装的版本,不像arch,没得选,无法保留或找回旧版本。
    回复 支持 反对

    使用道具 举报

    发表于 2009-12-9 14:09:13 | 显示全部楼层
    我也是从Arch过来的,呵呵。首先说一句:用Gentoo,就是在无尽的错误中寻求永恒。不怕遇到错误,就怕不能定位错误。
    Post by athurg;2054052

    其次,我有一个理解——gentoo之特色在于Portage——Portage之精华在于USE。不知是否得当,望熟手指教!

    我是这么理解的:任何发行版的精髓都在于包管理系统。Gentoo的包管理系统功能完备、实现精致,无论是提示信息还是ebuild的语法都非常完美,使用和开发都很享受。

    至于use,只是对于用户而言,最显著的一个优点。但是,它也有个缺点需要注意:同名的use在各个包中的意义不是绝对一致的。比如gtk,一般是启用对GTK+库的支持,但是对于nmap这个包,却代表是否编译其图形界面。

    所以,你应该意识到了:使用Gentoo,需要对整个系统里的包都有个大致的了解,无论是其功能还是相互之间的关系。这一点对于新手来说是最难过的一道坎,很多人因此误删一些包导致了各种各样的错误。
    Post by athurg;2054052
    再次,邮电找抽型的疑问。大家觉得BSD风格的init比较于SysV风格如何。gentoo很多地方都给予很大的自由和“可选方案”,为什么在这一点上都未曾提及,更不要说提供替代方案(或指南)呢?

    感觉这个移植起来应该很麻烦,毕竟现有的都是bug频频。
    Post by athurg;2054052
    又来,关于e……系列的工具包。初略了看了下为什么不自己congfigue的文档,没完全看懂,这里提问。gentoo提供了econf到emake、dodoc……一套工具。为什么不把原汁原味的check install给用户展现出来呢?有什么理由必须这么做么?还是又什么充足的理由认为这样会好的多?

    上面的已经说了,我就补充下:其实就是个封装,本质上还是要调用你说的“check install”这类工具,只不过它提供了一些默认的设定,可以简化ebuild的书写。
    Post by athurg;2054052
    继续,USE这个精华我理解的很肤浅。大致认为首先系统级别的USE就相当于在自定义通用的编译参数。然后各个软件包IUSE会根据软件的情况,每个IUSE对应一个可选编译项。系统编译的时候,拿着IUSE去查USE,如果不在USE之列或者USE之列取消(-USE_WORD)了,就不编译相应选项,否则包含改项。   简单的举例子说,加入一堆软件都有可选GTK支持,不用USE就每个软件都要加上--enable-gtk之类,用USE就只需要USE="gtk",然后每个软件包维护者分别加上conf=USE gtk? --enable-gtk。   不知这样理解是否正确,望指正!

    继续补充:use仅仅是设定,至于具体是什么设定是开发者决定的,不限于编译参数,你可以直接查阅ebuild来了解。
    Post by athurg;2054052
    最后,gentoo有Portage,用于保存ebuild这类。有distfile用来保存软件包源代码。那么distfile会保存所有portage中的包的源代码么(应该不会,那么他的选择标准是什么呢)?而且gentoo有一大特性就是多版本共存。第一个问题就是Portage和distfile中,会把gentoo成立至今所有的软件版本都囊括(也应该不会,那又是什么标准呢)?

    distfile在服务器上的保存是这样的:除了某些因为版权限制的,都会保存(偶尔也有刚刚更新而没来得及添加的,仅仅是时间问题)。在本地保存的都是你曾想安装过的软件;某些受限软件需要手动下载源码并保存到distfile目录。
    Post by athurg;2054052
    结局,我对gentoo现在很着迷。就算花了几乎8个小时来编译了OOo(感谢上苍,除了没有中文支持,万事俱备)。

    有很多软件都有结尾为“-bin”的预编译包。如果不是为了优化,我是懒得一味地编译。
    Post by athurg;2054052
    目前唯一不满的就是init脚本的方式(当然gentoo采用的SysV为大多Linux所用,这是我自己的问题)。

    你就那么在乎那个启动脚本么,不过是管理服务的一种方式而已。如果有什么特殊原因就说出来吧。
    Post by athurg;2054052
    其他方面都是上列这类“疑惑”。尽管这些疑惑都还无法让我对gentoo“不着迷”。也许是编译时间(累积起来)很长的原因,gentoo对CLI的界面很投入。emerge出来的提示感觉很人性化(后来才发现是maintainer人性化)。虽然ebuild看上去有些复杂。

    按我的理解,之所以需要这些提示是因为现在portage的实现还不能自动完成那些操作,所以需要提示用户,这是必须的(很多问题都是忽略了这些提示导致的)。既然编译容易产生错误,就要为错误负责。
    Post by athurg;2054052
    最后一句,我不是踢场子的,也不是找抽的,只是着迷这东西,来请教各位!

    恩,你的态度很端正,鉴定完毕。呵呵。
    回复 支持 反对

    使用道具 举报

    发表于 2009-12-9 14:33:44 | 显示全部楼层
    athurg 的贴子呀,哈哈,顶一个,字太多,先回贴先,慢慢看
    回复 支持 反对

    使用道具 举报

    发表于 2009-12-9 14:37:27 | 显示全部楼层
    Oh My God!
    回复 支持 反对

    使用道具 举报

     楼主| 发表于 2009-12-9 18:28:12 | 显示全部楼层
    早上发的这个帖子,然后就去新华书店干到了晚上(感谢肯德基开在新华文轩上了)。这里给大家推荐一本书,是临走的时候才发现的,仔细看到了第三章,不错。
    《程序员的自我修养——链接、装载与库》,电子工业出版社

    回来看到大家的回复,很中肯,感谢大家。相信诸位在回复之前都用我写帖子的态度读过帖子,这一点已经值得感谢了。

    几位的回复我都认真看了,总结起来也算是有所收获。引用wd_afei的话,我会继续用一段时间,继续体会。至少这一次gentoo之旅比第一次gentoo之旅愉快得多。

    另外,正如coderoar所说,估计几位也都有疑惑。其实一个init启动方式如何也许不必如此过分关注,但是这一方式的不同,直接导致所有“服务”类的程序使用的不一样,以及一些系统配置方式的不一样(比如BSD方式只需添加服务名于DAEMONS变量,而SysV方式则需要update脚本,总感觉像是穿着袜子洗脚,或者那什么……)。另外就是在做系统移植的时候,启动方式是需要常常HACK的。这是我关注这个问题的原因。


    另外,对于Arch的兄弟,嘿嘿!别失望,我不是在远离(抛弃?)Arch。任何一个固步自封的行事方式都是不可取的,可以坐山观虎斗,但不宜坐井观天。

    再说了,我愿意单恋gentoo,我那小本也不愿意呢。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表