分类 Linux 下的文章

完整的报错信息如下:

There was an error while executing VBoxManage, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.
Command: ["startvm", "7130e2d3-3630-4c6c-b306-e96282ec6426", "--type", "headless"]
Stderr: VBoxManage: error: RawFile#0 failed to create the raw output file X:/development/env/xenial64/ubuntu-xenial-16.04-cloudimg-console.log (VERR_FILE_NOT_FOUND)
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component ConsoleWrap, interface IConsole

解决方法:
在Vagrantfile中关于virtualbox的部分做如下配置:

  config.vm.provider "virtualbox" do |vb|
  #   Display the VirtualBox GUI when booting the machine
  #   vb.gui = true
  #
  #   # Customize the amount of memory on the VM:
    vb.memory = "1024"
    vb.cpus = 2
  # Basebox ubuntu/xenial64 comes with following Vagrantfile config and causes https://github.com/joelhandwell/ubuntu_vagrant_boxes/issues/1
  # vb.customize [ "modifyvm", :id, "--uart1", "0x3F8", "4" ]
  # vb.customize [ "modifyvm", :id, "--uartmode1", "file", File.join(Dir.pwd, "ubuntu-xenial-16.04-cloudimg-console.log") ]
  # following config will address the issue
    vb.customize [ "modifyvm", :id, "--uartmode1", "disconnected" ]

  end

在办公室的电脑里装了虚拟机跑ElementaryOS,安装好所有更新和驱动之后发现系统分辨率竟然不支持1600*900,网上搜索的解决方案是手动添加分辨率。
详细过程记录如下:

先放上一张1440*900分辨率的美图:

2020-03-09 17-27-11 的屏幕截图.png

查询1600*900分辨率下的有效扫描频率。
终端中输入:

cvt 1600 900

输出

"1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync

然后输入以下命令新建分辨率

 sudo xrandr --newmode "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync 

给系统增加1600x900分辨率选项

sudo xrandr --addmode Virtual1 "1600x900_60.00"

添加开机启动脚本,实现永久设置正确的分辨率

sudo vim /etc/profile

在末尾增加如下脚本:

xrandr --newmode "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync 
xrandr --addmode Virtual1 "1600x900_60.00"

重新生成profile文件,让配置生效:

source /etc/profile

在系统设置-显示器中设置正确的分辨率,重启之后也会生效。

一入vscode深似海,即便是到了linux下,vscode依然是我首选的代码编辑器,除了真的很好用之外,关键是免费。
elementaryOS是基于Ubuntu18.08开发的,所以在ubuntu下安装vscode的方法同样适用与elementaryOS。

vscode for ubuntu界面

安装方法:

1.利用官方提供的Deb安装包

查看vscode官方安装说明:
https://code.visualstudio.com/docs/setup/linux,在Debian and Ubuntu based distributions这一段能找到deb包的下载地址,下载完成后:

sudo apt install ./<file>.deb

# If you're on an older Linux distribution, you will need to run this instead:
# sudo dpkg -i <file>.deb
# sudo apt-get install -f # Install dependencie

即可使用code了,真香啊。

2.借助第三方包管理器snap(不建议)

安装snap:

sudo apt update
sudo apt install snapd

安装vscode

sudo snap install --classic code # or code-insiders

为了更好的学习后端语言,在虚拟机里安装了elementaryOS,不得不说,界面做的确实漂亮,不过依然有很多坑,系统安装完成后的第一件事肯定是安装中文输入法咯。
以下命令在最新的elementaryOS(0.5.1)下测试通过:

卸载ibus

sudo apt-get remove ibus   // 卸载ibus
sudo apt-get remove scim 
sudo apt-get autoremove   // 删除依赖包
sudo apt-get -f install   // 修正安装过程中出现的依赖性关系

添加fcitx源

sudo add-apt-repository ppa:fcitx-team/nightly

出现以下问题:

add-apt-repository命令不存在
解决:

安装software-properties-common

apt install software-properties-common

更新软件源:

sudo apt-get update

出现以下问题:

E: 仓库 “http://ppa.launchpad.net/fcitx-team/nightly/ubuntu bionic Release” 没有 Release 文件。
N: 无法安全地用该源进行更新,所以默认禁用该源。
N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。

解决:
进入 /etc/apt/sources.list.d目录后重命名fcitx-team-ubuntu-nightly-bionic.list

cd /etc/apt/sources.list.d
sudo mv fcitx-team-ubuntu-nightly-bionic.list   fcitx-team-ubuntu-nightly-bionic.list .bak

更新软件源后安装fcitx

sudo apt-get update
sudo apt-get install im-switch fcitx fcitx-config-gtk fcitx-sunpinyin fcitx-module-cloudpinyin fcitx-googlepinyin   

安装完成后配置默认输入法

sudo im-config

执行后会弹出可视化配置窗口,按照提示配置,重启完成后即可使用Ctrl + Space 切换输入法,享受输入中文的顺滑吧

最终还是放弃了ThinkPHP,投向codeIgniter的怀抱,虽然说现在最有逼格的框架是Laravel,可是在连续两次使用Composer创建项目失败,并且看到vendor目录下令人作呕的文件目录结构以后,我想我这辈子可能都不会再想去碰Laravel了。好了,不吐嘈了。
下面是Ubuntu14.04下配置Apache2.4.7实现伪静态的过程:


- 阅读剩余部分 -

两年前在Openshift上搭建了个Ghost博客,后来一不小心忘记了密码,再也无法登陆,由于并没有给博客配置邮件服务器(在config.js文件中配置)。并且管理员邮箱也不是我的(因为是帮EX搭建的,所以用的是EX的QQ邮箱,这注定是一个悲伤的故事),通过邮件找回密码这种非常中二的思路根本不可行,只能通过修改数据库来实现密码重置,幸好当初默认选择的是sqlite数据库,现将重置密码的操作记录如下:

- 阅读剩余部分 -

在Ubuntu终端里执行安装操作时出现以下错误,提示无法锁定管理目录。
Error:

E: 无法获得锁 /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?



- 阅读剩余部分 -

决定扔掉那些集成开发环境,今后的学习和开发均在vagrant+virtual+ubuntu下完成。vagrant的搭建可以说是非常快捷了,其原理就是将依赖环境搭建在虚拟机中,然后将本地文件(宿主机)映射到虚拟机并实现访问。即便如此,在搭建过程中依然有不少的坑要填。

安装vagrant 和 virtualbox

日常的工作和学习,我基本上都是在win7和MacOS下完成的,因此使用vagrant可以帮助我非常容易的实现在不同系统下部署完全一致的开发环境。
之所以在2017年的今天还在使用Ubuntu 14.04是因为这台Win7机器下只有低于Ubuntu14.04(含)的版本的Box盒子才能正常跑起来,主要是受vagrant版本太低的限制。
win7 下应当采用vagrant 1.9.3+ Virtualbox 5.1.3的组合,否则会出现各种像无法启动box,启动box后卡在密钥验证那里无法进入系统等奇葩问题,官方给出的解释是,win7最高支持到1.9.3。
Mac 10.12 下可以直接安装最新版,直接去官网下载最新的DMG安装包安装就好。

目录设置

 └─trusty32  
     ├─.vagrant
     │  └─machines
     │  └─default
     │  └─virtualbox
     └─www   # 共享目录,宿主机文件和虚拟机同步目录

Vagrantfile配置(分配IP和共享目录)

config.vm.network "private_network", ip: "192.168.33.20" 指定虚拟机IP为 192.168.33.20

config.vm.synced_folder "./www", "/vagrant/www/", :mount_options => ["dmode=777","fmode=777"] 分配共享目录,即trusty32下的www的目录挂载在虚拟机/vagrant/www目录下。

vagrant和virtualbox的安装非常简单,不再赘述。主要记录ubuntu 14.04下搭建PHP7+Mysql+Apache2.4+Adminer的过程:

安装Apache

更新镜像源:sudo apt-get update && sudo apt-get upgrade

安装Apache2.4: sudo apt-get install apache2。安装完成在浏览器输入192.168.33.20,看到Apache2 Ubuntu Default Page: It Works!则说明Apache2安装成功。

安装 Mysql

wget http://dev.mysql.com/get/mysql-apt-config_0.6.0-1_all.deb 下载MYSQL5.7安装包
sudo dpkg -i mysql-apt-config_0.6.0-1_all.deb 添加到库
sudo apt-get update 更新软件源
sudo apt-get install mysql-server 安装Mysql服务

安装过程中会要求输入root密码。

安装完成后输入 mysql -uroot -p登入Mysql服务器验证是否成功安装了mysql服务

安装PHP7.0

sudo apt-get install php7.0 php7.0-cli php7.0-fpm php7.0-gd php7.0-json php7.0-mysql php7.0-readline php7.0-xml php7.0-mbstring php7.0-curl

整合

整合PHP与Mysql

sudo apt-get install php7.0-mysql

整合PHP与Apache
sudo apt-get install libapache2-mod-php7.0
重启Apache sudo service apache2 restart

验证

在apache默认网页目录下新建info.php
sudo vi info.php

<?php
echo mysqli_connect('localhost','root','root')?"数据库连接成功":"数据库连接出错";
phpinfo();

最近的开发学习全部转入了Vagrant下,不得不说vagrant真的是神器,除了首次配置麻烦点之外,迁移起来还真是方便,这里记录一下如何在一个minimal的ubuntu12.04下配置Apache2服务器的详细方法。

- 阅读剩余部分 -

网上下载的很多源码在安装的时候都需要通过Composer来安装,这类源码包里通常包含 composer.json 和 composer.lock 两个文件,其中composer.json里申明了源码在运行时所要依赖的环境组件,使用Composer来安装安装某个源码包时的好处就是可以确保在源码包安装的同时,所依赖的组件也会被安装,由此看来,composer实际上是一种依赖管理工具。

- 阅读剩余部分 -