记录一次Arch上MariaDB,myeclipse,tomcat,还有AVD的坑


首先,mysql在arch上被MariaDB取代,这一点官方有说明:Archlinux 选择的 MySQL 实现被称为 MariaDB。 安装位于官方软件源的mariadb、libmariadbclient 和 mariadb-clients 软件包。 其它实现有 percona-server 和 Oracle mysqlAUR。

MariaDB

blob.png

直接去APP里搜索,或者

sudo yaourt -S mariadb

安装完成后,执行下面一条语句

 sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql

启动 mysqld 守护进程,运行安装脚本,然后重新启动守护进程:

sudo systemctl start mysqld
sudo mysql_secure_installation #请按提示确实是y还是n
sudo systemctl restart mysqld

Tip: 如果数据目录使用的不是 /var/lib/mysql,需要 编辑 mysqld.service 文件并将目录设置到 ExecStart 行.

MySQL 默认禁用客户端自动补全功能。要在整个系统中启用它,编辑 /etc/mysql/my.cnf,将 no-auto-rehash 替换为 auto-rehash。下次客户端启动时就会启用自动补全。

为数据库使用 UTF-8 编码

在 /etc/mysql/my.cnf 的 mysqld 下, 添加:

[mysqld]
init_connect = 'SET collation_connection = utf8_general_ci,NAMES utf8'
collation_server = utf8_general_ci
character_set_client = utf8
character_set_server = utf8

设置开机自启动

systemctl enable mariadb.service

为了简化管理过程,可用的管理前端有 dbeaver, mysql-workbench, Adminer 或 phpMyAdmin. mysql-workbench 和 MariaDB 并不完全兼容,但是可以执行基本任务。

我选择的是dbeaver,直接去官网下载,打开新建连接即可,图标创建和修改可以参考以前Ubuntu教程

myeclipse(普通用户安装)

推荐直接用最新的myeclipse 2017 ci4,否则会出现很多问题,设置打不开,无法切换主题,GTK3不支持,内置浏览器无法打开,myeclipse去官网下载,破解补丁去csdn下载

tomcat(用普通用户安装的myeclipse启动的tomcat不能是1024以内端口)

这个不要最新,也不要太久,现在我用的是8.5.9,有一个问题折腾了我很久,那就是以前我tomcat设置的80端口,但是现在端口未被占用,却一直提示被占用

使用命令查看

sudo netstat -nlt|grep 80

或者

sudo lsof -i:80

依旧没有发现80占用,经谷歌查阅发现:

Unix系统一直以来1024内的端口只对系统开发,就是说你得用root用户去执行,

以前我的Ubuntu正好就是用root用户安装的,所以可以正常使用80端口

经过查阅,只能使用iptables的规则转发实现80端口,网上有很多资料,可以自行查阅

Android studio的那些坑

Android studio好装,你可以考虑用命令行,也可以考虑自己下载了放在某个地方运行

sudo yaourt -S android-studio

唯一的不同是,自己装的得自己创建图标或者链接到bin,稍微麻烦一点点

值得一提的是AVD,这个困扰了我几天的无法启动的问题,之前看不到日志,一直不知道从哪里下手,

后来看到一些文章后,发现可以用命令的方式去终端启动avd,然后发现了bug所在

/run/media/lckiss/Facility/AS/Sdk/emulator/emulator -netdelay none -netspeed full -avd Nexus_5X_API_25

前面的路径,是你的sdk目录下的emulator文件夹,后面的路径是你的avd路径,因为avd路径是隐藏的,在终端执行的时候,有可能找不到问题,所以先在avd的路径下打开终端,比如你的位置是**/avd/Nexus_5X_API_25.avd,那么你只需要在avd里打开终端,不要去Nexus_5X_API_25.avd里,而且,后面不要带上.avd

然后就可以启动了,失败后,会显示日志

这样,就可以下手了,很明显的,上面写了,什么丢失,什么问题,谷歌一番后,得知是sdk的库文件与系统的不符合

第一种方法

手动用以下命令解决

 /run/media/lckiss/Facility/AS/Sdk/emulator/emulator -netdelay none -netspeed full -avd Nexus_5X_API_25 -use-system-libs

在后面加上,-use-system-libs,意思是用系统库文件,然后,可以启动了,

或者:

LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 /run/media/lckiss/Facility/AS/Sdk/emulator/emulator -netdelay none -netspeed full -avd Nexus_5X_API_25

指定库文件也可以

第二种解决办法

去avd manager->setting里的graphics由auto或者hardware改成software,即可,但是用软件驱动,会很卡.(不推荐)

第三种办法,替换库

网上一般都是说libstdc++.so.6这个库文件不兼容,但是我的并没有这个文件,所以不通用,但是从第一种方法看来,确实是那个文件出了问题,这一点问题没有

于是经过折腾,找到了,目录在sdk/emulator/lib64/libstdc++和lib/libstdc++而不是sdk/tools/lib64
去usr/lib64/和/lib分别找到libstdc++.so.6和libstdc++.so.6.**,然后复制到sdk对应的文件夹里,lib64对lib64,lib对lib,不出意外,你会发现你复制的要比自带的版本号高,我想这就是原因了

然后去avd manager里试吧,没毛病,搞定了.

这里几个包可以考虑安装下,mesa-libgl,mesa-demos,lib32-libgcrypt,lib32-virtualgl
另外还有一些命名问题会导致一系列错误,项目文件路径中不要有中文,_下划线,sdk目录路径不能有空格,等,最好全英文,然后会少很多问题,比如instance run

即便就是这么些小问题,依旧折腾了我一个下午.所以记录下来.

声明:TIL|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA[ZH]协议进行授权

转载:转载请注明原文链接 - 记录一次Arch上MariaDB,myeclipse,tomcat,还有AVD的坑


Life is very interesting. In the end, some of your greatest pains become your greatest strengths.