fedora安装与配置

fedora的安装

烧制启动盘

百度了一下
fedora的安装不同于ubuntu
据说直接烧进U盘是不能正常安装的
因为fedora采用了分轨镜像

  1. 官网提供了烧进U盘的专用工具,但是在我的电脑上并不能成功安装,连界面都进不去
  2. 在linux下用dd命令烧进U盘(注意of=/dev/sdb而不是of=/dev/sdb1
    windows下也可以找到dd的程序,据说跟linux差别不大
  3. 但是,在一些帖子上看到有的人用Utraiso烧进U盘也能用?但在我的电脑上并不可行

最终采用了第2种方法进入了安装的界面

UEFI?

分区的时候安装程序死活不让我过,提示——
For a UEFI installation you must include EFI system partition on a GPT-formatted disk, mounted a /boot/efi
我试着去分出一个挂载在/boot/efi上的分区,但是并不能解决问题
最后查阅资料后,改成传统的legacy模式进入安装程序就没有问题啦

fedora的基本配置

触控板

默认的触控板上滑动只能移动鼠标,单击必须按下按钮,极不舒服
设置,在SettingsMouse&TouchpadTap to click钩上即可

Terminal的快捷键

默认终端是没有快捷键的,不舒服啊!得把快捷键加上
SettingsKeyboardShortcuts选项卡的Custom Shortcuts中加入自定义快捷键,Name随便填,Command设置为/usr/bin/gnome-terminal,并且设置所要的快捷键,一般是Ctrl+Alt+T

vim的markdown语法高亮插件

据说,fedora下的sublime是写不了中文的耶?!?!郁闷了……
那就用vim吧~~但是要手动下载markdon语法高亮插件
嗯……这个插件还是蛮不错的!
在Home目录下新建名为.vim的文件夹,将插件clone到本地即可
https://github.com/plasticboy/vim-markdown

安装fedora的时候不小心把以前的md文件弄丢了,索性曾经转换成html发布了出去,只要把html再转回markdon即可
Html转换为MarkDown样式代码
这个工具还是蛮不错的,转换的结果还行~~

shadowsocks安装与配置

参考资料:
Shadowsocks|Github
科学上网利器 Shadowsocks 使用方法

安装

yum install python-pip
pip install shadowsocks

配置

新建配置文件和相应目录

/etc/shadowsocks/config.json
文件内容:

{
  "server":"服务器地址",
  "server_port":服务器端口,
  "local_port":1080,
  "password":"密码",
  "timeout":60,
  "method":"aes-256-cfb"
}

启动

前台启动:sslocal -c /etc/shadowsocks/config.json
后台启动:在/etc/shadowsocks/目录下执行nohup sslocal > log &

添加服务到systemd

安装完shadowsocks后会发现,systemd中并没有sslocal、ssserver、shadowsocks之类的服务,那么需要我们手动添加进去
= =不过我不会玩systemd哦,只好疯狂了翻资料,然后自己写了个low low的service凑活着用吧,等有空恶补一下systemd的知识再来进一步完善
首先,systemd的服务配置文件是在/etc/systemd/system/目录下
文件名即为服务名.service,比如我新建的一个sslocal.service
文件内容我是这么写哒——

[Service]
Type=simple
ExecStart=/usr/bin/sslocal -c /etc/shadowsocks/config.json

[Intsall]
WantedBy=multi-user.target  

Service字段呢指明了类型为简单,然后执行一条命令
只要有这条字段我们就可以systemctl start sslocal
但是一执行enable他就会报错缺少Install字段
额……还不是很理解这个字段干嘛的,看到各种资料给的例子上都写上这么一句,就直接拔了下来,也能成功地执行systemctl enable sslocal来使这个服务开机自启啦
这个配置写的lowlow的,而且不知道会不会有什么错误的地方……
等我好好学一下systemd的知识再来完善吧……=。=

firefox->foxyproxy插件

添加代理服务器

服务器ip设置为127.0.0.1,端口1080
选择SOCKS proxy->SOCKS v5

添加gwflist规则

让插件判断哪些网址需要代理,哪些不需要
Pattern Subscriptions选项卡,添加规则订阅
URL: https://autoproxy-gfwlist.googlecode.com/svn/trunk/gfwlist.txt
添加刚才加入的代理Add Proxy
Refesh Rate: 600
Format: AutoProxy
ObFuscation: Base64
这个是谷歌的一个规则,所以添加时必须打开代理服务器,否则将获取不到
Select Mode修改为Use proxies based on their pre-defined pattens and priorities即可

apache+php+mysql安装与配置

参考资料:在fedora21 上的php+mysql+apache环境搭建

apache

安装:yum install httpd
控制:
systemctl [start | stop | restart | reload] httpd.service
service httpd [start | stop |restart | reload]
开机自启:systemctl enable httpd.service

php

安装:yum install php php-mysql
重启apache:systemctl restart httpd.service

mysql

安装:yum install mariadb mariadb-server
控制:与apache类似,服务名为“mariadb”
开机自启:与apache类似
配置向导:mysql_secure_installation主要是设置root用户密码,其他设置一般一路回车即可

sudoers

参考资料:Fedora 20下解决用户不在 sudoers 文件中的方法
fedora默认的一般用户并不是sudoer
也就是不能临时使用root权限来执行命令
但是我们可以手动加入到sudoers中
用root打开文件/etc/sudoers
在最下面加入一行USERNAME ALL=(ALL) ALL即可
此处的USERNAME为要加入sudoers的用户名

sublime的安装与中文支持

fcitx安装

参考资料:Fedora20安装fcitx输入法
yum install fcitx fcitx-pinyin fcitx-configtool im-chooser
然后用im-chooser更换输入法为fcitx
如果报错,则执行gsettings set org.gnome.settings-daemon.plugins.keyboard active false
如果实在不行,尝试删除ibus,yum install remove ibus

sublime text安装

参考资料:Fedora 20 sublime text 安装
在官方下载包,解压后复制到/opt/sublime_text/目录下
创建sublime命令:

touch /usr/bin/sublime
chmod 755 /usr/bin/sublime
vim /usr/bin/sublime

贴入一下代码:(假设创建sublime命令)

#!/bin/sh
export SUBLIME_HOME=/opt/sublime_text
$SUBLIME_HOME/sublime_text $*

中文输入支持

参考资料:FEDORA20使用FCITX在SUBLIME_TEXT中文输入
1、新建名为sublime_text_fcitx.c文件,贴入以下代码:

/*

sublime-imfix.c

Use LD_PRELOAD to interpose some function to fix sublime input method support for linux.

By Cjacker Huang <jianzhong.huang at i-soft.com.cn>

gcc -shared -o libsublime-imfix.so sublime_imfix.c `pkg-config –libs –cflags gtk+-2.0` -fPIC

LD_PRELOAD=./libsublime-imfix.so sublime_text

*/

#include <gtk/gtk.h>

#include <gdk/gdkx.h>

typedef GdkSegment GdkRegionBox;

struct _GdkRegion

{

long size;

long numRects;

GdkRegionBox *rects;

GdkRegionBox extents;

};

GtkIMContext *local_context;

void

gdk_region_get_clipbox (const GdkRegion *region,

GdkRectangle *rectangle)

{

g_return_if_fail (region != NULL);

g_return_if_fail (rectangle != NULL);

rectangle->x = region->extents.x1;

rectangle->y = region->extents.y1;

rectangle->width = region->extents.x2 – region->extents.x1;

rectangle->height = region->extents.y2 – region->extents.y1;

GdkRectangle rect;

rect.x = rectangle->x;

rect.y = rectangle->y;

rect.width = 0;

rect.height = rectangle->height;

//The caret width is 2;

//Maybe sometimes we will make a mistake, but for most of the time, it should be the caret.

if(rectangle->width == 2 && GTK_IS_IM_CONTEXT(local_context)) {

gtk_im_context_set_cursor_location(local_context, rectangle);

}

}

//this is needed, for example, if you input something in file dialog and return back the edit area

//context will lost, so here we set it again.

static GdkFilterReturn event_filter (GdkXEvent *xevent, GdkEvent *event, gpointer im_context)

{

XEvent *xev = (XEvent *)xevent;

if(xev->type == KeyRelease && GTK_IS_IM_CONTEXT(im_context)) {

GdkWindow * win = g_object_get_data(G_OBJECT(im_context),”window”);

if(GDK_IS_WINDOW(win))

gtk_im_context_set_client_window(im_context, win);

}

return GDK_FILTER_CONTINUE;

}

void gtk_im_context_set_client_window (GtkIMContext *context,

GdkWindow *window)

{

GtkIMContextClass *klass;

g_return_if_fail (GTK_IS_IM_CONTEXT (context));

klass = GTK_IM_CONTEXT_GET_CLASS (context);

if (klass->set_client_window)

klass->set_client_window (context, window);

if(!GDK_IS_WINDOW (window))

return;

g_object_set_data(G_OBJECT(context),”window”,window);

int width = gdk_window_get_width(window);

int height = gdk_window_get_height(window);

if(width != 0 && height !=0) {

gtk_im_context_focus_in(context);

local_context = context;

}

gdk_window_add_filter (window, event_filter, context);

}

直接用vim贴入有可能会莫名其妙自动注释掉一些代码,要注意检查一下
2、编译为动态链接库
所需工具:gtk2-devel、glib2-devel
执行命令:

gcc -shared -o sublime_text_fcitx.so sublime_text_fcitx.c  `pkg-config –libs –cflags gtk+-2.0` -fPIC  

将该so文件复制到/opt/sublime_text目录下

3、设置LD_PRELOAD并启动sublime
LD_PRELOAD=./libsublime-imfix.so sublime_text
但是每次都这样启动太麻烦了,
网上有的用sh脚本启动,其实也挺麻烦的
事实上直接修改/usr/bin/sublime的内容即可

4、修改/usr/bin/sublime内容
把LD_PRELOAD的设置添加进去,最终的配置如下:

#!/bin/sh
export SUBLIME_HOME=/opt/sublime_text_3
LD_LIB=$SUBLIME_HOME/libsublime-imfix.so
LD_PRELOAD=$LD_LIB $SUBLIME_HOME/sublime_text $*