解决ubuntu 16.04下adb shell报错"error: insufficient permissions for device"

最近在ubuntu 16.04下执行adb shell,时候报告如下错误:

$ adb shell
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
error: insufficient permissions for device

原因为当前用户的权限不能调用系统底层的一些权限,需要提权,使用sudo执行即可解决此问题。

$ sudo adb kill-server

$ sudo adb shell

Apple的官方开源项目网站

Apple的开源其实做得很棒!http://www.opensource.apple.com/,这个Apple的官方开源网站真的是一个大宝藏。真的是不怕你知道,就怕你学不完。

WebKit就不用说了。在OS X和iOS分类下,有对应的WebKit的版本号,这里也可以快速知道相应操作系统里使用的WebKit版本。
Objective-C Runtime。objc运行时是如何工作的?如何使用mach-o里的__TEXT.__objc_xxx和__DATA._objc_xxx(__OBJC segment现在没有了?)?可以查看OS X分类下某个系统版本下的objc4-XXX目录。
Libc。想知道c库里的某个函数如何实现?可以查看OS X分类下某个系统版本下的Libc-XXX目录。
xnu。想学习内核?可以查看OS X分类下某个系统版本下的xnu-XXX目录。
想了解和学习各种工具如何实现?otool?nm?可以查看Developer Tools分类下某个Xcode版本下的cctools-XXX目录。nm.c就在这个目录里的msic目录里。
还有很多很多。。。
某个主题目录可以直接下载,而且,有一些主题里会有Xcode project文件,这样可以很方便查看和搜索。另外,某些主题的源代码应该是不完全的,不同的操作系统版本里会有不同,如果某个主题里的某个源代码在新的操作系统里没有找到,可以尝试在旧的操作系统里找一下。

http://www.opensource.apple.com/,你值得拥有!

参考链接


Apple Open Source

Xcode 10.1清除最近打开的工程

如果直接点击屏幕下方的Xcode图标,回弹出一个Xcode的启动框,右边会列出你最近打开过的工程,如果想清除这些记录,就点击Xcode的菜单栏的“File”菜单,然后选择 Open Recent ,然后就能看到Clear Menu了,点击后,再次启动Xcode就看不到先前打开过的工程了。

参考链接


Xcode清除最近打开的工程

在macOS Mojave (10.14.1)系统上使用Xcode 10.1导入IOKit Framework开发

尝试在在macOS Mojave (10.14.1)系统上使用Xcode 10.1进行IOKit Framework相关的开发,没有在网上找到合适的例子,自己摸索了一下步骤。

继续阅读在macOS Mojave (10.14.1)系统上使用Xcode 10.1导入IOKit Framework开发

解决macOS Mojave(10.14/10.14.1)无法删除从应用商店下载的macOS High Sierra安装文件

解决macOS Mojave(10.14/10.14.1)无法删除从应用商店下载的macOS High Sierra安装文件,现象如下图:
继续阅读解决macOS Mojave(10.14/10.14.1)无法删除从应用商店下载的macOS High Sierra安装文件

修正ubuntu 16.04.5系统上vsftpd服务无法启动的问题

一直使用的服务器使用的是ubuntu 16.04.5,默认启用了vsftpd服务。但是最近在执行软件更新之后,出现vsftpd服务无法启动的问题。

当时是按照 Centos/Ubuntu FTP服务器的架设和配置 进行配置的。

具体的错误信息如下:

root@xxxx:~# service vsftpd status
● vsftpd.service - vsftpd FTP server
   Loaded: loaded (/etc/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sat 2018-11-03 20:36:08 CST; 1min 53s ago
  Process: 31620 ExecStart=/usr/sbin/vsftpd /etc/vsftpd.conf (code=exited, status=2)
  Process: 31617 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS)
 Main PID: 31620 (code=exited, status=2)

Nov 03 20:36:08 xxxx systemd[1]: Starting vsftpd FTP server...
Nov 03 20:36:08 xxxx systemd[1]: Started vsftpd FTP server.
Nov 03 20:36:08 xxxx systemd[1]: vsftpd.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Nov 03 20:36:08 xxxx systemd[1]: vsftpd.service: Unit entered failed state.
Nov 03 20:36:08 xxxx systemd[1]: vsftpd.service: Failed with result 'exit-code'
root@xxxx:~# sudo systemctl status vsftpd.service
● vsftpd.service - vsftpd FTP server
   Loaded: loaded (/etc/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sat 2018-11-03 20:47:51 CST; 1min 34s ago
  Process: 31820 ExecStart=/usr/sbin/vsftpd /etc/vsftpd.conf (code=exited, status=2)
  Process: 31817 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, status=0/SUCCESS)
 Main PID: 31820 (code=exited, status=2)

Nov 03 20:47:51 xxxx systemd[1]: Starting vsftpd FTP server...
Nov 03 20:47:51 xxxx systemd[1]: Started vsftpd FTP server.
Nov 03 20:47:51 xxxx systemd[1]: vsftpd.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Nov 03 20:47:51 xxxx systemd[1]: vsftpd.service: Unit entered failed state.
Nov 03 20:47:51 xxxx systemd[1]: vsftpd.service: Failed with result 'exit-code'.

从错误信息中,我们可以看到返回的错误信息如下:

Process: 31820 ExecStart=/usr/sbin/vsftpd /etc/vsftpd.conf (code=exited, status=2)

错误代码为2,查询Linux的系统错误代码,错误信息为"errno2 : No such file or directory"。

打开/etc/vsftpd.conf,可以看到,里面的配置文件中

# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/ssl/private/vsftpd.pem

我们发现已经找不到这个SSL证书了。

解决方法如下:

1.首先移除已经安装好的服务,并且删除配置文件

$ sudo apt-get remove --purge vsftpd 

$ sudo apt-get install vsftpd

然后按照 Centos/Ubuntu FTP服务器的架设和配置 重新配置一遍。安装的时候,会自动搜寻系统已经安装的有效证书,如果找不到,会自己生成一份证书。

2.也可以手工生成一份自签名的证书,推荐这个方法

$ sudo openssl req -x509 -nodes -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem -days 365 -newkey rsa:2048

参考链接


How to secure VSFTPD FTP Server using a self-signed SSL/TLS certificate in CentOS 7 – FTPS

WD MyCloud编译git-2.19

目前,能编译通过,但是安装的时候,依赖关系不正确,估计还是需要继续调整编译配置文件才行。
1.按照How to successfully build packages for WD My Cloud from source中的介绍,搭建完成WDMyCloud的编译环境2.从高版本Debian源里下载git-2.19的源代码包,然后手工编译,如下:

$ cd ~/wdmc-build/64k-wheezy

#https://packages.debian.org
$ su

$ cd build/root

$ mkdir git

$ cd git

$ wget http://http.debian.net/debian/pool/main/g/git/git_2.19.1+next.20181026.orig.tar.gz

$ wget http://http.debian.net/debian/pool/main/g/git/git_2.19.1+next.20181026-1.debian.tar.xz

$ cd ../../../ 

$ chroot build

$ mount -t proc none /proc
$ mount -t devtmpfs none /dev
$ mount -t devpts none /dev/pts

$ export DEBIAN_FRONTEND=noninteractive
$ export DEBCONF_NONINTERACTIVE_SEEN=true
$ export LC_ALL=C
$ export LANGUAGE=C
$ export LANG=C
$ export DEB_CFLAGS_APPEND='-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE'
$ export DEB_BUILD_OPTIONS=nocheck

$ cd root/git

# 当前的压缩文件,解压缩出的文件目录是”0250525e“
$ tar xvf *.orig.tar.gz

$ tar xvf *.debian.tar.xz -C 0250525e/

$ cd 0250525e

# 解决不能正确编译的问题
$ sed -i "s/dh \$\@ --with apache2/dh \$\@/g" debian/rules

# 交叉编译的程序,测试用例不能完全通过,我们关闭测试用例这部分
$ sed -i "s/^TEST[ \t]*=[ \t]*test/TEST=/g" debian/rules

# 安装依赖
$ apt-get update

$ apt-get upgrade

$ apt-get install asciidoc

# 此版本git默认不使用openssl,因此安装 libcurl4-gnutls-dev 而不是 ibcurl4-openssl-dev
$ apt-get install libcurl4-gnutls-dev

$ apt-get install  libpcre2-dev

# DEB_BUILD_OPTIONS="nocheck nodoc" 不需要测试用例,不需要帮助文档, 目前如果设置了"nodoc",最后打包的时候会缺少文件
$ DEB_BUILD_OPTIONS="nocheck" dpkg-buildpackage -d -b -uc

如果出现如下错误信息:

make[1]: Entering directory `/root/git/0250525e'
dh_install --arch
Can't exec "/root/git/0250525e/debian/git.install": No such file or directory at /usr/share/perl5/Debian/Debhelper/Dh_Lib.pm line 643.
dh_install: cannot run debian/git.install: No such file or directory
make[1]: *** [override_dh_install-arch] Error 2
make[1]: Leaving directory `/root/git/0250525e'
make: *** [binary] Error 2
dpkg-buildpackage: error: debian/rules binary gave error exit status 2

原因是低版本的系统上缺少几个无关紧要的文件,直接忽略这部分即可:

$ rm -rf debian/git.install

$ rm -rf debian/git-el.install

# 重新编译
$ DEB_BUILD_OPTIONS="nocheck" dpkg-buildpackage -d -b -uc

如果出现如下错误信息:

dh_installdeb: unknown dpkg-maintscript-helper command: dir_to_symlink
make: *** [binary] Error 25
dpkg-buildpackage: error: debian/rules binary gave error exit status 2

原因为dpkg的版本太低,导致部分命令无法正确执行,执行如下命令即可:

$ rm -rf debian/git.maintscript

# 重新编译 
$ DEB_BUILD_OPTIONS="nocheck" dpkg-buildpackage -d -b -uc

 

如果上述源代码的下载存在问题,可以本站下载一份文件拷贝:

git_2.19.1+next.20181026.orig.tar

git_2.19.1+next.20181026-1.debian.tar

参考链接