记一次编译php5.3的openssl错误解决

错误如下:
/usr/lib/x86_64-linux-gnu/libcrypto.so.1.0.0: error adding symbols: DSO missing from command line

/usr/lib/x86_64-linux-gnu/libssl.so.1.0.0: error adding symbols: DSO missing from command line
等其他类似错误

解决方法:
Make zend_extra_libs=’-lssl -lcrypto’

或在 Makefile 中找到 EXTRA_LIBS后增加 -lssl -lcrypto 即可

2016年11月28日 RabbitMQ 笔记

管理操作

停止服务:
rabbitmqctl stop

添加删除用户
rabbitmqctl add_user|delete_user username

修改用户密码
rabbitmqctl change_password username password

设置用户组
rabbitmqctl set_user_permissions username administrator|mointoring|management

设置用户权限 (conf/write/read为正则表达式)
rabbitmqctl set_permissions -p vhost user conf write read

ArchLinux网络配置

使用工具 netctl

  • 获取网卡名称ip link
    1. lo xxxxx
    2. enp0s3 xxxxx
  • 编写网络配置文件 netctl edit enp0s3-dhcp

    Description=’enp0s3 dhcp’
    Interface=enp0s3 #指定网卡名称
    Connection=ethernet # 指定网络类型 wifi等其他
    IP=dhcp # dhcp获取
    DHCPClient=dhcpd # dhcp客户端可选dhcpcd和dhclient 默认dhclient
    DHCPReleaseOnStop=no #你懂的
    IP6=dhcp # 是否允许IPv6
    DHCP6Client=dhccpcd # IPv6 DHCP客户端

  • 启动netctl start enp0s3-dhcp

  • 加入到systemd并开启机自动启动 netctl enable enp0s3-dhcp

zsh HOME键和END键失效的解决

~/.zshrc文件追加如下内容进行keybind:

#Rebind HOME and END to do the decent thing:
bindkey '\e[1~' beginning-of-line
bindkey '\e[4~' end-of-line
case $TERM in (xterm*)
bindkey '\eOH' beginning-of-line
bindkey '\eOF' end-of-line
esac

#To discover what keycode is being sent, hit ^v
#and then the key you want to test.

#And DEL too, as well as PGDN and insert:
bindkey '\e[3~' delete-char
bindkey '\e[6~' end-of-history
bindkey '\e[2~' redisplay

#Now bind pgup to paste the last word of the last command,
bindkey '\e[5~' insert-last-word

Archlinux GPT+(U)EFI安装总结

启动

通过efi启动进入arch安装

关于分区

分区工具parted

创建GPT分区表mklabel gpt yes 清空全盘。(危险操作)

创建分区mkpart primary 0K 512M 给ESP其他自由分配。

设置启动 set 1 boot on

格式化ESP为vfat格式mkfs.vfat /dev/disk1

在给 (U)EFI 分区输入 Hex Code 时, 输入 EF00

挂载

mount /dev/disk2 /mnt
mkdir -p /boot/efi && mount -t vfat /dev/disk1 /mnt/boot/efi

安装基本系统

pacstrap /mnt base base-devel

进入系统

arch-chroot /mnt

使grub支持efi

pacman -S efibootmgr grub-efi-x86_64 grub-bios

创建引导

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=arch-grub --recheck

grub-mkconfig -o /boot/grub/grub.cfg

重启进入系统

退出chroot
exit
重启
reboot

ArchLinux的pacman命令详解

安装软件包

安装或者升级单个软件包,或者一列软件包(包含依赖包),使用如下命令:

pacman -S package_name1 package_name2

有时候在不同的软件仓库中,一个软件包有多个版本(比如extra和testing)。你可以选择一个来安装:

pacman -S extra/package_name
pacman -S testing/package_name

删除软件包
删除单个软件包,保留其全部已经安装的依赖关系

pacman -R package_name

删除指定软件包,及其所有没有被其他已安装软件包使用的依赖关系:

pacman -Rs package_name

缺省的,pacman会备份被删除程序的配置文件,将它们加上*.pacsave扩展名。如果你在删除软件包时要同时删除相应的配置文件(这种行为在基于Debian的系统中称为清除purging),你可是使用命令:

pacman -Rn package_name

当然,它也可以加上-s参数来删除当前无用的依赖。这样的话,真正删除一个软件包、它的配置文件以及所有不再需要的依赖的命令如下:

pacman -Rsn package_name

注意!Pacman不会删除软件包安装后才创建的配置文件。你可以从你的home文件夹中手动删除它们。

升级系统
Pacman能够只用一个指令来升级系统中所有已安装的包。升级的时间取决于你的系统有多新。

pacman -Su

当然,最好做法的是将升级系统和同步仓库数据合成为一条指令:

pacman -Syu

查询包数据库
Pacman可以在包数据库中查询软件包,查询位置包含了包的名字和描述:

pacman -Ss package

要查询已安装的软件包:

pacman -Qs package

一旦你得到了软件包的完整名字,你可以获取关于它的更为详尽的信息:

pacman -Si package
pacman -Qi package

要获取已安装软件包所包含文件的列表:

pacman -Ql package

你也可以通过查询数据库获知目前你的文件系统中某个文件是属于哪个软件包。

pacman -Qo /path/to/a/file

要罗列所有不再作为依赖的软件包(孤立orphans):

pacman -Qdt

Pacman使用-Q参数来查询本地软件包数据库。参见:

pacman -Q –help

…而使用-S参数来查询远程同步的数据库。参见:

pacman -S –help

详情可参见pacman man。

其它用法
Pacman是个非常广泛的包管理工具,这里只是它的一些其它主要特性。

下载包而不安装它:

pacman -Sw package_name

安装一个’本地’包(不从源里):

pacman -U /path/to/package/package_name-version.pkg.tar.gz

安装一个’远程’包(不从源里):

pacman -U http://url/package_name-version.pkg.tar.gz

清理当前未被安装软件包的缓存(/var/cache/pacman/pkg):

pacman -Sc

完全清理包缓存:

pacman -Scc

Warning: 关于pacman -Scc,仅在你确定不需要做任何软件包降级工作时才这样做。pacman -Scc会从缓存中删除所有软件包。
要删除孤立软件包(递归的,要小心):

pacman -Rs $(pacman -Qtdq)

重新安装你系统中所有的软件包(仓库中已有的):

pacman -S $(pacman -Qq | grep -v “$(pacman -Qmq)”)

获取本地软件包和它们大小的一个已排序清单列表:

LANG=C pacman -Qi | sed -n ‘/^Name[^:]*: (.)/{s//\1 /;x};/^Installed[^:]: (.*)/{s//\1/;H;x;s/\n//;p}’ | sort -nk2

要了解更详细的参数开关可以pacman –help或者man pacman。

配置
Pacman的配置文件位于/etc/pacman.conf。关于配置文件的进一步信息可以用man pacman.conf查看。

常用选项
常用选项都在[options]段。阅读man手册或者查看缺省的pacman.conf可以获得有关信息和用途。

跳过升级软件包
如果由于某种原因,你不希望升级某个软件包,可以加入内容如下:

IgnorePkg = 软件包名

跳过升级软件包组
和软件包一样,你也可以象这样跳过升级某个软件包组:

IgnoreGroup = gnome

附注:
ArchLinux的版本库里面包括:
core-核心软件包
extra-其他常用软件
community-社区软件包,譬如Mysql等。
testing-正在测试阶段,还没有正式加入源的软件包。通常软件版本比较新,但是不是非常稳定
release-已经发布的软件包
unstable-非正式的软件包,可能包括以前版本的软件或者测试软件

因为Pacman的软件都是从源里面更新,因此在/etc/pacman.d里面配置这些软件源的地址。
在/etc/pacman.d目录里面分别有上面几种软件类型对应的文件名,可以自己手工配置这些软件源的地址。

Ubuntu 16.04 LTS 正式发布

就在刚刚Canonical正式发布了Ubuntu 16.04 LTS (Xenial Xerus) 长期支持版本,官方会提供长达5年的技术支持(包括常规更新/Bug修复/安全升级),一直到2021年4月份。

16.04最大的变化就是采用了Linux 4.4版系统内核,同时对几乎所有系统应用都进行了升级,包括LibreOffice 5.1.2、Mozilla Firefox 45.0.2、Python 3.5、OpenSSH 7.2p2、PHP 7.0、MySQL 5.7、GCC 5.3、Binutils 2.26、Glibc 2.23、Apt 1.2、GNOME 3.18 Stack,并支持安装snap格式。

驱动方面AMD官方的fglrx显卡驱动、xorg.conf均被移除,使用开源的Radeon、AMDGPU

正式支持了ZFS ( https://insights.ubuntu.com/2016/02/18/zfs-licensing-and-linux/

官方下载地址:
http://releases.ubuntu.com/16.04/

已升级至php7.0.0-dev

探针地址:https://www.cevin.me/phpinfo.php

编译参数(记住buildconf):

./configure –prefix=/usr/local/php7 –with-config-file-path=/usr/local/php/etc –with-jpeg-dir –with-gd –with-png-dir –with-freetype-dir –with-mhash –with-mcrypt –with-openssl –with-curl –without-pear –with-libxml-dir –with-zlib –enable-bcmath –enable-exif –enable-ftp –with-gettext –enable-mbstring –with-mysql=mysqlnd –with-pdo-mysql=mysqlnd –with-mysqli=mysqlnd –enable-soap –enable-zip –with-iconv-dir –enable-fpm –with-pdo-pgsql=/usr/local/pgsql –with-pgsql=/usr/local/pgsql –enable-sockets –enable-mysqlnd

php7-dev最新版本源码:https://github.com/php/php-src/archive/master.zip

弱弱的说一下:性能提升明显 🙂

Systemd脚本规范

/etc/systemd/system/pgsql.service

[Unit]
Description=PostgreSQL-XL Master Node

[Service]
Type=forking
User=pgsql
GuessMainPID=yes
ExecStart=/usr/local/pgxl/bin/pg_ctl -D /data/pg-hma -l /data/pglog/hma start
ExecStop=/usr/local/pgxl/bin/pg_ctl -D /data/pg-hma -l /data/pglog/hma stop
# 如果进程意外终止自动重新启动 systemctl 结束不会自动重启
Restart=always

[Install]
WantedBy=multi-user.target

启动: systemctl start pgsql
状态:systemctl status pgsql

mysql:

[Unit]
Description=MySQL RDBMS

[Service]
#类型simple
Type=simple
GuessMainPID=yes
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/my.cnf
Restart=always

[Install]
WantedBy=multi-user.target

了解更多点击这里:https://zh.opensuse.org/openSUSE:How_to_write_a_systemd_service