使用 .NET Framework 的跨平台开发

(相关参阅)可移植类库 –  http://msdn.microsoft.com/zh-cn/library/gg597391(v=vs.100).aspx

.NET Framework 4.5         

Visual Studio 2012 中的 可移植类库 项目支持 .NET Framework 应用的跨平台开发。

使用此项目编写和生成的可移植程序集,无须在多个平台的修改即可运行,例如 Windows 7,Windows 8,Silverlight ,Windows Phone 和 Xbox 360。             例如,可以创建在桌面应用程序、Windows 应用商店应用程序和移动应用程序中包含共享业务逻辑的类,然后从不同类型的应用程序中引用这些类。

可移植类库项目支持 .NET Framework、Silverlight、适用于 Windows 应用商店应用的 .NET、Windows Phone 和 Xbox 360 中的部分程序集,并提供可用于生成不在这些平台上进行修改也可运行的程序集的 Visual Studio 模板。             如果没有使用可移植类库项目,您必须先指定单个应用程序类型,然后手动修改其他应用程序类型的类库。  可移植类库 项目,可以通过生成在不同设备上的应用程序之间共享的可移植程序集来减少开发和测试代码的时间和费用。

                 说明
如果您使用的是 Visual Studio 2013,则可用的选项和菜单可能与本文中的描述有所不同。

以下各节对 可移植类库 的功能进行了介绍:

  • 先决条件
  • 目标平台
  • 支持的功能
  • 受支持的类型和成员
  • 平台抽象
  • 支持模型-视图-视图模型 (MVVM) 模式
  • 创建可移植类库项目。
  • 选择目标平台
  • 使用可移植类库
先决条件


如果将 Visual Studio 2012 的多平台版本用作开发环境,则您所需的用于开发可移植类库项目的几乎所有内容均可供您使用。               值得注意的是,可移植类库在某些 Visual Studio 单平台版本中不可用,例如 Visual Studio Express for Windows 8。  Windows Phone SDK 8.0 in addition to the version of Visual Studio 2012 that you already have installed.’>此外,如果要面向 Windows Phone 8 进行开发,除了您已经安装的 Visual Studio 2012 版本,还必须安装 Windows Phone SDK 8.0。Portable Library Tools, and save the download file (PortableLibraryTools.exe) on your computer.’>若要在未安装 Visual Studio 2012 的情况下在生成计算机上安装可移植类库工具,请下载 Portable Library Tools (可移植库工具),并将下载的文件 (PortableLibraryTools.exe) 保存到您的计算机上。               /buildmachine switch on the command line.’>从命令提示符窗口运行安装程序,并包括命令行上的 /buildmachine 开关。
目标平台


当您创建 可移植类库 项目时,可以选择要针对的两个或多个平台。               下表显示可用平台。

平台 版本
.NET Framework .NET Framework 4 和更高版本.NET Framework 4.0.3 和更高版本.NET Framework 4.5
Silverlight Silverlight 4 和更高版本(默认选中)。Silverlight 5
Windows Phone Windows Phone 7 和更高版本(默认选中)Windows Phone 7.5 和更高版本Windows Phone 8

                           重要事项
Windows Phone SDK 8.0 for the Windows Phone 8 option. ‘>如果选择 Windows Phone 8,则必须安装 Windows Phone SDK 8.0。
适用于 Windows 应用商店应用的 .NET (*) 不可用
Xbox 360 不可用

该表标识默认情况下处于选中状态的四个平台或版本。               Project Properties dialog box, as shown in the section Selecting the Platforms to Target.’>如 选择要面向的平台 所示,可以通过使用“项目属性”对话框来更改这些默认平台。

支持的功能


在指定目标平台时,在 可移植类库 项目中,仅在您的项目中自动引用这些平台支持的程序集。               您不必添加或移除程序集。  如果您更改目标平台,则自动更新引用的程序集。如果您只以 .NET Framework 4.5 和 适用于 Windows 应用商店应用的 .NET 为目标,那么您就有权访问比其他平台组合中更大的程序集。               此较大程序集的集合与 适用于 Windows 应用商店应用的 .NET 几乎是相同的,但是不包括 Windows.UI.Xaml 命名空间中的类。  .NET for Windows Store apps – supported APIs in the Windows Dev Center.’>有关详细信息,请参见 Windows 开发人员中心中的 .NET for Windows Store apps – supported APIs(用于 Windows 应用商店应用程序的 .NET–受支持的 API)。下表显示了可用平台和版本上支持的功能。

功能 .NET Framework Windows 应用商店 Silverlight Windows Phone Xbox 360
核心
LINQ
IQueryable 7.5 和更高版本
动态关键字 仅限 4.5
Managed Extensibility Framework (MEF)
网络类库 (NCL)
序列化
Windows Communication Foundation (WCF)
模型视图视图模型 (MVVM) 仅限 4.5
数据批注 仅 4.0.3 和 4.5
XLINQ 仅 4.0.3 和 4.5
System.Numerics
受支持的类型和成员


在 可移植类库 项目中可用的类型和成员受若干兼容性因素约束:

  • 它们必须在所选的目标平台之间共享。
  • 必须行为与平台上的这些行为类似。
  • 它们不得是要弃用的候选项。
  • 它们必须在可移植环境中才有意义,特别是在支持成员时是不可移植时。

例如,可移植类库项目不包含任何 UI 相关类型或成员,原因是不同设备的 UI 的行为不同。               如果您的目标是在 可移植类库 引入之前发布的平台(如 Xbox、.NET Framework 4 和Windows Phone 7),那么您可能会遇到限制。

.NET Framework Class Library.’>可查找 可移植类库 支持的成员,在 .NET Framework Class Library(.NET Framework 类库)的参考主题中查找。               在类的成员表中,受支持的成员旁边会显示以下可移植类库图标。

Chars property in the String class is supported in the Portable Class Library.’>例如,下面的图像显示,在 String 类中的 Chars 属性在 可移植类库 中支持。

Version Information section of a reference topic for a note indicating that a type or member is supported in the Portable Class Library project, as shown below.’>按如下显示,还可以查看参考主题的“版本信息”节,了解指示在可移植类库项目中受支持的类型或成员的注释。

平台抽象


通常,您需要从可移植类中调用不可移植的成员。               无法直接调用不可移植的成员,因为这些成员不适用于 可移植类库 项目。  相反,您可以在 可移植类库 项目中创建一个抽象类并可以从所有可移植代码中使用该类。  在特定于平台的项目中,创建抽象类的子类并实现特定于平台的行为。以下示例显示与本地设置一起使用的可移植类。               在 Windows 应用商店 应用程序和 Silverlight 应用程序中处理本地设置的方式各不相同,因此可移植类不提供任何实现详细信息。

C#
using System;

namespace ExamplePortableLibrary
{
    public abstract class ExampleLocalSettings
    {
        public abstract void SetLocalValue(string name, object value);

        public static ExampleLocalSettings Instance { get; set; }
    }
}

在 可移植类库 项目中,可以按以下方式使用。

C#
ExampleLocalSettings.Instance.SetLocalValue("ExampleSetting", "New value to add");

在您的 Silverlight 项目中,添加引用到可移植的程序集,然后创建实现特定于 Silverlight 环境的本地设置操作的子类。  ExampleLocalSettings class.’>下面的示例演示 ExampleLocalSettings 类的 Silverlight 实现。

C#
using System;
using System.IO.IsolatedStorage;
using ExamplePortableLibrary;

namespace SilverlightApplication1
{
    class SilverlightImplementation : ExampleLocalSettings
    {
        public override void SetLocalValue(string name, object value)
        {
            IsolatedStorageSettings.ApplicationSettings.Add(name, value);
        }
    }
}

在您的 Windows 应用商店 应用程序中,添加引用到可移植的程序集,然后创建实现特定于 Windows 应用商店 应用程序的本地设置操作的子类。  ExampleLocalSettings class for a Windows Store app.’>下面的示例演示 Windows 应用商店 应用程序的 ExampleLocalSettings 类的实现。

C#
using System;
using Windows.Storage;
using ExamplePortableLibrary;

namespace App1
{
    class AppImplementation : ExampleLocalSettings
    {
        public override void SetLocalValue(string name, object value)
        {
            ApplicationData.Current.LocalSettings.Values[name] = value;
        }
    }
}

Instance property.’>在 Silverlight 应用程序和 Windows 应用商店 应用程序两个中,必须初始化子类的特定实现并将其设置为 Instance 属性。  通常,您在该应用程序开始时创建此示例。  以下示例显示如何初始化 Silverlight 实现。

C#
ExampleLocalSettings.Instance = new SilverlightImplementation();

以下示例显示如何为 Windows 应用商店 应用程序初始化实现。

C#
ExampleLocalSettings.Instance = new AppImplementation();
支持模型-视图-视图模型 (MVVM) 模式


如果您的目标是 .NET Framework 4.5、适用于 Windows 应用商店应用的 .NET、Silverlight 和 Windows Phone,则可以在解决方案中实现视图 MVVM 模式。               实现此模式的类包括以下:

  • System.Collections.ObjectModel.ObservableCollection<T>
  • System.Collections.ObjectModel.ReadOnlyObservableCollection<T>
  • System.Collections.Specialized.INotifyCollectionChanged
  • System.Collections.Specialized.NotifyCollectionChangedAction
  • System.Collections.Specialized.NotifyCollectionChangedEventArgs
  • System.Collections.Specialized.NotifyCollectionChangedEventHandler
  • System.ComponentModel.DataErrorsChangedEventArgs
  • System.ComponentModel.INotifyDataErrorInfo
  • System.ComponentModel.INotifyPropertyChanged
  • System.Windows.Input.ICommand

Using Portable Class Library with Model-View-View Model.’>有关如何在 可移植类库 项目中实现 MVVM 模式的更多信息,请参见 将可移植类库与模型-视图-视图模型配合使用。

创建可移植类库项目


Portable Class Library template under Visual C# or Visual Basic.’>若要创建 可移植类库 项目,需要在 Visual Studio 2012 中创建一个新项目,然后在 Visual C# 或 Visual Basic 下选择“可移植类库”模板。
选择目标平台


默认情况下,可移植类库项目面向以下平台:

  • .NET Framework 4.5
  • Silverlight 4 及更新版本
  • Windows Phone 7 及更高版本
  • 适用于 Windows 应用商店应用的 .NET

该项目只引用受这些平台支持的程序集。               Solution Explorer, open the shortcut menu for the Portable Class Library project, and then choose Properties.’>若要更改目标平台,则在“解决方案资源管理器”中,打开 可移植类库 项目的快捷菜单,然后选择“属性”。

Library tab specifies the platforms that are currently targeted.’>在项目属性页上,“库”选项卡指定当前面向的平台。

Change button, and then select the appropriate check boxes.’>若要添加或移除目标平台,请选择“更改” 按钮,然后选择相应的复选框。

更改目标平台时,该项目中可用的程序集会发生更改以匹配您所选平台支持的程序集。               如果您的项目引用的程序集不受某个所选平台支持,必须移除对相应程序集的引用或更改目标平台。

使用可移植类库


在您生成 可移植类库 项目后,只是从其他项目引用该项目。               可以引用该项目或包含您要访问的类的特定程序集。若要运行引用 可移植类库 程序集的应用程序,必须在计算机上安装所需版本(或更高版本)的目标平台。               Visual Studio 2012 包含所有必需的架构,因此您可以运行该应用程序,而无需在用于开发应用程序的计算机上进行进一步修改。

部署 .NET Framework 应用程序

部署引用 可移植类库 程序集的 .NET Framework 应用程序时,必须在正确版本的 .NET Framework 上指定一个依赖项。                 通过指定此依赖项,可确保与您的应用程序一起安装所需的版本。  update, Update 4.0.3 for the .NET Framework 4, or the .NET Framework 4.5 installed.’>如果面向的是 .NET Framework 4 或更高版本,则必须已安装含 update(更新)的 .NET Framework 4、.NET Framework 4 的更新 4.0.3 或 .NET Framework 4.5。

  • Solution Explorer, choose the project node for the project you want to publish. (This is the project that references the Portable Class Library project.) On the menu bar, choose Project, Properties, and then choose the Publish tab.’>若要使用 ClickOnce 部署创建依赖项,请在“解决方案资源管理器”中,选择您要发布的项目对应的项目节点。(这是引用可移植类库项目的项目。)在菜单栏上,依次选择“项目”、“属性”,然后选择“发布”选项卡。                     Publish page, choose Prerequisites.’>在“发布”页上,选择“系统必备”。  选择所需 .NET framework 版本(或 .NET framework 4 更新)作为系统必备组件。
  • Solution Explorer, choose the setup project.’>若要创建安装项目的依赖项,请在“解决方案资源管理器”中,选择此安装项目。                     Project, Properties, Prerequisites.’>在菜单栏上,依次选择“项目”、“属性”、“系统必备组件”。  选择所需 .NET Framework 版本作为系统必备组件。

.NET Framework Deployment Guide for Developers.’>有关部署 .NET Framework 应用程序的更多信息,请参见 .NET Framework 部署指南(针对开发人员)。

部署基于 Silverlight 的应用程序

部署引用 可移植类库 程序集的基于 Silverlight 的应用程序时,您必须确保该应用程序所需的最低运行时版本匹配其目标版本。                 如果面向的是 Silverlight 4,则版本必须是 4.0.60129.0 或更高版本。  &lt;param name=”minRuntimeVersion” value=”4.0.60129.0″ /&gt; in the webpage that hosts the Silverlight-based app, as follows:’>通过在承载基于 Silverlight 的应用程序的网页中包括,可设置 <param name=”minRuntimeVersion” value=”4.0.60129.0″ /> 参数值。

XAML
<div id="silverlightControlHost">
    <object data="data:application/x-silverlight-2," 
           type="application/x-silverlight-2" width="100%" height="100%">
    <param name="source" value="ClientBin/SilverlightApplication.xap"/>
    <param name="onError" value="onSilverlightError" />
    <param name="background" value="white" />
    <param name="minRuntimeVersion" value="4.0.60129.0" />
    <param name="autoUpgrade" value="true" />
    <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" 
             style="text-decoration:none">
      <img src=http://go.microsoft.com/fwlink/?LinkId=161376
             alt="Get Microsoft Silverlight" style="border-style:none"/>
    </a>
  </object>
   <iframe id="_sl_historyFrame" 
              style="visibility:hidden;height:0px;width:0px;border:0px">
   </iframe>
</div>

可移植类库中的 API 差异

为了使可移植类库程序集在所有支持的平台中兼容,稍微更改了可移植类库中的部分成员。                 API Differences in Portable Class Library.’>有关对哪些成员进行了更改以及进行了怎样的更改的详细信息,请参见可移植类库中的 API 差异。

原文连接: http://msdn.microsoft.com/zh-cn/library/gg597391(v=vs.110).aspx#feedback

关于修复WordPress固定链接的改变/迁移 (Change Permalink Migration)

当服务器迁移,需要更换WordPress地址路径时,或是导入了新数据时,会遇到固定链接 改变,文章ID也不正确的情况。

我们需要修正这个问题,以我一些经验为例:

 

例如,我在迁移服务器后,且又多次导入了几个时期分别备份的数据后:

(原URL):http://bohu.net/wp/2006/07/197,orz-and-wtf/  变成了 (新URL)http://bohu.net/blog/197

原文件夹是 wp 新文件夹为 blog

 

设置转发(Redirect)

那么首先设置web服务器的重定向类型(Redirect Type),一般web服务器都支持一下3种Redirect:
301 – Permanent(永久)
302 – Temporary(临时)
303 – Replaced (替换)
详细参数说明,查看 维基百科 HTTP状态码 :3xx重定向
用   303 ,  Replaced  redirected (303)  重定向 wp 到 blog,
Local URL Path Type Redirect URL
/wp 303 http://bohu.net/blog

 

303 – Replaced 顾名思义,就是可以替换URL中的地址,而且正确的响应所传递的参数。? 号之后的参数不会丢失。

如: http://bohu.net/blog/post.php?post=1234&action=edit  303 替换为 http://bohu.net/wp/post.php?post=1234&action=edit

这样设置之后 访问 bohu.net/wp 就可以 转到 bohu.net/blog 了。

 

手动修复ID

但是元文章ID是197, 现在变为了2553,你如果用插件修复固定连接的话那么,可以忽略这一部分。

我尝试手动修复了ID。先下载插件 ”ShowID

下载插件:ShowID for Post/Page/Category/Tag/Comment – http://ounziw.com/2010/02/05/showid/

启用之后就可以在文章列表看到每篇文章的 ID 了。我没找到自动更改ID的插件,进数据库自己修改的。

这样 http://bohu.net/blog/197 就可以恢复访问到了。

 

修复固定链接改变/迁移

但是之前的固定连接 ”197,orz-and-wtf“ 为两个参数组合的,所以原URL还不能直接访问。

需要使用插件转发到新固定连接,我最先用的是 ”Advanced Permalinks“

下载插件:Advanced Permalinks – http://urbangiraffe.com/plugins/advanced-permalinks/

可以完成转发效果,不过发现设置有点不太简单化,而且我的翻页有问题。

下面是附带解决固定连接修改后翻页的问题。

翻页有问题     有时候翻到第二页或其他页不能正常工作,地址如下:
 http://www.example.com/page/2/  http://www.example.name/category/categoryname/page/2/  http://www.example/year/month/day/page/2/  http://www.example/year/month/page/2/
    访问上面的任何一个链接,出现提示说: “Sorry, no posts match that criteria.”
    这是.htaccess造成的,删掉,重新生成就好了。

看到”Advanced Permalinks“已经是2年未更新了,最后还是更换了插件为 ”Permalink Finder“。

下载插件:Permalink Finder –  http://www.blogseye.com/

启用”Permalink Finder“Permalink-Finder Options”菜单,我按照默认设置。

这样就自动化完成修复固定链接的改变/迁移了。设置基本上不需要多少的改变。

 

Linux 下获取已安装的软件列表 & 重新安装/恢复所有软件程序

 

要重新安装或恢复您需要有一个列表的所有已安装的软件安装软件。

如何: 创建的 Debian 下的所有已安装软件备份列表 / Ubuntu Linux

如果您使用 Debian 或 Ubuntu Linux,使用 dpkg 命令列出已安装的软件:
$ dpkg --get-selections
您可以存储到一个名为 /backup/installed-software.log 文件的已安装软件的列表,请输入:
$ dpkg --get-selections > /backup/installed-software.log
基于 RPM分布 (RHEL、 软呢帽,Redhat,CentOS,Suse Linux) 用户尝试 rpm 命令来获取所有已安装的软件的列表,请输入:
$ rpm -qa

$ rpm -qa > /backup/installed-software.log

如何从备份列表恢复已安装的软件?

Debian/Ubuntu Linux 下键入下列两个命令来重新安装所有的程序:
# dpkg --set-selections < /backup/installed-software.log
一旦导入列表,请使用 dselect 命令或其他工具要安装的软件包,请输入:
# dselect
请选择’i‘ 为安装选择的软件。

据我所知基于 RPM 的发行版不提供 dpkg 种的设施。但与小小的外壳脚本编写技术您可以轻松地安装的所有软件程序:
# LIST="$( cat /backup/installed-software.log )"
如果您正在使用百胜 comamnd,键入 for 循环来安装所有的软件以下内容:
# for s in $LIST; do yum -y install $s; done
更新试试下面的命令 (由于 gt):
# yum -y install $(cat /backup/installed-software.log)

RHEL 注意有关版本 4

如果您使用的 RHEL 4 或更旧,请输入:
# for s in $LIST; do up2date -i $s; done

或者,你可以使用下面的命令:
# up2date -i $(cat /backup/installed-software.log)

 

http://www.cyberciti.biz/tips/linux-get-list-installed-software-reinstallation-restore.html

 

在 Linux、 FreeBSD、 OpenBSD 中显示所有安装的软件或包

问: 我使用的 CentOS,如何在 Linux 中显示所有已安装的软件包?
答: 您需要使用 rpm 命令来在 Linux 中显示所有已安装的软件包

Red Hat/Fedora Core/CentOS Linux

Type the following command to get list of all installed software
# rpm -qa | less

Debian Linux

Type the following command to get list of all installed software:
# dpkg --get-selections

Ubuntu Linux

Type the following command to get list of all installed software:
# sudo dpkg --get-selections

FreeBSD

Type the following command to get list of all installed software:
# pkg_info | less
# pkg_info apache

Use pkg_version command to summarizes the versions of all installed packages:
# pkg_version | less
# pkg_version | grep 'lsof'

OpenBSD

OpenBSD also use pkg_info command to display list of all installed packages or software:
# pkg_info | less
# pkg_info apache

http://www.cyberciti.biz/faq/show-display-get-installed-packages-software-list-linux-freebsd-openbsd/

Steam 打造一个操作系统 – SteamOS

数千款游戏,数千万用户,你所爱的 Steam 的一切。      专为电视和客厅设计的免费操作系统即将到来。

Steam 即将迎来一个新的操作系统

在我们试着将 Steam 带入客厅的过程中,我们得出了一个结论:对用户来说最有价值最适合的方式就是围绕 Steam 打造一个操作系统。SteamOS 包括了 Linux 的金牌架构以及为大屏幕模式设计的游戏体验。很快这将会成为专为客厅设备打造的独立免费操作系统。

Steam 与客厅

终于,您无需为了在大屏幕模式下玩而放弃您喜爱的游戏,您线上的好友,以及那些您喜爱的 Steam 功能。SteamOS,可在任意客厅设备上运行,它能让您体验到最好的游戏以及最好的用户生产内容。

快进

在 SteamOS 中,我们在图像处理上取得了显著的进步,并且我们现在还正致力于操作系统层面的音频表现力和输入延迟优化。游戏开发者们在使用 SteamOS 发布他们的游戏时,就已经从这些优化中受益了。

合作系统

Steam 不是一个单向的内容发布频道,而是一个多对多的集成娱乐平台,在这里每个参与者都是其他所有人体验的一部分。有了 SteamOS,“开放性”被赋予了新的含义,这意味着硬件行业在客厅的迭代已经开始,并且前进的速度前所未有的快。内容的提供者们可以直接和他们的用户关联。用户可以随意更改或替换硬件和软件的任何一部分。游戏玩家被赋予了加入他们所热爱的游戏的设计的权利。SteamOS 将会不断进化,然而不变的是创造一个可以培养这一系列革新的大环境。

Steam 专为客厅打造的四项新功能

即将在 SteamOS 和 Steam 客户端上线

家用流式传输

您可以在您的 SteamOS 设备上玩您在 Windows 和 Mac 下的所有游戏。只需要打开您现在的电脑,启动 Steam——然后您的 SteamOS 设备就能将这些游戏通过您的家庭网络直接推送到您的电视机上!

音乐、电视、电影

我们在和您所熟知和喜爱的多家媒体合作。很快我们就会使其上线,让您可以通过 Steam 和 SteamOS 获取您最喜爱的音乐和视频。

家庭分享

在过去,和家庭成员一起分享 Steam 游戏很难。现在您可以和您所爱的人分享您所爱的游戏了!家庭分享能让您和家里其他成员轮流玩对方的游戏,同时为您自己的 Steam 账号赢得成就,还能通过 Steam 云将您自己的游戏进度保存到自己的账户上。

家庭选项

客厅是家庭领地。这很棒,但您可能不想在自己的库中看到您父母的游戏。很快,家庭成员将能够控制每个人所看到的游戏内容,同时还有更多的新功能来让家庭中的每个人都能将自己的 Steam 库物尽其用。

SteamOS 的核心就是 Steam 上您所喜爱的一切。

您爱的所有游戏

SteamOS 已经原生支持上百款游戏佳作。在未来几周内请留意有关所有 3A 级大作即将在 2014年原生登陆 SteamOS 消息。通过家用流式传输将可访问 Steam 上所有将近 3000 个游戏以及电脑软件。

超过五千万好友

Steam 用户是 Steam 乐趣横生的关键。结识新朋友,加入游戏群,组成战队,游戏内聊天并一起游戏,您最喜欢的游戏的核心活动,一并囊括。

创意工坊

Steam 用户的创意是推动创意工坊形成的力量——您获取附加内容的一站式商店。在这里您可以设计、发掘和下载无尽的顶级品质的用户创造内容。

跨平台云系统

无缝内容传递,无需担心的大容量和自动更新一切。随意切换设备并继续上次游戏,甚至您的个人喜好设置,Steam 云都为您想到了。

持续升级

从 2003 年开始 Steam 本身就一直在不断地进化升级。SteamOS 不仅仅会直接从开发者处获取最新的最有价值的游戏更新,还将不断地为自身加入新的功能。

全球化

Steam 已登陆 185 个国家并被翻译成了 25 种语言。作为一个真正的国际平台,Steam,还有现在的 SteamOS,为用户带去无国界的娱乐体验。

下载即将可用。永久免费!

SteamOS 很快就将作为一个开源操作系统对用户和制造商开放免费下载。请留意接下来的日子里我们发布的更多信息。

http://store.steampowered.com/livingroom/SteamOS/

下载地址

http://store.steampowered.com/steamos/

http://store.steampowered.com/steamos/download/?ver=custom

http://repo.steampowered.com/download/

Free GNU/Linux distributions | 免费的 GNU/Linux 发行版

th0

Free GNU/Linux distributions

(免费的 GNU/Linux 发行版)

http://www.gnu.org/distros/free-distros.html

popular nonfree GNU/Linux distributions

(流行的私有 GNU/Linux 发行版)

http://www.gnu.org/distros/common-distros.html

—————————————————————

以下来自: (http://deviantdark.deviantart.com/art/Powered-by-GNU-Linux-82766279)

ArchLinux
Debian
Fedora
Foresight
Gentoo
Kubuntu
Mandriva
Linux Mint
openSUSE
PCLinuxOS
Red Hat
Sabayon
Slackware
Slax
Ubuntu
Xubuntu

——————————————————————————–

以下来自: (http://www.gnu-linux.net/)

                  |    o                         |
,---.,---..   .   |    .,---..   ..  , ,---.,---.|---
|   ||   ||   |---|    ||   ||   | ><  |   ||---'|
`---|`   '`---'   `---'``   '`---''  `o`   '`---'`---'
`---'
Get Archlinux Get Debian Get Fedora
Get Gentoo Get Knoppix Get Kubuntu
Get Mandriva Get OpenSuSE Get Red Hat
Get Slackware Get SuSE Get Ubuntu
Get Yellow Dog linux.org

All logos and trademarks on this site are property of their respective owner

Linux is a registered trademark by Linus Torvalds