{ "version": "https://jsonfeed.org/version/1.1", "user_comment": "This feed allows you to read the posts from this site in any feed reader that supports the JSON Feed format. To add this feed to your reader, copy the following URL -- https://matoken.org/blog/category/linux/ubuntu/bionic-beaver18-04lts/feed/json/ -- and add it your reader.", "home_page_url": "https://matoken.org/blog/category/linux/ubuntu/bionic-beaver18-04lts/", "feed_url": "https://matoken.org/blog/category/linux/ubuntu/bionic-beaver18-04lts/feed/json/", "language": "ja", "title": "Bionic Beaver(18.04LTS) – matoken's blog", "description": "Is there no plan B?", "icon": "https://matoken.org/blog/wp-content/uploads/2025/03/cropped-1865f695c4eecc844385acef2f078255036adccd42c254580ea3844543ab56d9.jpeg", "items": [ { "id": "http://matoken.org/blog/?p=2687", "url": "https://matoken.org/blog/2019/12/14/smbget-password-specification/", "title": "smbget\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u6307\u5b9a", "content_html": "
\n
\n
\n

samba\u306e\u901f\u5ea6\u3092\u6e2c\u308b\u306e\u306bsamba\u3092wget\u306e\u3088\u3046\u306b\u4f7f\u3048\u308b smbget \u3092\u4f7f\u304a\u3046\u3068\u3057\u305f\u306e\u3067\u3059\u304c\u4ee5\u524d\u4f7f\u3048\u3066\u3044\u305f\u6c17\u304c\u3059\u308b -p \u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u7121\u304f\u306a\u3063\u3066\u3044\u307e\u3059\uff0e

\n
\n
\n
\n
$ bash -c \"read -sp \\\"passwd: \\\" passwd; smbget smb://smbhost/share/data -U user -p $passwd -O > /dev/null\"\npasswd: -p: unknown option
\n
\n
\n
\n

usage\u3092\u898b\u308b\u3068\u78ba\u304b\u306b\u3042\u308a\u307e\u305b\u3093\uff0e

\n
\n
\n
\n
$ smbget --usage\nUsage: smbget [-?aneruRODqv] [-?|--help] [--usage] [-w|--workgroup=STRING] [-U|--user=STRING] [-a|--guest] [-n|--nonprompt] [-d|--debuglevel=INT] [-e|--encrypt]\n        [-r|--resume] [-u|--update] [-R|--recursive] [-b|--blocksize=INT] [-o|--outputfile=STRING] [-O|--stdout] [-D|--dots] [-q|--quiet] [-v|--verbose]\n        [-f|--rcfile=STRING]
\n
\n
\n
\n

-p\u3092\u7121\u304f\u305b\u3070\u30d7\u30ed\u30f3\u30d7\u30c8\u304c\u51fa\u3066\u304d\u307e\u3059\u304c\u6bce\u56de\u5165\u529b\u3059\u308b\u306e\u306f\u9762\u5012\u306a\u306e\u3067\u3069\u3046\u306b\u304b\u51fa\u6765\u306a\u3044\u304b\u306a\u3068man\u3092\u898b\u3066\u307f\u307e\u3059\uff0e

\n
\n
\n
man smbget
\n
\n
       -U, --user=username[%password]\n           Username (and password) to use
\n
\n
\n
\n

-U \u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u4e00\u7dd2\u306b\u66f8\u3051\u308b\u3088\u3046\u3067\u3059\uff0e\u30c7\u30df\u30ea\u30bf\u306f\u8981\u3089\u306a\u3044\u3088\u3046\uff0e

\n
\n
\n
\n
$ bash -c \"read -sp \\\"passwd: \\\" passwd; smbget smb://smbhost/share/data -U user$passwd -O > /dev/null\"
\n
\n
\n
\n

\u30c7\u30df\u30ea\u30bf\u306b : \u3092\u6307\u5b9a\u3057\u3066\u3082\u52d5\u304d\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
$ bash -c \"read -sp \\\"passwd: \\\" passwd; smbget smb://smbhost/share/data -U user:$passwd -O > /dev/null\"
\n
\n
\n
\n

\u4ed6\u306b\u3082SMB URL\u306b\u3082\u66f8\u3051\u308b\u3088\u3046\u3067\u3059\uff0e

\n
\n
\n
man smbget
\n
\n
SMB URLS\n       SMB URL's should be specified in the following format:\n\n           smb://[[[domain;]user[:password@]]server[/share[/path[/file]]]]
\n
\n
\n
\n

\u305f\u3060\u3057\uff0c\u3053\u306e\u66f8\u304d\u65b9\u3060\u3068SMB URL\u304c\u74b0\u5883\u5909\u6570\u304c\u5c55\u958b\u3055\u308c\u3066STDOUT\u306b\u8868\u793a\u3055\u308c\u308b\u306e\u3067\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u96a0\u3057\u305f\u3044\u5834\u5408\u306f\u4f7f\u3048\u307e\u305b\u3093\uff0e

\n
\n
\n
\n
$ bash -c \"read -sp \\\"passwd: \\\" passwd; smbget smb://user:$passwd@smbhost/share/data -O > /dev/null\"\nsmb://user:password@smbhost/share/data(100.00%) at 130.69MB/s ETA: 00:00:0008\nDownloaded 2.17GB in 17 seconds
\n
\n
\n
\n

\u305d\u308c\u3092\u8a00\u3046\u3068 -U \u306e\u5834\u5408\u3082\u30d7\u30ed\u30bb\u30b9\u306b\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u8868\u793a\u3055\u308c\u3066\u3057\u307e\u3046\u306e\u3067\u3042\u307e\u308a\u3088\u308d\u3057\u304f\u306a\u3044\u3067\u3059\u306d\uff0e\u3066\u3053\u3068\u3067\u3068\u308a\u3042\u3048\u305a\u3053\u3093\u306a\u611f\u3058\u306a\u3089\u3044\u3044\u304b\u306a?

\n
\n
\n
\n
$ bash -c \"read -sp \\\"passwd: \\\" passwd; echo $passwd | smbget smb://smbhost/share/data -U user -O > /dev/null\"
\n
\n
\n
\n

\u3053\u306e\u3068\u304d\u306e\u30d7\u30ed\u30bb\u30b9

\n
\n
\n
\n
$ ps -ef|grep smbget\nmk       12626 14620  0 22:38 pts/6    00:00:00 bash -c read -sp \"passwd: \" passwd; echo $passwd | smbget smb://smbhost/share/data -U user -O > /dev/null\nmk       13263 12626 49 22:39 pts/6    00:00:00 smbget smb://smbhost/share/data -U user -O
\n
\n
\n
\n

\u3042\u308c?\u7d50\u5c40\u6700\u521d\u306b\u623b\u3063\u3066\u2026\u2026\uff0e

\n
\n
\n
\n
\n

\u4f59\u9332(\u30ad\u30e3\u30c3\u30b7\u30e5\u30af\u30ea\u30a2)

\n
\n
\n

\u901f\u5ea6\u3092\u6e2c\u308a\u305f\u3044\u3051\u30692\u56de\u76ee\u4ee5\u964d\u306f\u30ad\u30e3\u30c3\u30b7\u30e5\u3055\u308c\u3066\u3057\u307e\u3046\u306e\u3067\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30af\u30ea\u30a2\u3057\u3066\u6e2c\u308b\uff0e
\n\u4ee5\u4e0b\u306flocalhost\u3067\u8a66\u3057\u3066\u308b\u306e\u3067\u5dee\u304c\u51fa\u3066\u3044\u308b\u304c\uff0c\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u7d4c\u7531\u3060\u3068\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u304c\u30dc\u30c8\u30eb\u30cd\u30c3\u30af\u306b\u306a\u308a\u5dee\u304c\u51fa\u306a\u304b\u3063\u305f\uff0e\u3067\u3082\u4e00\u5fdc\u3084\u3063\u3066\u304a\u304f\uff0e

\n
\n
\n
1\u56de\u76ee
\n
\n
smb://smbhost/share/data(100.00%) at 28.12MB/s ETA: 00:00:00434\nDownloaded 2.17GB in 79 seconds
\n
\n
\n
\n
2\u56de\u76ee
\n
\n
smb://smbhost/share/data(100.00%) at 130.69MB/s ETA: 00:00:0008\nDownloaded 2.17GB in 17 seconds
\n
\n
\n
\n
\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30af\u30ea\u30a2
\n
\n
$ sudo sh -c \"sync; echo 3 > /proc/sys/vm/drop_caches\"
\n
\n
\n
\n
\u3082\u3046\u4e00\u56de
\n
\n
smb://smbhost/share/data(100.00%) at 27.43MB/s ETA: 00:00:0044\nDownloaded 2.17GB in 81 seconds
\n
\n
\n
\n

\u203b/proc/sys/vm/drop_caches \u306b\u3064\u3044\u3066\u306fKernel Documents\u306e admin-guide/sysctl/vm.rst.gz \u3042\u305f\u308a\u3092\u53c2\u7167\u306e\u3053\u3068\uff0e

\n
\n
\n
\n
\n

$ zgrep ^drop_caches -A42 /usr/share/doc/linux-doc-5.3/Documentation/admin-guide/sysctl/vm.rst.gz

\n
\n
\n
\n
\n
\n
\n

\u53c2\u8003URL

\n
\n\n
\n
\n
\n

\u74b0\u5883

\n
\n
\n
\u74b0\u58831
\n
\n
$ dpkg-query -W samba smbclient bash\nbash    4.4.18-2ubuntu1.2\nsamba   2:4.7.6+dfsg~ubuntu-0ubuntu2.14\nsmbclient       2:4.7.6+dfsg~ubuntu-0ubuntu2.14\n$ lsb_release -dr\nDescription:    Ubuntu 18.04.3 LTS\nRelease:        18.04\n$ uname -rvm\n4.15.0-72-generic #81-Ubuntu SMP Tue Nov 26 12:20:02 UTC 2019 x86_64
\n
\n
\n
\n
\u74b0\u58832
\n
\n
$ dpkg-query -W samba smbclient bash\nbash    5.0-5\nsamba   2:4.11.1+dfsg-3\nsmbclient       2:4.11.1+dfsg-3\n$ lsb_release -dr\nDescription:    Debian GNU/Linux bullseye/sid\nRelease:        unstable\n$ uname -rvm\n5.3.0-3-amd64 #1 SMP Debian 5.3.15-1 (2019-12-07) x86_64
\n
\n
\n
\n
\n", "content_text": "samba\u306e\u901f\u5ea6\u3092\u6e2c\u308b\u306e\u306bsamba\u3092wget\u306e\u3088\u3046\u306b\u4f7f\u3048\u308b smbget \u3092\u4f7f\u304a\u3046\u3068\u3057\u305f\u306e\u3067\u3059\u304c\u4ee5\u524d\u4f7f\u3048\u3066\u3044\u305f\u6c17\u304c\u3059\u308b -p \u30aa\u30d7\u30b7\u30e7\u30f3\u304c\u7121\u304f\u306a\u3063\u3066\u3044\u307e\u3059\uff0e\n\n\n\n$ bash -c \"read -sp \\\"passwd: \\\" passwd; smbget smb://smbhost/share/data -U user -p $passwd -O > /dev/null\"\npasswd: -p: unknown option\n\n\n\nusage\u3092\u898b\u308b\u3068\u78ba\u304b\u306b\u3042\u308a\u307e\u305b\u3093\uff0e\n\n\n\n$ smbget --usage\nUsage: smbget [-?aneruRODqv] [-?|--help] [--usage] [-w|--workgroup=STRING] [-U|--user=STRING] [-a|--guest] [-n|--nonprompt] [-d|--debuglevel=INT] [-e|--encrypt]\n [-r|--resume] [-u|--update] [-R|--recursive] [-b|--blocksize=INT] [-o|--outputfile=STRING] [-O|--stdout] [-D|--dots] [-q|--quiet] [-v|--verbose]\n [-f|--rcfile=STRING]\n\n\n\n-p\u3092\u7121\u304f\u305b\u3070\u30d7\u30ed\u30f3\u30d7\u30c8\u304c\u51fa\u3066\u304d\u307e\u3059\u304c\u6bce\u56de\u5165\u529b\u3059\u308b\u306e\u306f\u9762\u5012\u306a\u306e\u3067\u3069\u3046\u306b\u304b\u51fa\u6765\u306a\u3044\u304b\u306a\u3068man\u3092\u898b\u3066\u307f\u307e\u3059\uff0e\n\n\nman smbget\n\n -U, --user=username[%password]\n Username (and password) to use\n\n\n\n-U \u30aa\u30d7\u30b7\u30e7\u30f3\u306b\u4e00\u7dd2\u306b\u66f8\u3051\u308b\u3088\u3046\u3067\u3059\uff0e\u30c7\u30df\u30ea\u30bf\u306f\u8981\u3089\u306a\u3044\u3088\u3046\uff0e\n\n\n\n$ bash -c \"read -sp \\\"passwd: \\\" passwd; smbget smb://smbhost/share/data -U user$passwd -O > /dev/null\"\n\n\n\n\u30c7\u30df\u30ea\u30bf\u306b : \u3092\u6307\u5b9a\u3057\u3066\u3082\u52d5\u304d\u307e\u3057\u305f\uff0e\n\n\n\n$ bash -c \"read -sp \\\"passwd: \\\" passwd; smbget smb://smbhost/share/data -U user:$passwd -O > /dev/null\"\n\n\n\n\u4ed6\u306b\u3082SMB URL\u306b\u3082\u66f8\u3051\u308b\u3088\u3046\u3067\u3059\uff0e\n\n\nman smbget\n\nSMB URLS\n SMB URL's should be specified in the following format:\n\n smb://[[[domain;]user[:password@]]server[/share[/path[/file]]]]\n\n\n\n\u305f\u3060\u3057\uff0c\u3053\u306e\u66f8\u304d\u65b9\u3060\u3068SMB URL\u304c\u74b0\u5883\u5909\u6570\u304c\u5c55\u958b\u3055\u308c\u3066STDOUT\u306b\u8868\u793a\u3055\u308c\u308b\u306e\u3067\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u96a0\u3057\u305f\u3044\u5834\u5408\u306f\u4f7f\u3048\u307e\u305b\u3093\uff0e\n\n\n\n$ bash -c \"read -sp \\\"passwd: \\\" passwd; smbget smb://user:$passwd@smbhost/share/data -O > /dev/null\"\nsmb://user:password@smbhost/share/data(100.00%) at 130.69MB/s ETA: 00:00:0008\nDownloaded 2.17GB in 17 seconds\n\n\n\n\u305d\u308c\u3092\u8a00\u3046\u3068 -U \u306e\u5834\u5408\u3082\u30d7\u30ed\u30bb\u30b9\u306b\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u8868\u793a\u3055\u308c\u3066\u3057\u307e\u3046\u306e\u3067\u3042\u307e\u308a\u3088\u308d\u3057\u304f\u306a\u3044\u3067\u3059\u306d\uff0e\u3066\u3053\u3068\u3067\u3068\u308a\u3042\u3048\u305a\u3053\u3093\u306a\u611f\u3058\u306a\u3089\u3044\u3044\u304b\u306a?\n\n\n\n$ bash -c \"read -sp \\\"passwd: \\\" passwd; echo $passwd | smbget smb://smbhost/share/data -U user -O > /dev/null\"\n\n\n\n\u3053\u306e\u3068\u304d\u306e\u30d7\u30ed\u30bb\u30b9\n\n\n\n$ ps -ef|grep smbget\nmk 12626 14620 0 22:38 pts/6 00:00:00 bash -c read -sp \"passwd: \" passwd; echo $passwd | smbget smb://smbhost/share/data -U user -O > /dev/null\nmk 13263 12626 49 22:39 pts/6 00:00:00 smbget smb://smbhost/share/data -U user -O\n\n\n\n\u3042\u308c?\u7d50\u5c40\u6700\u521d\u306b\u623b\u3063\u3066\u2026\u2026\uff0e\n\n\n\n\n\u4f59\u9332(\u30ad\u30e3\u30c3\u30b7\u30e5\u30af\u30ea\u30a2)\n\n\n\u901f\u5ea6\u3092\u6e2c\u308a\u305f\u3044\u3051\u30692\u56de\u76ee\u4ee5\u964d\u306f\u30ad\u30e3\u30c3\u30b7\u30e5\u3055\u308c\u3066\u3057\u307e\u3046\u306e\u3067\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30af\u30ea\u30a2\u3057\u3066\u6e2c\u308b\uff0e\n\u4ee5\u4e0b\u306flocalhost\u3067\u8a66\u3057\u3066\u308b\u306e\u3067\u5dee\u304c\u51fa\u3066\u3044\u308b\u304c\uff0c\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u7d4c\u7531\u3060\u3068\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u304c\u30dc\u30c8\u30eb\u30cd\u30c3\u30af\u306b\u306a\u308a\u5dee\u304c\u51fa\u306a\u304b\u3063\u305f\uff0e\u3067\u3082\u4e00\u5fdc\u3084\u3063\u3066\u304a\u304f\uff0e\n\n\n1\u56de\u76ee\n\nsmb://smbhost/share/data(100.00%) at 28.12MB/s ETA: 00:00:00434\nDownloaded 2.17GB in 79 seconds\n\n\n\n2\u56de\u76ee\n\nsmb://smbhost/share/data(100.00%) at 130.69MB/s ETA: 00:00:0008\nDownloaded 2.17GB in 17 seconds\n\n\n\n\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30af\u30ea\u30a2\n\n$ sudo sh -c \"sync; echo 3 > /proc/sys/vm/drop_caches\"\n\n\n\n\u3082\u3046\u4e00\u56de\n\nsmb://smbhost/share/data(100.00%) at 27.43MB/s ETA: 00:00:0044\nDownloaded 2.17GB in 81 seconds\n\n\n\n\u203b/proc/sys/vm/drop_caches \u306b\u3064\u3044\u3066\u306fKernel Documents\u306e admin-guide/sysctl/vm.rst.gz \u3042\u305f\u308a\u3092\u53c2\u7167\u306e\u3053\u3068\uff0e\n\n\n\n\n$ zgrep ^drop_caches -A42 /usr/share/doc/linux-doc-5.3/Documentation/admin-guide/sysctl/vm.rst.gz\n\n\n\n\n\n\n\u53c2\u8003URL\n\n\n\nSamba – opening windows to a wider world\nSamba documentation collection samba\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u65e5\u672c\u8a9e\u8a33\n\n\nsmbget\n\n\n\nhttps://www.kernel.org/doc/Documentation/admin-guide/sysctl/vm.rst\n\n\n\n\n\n\u74b0\u5883\n\n\n\u74b0\u58831\n\n$ dpkg-query -W samba smbclient bash\nbash 4.4.18-2ubuntu1.2\nsamba 2:4.7.6+dfsg~ubuntu-0ubuntu2.14\nsmbclient 2:4.7.6+dfsg~ubuntu-0ubuntu2.14\n$ lsb_release -dr\nDescription: Ubuntu 18.04.3 LTS\nRelease: 18.04\n$ uname -rvm\n4.15.0-72-generic #81-Ubuntu SMP Tue Nov 26 12:20:02 UTC 2019 x86_64\n\n\n\n\u74b0\u58832\n\n$ dpkg-query -W samba smbclient bash\nbash 5.0-5\nsamba 2:4.11.1+dfsg-3\nsmbclient 2:4.11.1+dfsg-3\n$ lsb_release -dr\nDescription: Debian GNU/Linux bullseye/sid\nRelease: unstable\n$ uname -rvm\n5.3.0-3-amd64 #1 SMP Debian 5.3.15-1 (2019-12-07) x86_64", "date_published": "2019-12-14T23:07:17+09:00", "date_modified": "2019-12-14T23:07:17+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "samba", "smbclient", "smbget", "Bionic Beaver(18.04LTS)", "Debian", "Linux", "sid", "Ubuntu" ] }, { "id": "http://matoken.org/blog/?p=2682", "url": "https://matoken.org/blog/2019/12/03/move-nextcloud-data-directory/", "title": "Nextcloud\u306e\u30c7\u30fc\u30bf\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u79fb\u52d5\u3059\u308b\u30e1\u30e2", "content_html": "
\n
\n
\n

Nextcloud\u306e\u30c7\u30fc\u30bf\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u65e2\u5b9a\u5024\u3067\u306fNextcloud\u306e\u3059\u3050\u4e0b\u306e data \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u306a\u308a\u307e\u3059\uff0e\u3057\u304b\u3057\u3053\u3053\u306f\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30eb\u30fc\u30c8\u4ee5\u4e0b\u306b\u306a\u3063\u3066\u3057\u307e\u3044\u8a2d\u5b9a\u3092\u30df\u30b9\u3059\u308b\u3068\u30c7\u30fc\u30bf\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u4e00\u822c\u516c\u958b\u3055\u308c\u3066\u3057\u307e\u3046\u53ef\u80fd\u6027\u304c\u3042\u308a\u5c11\u3057\u6016\u3044\u3067\u3059\uff0e
\n\u305d\u3053\u3067Nextcloud\u5c0e\u5165\u6642\u306b\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e config/config.php \u3067 datadirectory \u306b\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30eb\u30fc\u30c8\u306e\u5916\u306bNextcloud\u30c7\u30fc\u30bf\u3092\u8a2d\u5b9a\u3057\u307e\u3059\uff0e

\n
\n
\n

\u4eca\u56de\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30eb\u30fc\u30c8\u5185\u306e\u307e\u307e\u904b\u7528\u3055\u308c\u3066\u3044\u308bNextcloud\u304c\u3042\u3063\u305f\u306e\u3067\u305d\u308c\u3092\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30eb\u30fc\u30c8\u5916\u306b\u79fb\u52d5\u3057\u3066\u307f\u307e\u3057\u305f\uff0e
\n\u30c7\u30a3\u30b9\u30af\u3092\u5897\u8a2d\u3057\u3066\u305d\u3061\u3089\u306b\u30c7\u30fc\u30bf\u3092\u79fb\u3059\u306a\u3069\u306e\u969b\u306b\u3082\u540c\u3058\u624b\u9806\u3067\u30c7\u30fc\u30bf\u79fb\u884c\u3067\u304d\u308b\u3068\u601d\u3044\u307e\u3059\uff0e

\n
\n
\n

\u4eca\u56de\u306e\u4f8b\u3067\u306e\u30d1\u30b9\u306f\u3053\u3093\u306a\u611f\u3058\u3067\u3059\uff0e

\n
\n
\n
    \n
  • Nextcloud\u5c0e\u5165\u30c7\u30a3\u30ec\u30af\u30c8\u30ea : /var/www/nextcloud
  • \n
  • \u65e7Nextcloud \u30c7\u30fc\u30bf\u30c7\u30a3\u30ec\u30af\u30c8\u30ea : /var/www/nextcloud/data
  • \n
  • \u65b0Nextcloud \u30c7\u30fc\u30bf\u30c7\u30a3\u30ec\u30af\u30c8\u30ea : /var/data/nextcloud/data
  • \n
\n
\n
\n\n\n\n\n\n\n\n
\n
Important
\n
\n\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u5f8c\u306e\u30c7\u30fc\u30bf\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u79fb\u52d5\u306f\u516c\u5f0f\u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\uff0e
\n
\n
\n
\n
\n

\u30d5\u30a1\u30a4\u30eb\u306e\u30b3\u30d4\u30fc

\n
\n
\n

\u540c\u4e00\u306e\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u9593\u3067\u3042\u308c\u3070 mv command\u3067\u4e00\u77ac\u3067\u3059\u304c\uff0c\u4eca\u56de\u306f\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u3092\u8de8\u3044\u3067\u3044\u308b\u306e\u3067\u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059\uff0e
\n\u30c0\u30a6\u30f3\u30bf\u30a4\u30e0\u3092\u77ed\u304f\u3057\u305f\u3044\u306e\u3067Nextcloud\u52d5\u4f5c\u72b6\u614b\u3067\u4e00\u5ea6\u30c7\u30fc\u30bf\u3092\u30b3\u30d4\u30fc\u3057\u3066\u305d\u306e\u5f8crsync\u3067\u5dee\u5206\u306e\u307f\u30b3\u30d4\u30fc\u3059\u308b\u3053\u3068\u306b\u3057\u307e\u3059\uff0e

\n
\n
\n

1\u5ea6\u76ee\u306e\u30b3\u30d4\u30fc

\n
\n
\n
$ sudo cp -a /var/www/nextcloud/data /var/www/nextcloud/
\n
\n
\n
\n
\n

rsync\u3067\u30c7\u30fc\u30bf\u540c\u671f

\n
\n

1\u5ea6\u76ee\u306e\u30c7\u30fc\u30bf\u30b3\u30d4\u30fc\u306b\u6642\u9593\u304c\u304b\u304b\u3063\u305f\u306e\u3067rsync\u3067\u540c\u671f

\n
\n
\n
\n
$ sudo rsync -avc /var/www/nextcloud/data /var/www/nextcloud/
\n
\n
\n
\n
\n
\n
\n

\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u30b8\u30e7\u30d6\u3092\u505c\u6b62(\u6050\u3089\u304f\u3053\u306e\u624b\u9806\u306f\u4e0d\u8981)

\n
\n
\n

\u6b21\u306e\u624b\u9806\u3067\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u30e2\u30fc\u30c9\u306b\u79fb\u884c\u3059\u308b\u306e\u3067\u4e0d\u8981\u3060\u3068\u601d\u3046\u3051\u3069\u5ff5\u306e\u70ba\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u30b8\u30e7\u30d6\u3092crontab\u3067\u8a2d\u5b9a\u3057\u3066\u3044\u308b\u306e\u3092\u505c\u6b62(\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8)\u3057\u3066\u304a\u304f\uff0e(Webcron\u306e\u5834\u5408\u3082\u6b62\u3081\u305f\u307b\u3046\u304c\u3044\u3044\u304b\u3082\uff0eAJAX\u306e\u5834\u5408\u306f\u6050\u3089\u304f\u4e0d\u8981)

\n
\n
\n
\n
$ sudo -u www-data crontab -e
\n
\n
\n
\n
\n
\n

\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u30e2\u30fc\u30c9\u306b\u79fb\u884c

\n
\n
\n

\u3053\u3053\u304b\u3089Nextcloud\u306f\u5229\u7528\u3067\u304d\u306a\u304f\u306a\u308a\u307e\u3059\uff0e

\n
\n
\n
\n
$ sudo -u www-data php ./occ maintenance:mode --on
\n
\n
\n
\n
\n
\n

\u30c7\u30fc\u30bf\u540c\u671f

\n
\n
\n

-c \u30aa\u30d7\u30b7\u30e7\u30f3\u3082\u4ed8\u3051\u305f\u307b\u3046\u304c\u3044\u3044\u3051\u3069\u30c7\u30fc\u30bf\u304c\u5927\u304d\u3044\u3068\u6642\u9593\u304c\u304b\u304b\u308b\u306e\u3067\u4eca\u56de\u306f\u306a\u3057\u3067\u3042\u3068\u3067\u30c1\u30a7\u30c3\u30af\u3059\u308b\u3053\u3068\u306b\u3059\u308b\uff0e

\n
\n
\n
\n
$ sudo rsync -av /var/www/nextcloud/data /var/www/nextcloud/
\n
\n
\n
\n
\n
\n

\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u66f8\u304d\u63db\u3048

\n
\n
\n

Nextclud\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u60c5\u5831\u3092\u66f8\u304d\u63db\u3048\u307e\u3059\uff0e\u66f8\u304d\u63db\u3048\u524d\u306b\u5ff5\u306e\u70ba\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3082\u53d6\u3063\u3066\u304a\u304d\u307e\u3059\uff0e

\n
\n
\n
\u30d0\u30c3\u30af\u30a2\u30c3\u30d7
\n
\n
$ sh -c \"umask 266 ; mysqldump -uroot -p --opt --all-databases --events | xz > mysqlbackup-`date +\\%F_\\%T_\\%s_$`.sql.xz\"
\n
\n
\n
\n
db\u66f8\u304d\u63db\u3048
\n
\n
$ mysql -unextcloud -p\nmysql> use nextcloud;\nmysql> update oc_storages set id='local::/var/data/nextcloud/data/' where id='local::/var/www/nextcloud/data/';\nmysql> quit;
\n
\n
\n
\n
\n
\n

\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u66f8\u304d\u63db\u3048

\n
\n
\n

Nextcloud\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e config/config.php \u306e\u4e2d\u306e datadirectory \u3092\u65b0\u3057\u3044\u30d1\u30b9\u306b\u66f8\u304d\u63db\u3048\u307e\u3059\uff0e

\n
\n
\n
\n
  'datadirectory' => '/var/data/nextcloud/data',
\n
\n
\n
\n
\n
\n

\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u30e2\u30fc\u30c9\u3092off\u306b\u3059\u308b

\n
\n
\n
\n
$ sudo -u www-data php ./occ maintenance:mode --off
\n
\n
\n
\n
\n
\n

\u52d5\u4f5c\u78ba\u8a8d

\n
\n
\n

Nextcloud\u306b\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u30d5\u30a1\u30a4\u30eb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u95b2\u89a7\u3067\u304d\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\uff0e

\n
\n
\n
\n
\n

\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u30b8\u30e7\u30d6\u3092\u8a2d\u5b9a

\n
\n
\n

\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u30b8\u30e7\u30d6\u3092crontab\u3067\u518d\u8a2d\u5b9a

\n
\n
\n
\n
$ sudo -u www-data crontab -e
\n
\n
\n
\n
\n
\n

\u65e7\u30c7\u30fc\u30bf\u306e\u524a\u9664

\n
\n
\n

\u3057\u3070\u3089\u304f\u904b\u7528\u3057\u3066\u554f\u984c\u306a\u3044\u3088\u3046\u306a\u3089\u65e7\u30c7\u30fc\u30bf\u3092\u524a\u9664\u3059\u308b\uff0e

\n
\n
\n
\n
$ sudo rm -rf /var/www/nextcloud/data
\n
\n
\n
\n

\u751f\u30c7\u30a3\u30b9\u30af\u306a\u3093\u304b\u3060\u3068 secure-delete \u3068\u304b\u4f7f\u3046\u3068\u5c11\u3057\u5b89\u5fc3\uff0e\u3067\u3082\u78ba\u5b9f\u3058\u3083\u306a\u3044\u3057\u6642\u9593\u304b\u304b\u308b\u306e\u3067\u6697\u53f7\u5316fs\u3092\u63a8\u5968\uff0e

\n
\n
\n
\n
$ sudo nice -20 ionice -c1 -n0 srm -r /var/www/nextcloud/data
\n
\n
\n
\n
\n
\n

\u53c2\u8003URL

\n
\n\n
\n
\n
\n

\u74b0\u5883

\n
\n
\n
\n
$ sudo -u www-data php ./occ -V\nNextcloud 17.0.1\n$ dpkg-query -W php7.2-common mysql-server\nmysql-server    5.7.28-0ubuntu0.18.04.4\nphp7.2-common   7.2.24-0ubuntu0.18.04.1\n$ lsb_release -dr\nDescription:    Ubuntu 18.04.3 LTS\nRelease:        18.04\n$ uname -m\nx86_64
\n
\n
\n
\n
\n", "content_text": "Nextcloud\u306e\u30c7\u30fc\u30bf\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u65e2\u5b9a\u5024\u3067\u306fNextcloud\u306e\u3059\u3050\u4e0b\u306e data \u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u306a\u308a\u307e\u3059\uff0e\u3057\u304b\u3057\u3053\u3053\u306f\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30eb\u30fc\u30c8\u4ee5\u4e0b\u306b\u306a\u3063\u3066\u3057\u307e\u3044\u8a2d\u5b9a\u3092\u30df\u30b9\u3059\u308b\u3068\u30c7\u30fc\u30bf\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u4e00\u822c\u516c\u958b\u3055\u308c\u3066\u3057\u307e\u3046\u53ef\u80fd\u6027\u304c\u3042\u308a\u5c11\u3057\u6016\u3044\u3067\u3059\uff0e\n\u305d\u3053\u3067Nextcloud\u5c0e\u5165\u6642\u306b\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e config/config.php \u3067 datadirectory \u306b\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30eb\u30fc\u30c8\u306e\u5916\u306bNextcloud\u30c7\u30fc\u30bf\u3092\u8a2d\u5b9a\u3057\u307e\u3059\uff0e\n\n\n\u4eca\u56de\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30eb\u30fc\u30c8\u5185\u306e\u307e\u307e\u904b\u7528\u3055\u308c\u3066\u3044\u308bNextcloud\u304c\u3042\u3063\u305f\u306e\u3067\u305d\u308c\u3092\u30a6\u30a7\u30d6\u30b5\u30fc\u30d0\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u30eb\u30fc\u30c8\u5916\u306b\u79fb\u52d5\u3057\u3066\u307f\u307e\u3057\u305f\uff0e\n\u30c7\u30a3\u30b9\u30af\u3092\u5897\u8a2d\u3057\u3066\u305d\u3061\u3089\u306b\u30c7\u30fc\u30bf\u3092\u79fb\u3059\u306a\u3069\u306e\u969b\u306b\u3082\u540c\u3058\u624b\u9806\u3067\u30c7\u30fc\u30bf\u79fb\u884c\u3067\u304d\u308b\u3068\u601d\u3044\u307e\u3059\uff0e\n\n\n\u4eca\u56de\u306e\u4f8b\u3067\u306e\u30d1\u30b9\u306f\u3053\u3093\u306a\u611f\u3058\u3067\u3059\uff0e\n\n\n\nNextcloud\u5c0e\u5165\u30c7\u30a3\u30ec\u30af\u30c8\u30ea : /var/www/nextcloud\n\u65e7Nextcloud \u30c7\u30fc\u30bf\u30c7\u30a3\u30ec\u30af\u30c8\u30ea : /var/www/nextcloud/data\n\u65b0Nextcloud \u30c7\u30fc\u30bf\u30c7\u30a3\u30ec\u30af\u30c8\u30ea : /var/data/nextcloud/data\n\n\n\n\n\n\n\nImportant\n\n\n\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u5f8c\u306e\u30c7\u30fc\u30bf\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306e\u79fb\u52d5\u306f\u516c\u5f0f\u3067\u306f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u305b\u3093\uff0e\n\n\n\n\n\n\n\n\u30d5\u30a1\u30a4\u30eb\u306e\u30b3\u30d4\u30fc\n\n\n\u540c\u4e00\u306e\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u9593\u3067\u3042\u308c\u3070 mv command\u3067\u4e00\u77ac\u3067\u3059\u304c\uff0c\u4eca\u56de\u306f\u30d5\u30a1\u30a4\u30eb\u30b7\u30b9\u30c6\u30e0\u3092\u8de8\u3044\u3067\u3044\u308b\u306e\u3067\u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059\uff0e\n\u30c0\u30a6\u30f3\u30bf\u30a4\u30e0\u3092\u77ed\u304f\u3057\u305f\u3044\u306e\u3067Nextcloud\u52d5\u4f5c\u72b6\u614b\u3067\u4e00\u5ea6\u30c7\u30fc\u30bf\u3092\u30b3\u30d4\u30fc\u3057\u3066\u305d\u306e\u5f8crsync\u3067\u5dee\u5206\u306e\u307f\u30b3\u30d4\u30fc\u3059\u308b\u3053\u3068\u306b\u3057\u307e\u3059\uff0e\n\n\n1\u5ea6\u76ee\u306e\u30b3\u30d4\u30fc\n\n\n$ sudo cp -a /var/www/nextcloud/data /var/www/nextcloud/\n\n\n\n\nrsync\u3067\u30c7\u30fc\u30bf\u540c\u671f\n\n1\u5ea6\u76ee\u306e\u30c7\u30fc\u30bf\u30b3\u30d4\u30fc\u306b\u6642\u9593\u304c\u304b\u304b\u3063\u305f\u306e\u3067rsync\u3067\u540c\u671f\n\n\n\n$ sudo rsync -avc /var/www/nextcloud/data /var/www/nextcloud/\n\n\n\n\n\n\n\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u30b8\u30e7\u30d6\u3092\u505c\u6b62(\u6050\u3089\u304f\u3053\u306e\u624b\u9806\u306f\u4e0d\u8981)\n\n\n\u6b21\u306e\u624b\u9806\u3067\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u30e2\u30fc\u30c9\u306b\u79fb\u884c\u3059\u308b\u306e\u3067\u4e0d\u8981\u3060\u3068\u601d\u3046\u3051\u3069\u5ff5\u306e\u70ba\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u30b8\u30e7\u30d6\u3092crontab\u3067\u8a2d\u5b9a\u3057\u3066\u3044\u308b\u306e\u3092\u505c\u6b62(\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8)\u3057\u3066\u304a\u304f\uff0e(Webcron\u306e\u5834\u5408\u3082\u6b62\u3081\u305f\u307b\u3046\u304c\u3044\u3044\u304b\u3082\uff0eAJAX\u306e\u5834\u5408\u306f\u6050\u3089\u304f\u4e0d\u8981)\n\n\n\n$ sudo -u www-data crontab -e\n\n\n\n\n\n\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u30e2\u30fc\u30c9\u306b\u79fb\u884c\n\n\n\u3053\u3053\u304b\u3089Nextcloud\u306f\u5229\u7528\u3067\u304d\u306a\u304f\u306a\u308a\u307e\u3059\uff0e\n\n\n\n$ sudo -u www-data php ./occ maintenance:mode --on\n\n\n\n\n\n\u30c7\u30fc\u30bf\u540c\u671f\n\n\n-c \u30aa\u30d7\u30b7\u30e7\u30f3\u3082\u4ed8\u3051\u305f\u307b\u3046\u304c\u3044\u3044\u3051\u3069\u30c7\u30fc\u30bf\u304c\u5927\u304d\u3044\u3068\u6642\u9593\u304c\u304b\u304b\u308b\u306e\u3067\u4eca\u56de\u306f\u306a\u3057\u3067\u3042\u3068\u3067\u30c1\u30a7\u30c3\u30af\u3059\u308b\u3053\u3068\u306b\u3059\u308b\uff0e\n\n\n\n$ sudo rsync -av /var/www/nextcloud/data /var/www/nextcloud/\n\n\n\n\n\n\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u66f8\u304d\u63db\u3048\n\n\nNextclud\u306e\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u5185\u306e\u30d5\u30a1\u30a4\u30eb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u60c5\u5831\u3092\u66f8\u304d\u63db\u3048\u307e\u3059\uff0e\u66f8\u304d\u63db\u3048\u524d\u306b\u5ff5\u306e\u70ba\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u306e\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\u3082\u53d6\u3063\u3066\u304a\u304d\u307e\u3059\uff0e\n\n\n\u30d0\u30c3\u30af\u30a2\u30c3\u30d7\n\n$ sh -c \"umask 266 ; mysqldump -uroot -p --opt --all-databases --events | xz > mysqlbackup-`date +\\%F_\\%T_\\%s_$`.sql.xz\"\n\n\n\ndb\u66f8\u304d\u63db\u3048\n\n$ mysql -unextcloud -p\nmysql> use nextcloud;\nmysql> update oc_storages set id='local::/var/data/nextcloud/data/' where id='local::/var/www/nextcloud/data/';\nmysql> quit;\n\n\n\n\n\n\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u66f8\u304d\u63db\u3048\n\n\nNextcloud\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e config/config.php \u306e\u4e2d\u306e datadirectory \u3092\u65b0\u3057\u3044\u30d1\u30b9\u306b\u66f8\u304d\u63db\u3048\u307e\u3059\uff0e\n\n\n\n 'datadirectory' => '/var/data/nextcloud/data',\n\n\n\n\n\n\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u30e2\u30fc\u30c9\u3092off\u306b\u3059\u308b\n\n\n\n$ sudo -u www-data php ./occ maintenance:mode --off\n\n\n\n\n\n\u52d5\u4f5c\u78ba\u8a8d\n\n\nNextcloud\u306b\u30ed\u30b0\u30a4\u30f3\u3057\u3066\u30d5\u30a1\u30a4\u30eb\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u304c\u95b2\u89a7\u3067\u304d\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\uff0e\n\n\n\n\n\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u30b8\u30e7\u30d6\u3092\u8a2d\u5b9a\n\n\n\u30d0\u30c3\u30af\u30b0\u30e9\u30a6\u30f3\u30c9\u30b8\u30e7\u30d6\u3092crontab\u3067\u518d\u8a2d\u5b9a\n\n\n\n$ sudo -u www-data crontab -e\n\n\n\n\n\n\u65e7\u30c7\u30fc\u30bf\u306e\u524a\u9664\n\n\n\u3057\u3070\u3089\u304f\u904b\u7528\u3057\u3066\u554f\u984c\u306a\u3044\u3088\u3046\u306a\u3089\u65e7\u30c7\u30fc\u30bf\u3092\u524a\u9664\u3059\u308b\uff0e\n\n\n\n$ sudo rm -rf /var/www/nextcloud/data\n\n\n\n\u751f\u30c7\u30a3\u30b9\u30af\u306a\u3093\u304b\u3060\u3068 secure-delete \u3068\u304b\u4f7f\u3046\u3068\u5c11\u3057\u5b89\u5fc3\uff0e\u3067\u3082\u78ba\u5b9f\u3058\u3083\u306a\u3044\u3057\u6642\u9593\u304b\u304b\u308b\u306e\u3067\u6697\u53f7\u5316fs\u3092\u63a8\u5968\uff0e\n\n\n\n$ sudo nice -20 ionice -c1 -n0 srm -r /var/www/nextcloud/data\n\n\n\n\n\n\u53c2\u8003URL\n\n\n\nHowTo: Change / Move data directory after installation – howto – Nextcloud community\n\n\n\n\n\n\u74b0\u5883\n\n\n\n$ sudo -u www-data php ./occ -V\nNextcloud 17.0.1\n$ dpkg-query -W php7.2-common mysql-server\nmysql-server 5.7.28-0ubuntu0.18.04.4\nphp7.2-common 7.2.24-0ubuntu0.18.04.1\n$ lsb_release -dr\nDescription: Ubuntu 18.04.3 LTS\nRelease: 18.04\n$ uname -m\nx86_64", "date_published": "2019-12-03T01:51:48+09:00", "date_modified": "2019-12-03T01:51:48+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "nextcloud", "Bionic Beaver(18.04LTS)", "Linux", "Ubuntu" ] }, { "id": "http://matoken.org/blog/?p=2677", "url": "https://matoken.org/blog/2019/11/29/failed-to-say-check-for-expected-files-the-following-extra-files-have-been-found-rnd-during-nextcloud-upgrade-15-0-7-%e2%86%92-16-0-6/", "title": "Nextcloud upgrade\u6642\u306b`Check for expected files The following extra files have been found: .rnd` \u3068\u8a00\u308f\u308c\u3066\u5931\u6557\u3059\u308b(15.0.7\u219216.0.6)", "content_html": "
\n
\n
\n

Nextcloud 15.0.7\u304b\u3089Nextcloud 16.0.6\u3078\u306e\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3092\u884c\u304a\u3046\u3068\u3057\u305f\u3068\u3053\u308d\uff0c\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u753b\u9762\u3067\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u8868\u793a\u3055\u308c\u3066\u5148\u306b\u52e7\u3081\u307e\u305b\u3093\uff0e

\n
\n
\n

\"Nextcloud

\n
\n
\n
\n
Check for expected files\nThe following extra files have been found:\n.rnd
\n
\n
\n
\n

Nextcloud \u4ee5\u4e0b\u3092\u78ba\u8a8d\u3059\u308b\u30683\u3064\u306e .rnd \u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
$ cd /export/data/var/nextcloud-data\n$ find ./ -name .rnd -ls\n13495506336      0 drwxr-xr-x   3 www-data www-data       38 Jan 31  2018 ./data/matoken/files_encryption/keys/files/tmp/pizero/home/pi/.rnd\n15757999341     12 -rw-r--r--   1 www-data www-data     9656 Jan 31  2018 ./data/matoken/files/tmp/pizero/home/pi/.rnd\n11866753713      4 -rw-------   1 www-data www-data     1024 Nov 25 13:19 ./.rnd
\n
\n
\n
\n

\u4ee5\u4e0b\u306e\u30da\u30fc\u30b8\u3092\u898b\u308b\u3068\uff0cNextcloud \u76f4\u4e0b\u306e .rnd \u30d5\u30a1\u30a4\u30eb\u304c\u60aa\u3055\u3092\u3057\u3066\u3044\u308b\u3088\u3046\u306a\u306e\u3067\u3053\u308c\u3092\u9000\u907f\u3057\u307e\u3059\uff0e

\n
\n\n
\n
\n
$ sudo mv ./.rnd ~/tmp
\n
\n
\n
\n

\u3053\u306e\u5f8c\u3082\u3046\u4e00\u5ea6\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3092\u8a66\u307f\u308b\u3068\u3046\u307e\u304f\u884c\u304d\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
\n

This behavior continues up to version 15.0.7.

\n
\n
\n
\n
\n

\u3068\u306e\u3053\u3068\u3067\u304e\u308a\u304e\u308a\u5f15\u3063\u304b\u304b\u3063\u305f\u3088\u3046\u3067\u3059\"\ud83d\ude23\"

\n
\n
\n
\u74b0\u5883
\n
\n
$ sudo -u www-data php ./occ -V\nNextcloud 16.0.6\n$ dpkg-query -W php7.2-common mysql-server\nmysql-server    5.7.28-0ubuntu0.18.04.4\nphp7.2-common   7.2.24-0ubuntu0.18.04.1\n$ lsb_release -dr\nDescription:    Ubuntu 18.04.3 LTS\nRelease:        18.04\n$ uname -m\nx86_64
\n
\n
\n
\n
\n", "content_text": "Nextcloud 15.0.7\u304b\u3089Nextcloud 16.0.6\u3078\u306e\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3092\u884c\u304a\u3046\u3068\u3057\u305f\u3068\u3053\u308d\uff0c\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u753b\u9762\u3067\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u8868\u793a\u3055\u308c\u3066\u5148\u306b\u52e7\u3081\u307e\u305b\u3093\uff0e\n\n\n\n\n\n\nCheck for expected files\nThe following extra files have been found:\n.rnd\n\n\n\nNextcloud \u4ee5\u4e0b\u3092\u78ba\u8a8d\u3059\u308b\u30683\u3064\u306e .rnd \u30d5\u30a1\u30a4\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u3057\u305f\uff0e\n\n\n\n$ cd /export/data/var/nextcloud-data\n$ find ./ -name .rnd -ls\n13495506336 0 drwxr-xr-x 3 www-data www-data 38 Jan 31 2018 ./data/matoken/files_encryption/keys/files/tmp/pizero/home/pi/.rnd\n15757999341 12 -rw-r--r-- 1 www-data www-data 9656 Jan 31 2018 ./data/matoken/files/tmp/pizero/home/pi/.rnd\n11866753713 4 -rw------- 1 www-data www-data 1024 Nov 25 13:19 ./.rnd\n\n\n\n\u4ee5\u4e0b\u306e\u30da\u30fc\u30b8\u3092\u898b\u308b\u3068\uff0cNextcloud \u76f4\u4e0b\u306e .rnd \u30d5\u30a1\u30a4\u30eb\u304c\u60aa\u3055\u3092\u3057\u3066\u3044\u308b\u3088\u3046\u306a\u306e\u3067\u3053\u308c\u3092\u9000\u907f\u3057\u307e\u3059\uff0e\n\n\n\nUpdate to 14.0.6, Check for expected files The following extra files have been found: .rnd \u00b7 Issue #13568 \u00b7 nextcloud/server\n\n\n\n\n$ sudo mv ./.rnd ~/tmp\n\n\n\n\u3053\u306e\u5f8c\u3082\u3046\u4e00\u5ea6\u30a2\u30c3\u30d7\u30b0\u30ec\u30fc\u30c9\u3092\u8a66\u307f\u308b\u3068\u3046\u307e\u304f\u884c\u304d\u307e\u3057\u305f\uff0e\n\n\n\n\nThis behavior continues up to version 15.0.7.\n\n\n\n\n\u3068\u306e\u3053\u3068\u3067\u304e\u308a\u304e\u308a\u5f15\u3063\u304b\u304b\u3063\u305f\u3088\u3046\u3067\u3059\n\n\n\u74b0\u5883\n\n$ sudo -u www-data php ./occ -V\nNextcloud 16.0.6\n$ dpkg-query -W php7.2-common mysql-server\nmysql-server 5.7.28-0ubuntu0.18.04.4\nphp7.2-common 7.2.24-0ubuntu0.18.04.1\n$ lsb_release -dr\nDescription: Ubuntu 18.04.3 LTS\nRelease: 18.04\n$ uname -m\nx86_64", "date_published": "2019-11-29T15:51:25+09:00", "date_modified": "2019-11-29T15:51:25+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "nextcloud", "Bionic Beaver(18.04LTS)", "Linux", "Ubuntu" ] }, { "id": "http://matoken.org/blog/?p=2580", "url": "https://matoken.org/blog/2019/10/18/enable-ebook-reader-files-reader-and-make-nextcloud-16-not-work/", "title": "Ebook reader(files_reader)\u3092\u6709\u52b9\u306b\u3057\u3066Nextcloud 16\u3092\u52d5\u304b\u306a\u304f\u3057\u3066\u3057\u307e\u3046", "content_html": "
\n

Nextcloud\u3092\u3044\u3058\u3063\u3066\u3044\u305f\u3089\u30a8\u30e9\u30fc\u753b\u9762\u306b><

\n
\n
\n

\"Nextcloud

\n
\n
\n

\u8868\u793a\u3055\u308c\u3066\u3044\u308b\u30ea\u30af\u30a8\u30b9\u30c8ID\u3067\u30ed\u30b0\u3092\u691c\u7d22\u3057\u3066jq\u3067\u5c55\u958b\u3057\u307e\u3059\uff0e

\n
\n
\n
\n
$ sudo grep 'iFqSO6b3lcl9qAXbLJXt' nextcloud.log | jq .|lv
\n
\n
\n
\n

\u3053\u306e\u8fba\u308a\u304c\u30a8\u30e9\u30fc\u306e\u3088\u3046\uff0e
\nfiles_reader \u30a2\u30d7\u30ea\u306b\u554f\u984c\u304c\u3042\u308b\u3088\u3046\u3067\u3059\uff0e

\n
\n
\n
\n
  \"message\": {\n    \"Exception\": \"Error\",\n    \"Message\": \"Class 'OCP\\\\Config' not found\",\n    \"Code\": 0,\n    \"Trace\": [\n      {\n        \"file\": \"/var/www/files.matoken.org/apps/files_reader/lib/Hooks.php\",\n        \"line\": 41,\n        \"function\": \"get\",\n        \"class\": \"OCA\\\\Files_Reader\\\\Config\",\n        \"type\": \"::\",\n        \"args\": [\n          \"epub_enable\",\n          \"true\"\n        ]\n      },\n      {\n        \"file\": \"/var/www/files.matoken.org/lib/private/legacy/hook.php\",\n        \"line\": 106,\n        \"function\": \"announce_settings\",\n        \"class\": \"OCA\\\\Files_Reader\\\\Hooks\",\n        \"type\": \"::\",
\n
\n
\n
\n

\u3068\u308a\u3042\u3048\u305aocc\u30b3\u30de\u30f3\u30c9\u3067`files_reader` \u3092\u7121\u52b9\u306b\u3057\u3066\u30a8\u30e9\u30fc\u306f\u89e3\u6d88\u3055\u308c\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
$ php ./occ app:disable files_reader\nfiles_reader disabled
\n
\n
\n
\n

\u4eca\u56de\u30a8\u30e9\u30fc\u306b\u306a\u3063\u305fEbook reader(files_reader)\u306f\u30a2\u30d7\u30ea\u30b9\u30c8\u30a2\u5185\u3067\u78ba\u8a8d\u3059\u308b\u3068Nextcloud 9~13 \u3067\u3057\u305f\uff0e

\n
\n
\n\n
\n
\n

\u3057\u304b\u3057\uff0cNextcloud\u306e\u30a2\u30d7\u30ea\u753b\u9762\u3067\u306f\u300c\u672a\u30c6\u30b9\u30c8\u306e\u30a2\u30d7\u30ea\u3092\u6709\u52b9\u306b\u3059\u308b\u300d\u3068\u3044\u3063\u305f\u8b66\u544a\u304c\u306a\u3044\u306e\u3067\u5c0e\u5165\u3057\u3066\u3057\u307e\u3046\u2026\u2026\uff0e

\n
\n
\n

\"Nextcloud

\n
\n
\n

Issue\u3084PR\u306f\u4e0a\u304c\u3063\u3066\u3044\u308b\u3088\u3046\u3067\u3059\uff0e

\n
\n
\n\n
\n
\n
\u74b0\u5883
\n
\n
$ php ./occ app:list|grep files_reader\n  - files_reader\n$ php ./occ status|grep version:\n  - version: 16.0.5.1\n$ dpkg-query -W php\nphp     2:7.3+69\n$ lsb_release -dr\nDescription:    Debian GNU/Linux 10 (buster)\nRelease:        10\n$ uname -m\nx86_64
\n
\n
\n", "content_text": "Nextcloud\u3092\u3044\u3058\u3063\u3066\u3044\u305f\u3089\u30a8\u30e9\u30fc\u753b\u9762\u306b><\n\n\n\n\n\n\u8868\u793a\u3055\u308c\u3066\u3044\u308b\u30ea\u30af\u30a8\u30b9\u30c8ID\u3067\u30ed\u30b0\u3092\u691c\u7d22\u3057\u3066jq\u3067\u5c55\u958b\u3057\u307e\u3059\uff0e\n\n\n\n$ sudo grep 'iFqSO6b3lcl9qAXbLJXt' nextcloud.log | jq .|lv\n\n\n\n\u3053\u306e\u8fba\u308a\u304c\u30a8\u30e9\u30fc\u306e\u3088\u3046\uff0e\nfiles_reader \u30a2\u30d7\u30ea\u306b\u554f\u984c\u304c\u3042\u308b\u3088\u3046\u3067\u3059\uff0e\n\n\n\n \"message\": {\n \"Exception\": \"Error\",\n \"Message\": \"Class 'OCP\\\\Config' not found\",\n \"Code\": 0,\n \"Trace\": [\n {\n \"file\": \"/var/www/files.matoken.org/apps/files_reader/lib/Hooks.php\",\n \"line\": 41,\n \"function\": \"get\",\n \"class\": \"OCA\\\\Files_Reader\\\\Config\",\n \"type\": \"::\",\n \"args\": [\n \"epub_enable\",\n \"true\"\n ]\n },\n {\n \"file\": \"/var/www/files.matoken.org/lib/private/legacy/hook.php\",\n \"line\": 106,\n \"function\": \"announce_settings\",\n \"class\": \"OCA\\\\Files_Reader\\\\Hooks\",\n \"type\": \"::\",\n\n\n\n\u3068\u308a\u3042\u3048\u305aocc\u30b3\u30de\u30f3\u30c9\u3067`files_reader` \u3092\u7121\u52b9\u306b\u3057\u3066\u30a8\u30e9\u30fc\u306f\u89e3\u6d88\u3055\u308c\u307e\u3057\u305f\uff0e\n\n\n\n$ php ./occ app:disable files_reader\nfiles_reader disabled\n\n\n\n\u4eca\u56de\u30a8\u30e9\u30fc\u306b\u306a\u3063\u305fEbook reader(files_reader)\u306f\u30a2\u30d7\u30ea\u30b9\u30c8\u30a2\u5185\u3067\u78ba\u8a8d\u3059\u308b\u3068Nextcloud 9~13 \u3067\u3057\u305f\uff0e\n\n\n\nReader (ebook reader) – \u30a2\u30d7\u30ea – App Store – Nextcloud\n\n\n\n\u3057\u304b\u3057\uff0cNextcloud\u306e\u30a2\u30d7\u30ea\u753b\u9762\u3067\u306f\u300c\u672a\u30c6\u30b9\u30c8\u306e\u30a2\u30d7\u30ea\u3092\u6709\u52b9\u306b\u3059\u308b\u300d\u3068\u3044\u3063\u305f\u8b66\u544a\u304c\u306a\u3044\u306e\u3067\u5c0e\u5165\u3057\u3066\u3057\u307e\u3046\u2026\u2026\uff0e\n\n\n\n\n\nIssue\u3084PR\u306f\u4e0a\u304c\u3063\u3066\u3044\u308b\u3088\u3046\u3067\u3059\uff0e\n\n\n\nCompatibility with Nextcloud 16 \u00b7 Issue #118 \u00b7 Yetangitu/owncloud-apps\nAdjust files_opds for Nextcloud 16 by noci2012 \u00b7 Pull Request #121 \u00b7 Yetangitu/owncloud-apps\n\n\n\n\u74b0\u5883\n\n$ php ./occ app:list|grep files_reader\n - files_reader\n$ php ./occ status|grep version:\n - version: 16.0.5.1\n$ dpkg-query -W php\nphp 2:7.3+69\n$ lsb_release -dr\nDescription: Debian GNU/Linux 10 (buster)\nRelease: 10\n$ uname -m\nx86_64", "date_published": "2019-10-18T18:26:06+09:00", "date_modified": "2019-10-18T18:26:06+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "nextcloud", "Bionic Beaver(18.04LTS)", "Linux", "Ubuntu" ] }, { "id": "http://matoken.org/blog/?p=2437", "url": "https://matoken.org/blog/2019/07/20/disable-the-zoom-function-on-firefox-mouse-touch-pad-etc/", "title": "Firefox \u306e\u30de\u30a6\u30b9\uff0c\u30bf\u30c3\u30c1\u30d1\u30c3\u30c9\u7b49\u3067\u306e\u30ba\u30fc\u30e0\u6a5f\u80fd\u3092\u7121\u52b9\u306b\u3059\u308b", "content_html": "
\n
\n
\n

\u7cbe\u5ea6\u306e\u60aa\u3044\u30bf\u30c3\u30c1\u30d1\u30c3\u30c9\u3092\u4f7f\u3063\u3066\u3044\u308b\u30682\u672c\u6307\u3067\u30b9\u30af\u30ed\u30fc\u30eb\u3057\u305f\u3064\u3082\u308a\u304c\u62e1\u5927\uff0c\u7e2e\u5c0f\u306b\u306a\u3063\u3066\u3057\u307e\u3046\u3053\u3068\u304c\u3042\u308a\u307e\u3059\uff0e\u30b9\u30af\u30ed\u30fc\u30eb\u306e\u3064\u3082\u308a\u306a\u306e\u3067\u64cd\u4f5c\u91cf\u3082\u591a\u304f\u4e00\u6c17\u306b\u62e1\u5927\u3055\u308c\u305f\u308a\u7e2e\u5c0f\u3055\u308c\u305f\u308a\u2026\u2026\uff0e

\n
\n
\n

Firefox \u3067\u3053\u306e\u6a5f\u80fd\u3092\u7121\u52b9\u306b\u3057\u3066\u307f\u307e\u3057\u305f\uff0e
\n\u4ee5\u4e0b\u306e\u624b\u9806\u3067\u306f\u30dd\u30a4\u30f3\u30c6\u30a3\u30f3\u30b0\u30c7\u30d0\u30a4\u30b9\u3067\u306e\u30ba\u30fc\u30e0\u6a5f\u80fd\u306f\u7121\u52b9\u5316\u3055\u308c\u307e\u3059\u304c\uff0c\u30ad\u30fc\u30dc\u30fc\u30c9\u30fb\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u3067\u306e\u30ba\u30fc\u30e0\u306f\u5229\u7528\u3067\u304d\u307e\u3059\uff0e

\n
\n
\n
\n
\n

about:config \u3067\u8a2d\u5b9a(GUI)

\n
\n
\n

Firefox \u306e\u30a2\u30c9\u30ec\u30b9\u30d0\u30fc\u306b about:config \u3092\u5165\u529b\u3057\u3066\u958b\u304d\uff0c zoom.maxPercent, zoom.minPercent \u3092\u305d\u308c\u305e\u308c 100 \u306b\u66f8\u304d\u63db\u3048\u308b\uff0e
\n\u3053\u306e\u624b\u9806\u306e\u5834\u5408\u5373\u6642\u53cd\u6620\u3055\u308c\u308b\uff0e

\n
\n
\n

\"20190710

\n
\n
\n
\n
\n

\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3067\u8a2d\u5b9a

\n
\n
\n

Firefox \u306e\u5bfe\u8c61\u306e\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u306e\u3042\u308b\u30c7\u30a3\u30af\u30c8\u30ea\u306b user.js \u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u8d77\u52d5\u3059\u308b\u3068\u53cd\u6620\u3055\u308c\u308b\uff0e

\n
\n
\n

\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u306e\u3042\u308b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f ~/.mozilla/firefox/profiles.ini \u3092\u78ba\u8a8d\u3059\u308b\uff0e
\n\u4ee5\u4e0b\u306e\u4f8b\u3067\u306f\uff0c~/.mozilla/firefox/4dx27pta.default/ \u306b\u306a\u308b\uff0e

\n
\n
\n
~/.mozilla/firefox/profiles.ini
\n
\n
[Install4F96D1932A9F858E]\r\nDefault=4dx27pta.default\r\n\r\n[Profile0]\r\nName=default\r\nIsRelative=1\r\nPath=4dx27pta.default\r\nDefault=1\r\n\r\n[General]\r\nStartWithLastProfile=1\r\nVersion=2
\n
\n
\n
\n

user.js \u3092\u4ee5\u4e0b\u306e\u5185\u5bb9\u3067\u4f5c\u6210\u3059\u308b\uff0e\u65e2\u306b\u5b58\u5728\u3059\u308b\u5834\u5408\u306f\u8ffd\u8a18\u3059\u308b\uff0e

\n
\n
\n
~/.mozilla/firefox/4dx27pta.default/user.js
\n
\n
user_pref(\"zoom.maxPercent\", 100);\r\nuser_pref(\"zoom.minPercent\", 100);
\n
\n
\n
\n
\n
\n

\u74b0\u5883

\n
\n
\n
\n
$ dpkg-query -W firefox\r\nfirefox 68.0+build3-0ubuntu0.18.04.1\r\n$ hostnamectl | egrep 'Operating System|Architecture'\r\n  Operating System: Ubuntu 18.04.2 LTS\r\n      Architecture: arm64
\n
\n
\n
\n
\n

\n", "content_text": "\u7cbe\u5ea6\u306e\u60aa\u3044\u30bf\u30c3\u30c1\u30d1\u30c3\u30c9\u3092\u4f7f\u3063\u3066\u3044\u308b\u30682\u672c\u6307\u3067\u30b9\u30af\u30ed\u30fc\u30eb\u3057\u305f\u3064\u3082\u308a\u304c\u62e1\u5927\uff0c\u7e2e\u5c0f\u306b\u306a\u3063\u3066\u3057\u307e\u3046\u3053\u3068\u304c\u3042\u308a\u307e\u3059\uff0e\u30b9\u30af\u30ed\u30fc\u30eb\u306e\u3064\u3082\u308a\u306a\u306e\u3067\u64cd\u4f5c\u91cf\u3082\u591a\u304f\u4e00\u6c17\u306b\u62e1\u5927\u3055\u308c\u305f\u308a\u7e2e\u5c0f\u3055\u308c\u305f\u308a\u2026\u2026\uff0e\n\n\nFirefox \u3067\u3053\u306e\u6a5f\u80fd\u3092\u7121\u52b9\u306b\u3057\u3066\u307f\u307e\u3057\u305f\uff0e\n\u4ee5\u4e0b\u306e\u624b\u9806\u3067\u306f\u30dd\u30a4\u30f3\u30c6\u30a3\u30f3\u30b0\u30c7\u30d0\u30a4\u30b9\u3067\u306e\u30ba\u30fc\u30e0\u6a5f\u80fd\u306f\u7121\u52b9\u5316\u3055\u308c\u307e\u3059\u304c\uff0c\u30ad\u30fc\u30dc\u30fc\u30c9\u30fb\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u3067\u306e\u30ba\u30fc\u30e0\u306f\u5229\u7528\u3067\u304d\u307e\u3059\uff0e\n\n\n\n\nabout:config \u3067\u8a2d\u5b9a(GUI)\n\n\nFirefox \u306e\u30a2\u30c9\u30ec\u30b9\u30d0\u30fc\u306b about:config \u3092\u5165\u529b\u3057\u3066\u958b\u304d\uff0c zoom.maxPercent, zoom.minPercent \u3092\u305d\u308c\u305e\u308c 100 \u306b\u66f8\u304d\u63db\u3048\u308b\uff0e\n\u3053\u306e\u624b\u9806\u306e\u5834\u5408\u5373\u6642\u53cd\u6620\u3055\u308c\u308b\uff0e\n\n\n\n\n\n\n\n\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u3067\u8a2d\u5b9a\n\n\nFirefox \u306e\u5bfe\u8c61\u306e\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u306e\u3042\u308b\u30c7\u30a3\u30af\u30c8\u30ea\u306b user.js \u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3057\u8d77\u52d5\u3059\u308b\u3068\u53cd\u6620\u3055\u308c\u308b\uff0e\n\n\n\u30d7\u30ed\u30d5\u30a1\u30a4\u30eb\u306e\u3042\u308b\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f ~/.mozilla/firefox/profiles.ini \u3092\u78ba\u8a8d\u3059\u308b\uff0e\n\u4ee5\u4e0b\u306e\u4f8b\u3067\u306f\uff0c~/.mozilla/firefox/4dx27pta.default/ \u306b\u306a\u308b\uff0e\n\n\n~/.mozilla/firefox/profiles.ini\n\n[Install4F96D1932A9F858E]\r\nDefault=4dx27pta.default\r\n\r\n[Profile0]\r\nName=default\r\nIsRelative=1\r\nPath=4dx27pta.default\r\nDefault=1\r\n\r\n[General]\r\nStartWithLastProfile=1\r\nVersion=2\n\n\n\nuser.js \u3092\u4ee5\u4e0b\u306e\u5185\u5bb9\u3067\u4f5c\u6210\u3059\u308b\uff0e\u65e2\u306b\u5b58\u5728\u3059\u308b\u5834\u5408\u306f\u8ffd\u8a18\u3059\u308b\uff0e\n\n\n~/.mozilla/firefox/4dx27pta.default/user.js\n\nuser_pref(\"zoom.maxPercent\", 100);\r\nuser_pref(\"zoom.minPercent\", 100);\n\n\n\n\n\n\u74b0\u5883\n\n\n\n$ dpkg-query -W firefox\r\nfirefox 68.0+build3-0ubuntu0.18.04.1\r\n$ hostnamectl | egrep 'Operating System|Architecture'\r\n Operating System: Ubuntu 18.04.2 LTS\r\n Architecture: arm64", "date_published": "2019-07-20T22:21:42+09:00", "date_modified": "2019-07-20T23:57:07+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "Firefox", "Bionic Beaver(18.04LTS)", "Linux", "Ubuntu" ] }, { "id": "http://matoken.org/blog/?p=2433", "url": "https://matoken.org/blog/2019/07/19/direct-access-to-https-repository-with-apt-cacher-ng/", "title": "apt-cacher-ng \u3067 https \u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u76f4\u63a5\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3088\u3046\u306b\u3059\u308b", "content_html": "
\n

apt-cacher-ng \u3067\u5404\u7a2e\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30ad\u30e3\u30c3\u30b7\u30e5\u3057\u3066\u3044\u308b\u306e\u3067\u3059\u304c\uff0chttps \u306e\u5834\u5408\u30a8\u30e9\u30fc\u306b\u306a\u3063\u3066\u3057\u307e\u3044\u307e\u3059\uff0e

\n
\n
\n
error message
\n
\n
$ sudo apt update\r\nErr:1 https://updates.signal.org/desktop/apt xenial InRelease              Reading from proxy failed - read (115: Operation now in progress) [IP: 192.168.1.102 3142]                                                      Err:2 https://deb.opera.com/opera-stable stable InRelease\r\n  Reading from proxy failed - read (115: Operation now in progress) [IP: 192.168.1.102 3142]\r\n :\r\nW: Failed to fetch https://deb.opera.com/opera-stable/dists/stable/InRelease  Reading from proxy failed - read (115: Operation now in progress) [IP: 192.168.1.102 3142]\r\nW: Failed to fetch https://updates.signal.org/desktop/apt/dists/xenial/InRelease  Reading from proxy failed - read (115: Operation now in progress) [IP: 192.168.1.102 3142]\r\nW: Some index files failed to download. They have been ignored, or old ones used instead.
\n
\n
\n
\n

Debian wiki \u306b\u89e3\u6c7a\u65b9\u6cd5\u304c\u8f09\u3063\u3066\u3044\u307e\u3057\u305f\uff0ehttps \u306e\u5834\u5408\u306f\u30ad\u30e3\u30c3\u30b7\u30e5\u305b\u305a\u306b\u76f4\u63a5\u898b\u306b\u884c\u304b\u305b\u308b\u8a2d\u5b9a\u304c\u51fa\u6765\u308b\u3088\u3046\u3067\u3059\uff0e

\n
\n
\n
AptCacherNg – Debian Wiki
\n
\n
\n

HTTPS repositories
\napt-cacher-ng will obviously fail to serve HTTPS repositories. There are many solutions upstream but I have found the simplest solution to be to simply tunnel HTTPS connections directly on the proxy, by putting this in /etc/apt-cacher-ng/acng.conf:

\n
\n
\n
\n
PassThroughPattern: .*
\n
\n
\n
\n

This is, as far as I can tell, the only way to avoid doing a special configuration on the clients for HTTPS repositories. The downside is that HTTPS content is not cached.

\n
\n
\n
\n
\n

/etc/apt-cacher-ng/acng.conf \u306b PassThroughPattern: .* \u3092\u8a2d\u5b9a\u3057\u3066\u30c7\u30fc\u30e2\u30f3\u3092\u518d\u8d77\u52d5\u3059\u308b\u3053\u3068\u3067\u76f4\u63a5\u30a2\u30af\u30bb\u30b9\u3057\u3066\u30a8\u30e9\u30fc\u3092\u51fa\u3055\u306a\u304f\u306a\u308a\u307e\u3057\u305f\uff0e

\n
\n
\n

\u4ee5\u4e0b\u306e\u30da\u30fc\u30b8\u306e\u3088\u3046\u306b source.list \u3092\u66f8\u304d\u63db\u3048\u3066https \u3067\u3042\u3063\u3066\u3082\u30ad\u30e3\u30c3\u30b7\u30e5\u3059\u308b\u65b9\u6cd5\u3082\u3042\u308b\u3088\u3046\u3067\u3059\u304c\u4eca\u56de\u306f\u306a\u3057\u3067\uff0e

\n
\n
\n\n
\n
\n
apt-cacher-ng\u74b0\u5883
\n
\n
$ dpkg-query -W apt-cacher-ng\r\napt-cacher-ng   3.1-1build1\r\n$ hostnamectl | egrep 'Operating System|Architecture'\r\n  Operating System: Ubuntu 18.04.2 LTS\r\n      Architecture: x86-64
\n
\n
\n
\n
apt\u5b9f\u884c\u74b0\u5883
\n
\n
$ dpkg-query -W apt\r\napt     1.8.2\r\n$ hostnamectl | egrep 'Operating System|Architecture'\r\n  Operating System: Debian GNU/Linux bullseye/sid\r\n      Architecture: x86-64
\n
\n
\n

\n", "content_text": "apt-cacher-ng \u3067\u5404\u7a2e\u30ea\u30dd\u30b8\u30c8\u30ea\u3092\u30ad\u30e3\u30c3\u30b7\u30e5\u3057\u3066\u3044\u308b\u306e\u3067\u3059\u304c\uff0chttps \u306e\u5834\u5408\u30a8\u30e9\u30fc\u306b\u306a\u3063\u3066\u3057\u307e\u3044\u307e\u3059\uff0e\n\n\nerror message\n\n$ sudo apt update\r\nErr:1 https://updates.signal.org/desktop/apt xenial InRelease Reading from proxy failed - read (115: Operation now in progress) [IP: 192.168.1.102 3142] Err:2 https://deb.opera.com/opera-stable stable InRelease\r\n Reading from proxy failed - read (115: Operation now in progress) [IP: 192.168.1.102 3142]\r\n :\r\nW: Failed to fetch https://deb.opera.com/opera-stable/dists/stable/InRelease Reading from proxy failed - read (115: Operation now in progress) [IP: 192.168.1.102 3142]\r\nW: Failed to fetch https://updates.signal.org/desktop/apt/dists/xenial/InRelease Reading from proxy failed - read (115: Operation now in progress) [IP: 192.168.1.102 3142]\r\nW: Some index files failed to download. They have been ignored, or old ones used instead.\n\n\n\nDebian wiki \u306b\u89e3\u6c7a\u65b9\u6cd5\u304c\u8f09\u3063\u3066\u3044\u307e\u3057\u305f\uff0ehttps \u306e\u5834\u5408\u306f\u30ad\u30e3\u30c3\u30b7\u30e5\u305b\u305a\u306b\u76f4\u63a5\u898b\u306b\u884c\u304b\u305b\u308b\u8a2d\u5b9a\u304c\u51fa\u6765\u308b\u3088\u3046\u3067\u3059\uff0e\n\n\nAptCacherNg – Debian Wiki\n\n\nHTTPS repositories\napt-cacher-ng will obviously fail to serve HTTPS repositories. There are many solutions upstream but I have found the simplest solution to be to simply tunnel HTTPS connections directly on the proxy, by putting this in /etc/apt-cacher-ng/acng.conf:\n\n\n\nPassThroughPattern: .*\n\n\n\nThis is, as far as I can tell, the only way to avoid doing a special configuration on the clients for HTTPS repositories. The downside is that HTTPS content is not cached.\n\n\n\n\n/etc/apt-cacher-ng/acng.conf \u306b PassThroughPattern: .* \u3092\u8a2d\u5b9a\u3057\u3066\u30c7\u30fc\u30e2\u30f3\u3092\u518d\u8d77\u52d5\u3059\u308b\u3053\u3068\u3067\u76f4\u63a5\u30a2\u30af\u30bb\u30b9\u3057\u3066\u30a8\u30e9\u30fc\u3092\u51fa\u3055\u306a\u304f\u306a\u308a\u307e\u3057\u305f\uff0e\n\n\n\u4ee5\u4e0b\u306e\u30da\u30fc\u30b8\u306e\u3088\u3046\u306b source.list \u3092\u66f8\u304d\u63db\u3048\u3066https \u3067\u3042\u3063\u3066\u3082\u30ad\u30e3\u30c3\u30b7\u30e5\u3059\u308b\u65b9\u6cd5\u3082\u3042\u308b\u3088\u3046\u3067\u3059\u304c\u4eca\u56de\u306f\u306a\u3057\u3067\uff0e\n\n\n\n\nHOWTOs and FAQ\n\n\n\n\napt-cacher-ng\u74b0\u5883\n\n$ dpkg-query -W apt-cacher-ng\r\napt-cacher-ng 3.1-1build1\r\n$ hostnamectl | egrep 'Operating System|Architecture'\r\n Operating System: Ubuntu 18.04.2 LTS\r\n Architecture: x86-64\n\n\n\napt\u5b9f\u884c\u74b0\u5883\n\n$ dpkg-query -W apt\r\napt 1.8.2\r\n$ hostnamectl | egrep 'Operating System|Architecture'\r\n Operating System: Debian GNU/Linux bullseye/sid\r\n Architecture: x86-64", "date_published": "2019-07-19T22:12:58+09:00", "date_modified": "2019-07-19T22:20:34+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "apt-cacher-ng", "https", "Bionic Beaver(18.04LTS)", "Linux", "Ubuntu" ] }, { "id": "http://matoken.org/blog/?p=2400", "url": "https://matoken.org/blog/2019/05/25/try-cronv-which-gives-a-clear-view-of-crontabs-execution-timing/", "title": "crontab \u306e\u5b9f\u884c\u30bf\u30a4\u30df\u30f3\u30b0\u3092\u308f\u304b\u308a\u3084\u3059\u304f\u8868\u793a\u3057\u3066\u304f\u308c\u308b cronv \u3092\u8a66\u3059", "content_html": "
\n

\u3061\u3087\u3063\u3068\u8a66\u3057\u305f\u3089\u5c11\u3057\u5d4c\u3063\u305f\u306e\u3067\u30e1\u30e2\u304c\u3066\u3089\uff0e

\n
\n
\n\n
\n
\n
build
\n
\n
$ go get github.com/takumakanari/cronv/cronv\r\n$ go build -o ./cronv github.com/takumakanari/cronv/cronv
\n
\n
\n
\n
Usage
\n
\n
$ ./cronv -h\r\nUsage:\r\n  Cronv v0.4.1 [OPTIONS]\r\n\r\nApplication Options:\r\n  -o, --output=    path to .html file to output (default: ./crontab.html)\r\n  -d, --duration=  duration to visualize in N{suffix} style. e.g.) 1d(day)/1h(hour)/1m(minute) (default: 6h)\r\n      --from-date= start date in the format '2006/01/02' to visualize (default: 2019/05/25)\r\n      --from-time= start time in the format '15:04' to visualize (default: 02:50)\r\n  -t, --title=     title/label of output (default: Cron Tasks)\r\n  -w, --width=     Table width of output (default: 100)\r\n\r\nHelp Options:\r\n  -h, --help       Show this help message
\n
\n
\n
\n
\u5b9f\u884c
\n
\n
$ crontab -l | ./cronv
\n
\n
\n
\n
\n
\n

2019-06-01 ADD: \u4ee5\u4e0b\u306etab \u304c\u542b\u307e\u308c\u3066\u3044\u308b\u3068\u304d\u306b\u30a8\u30e9\u30fc\u3068\u306a\u308b\u554f\u984c\u306f\u4fee\u6b63\u3055\u308c\u307e\u3057\u305f\"\ud83d\ude16\"

\n\n
\n
\n

\u3057\u304b\u3057\uff0cmissing field(s) \u3068\u304b syntax error in year field: \u3068\u304b\u306e\u30a8\u30e9\u30fc\u306b\u306a\u3063\u3066\u3057\u307e\u3046\uff0e

\n
\n
\n
\n
$ printf \"* * * * *\\tcommand\\n\"\r\n* * * * *       command\r\n$ printf \"* * * * *\\tcommand\\n\" | ./cronv\r\npanic: Failed to analyze cron '* * * * *        command': syntax error in year field: 'command'\r\n\r\ngoroutine 1 [running]:\r\npanic\r\n        ../../../src/libgo/go/runtime/panic.go:554\r\nmain.main\r\n        /home/mk/go/src/github.com/takumakanari/cronv/cronv/main.go:33
\n
\n
\n
\n

\u30bf\u30d6\u533a\u5207\u308a\u3092\u3084\u3081\u3066\u30b9\u30da\u30fc\u30b9\u533a\u5207\u308a\u306b\u3059\u308b\u3068\u30a8\u30e9\u30fc\u304c\u51fa\u306a\u3044

\n
\n
\n
\n
$ printf \"* * * * * command\\n\" | ./cronv\r\n[Cron Tasks] 1 tasks.\r\n[Cron Tasks] './crontab.html' generated.
\n
\n
\n
\n

\u3068\u3044\u3046\u3053\u3068\u3067\u3068\u308a\u3042\u3048\u305a\u30bf\u30d6\u3092\u30b9\u30da\u30fc\u30b9\u306b\u5909\u63db\u3059\u308b\u3053\u3068\u306b\u3057\u305f\uff0e

\n
\n
\n
\n
$ crontab -l | tr -s '\\t' ' ' | ./cronv\r\n[Cron Tasks] 8 tasks.\r\n[Cron Tasks] './crontab.html' generated.
\n
\n
\n
\n

\u4f5c\u6210\u3055\u308c\u305f crontab.html \u3092 w3m \u3067\u2026\u2026\u307b\u3068\u3093\u3069\u8868\u793a\u3055\u308c\u306a\u3044\uff0e

\n
\n
\n

\"20190525

\n
\n
\n

\u3082\u3046\u5c11\u3057\u30ea\u30c3\u30c1\u306a JavaScript \u306e\u52d5\u304f\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u3067\u958b\u304f\u3068OK\uff0e
\n\u3053\u308c\u304b\u3089\u306e6\u6642\u9593\u5206\u306e\u69d8\u5b50\u304c\u898b\u3048\u308b\uff0e

\n
\n
\n

\"20190525

\n
\n
\n

-d, --duration option \u3067\u8868\u793a\u3059\u308b\u6642\u9593\u9593\u9694\u304c\u6307\u5b9a\u3067\u304d\u308b\uff0e
\n\u958b\u59cb\u65e5\u6642\u306f\uff0c--fron-date, --from-time option \u3067\u6307\u5b9a\u3067\u304d\u308b\uff0e
\n\u4ee5\u4e0b\u306e\u4f8b\u3067\u306f 2019-05-25 00:00:00 \u304b\u30891\u65e5\u5206\u306e\u8868\u793a\u306b\u306a\u308b\uff0e

\n
\n
\n
\n
$ crontab -l | tr -s '\\t' ' ' | ./cronv -d 1d --from-date=2019/05/25 --from-time=00:00
\n
\n
\n
\n

\"20190525

\n
\n
\n

\u3061\u306a\u307f\u306b1\u30f6\u6708\u3082\u8a66\u3057\u305f\u304c\uff0c\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u3067\u8868\u793a\u3059\u308b\u306e\u306b\u3068\u3066\u3082\u6642\u9593\u304c\u639b\u304b\u3063\u305f\uff0e

\n
\n
\n
\u74b0\u5883
\n
\n
$ dpkg-query -W cron gccgo-go\r\ncron    3.0pl1-128.1ubuntu1\r\ngccgo-go        2:1.10~4ubuntu1\r\n$ lsb_release -d\r\nDescription:    Ubuntu 18.04.2 LTS\r\n$ uname -m\r\nx86_64
\n
\n
\n

\n", "content_text": "\u3061\u3087\u3063\u3068\u8a66\u3057\u305f\u3089\u5c11\u3057\u5d4c\u3063\u305f\u306e\u3067\u30e1\u30e2\u304c\u3066\u3089\uff0e\n\n\n\n\nGitHub – takumakanari/cronv: A visualizer for CRONTAB\n\n\n\n\nbuild\n\n$ go get github.com/takumakanari/cronv/cronv\r\n$ go build -o ./cronv github.com/takumakanari/cronv/cronv\n\n\n\nUsage\n\n$ ./cronv -h\r\nUsage:\r\n Cronv v0.4.1 [OPTIONS]\r\n\r\nApplication Options:\r\n -o, --output= path to .html file to output (default: ./crontab.html)\r\n -d, --duration= duration to visualize in N{suffix} style. e.g.) 1d(day)/1h(hour)/1m(minute) (default: 6h)\r\n --from-date= start date in the format '2006/01/02' to visualize (default: 2019/05/25)\r\n --from-time= start time in the format '15:04' to visualize (default: 02:50)\r\n -t, --title= title/label of output (default: Cron Tasks)\r\n -w, --width= Table width of output (default: 100)\r\n\r\nHelp Options:\r\n -h, --help Show this help message\n\n\n\n\u5b9f\u884c\n\n$ crontab -l | ./cronv\n\n\n\n\n\n2019-06-01 ADD: \u4ee5\u4e0b\u306etab \u304c\u542b\u307e\u308c\u3066\u3044\u308b\u3068\u304d\u306b\u30a8\u30e9\u30fc\u3068\u306a\u308b\u554f\u984c\u306f\u4fee\u6b63\u3055\u308c\u307e\u3057\u305f\n\nIt is an error to use tabs as crontab delimiters. \u00b7 Issue #37 \u00b7 takumakanari/cronv\n\n\n\n\u3057\u304b\u3057\uff0cmissing field(s) \u3068\u304b syntax error in year field: \u3068\u304b\u306e\u30a8\u30e9\u30fc\u306b\u306a\u3063\u3066\u3057\u307e\u3046\uff0e\n\n\n\n$ printf \"* * * * *\\tcommand\\n\"\r\n* * * * * command\r\n$ printf \"* * * * *\\tcommand\\n\" | ./cronv\r\npanic: Failed to analyze cron '* * * * * command': syntax error in year field: 'command'\r\n\r\ngoroutine 1 [running]:\r\npanic\r\n ../../../src/libgo/go/runtime/panic.go:554\r\nmain.main\r\n /home/mk/go/src/github.com/takumakanari/cronv/cronv/main.go:33\n\n\n\n\u30bf\u30d6\u533a\u5207\u308a\u3092\u3084\u3081\u3066\u30b9\u30da\u30fc\u30b9\u533a\u5207\u308a\u306b\u3059\u308b\u3068\u30a8\u30e9\u30fc\u304c\u51fa\u306a\u3044\n\n\n\n$ printf \"* * * * * command\\n\" | ./cronv\r\n[Cron Tasks] 1 tasks.\r\n[Cron Tasks] './crontab.html' generated.\n\n\n\n\u3068\u3044\u3046\u3053\u3068\u3067\u3068\u308a\u3042\u3048\u305a\u30bf\u30d6\u3092\u30b9\u30da\u30fc\u30b9\u306b\u5909\u63db\u3059\u308b\u3053\u3068\u306b\u3057\u305f\uff0e\n\n\n\n$ crontab -l | tr -s '\\t' ' ' | ./cronv\r\n[Cron Tasks] 8 tasks.\r\n[Cron Tasks] './crontab.html' generated.\n\n\n\n\u4f5c\u6210\u3055\u308c\u305f crontab.html \u3092 w3m \u3067\u2026\u2026\u307b\u3068\u3093\u3069\u8868\u793a\u3055\u308c\u306a\u3044\uff0e\n\n\n\n\n\n\u3082\u3046\u5c11\u3057\u30ea\u30c3\u30c1\u306a JavaScript \u306e\u52d5\u304f\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u3067\u958b\u304f\u3068OK\uff0e\n\u3053\u308c\u304b\u3089\u306e6\u6642\u9593\u5206\u306e\u69d8\u5b50\u304c\u898b\u3048\u308b\uff0e\n\n\n\n\n\n-d, --duration option \u3067\u8868\u793a\u3059\u308b\u6642\u9593\u9593\u9694\u304c\u6307\u5b9a\u3067\u304d\u308b\uff0e\n\u958b\u59cb\u65e5\u6642\u306f\uff0c--fron-date, --from-time option \u3067\u6307\u5b9a\u3067\u304d\u308b\uff0e\n\u4ee5\u4e0b\u306e\u4f8b\u3067\u306f 2019-05-25 00:00:00 \u304b\u30891\u65e5\u5206\u306e\u8868\u793a\u306b\u306a\u308b\uff0e\n\n\n\n$ crontab -l | tr -s '\\t' ' ' | ./cronv -d 1d --from-date=2019/05/25 --from-time=00:00\n\n\n\n\n\n\n\u3061\u306a\u307f\u306b1\u30f6\u6708\u3082\u8a66\u3057\u305f\u304c\uff0c\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u3067\u8868\u793a\u3059\u308b\u306e\u306b\u3068\u3066\u3082\u6642\u9593\u304c\u639b\u304b\u3063\u305f\uff0e\n\n\n\u74b0\u5883\n\n$ dpkg-query -W cron gccgo-go\r\ncron 3.0pl1-128.1ubuntu1\r\ngccgo-go 2:1.10~4ubuntu1\r\n$ lsb_release -d\r\nDescription: Ubuntu 18.04.2 LTS\r\n$ uname -m\r\nx86_64", "date_published": "2019-05-25T06:51:57+09:00", "date_modified": "2019-06-01T16:58:39+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "crontab", "cronv", "Bionic Beaver(18.04LTS)", "Linux", "Ubuntu" ] }, { "id": "http://matoken.org/blog/?p=2354", "url": "https://matoken.org/blog/2019/03/31/ssh-public-key-import-function-from-ubuntu-server-installer-github-launchpad/", "title": "Ubuntu Server \u30a4\u30f3\u30b9\u30c8\u30fc\u30e9\u306e Github, Launchpad \u304b\u3089\u306e ssh\u516c\u958b\u9375\u30a4\u30f3\u30dd\u30fc\u30c8\u6a5f\u80fd", "content_html": "
\n
Example 1. \"\u2744\": “https://github.com/settings/keys \u304b\u3089SSH Key\u3068\u3057\u3066\u7a81\u3063\u8fbc\u3093\u2026” – :don:
\n
\n
\n

github.com/settings/keys \u304b\u3089SSH Key\u3068\u3057\u3066\u7a81\u3063\u8fbc\u3093\u3069\u304f\u3068\u4fbf\u5229\u3060\u3057\u3001\u4eca\u306eUbuntu Server\u306f\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3067\u305d\u308c\u3092\u4f7f\u3046\u9805\u76ee\u3059\u3089\u3042\u308b\u306e\u3067

\n
\n
\n
\n
\n

\u306a\u308b\u307b\u3069\u4fbf\u5229\u305d\u3046
\n\u8a66\u3057\u3066\u307f\u3088\u3046\u3068 Ubuntu Server 18.04.2 LTS
\n (ubuntu-18.04.2-live-server-amd64.iso) \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30e9\u3067\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e

\n
\n
\n\n
\n
\n

OpenSSH \u3092\u5c0e\u5165\u3059\u308b\u3088\u3046\u306b\u3059\u308b\u3068\uff0cSSH\u9375\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b\u30aa\u30d7\u30b7\u30e7\u30f3\u3067 Github / Launchpad \u304c\u9078\u3079\u307e\u3059\uff0e
\n\"Screenshot

\n
\n
\n

\u3053\u3093\u306a\u611f\u3058\u3067\u30a4\u30f3\u30dd\u30fc\u30c8\u3055\u308c\u307e\u3057\u305f\uff0e
\n\"Screenshot

\n
\n
\n

\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u7d42\u4e86\u3057\u3066 ssh login \u3059\u308b\u3068\u30a4\u30f3\u30dd\u30fc\u30c8\u3055\u308c\u305f\u9375\u3067 login \u51fa\u6765\u307e\u3057\u305f\uff0e

\n
\n
\n

\u30a4\u30f3\u30dd\u30fc\u30c8\u3055\u308c\u305f\u516c\u958b\u9375\u3092\u78ba\u8a8d\u3059\u308b\u3068\u30b3\u30e1\u30f3\u30c8\u90e8\u5206\u304c\u5c11\u3057\u66f8\u304d\u63db\u308f\u3063\u3066\u3044\u307e\u3059\uff0e

\n
\n
\n
\n
$ cat ~/.ssh/authorized_keys\r\nssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPgwY9aZPxN/YoBBzd7TOcCk7EuGO0E9PuUjCHPtTuHP matoken@github/16598604 # ssh-import-id gh:matoken\r\nssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEoKnbjj7cVafcAJbYHqUEua1x/81uzoK0LnjgqmR6H8 matoken@github/33364582 # ssh-import-id gh:matoken
\n
\n
\n
\n

sshd_config \u3092\u898b\u308b\u3068\u7de8\u96c6\u3067\u306f\u306a\u304f\u672b\u5c3e\u306b\u8ffd\u8a18\u3057\u3066\u308b\u306e\u3067\u3061\u3087\u3063\u3068\u96d1\u3044\u611f\uff0e

\n
\n
\n
\n
$ grep PasswordAuthentication /etc/ssh/sshd_config\r\n#PasswordAuthentication yes\r\n# PasswordAuthentication.  Depending on your PAM configuration,\r\n# PAM authentication, then enable this but set PasswordAuthentication\r\nPasswordAuthentication no\r\n$ tail -1 /etc/ssh/sshd_config\r\nPasswordAuthentication no
\n
\n
\n
\n

\u3061\u306a\u307f\u306b\uff0cGithub \u304b\u3089\u9375\u3092\u5165\u624b\u3059\u308b\u306e\u306f\u3053\u3093\u306a\u611f\u3058\u3067\u884c\u3051\u308b\u3088\u3046\u3067\u3059\uff0e
\n(<USERNAME>\u90e8\u5206\u3092\u8a72\u5f53\u30e6\u30fc\u30b6\u540d\u306b\u4fee\u6b63)

\n
\n
\n
ssh\u516c\u958b\u9375
\n

https://github.com/<USERNAME>.keys

\n
\n
\n
ssh\u516c\u958b\u9375 json \u5f62\u5f0f
\n

https://api.github.com/users/<USERNAME>/keys

\n
\n
\n
GPG\u516c\u958b\u9375
\n

https://github.com/<USERNAME>.gpg

\n
\n
\n

Launchpad \u306f\u3053\u3093\u306a\u611f\u3058\uff0e

\n
\n
\n
ssh\u516c\u958b\u9375
\n

https://launchpad.net/~<USERNAME>/+sshkeys

\n
\n
\n

\u3061\u306a\u307f\u306bLaunchpad \u306f\u672a\u3060ED25519\u5f62\u5f0f\u306b\u306f\u672a\u5bfe\u5fdc\u306a\u3088\u3046\u3067\u3059\uff0e
\n\"20190330

\n
\n
\n

Bitbucket \u306e\u9375\u3082\u540c\u69d8\u306b https://api.bitbucket.org/2.0/users/<USERNAME>/ssh-keys \u3067\u5165\u624b\u3067\u304d\u305d\u3046\u3068\u601d\u3063\u305f\u306e\u3067\u3059\u304c\uff0c\u672a\u8a8d\u8a3c\u3067\u306f\u99c4\u76ee\u307f\u305f\u3044\u3067\u3059\uff0e

\n
\n
\n
\n
$ curl -s https://api.bitbucket.org/2.0/users/matoken/ssh-keys|jq\r\n{\r\n  \"type\": \"error\",\r\n  \"error\": {\r\n    \"message\": \"This API is only accessible with the following authentication types: session, password, apppassword\"\r\n  }\r\n}
\n
\n
\n
\n\n
\n
\n
\u74b0\u5883
\n
\n
$ lsb_release -d\r\nDescription:\tUbuntu 18.04.2 LTS\r\n$ uname -m\r\nx86_64
\n
\n
\n

\n", "content_text": "Example 1. : “https://github.com/settings/keys \u304b\u3089SSH Key\u3068\u3057\u3066\u7a81\u3063\u8fbc\u3093\u2026” – :don:\n\n\ngithub.com/settings/keys \u304b\u3089SSH Key\u3068\u3057\u3066\u7a81\u3063\u8fbc\u3093\u3069\u304f\u3068\u4fbf\u5229\u3060\u3057\u3001\u4eca\u306eUbuntu Server\u306f\u30bb\u30c3\u30c8\u30a2\u30c3\u30d7\u3067\u305d\u308c\u3092\u4f7f\u3046\u9805\u76ee\u3059\u3089\u3042\u308b\u306e\u3067\n\n\n\n\n\u306a\u308b\u307b\u3069\u4fbf\u5229\u305d\u3046\n\u8a66\u3057\u3066\u307f\u3088\u3046\u3068 Ubuntu Server 18.04.2 LTS\n (ubuntu-18.04.2-live-server-amd64.iso) \u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30e9\u3067\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e\n\n\n\n\nDownload Ubuntu Server | Download | Ubuntu\n\n\n\n\nOpenSSH \u3092\u5c0e\u5165\u3059\u308b\u3088\u3046\u306b\u3059\u308b\u3068\uff0cSSH\u9375\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b\u30aa\u30d7\u30b7\u30e7\u30f3\u3067 Github / Launchpad \u304c\u9078\u3079\u307e\u3059\uff0e\n\n\n\n\u3053\u3093\u306a\u611f\u3058\u3067\u30a4\u30f3\u30dd\u30fc\u30c8\u3055\u308c\u307e\u3057\u305f\uff0e\n\n\n\n\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u304c\u7d42\u4e86\u3057\u3066 ssh login \u3059\u308b\u3068\u30a4\u30f3\u30dd\u30fc\u30c8\u3055\u308c\u305f\u9375\u3067 login \u51fa\u6765\u307e\u3057\u305f\uff0e\n\n\n\u30a4\u30f3\u30dd\u30fc\u30c8\u3055\u308c\u305f\u516c\u958b\u9375\u3092\u78ba\u8a8d\u3059\u308b\u3068\u30b3\u30e1\u30f3\u30c8\u90e8\u5206\u304c\u5c11\u3057\u66f8\u304d\u63db\u308f\u3063\u3066\u3044\u307e\u3059\uff0e\n\n\n\n$ cat ~/.ssh/authorized_keys\r\nssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPgwY9aZPxN/YoBBzd7TOcCk7EuGO0E9PuUjCHPtTuHP matoken@github/16598604 # ssh-import-id gh:matoken\r\nssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEoKnbjj7cVafcAJbYHqUEua1x/81uzoK0LnjgqmR6H8 matoken@github/33364582 # ssh-import-id gh:matoken\n\n\n\nsshd_config \u3092\u898b\u308b\u3068\u7de8\u96c6\u3067\u306f\u306a\u304f\u672b\u5c3e\u306b\u8ffd\u8a18\u3057\u3066\u308b\u306e\u3067\u3061\u3087\u3063\u3068\u96d1\u3044\u611f\uff0e\n\n\n\n$ grep PasswordAuthentication /etc/ssh/sshd_config\r\n#PasswordAuthentication yes\r\n# PasswordAuthentication. Depending on your PAM configuration,\r\n# PAM authentication, then enable this but set PasswordAuthentication\r\nPasswordAuthentication no\r\n$ tail -1 /etc/ssh/sshd_config\r\nPasswordAuthentication no\n\n\n\n\u3061\u306a\u307f\u306b\uff0cGithub \u304b\u3089\u9375\u3092\u5165\u624b\u3059\u308b\u306e\u306f\u3053\u3093\u306a\u611f\u3058\u3067\u884c\u3051\u308b\u3088\u3046\u3067\u3059\uff0e\n(<USERNAME>\u90e8\u5206\u3092\u8a72\u5f53\u30e6\u30fc\u30b6\u540d\u306b\u4fee\u6b63)\n\n\nssh\u516c\u958b\u9375\nhttps://github.com/<USERNAME>.keys\n\n\nssh\u516c\u958b\u9375 json \u5f62\u5f0f\nhttps://api.github.com/users/<USERNAME>/keys\n\n\nGPG\u516c\u958b\u9375\nhttps://github.com/<USERNAME>.gpg\n\n\nLaunchpad \u306f\u3053\u3093\u306a\u611f\u3058\uff0e\n\n\nssh\u516c\u958b\u9375\nhttps://launchpad.net/~<USERNAME>/+sshkeys\n\n\n\u3061\u306a\u307f\u306bLaunchpad \u306f\u672a\u3060ED25519\u5f62\u5f0f\u306b\u306f\u672a\u5bfe\u5fdc\u306a\u3088\u3046\u3067\u3059\uff0e\n\n\n\nBitbucket \u306e\u9375\u3082\u540c\u69d8\u306b https://api.bitbucket.org/2.0/users/<USERNAME>/ssh-keys \u3067\u5165\u624b\u3067\u304d\u305d\u3046\u3068\u601d\u3063\u305f\u306e\u3067\u3059\u304c\uff0c\u672a\u8a8d\u8a3c\u3067\u306f\u99c4\u76ee\u307f\u305f\u3044\u3067\u3059\uff0e\n\n\n\n$ curl -s https://api.bitbucket.org/2.0/users/matoken/ssh-keys|jq\r\n{\r\n \"type\": \"error\",\r\n \"error\": {\r\n \"message\": \"This API is only accessible with the following authentication types: session, password, apppassword\"\r\n }\r\n}\n\n\n\n\n\nBitbucket API\n\n\nBitbucket API\n\n\n\n\n\u74b0\u5883\n\n$ lsb_release -d\r\nDescription:\tUbuntu 18.04.2 LTS\r\n$ uname -m\r\nx86_64", "date_published": "2019-03-31T12:36:06+09:00", "date_modified": "2019-03-31T12:36:06+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "OpenSSH", "Ubuntu", "Ubuntu 18.04", "Bionic Beaver(18.04LTS)", "Linux" ] }, { "id": "http://matoken.org/blog/?p=2334", "url": "https://matoken.org/blog/2019/03/23/im-having-trouble-accessing-gnu-social-and-it-wont-show-anything/", "title": "GNU social \u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3068\u306a\u306b\u3082\u8868\u793a\u3055\u308c\u306a\u304f\u306a\u3063\u3066\u56f0\u308b", "content_html": "

gnusocial

\n
\n

\u3055\u3063\u304d\u307e\u3067\u306f\u52d5\u3044\u3066\u3044\u305f\u306e\u306b\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6(qutebrowser)\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u30a2\u30c3\u30d7\u306b\u8ffd\u5f93\u3059\u308b\u305f\u3081\u306b\u518d\u8d77\u52d5\u3057\u3066\uff0c\u81ea\u5206\u7528 GNU social \u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3068\u753b\u9762\u304c\u771f\u3063\u767d\u3067\u3059><
\n\u30b9\u30de\u30fc\u30c8\u30d5\u30a9\u30f3\u306e\u30a2\u30d7\u30ea\u7d4c\u7531(Twidere)\u3060\u3068\u52d5\u4f5c\u3057\u3066\u3044\u308b\u306e\u3067\u8868\u793a\u5468\u308a\u306e\u554f\u984c\u3067\u3057\u3087\u3046\u304b?

\n
\n
\n

config.php \u306e
\n$config['site']['logfile'] \u306b\u6307\u5b9a\u3057\u3066\u3044\u308b\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u3092\u78ba\u8a8d\u3059\u308b\u3068\u3053\u3093\u306a\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u3042\u308a\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
2019-03-22 14:35:28 LOG_DEBUG: [gnusocial.matoken.org:29424.bda9531d GET /] action.php - Server error '500' on 'qvitter': Class 'Locale' not found\r\n2019-03-22 14:35:28 LOG_ERR: [gnusocial.matoken.org:29424.bda9531d GET /] Handled serverError (500) but cannot output into desired format (NULL): 'Class \\'Locale\\' not found'\r\n2019-03-22 14:35:28 LOG_ERR: [gnusocial.matoken.org:29424.bda9531d GET /] ServerErrorAction: 500 Class 'Locale' not found
\n
\n
\n
\n

\u3053\u306e\u3042\u305f\u308a\u3067\u4f7f\u304a\u3046\u3068\u3057\u3066\u3044\u308b\u3088\u3046

\n
\n
\n
\n
$ find plugins/Qvitter -type f -print0 | xargs -0 grep -n Locale\r\nplugins/Qvitter/actions/qvitter.php:341:                    window.usersLanguageNameInEnglish = <?php print json_encode(Locale::getDisplayLanguage($user_browser_language, 'en')) ?>;\r\nplugins/Qvitter/actions/qvitter.php:462:                                                $languagecodesandnames[$lancode]['english_name'] = Locale::getDisplayName($lancode, 'en');\r\nplugins/Qvitter/actions/qvitter.php:463:                                                $languagecodesandnames[$lancode]['name'] = Locale::getDisplayName($lancode, $lancode);
\n
\n
\n
\n

\u3053\u308c\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u304b\u5b58\u5728\u3057\u306a\u3044\u72b6\u614b\u306e\u3088\u3046\u3067\u3059\uff0e

\n
\n
\n\n
\n
\n

\u305d\u308c\u3089\u3057\u3044package \u3092\u63a2\u3057\u3066\uff0c

\n
\n
\n
\n
$ apt-cache search ^php international\r\nphp-horde-idna - IDNA backend normalization package\r\nphp-horde-ingo - An email filter rules manager\r\nphp-intl - Internationalisation module for PHP [default]\r\nphp-net-idna2 - PHP Pear module for handling international domain names\r\nphp-symfony-translation - tools to internationalize an application\r\nphp7.2-intl - Internationalisation module for PHP\r\nphpmyadmin - MySQL web administration tool\r\nphp7.0-intl - Internationalisation module for PHP
\n
\n
\n
\n
\n
$ apt show php-intl\r\nPackage: php-intl\r\nVersion: 1:7.2+60ubuntu1\r\nPriority: optional\r\nSection: universe/php\r\nSource: php-defaults (60ubuntu1)\r\nOrigin: Ubuntu\r\nMaintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>\r\nOriginal-Maintainer: Debian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org>\r\nBugs: https://bugs.launchpad.net/ubuntu/+filebug\r\nInstalled-Size: 12.3 kB\r\nDepends: php-common, php7.2-intl\r\nDownload-Size: 2,012 B\r\nAPT-Sources: http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 Packages\r\nDescription: Internationalisation module for PHP [default]\r\n This package provides a Internationalisation module for PHP.\r\n .\r\n PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used\r\n open source general-purpose scripting language that is especially suited\r\n for web development and can be embedded into HTML.\r\n .\r\n This package is a dependency package, which depends on Ubuntu's default\r\n PHP version (currently 7.2).
\n
\n
\n
\n

\u5c0e\u5165\u3059\u308b\u3053\u3068\u3067\u89e3\u6c7a\u3057\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
sudo apt-get install php7.2-intl
\n
\n
\n
\n

\u6050\u3089\u304f php \u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u4e0a\u3052\u305f\u3068\u304d\u306b\u6f0f\u308c\u3066\u3057\u307e\u3044\uff0cAPI \u306a\u3069\u306f\u554f\u984c\u306a\u304f\u4f7f\u3048\u3066\u3044\u305f\u306e\u3067\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u3092\u518d\u8d77\u52d5\u3059\u308b\u307e\u3067\u6c17\u3065\u304b\u306a\u304b\u3063\u305f\u611f\u3058\u306e\u3088\u3046\u3067\u3059\uff0e

\n
\n
\n

\u3057\u304b\u3057\uff0cGNU social \u306f\u3053\u3046\u3044\u3046\u8b66\u544a\u3092\u3088\u304f\u898b\u304b\u3051\u308b\u306e\u3067\u3069\u3046\u306b\u304b\u3057\u306a\u3044\u3068\u3044\u3051\u306a\u3044\u3067\u3059\u306d\uff0e\u958b\u767a\u306f\u6ede\u3063\u3066\u3044\u308b\u611f\u3058\u306a\u306e\u3067 Pleroma \u3042\u305f\u308a\u306b\u79fb\u884c\u3059\u308b\u306e\u304c\u3044\u3044\u3093\u3067\u3057\u3087\u3046\u304c\u2026\u2026\uff0e

\n
\n
\n
\n
this will throw an Error in a future version of PHP
\n
\n
\n
\n

\u74b0\u5883

\n
\n
\n
\n
$ dpkg-query -W php7.2-intl\r\nphp7.2-intl     7.2.15-0ubuntu0.18.04.1\r\n$ w3m -dump https://gnusocial.matoken.org/nodeinfo/2.0|jq .software\r\n{\r\n  \"name\": \"gnusocial\",\r\n  \"version\": \"1.2.0-beta5\"\r\n}\r\n$ lsb_release -d\r\nDescription:    Ubuntu 18.04.2 LTS\r\n$ uname -m\r\nx86_64
\n
\n
\n

\n", "content_text": "\u3055\u3063\u304d\u307e\u3067\u306f\u52d5\u3044\u3066\u3044\u305f\u306e\u306b\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6(qutebrowser)\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u30a2\u30c3\u30d7\u306b\u8ffd\u5f93\u3059\u308b\u305f\u3081\u306b\u518d\u8d77\u52d5\u3057\u3066\uff0c\u81ea\u5206\u7528 GNU social \u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u3068\u753b\u9762\u304c\u771f\u3063\u767d\u3067\u3059><\n\u30b9\u30de\u30fc\u30c8\u30d5\u30a9\u30f3\u306e\u30a2\u30d7\u30ea\u7d4c\u7531(Twidere)\u3060\u3068\u52d5\u4f5c\u3057\u3066\u3044\u308b\u306e\u3067\u8868\u793a\u5468\u308a\u306e\u554f\u984c\u3067\u3057\u3087\u3046\u304b?\n\n\nconfig.php \u306e\n$config['site']['logfile'] \u306b\u6307\u5b9a\u3057\u3066\u3044\u308b\u30ed\u30b0\u30d5\u30a1\u30a4\u30eb\u3092\u78ba\u8a8d\u3059\u308b\u3068\u3053\u3093\u306a\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u3042\u308a\u307e\u3057\u305f\uff0e\n\n\n\n2019-03-22 14:35:28 LOG_DEBUG: [gnusocial.matoken.org:29424.bda9531d GET /] action.php - Server error '500' on 'qvitter': Class 'Locale' not found\r\n2019-03-22 14:35:28 LOG_ERR: [gnusocial.matoken.org:29424.bda9531d GET /] Handled serverError (500) but cannot output into desired format (NULL): 'Class \\'Locale\\' not found'\r\n2019-03-22 14:35:28 LOG_ERR: [gnusocial.matoken.org:29424.bda9531d GET /] ServerErrorAction: 500 Class 'Locale' not found\n\n\n\n\u3053\u306e\u3042\u305f\u308a\u3067\u4f7f\u304a\u3046\u3068\u3057\u3066\u3044\u308b\u3088\u3046\n\n\n\n$ find plugins/Qvitter -type f -print0 | xargs -0 grep -n Locale\r\nplugins/Qvitter/actions/qvitter.php:341: window.usersLanguageNameInEnglish = <?php print json_encode(Locale::getDisplayLanguage($user_browser_language, 'en')) ?>;\r\nplugins/Qvitter/actions/qvitter.php:462: $languagecodesandnames[$lancode]['english_name'] = Locale::getDisplayName($lancode, 'en');\r\nplugins/Qvitter/actions/qvitter.php:463: $languagecodesandnames[$lancode]['name'] = Locale::getDisplayName($lancode, $lancode);\n\n\n\n\u3053\u308c\u304c\u898b\u3064\u304b\u3089\u306a\u3044\u304b\u5b58\u5728\u3057\u306a\u3044\u72b6\u614b\u306e\u3088\u3046\u3067\u3059\uff0e\n\n\n\n\nPHP: Locale – Manual\n\n\n\n\n\u305d\u308c\u3089\u3057\u3044package \u3092\u63a2\u3057\u3066\uff0c\n\n\n\n$ apt-cache search ^php international\r\nphp-horde-idna - IDNA backend normalization package\r\nphp-horde-ingo - An email filter rules manager\r\nphp-intl - Internationalisation module for PHP [default]\r\nphp-net-idna2 - PHP Pear module for handling international domain names\r\nphp-symfony-translation - tools to internationalize an application\r\nphp7.2-intl - Internationalisation module for PHP\r\nphpmyadmin - MySQL web administration tool\r\nphp7.0-intl - Internationalisation module for PHP\n\n\n\n\n$ apt show php-intl\r\nPackage: php-intl\r\nVersion: 1:7.2+60ubuntu1\r\nPriority: optional\r\nSection: universe/php\r\nSource: php-defaults (60ubuntu1)\r\nOrigin: Ubuntu\r\nMaintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>\r\nOriginal-Maintainer: Debian PHP Maintainers <pkg-php-maint@lists.alioth.debian.org>\r\nBugs: https://bugs.launchpad.net/ubuntu/+filebug\r\nInstalled-Size: 12.3 kB\r\nDepends: php-common, php7.2-intl\r\nDownload-Size: 2,012 B\r\nAPT-Sources: http://jp.archive.ubuntu.com/ubuntu bionic/universe amd64 Packages\r\nDescription: Internationalisation module for PHP [default]\r\n This package provides a Internationalisation module for PHP.\r\n .\r\n PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used\r\n open source general-purpose scripting language that is especially suited\r\n for web development and can be embedded into HTML.\r\n .\r\n This package is a dependency package, which depends on Ubuntu's default\r\n PHP version (currently 7.2).\n\n\n\n\u5c0e\u5165\u3059\u308b\u3053\u3068\u3067\u89e3\u6c7a\u3057\u307e\u3057\u305f\uff0e\n\n\n\nsudo apt-get install php7.2-intl\n\n\n\n\u6050\u3089\u304f php \u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u4e0a\u3052\u305f\u3068\u304d\u306b\u6f0f\u308c\u3066\u3057\u307e\u3044\uff0cAPI \u306a\u3069\u306f\u554f\u984c\u306a\u304f\u4f7f\u3048\u3066\u3044\u305f\u306e\u3067\u30a6\u30a7\u30d6\u30d6\u30e9\u30a6\u30b6\u3092\u518d\u8d77\u52d5\u3059\u308b\u307e\u3067\u6c17\u3065\u304b\u306a\u304b\u3063\u305f\u611f\u3058\u306e\u3088\u3046\u3067\u3059\uff0e\n\n\n\u3057\u304b\u3057\uff0cGNU social \u306f\u3053\u3046\u3044\u3046\u8b66\u544a\u3092\u3088\u304f\u898b\u304b\u3051\u308b\u306e\u3067\u3069\u3046\u306b\u304b\u3057\u306a\u3044\u3068\u3044\u3051\u306a\u3044\u3067\u3059\u306d\uff0e\u958b\u767a\u306f\u6ede\u3063\u3066\u3044\u308b\u611f\u3058\u306a\u306e\u3067 Pleroma \u3042\u305f\u308a\u306b\u79fb\u884c\u3059\u308b\u306e\u304c\u3044\u3044\u3093\u3067\u3057\u3087\u3046\u304c\u2026\u2026\uff0e\n\n\n\nthis will throw an Error in a future version of PHP\n\n\n\n\u74b0\u5883\n\n\n\n$ dpkg-query -W php7.2-intl\r\nphp7.2-intl 7.2.15-0ubuntu0.18.04.1\r\n$ w3m -dump https://gnusocial.matoken.org/nodeinfo/2.0|jq .software\r\n{\r\n \"name\": \"gnusocial\",\r\n \"version\": \"1.2.0-beta5\"\r\n}\r\n$ lsb_release -d\r\nDescription: Ubuntu 18.04.2 LTS\r\n$ uname -m\r\nx86_64", "date_published": "2019-03-23T12:22:48+09:00", "date_modified": "2019-03-23T12:22:48+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "GNU social", "php", "Bionic Beaver(18.04LTS)", "Linux", "Ostatus", "Ubuntu" ] }, { "id": "http://matoken.org/blog/?p=2190", "url": "https://matoken.org/blog/2018/10/23/debian-ubuntu-borrows-the-upstream-package/", "title": "Debian, Ubuntu \u3067 \u4e0a\u6d41\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u501f\u308a\u3066\u304f\u308b", "content_html": "
\n
\n
\n

\u4ee5\u524d\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u8a18\u4e8b\u3092\u66f8\u304d\u307e\u3057\u305f\uff0e

\n
\n\n
\n

\u4eca\u3067\u3082\u3053\u306eblog\u306e\u4e2d\u3067\u306f\u30a2\u30af\u30bb\u30b9\u304c\u591a\u304f\uff0c\u6700\u8fd1\u3082\u30c8\u30e9\u30c3\u30af\u30d0\u30c3\u30af\u3092\u3082\u3089\u3044\u307e\u3057\u305f\uff0e

\n
\n\n
\n

\u3053\u306e\u5f53\u6642\u306f arm64 \u306e mozc\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u306a\u304f\u3066\u81ea\u5206\u3067build \u3057\u305f\u3068\u3044\u3046\u8a71\u306a\u306e\u3067\u3059\u304c\uff0c\u73fe\u5728\u306fDebian \u3067\u306f buster(testing), Ubuntu \u3067\u306fartful(17.10) \u4ee5\u964d\u3067\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u5b58\u5728\u3057\u307e\u3059\uff0e
\n\u306a\u306e\u3067\u3053\u306e\u91ce\u826f\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u4f7f\u3046\u3088\u308a\u3082\u516c\u5f0f\u306e\u4e0a\u6d41\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u501f\u308a\u308b\u307b\u3046\u304c\u5927\u62b5\u306e\u5834\u5408\u3044\u3044\u3068\u601d\u3044\u307e\u3059\uff0e
\n\u3068\u3044\u3046\u3053\u3068\u3067\u624b\u9806\u3092\u66f8\u3044\u3066\u304a\u304d\u307e\u3059\uff0e

\n
\n
\n

\u30d1\u30c3\u30b1\u30fc\u30b8\u30d5\u30a1\u30a4\u30eb\u3060\u3051\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30da\u30fc\u30b8\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u53ef\u80fd\u3067\u3059\uff0e

\n
\n\n
\n

\u91ce\u826f\u30d1\u30c3\u30b1\u30fc\u30b8\u306f\u8fd1\u65e5\u4e2d\u306b\u524a\u9664\u3057\u307e\u3059\uff0e

\n
\n
\n
\n

Debian stretch arm64 \u306b Debian buster arm64 \u306e mozc \u3092\u501f\u308a\u3066\u304f\u308b

\n
\n
\n
Debian stretch arm64 \u3067\u306f mozc-data \u3057\u304b\u306a\u3044
\n
\n
$ apt-cache search mozc\r\nmozc-data - Mozc input method - data files
\n
\n
\n\n
\n

buster(testing) \u306emozc \u3092\u501f\u308a\u3066\u304f\u308b\u3053\u3068\u306b\u3059\u308b\uff0e

\n
\n\n
\n

/etc/apt/preferences \u3067 buster \u306e\u512a\u5148\u5ea6\u3092\u4e0b\u3052\u308b

\n
\n
\n
/etc/apt/preferences
\n
\n
Package: *\r\nPin: release n=buster\r\nPin-Priority: 100
\n
\n
\n
\n
/etc/apt/sources.list \u306b buster(testing) \u3092 \u8ffd\u52a0 \u8a2d\u5b9a
\n
\n
deb http://deb.debian.org/debian buster main
\n
\n
\n
\n

\u203bsources.list \u306e\u7de8\u96c6\u306b\u306f apt edit-sources \u3092\u4f7f\u3046\u3068\u6587\u6cd5\u30c1\u30a7\u30c3\u30af\u3092\u3057\u3066\u304f\u308c\u308b\u306e\u3067\u304a\u3059\u3059\u3081

\n
\n
\n
\u30d1\u30c3\u30b1\u30fc\u30b8\u60c5\u5831\u306e\u66f4\u65b0
\n
\n
$ sudo apt update
\n
\n
\n
\n
mozc\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u78ba\u8a8d
\n
\n
$ apt-cache search mozc\r\nmozc-data - Mozc input method - data files\r\nfcitx-dbus-status - Addon for Fcitx to set/get/monitor IM statuses via D-Bus\r\nemacs-mozc - Mozc for Emacs\r\nemacs-mozc-bin - Helper module for emacs-mozc\r\nfcitx-mozc - Mozc engine for fcitx - Client of the Mozc input method\r\nibus-mozc - Mozc engine for IBus - Client of the Mozc input method\r\nmozc-server - Server of the Mozc input method\r\nmozc-utils-gui - GUI utilities of the Mozc input method\r\nuim-mozc - Mozc engine for uim - Client of the Mozc input method
\n
\n
\n
\n
\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u5c0e\u5165
\n
\n
$ apt install fcitx-mozc -t buster
\n
\n
\n
\n

\u5f8c\u306f\u901a\u5e38\u306e apt update && apt upgrade \u3067 stretch \u3067\u5c0e\u5165\u3057\u305f\u30d1\u30c3\u30b1\u30fc\u30b8\u306f stretch \u3067\uff0cbuster \u3067\u5c0e\u5165\u3057\u305f\u30d1\u30c3\u30b1\u30fc\u30b8\u306fbuster \u3067\u66f4\u65b0\u3055\u308c\u308b\u306f\u305a\uff0e

\n
\n
\n
\n
\n

Ubuntu 16.04 LTS xenial arm64 \u306b Ubuntu 18.04 LTS bionic arm64 \u306e mozc \u3092\u501f\u308a\u3066\u304f\u308b

\n
\n
\n

Debian\u306e\u624b\u9806\u3068\u540c\u3058\u3067\u3082ok\u3060\u3068\u601d\u3046\u3051\u3069\u5ff5\u306e\u70ba\u4ee5\u4e0b\u306e\u624b\u9806\u3092\u771f\u4f3c\u3057\u3066\u307f\u308b\uff0e

\n
\n\n
\n

mozc \u306f Ubuntu 17.10 artful \u304b\u3089\u5bfe\u5fdc\u3057\u3066\u3044\u308b\u304c\uff0c\u3082\u3046\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u306a\u3044\u306e\u3067Ubuntu 18.04 bionic \u3092\u4f7f\u3046\uff0e

\n
\n\n
\n

\u6a19\u6e96\u306e\u30ea\u30ea\u30fc\u30b9\u3092 xenial \u306b\u8a2d\u5b9a

\n
\n
\n
/etc/apt/apt.conf.d/01ubuntu
\n
\n
APT::Default-Release \"xenial\";
\n
\n
\n
\n

mozc \u3092pinning\u3059\u308b

\n
\n
\n
/etc/apt/preferences
\n
\n
Package: *mozc*\r\nPin: release n=xenial\r\nPin-Priority: -10\r\n\r\nPackage: *mozc*\r\nPin: release n=bionic\r\nPin-Priority: 900
\n
\n
\n
\n

/etc/apt/sources.list \u306b buster(testing) \u3092 \u8ffd\u52a0 \u8a2d\u5b9a

\n
\n
\n
/etc/apt/sources.list
\n
\n
deb http://ports.ubuntu.com/ bionic main universe
\n
\n
\n
\n

\u203bsources.list \u306e\u7de8\u96c6\u306b\u306f apt edit-sources \u3092\u4f7f\u3046\u3068\u6587\u6cd5\u30c1\u30a7\u30c3\u30af\u3092\u3057\u3066\u304f\u308c\u308b\u306e\u3067\u304a\u3059\u3059\u3081
\n\u203bmirror\u306b\u3088\u308a arm64 \u304c\u7f6e\u304b\u308c\u3066\u3044\u306a\u3044\u306e\u3067\u6ce8\u610f

\n
\n
\n
\u30d1\u30c3\u30b1\u30fc\u30b8\u60c5\u5831\u306e\u66f4\u65b0
\n
\n
$ sudo apt update
\n
\n
\n
\n
\u691c\u7d22\u7d50\u679c\u306bmozc\u304c\u51fa\u3066\u304f\u308b
\n
\n
$ apt-cache search mozc\r\nmozc-data - Mozc input method - data files\r\nibus-mozc - Mozc engine for IBus - Client of the Mozc input method\r\nmozc-server - Server of the Mozc input method\r\nmozc-utils-gui - GUI utilities of the Mozc input method\r\nemacs-mozc - Mozc for Emacs\r\nemacs-mozc-bin - Helper module for emacs-mozc\r\nfcitx-mozc - Mozc engine for fcitx - Client of the Mozc input method\r\nuim-mozc - Mozc engine for uim - Client of the Mozc input method
\n
\n
\n
\n
\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u5c0e\u5165
\n
\n
$ sudo apt install fcitx-mozc -t bionic
\n
\n
\n
\n
\n
\n", "content_text": "\u4ee5\u524d\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u8a18\u4e8b\u3092\u66f8\u304d\u307e\u3057\u305f\uff0e\n\n\n\n\nUbuntu 16.04 aarch64\u74b0\u5883\u3067mozc pkg\u304c\u7121\u3044\u306e\u3067source pkg\u304b\u3089build \u2013 matoken\u2019s meme\n\n\nDebian\u3067\u3082arm64\u3067mozc build \u2013 matoken\u2019s meme\n\n\n\n\n\u4eca\u3067\u3082\u3053\u306eblog\u306e\u4e2d\u3067\u306f\u30a2\u30af\u30bb\u30b9\u304c\u591a\u304f\uff0c\u6700\u8fd1\u3082\u30c8\u30e9\u30c3\u30af\u30d0\u30c3\u30af\u3092\u3082\u3089\u3044\u307e\u3057\u305f\uff0e\n\n\n\n\nChromebook C101PA\u306ecrostini\u3067Linux\u30a2\u30d7\u30ea\u3092\u4f7f\u3063\u3066\u307f\u305f | \u307d\u3093\u307d\u3093\u30c6\u30c3\u30af\n\n\n\n\n\u3053\u306e\u5f53\u6642\u306f arm64 \u306e mozc\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u306a\u304f\u3066\u81ea\u5206\u3067build \u3057\u305f\u3068\u3044\u3046\u8a71\u306a\u306e\u3067\u3059\u304c\uff0c\u73fe\u5728\u306fDebian \u3067\u306f buster(testing), Ubuntu \u3067\u306fartful(17.10) \u4ee5\u964d\u3067\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u5b58\u5728\u3057\u307e\u3059\uff0e\n\u306a\u306e\u3067\u3053\u306e\u91ce\u826f\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u4f7f\u3046\u3088\u308a\u3082\u516c\u5f0f\u306e\u4e0a\u6d41\u30d1\u30c3\u30b1\u30fc\u30b8\u3092\u501f\u308a\u308b\u307b\u3046\u304c\u5927\u62b5\u306e\u5834\u5408\u3044\u3044\u3068\u601d\u3044\u307e\u3059\uff0e\n\u3068\u3044\u3046\u3053\u3068\u3067\u624b\u9806\u3092\u66f8\u3044\u3066\u304a\u304d\u307e\u3059\uff0e\n\n\n\u30d1\u30c3\u30b1\u30fc\u30b8\u30d5\u30a1\u30a4\u30eb\u3060\u3051\u304c\u5fc5\u8981\u306a\u5834\u5408\u306f\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30da\u30fc\u30b8\u304b\u3089\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9\u53ef\u80fd\u3067\u3059\uff0e\n\n\n\n\nDebian\u2009\u2014\u2009\u30d1\u30c3\u30b1\u30fc\u30b8\u691c\u7d22\u7d50\u679c\u2009\u2014\u2009mozc\n\n\nUbuntu \u2013 \u30d1\u30c3\u30b1\u30fc\u30b8\u691c\u7d22\u7d50\u679c\u2009\u2014\u2009mozc\n\n\n\n\n\u91ce\u826f\u30d1\u30c3\u30b1\u30fc\u30b8\u306f\u8fd1\u65e5\u4e2d\u306b\u524a\u9664\u3057\u307e\u3059\uff0e\n\n\n\nDebian stretch arm64 \u306b Debian buster arm64 \u306e mozc \u3092\u501f\u308a\u3066\u304f\u308b\n\n\nDebian stretch arm64 \u3067\u306f mozc-data \u3057\u304b\u306a\u3044\n\n$ apt-cache search mozc\r\nmozc-data - Mozc input method - data files\n\n\n\n\n\nDebian\u2009\u2014\u2009\u30d1\u30c3\u30b1\u30fc\u30b8\u691c\u7d22\u7d50\u679c\u2009\u2014\u2009mozc\n\n\n\n\nbuster(testing) \u306emozc \u3092\u501f\u308a\u3066\u304f\u308b\u3053\u3068\u306b\u3059\u308b\uff0e\n\n\n\n\n\u300c\u7b2c2\u7ae0 Debian \u30d1\u30c3\u30b1\u30fc\u30b8\u7ba1\u7406\u300d\u306e\u300c2.7.6. unstable \u304b\u3089\u306e\u30d1\u30c3\u30b1\u30fc\u30b8\u3068\u5171\u306b\u3001testing \u3092\u8ffd\u3044\u304b\u3051\u308b\u300d\u3092\u53c2\u8003\u306b\u8a2d\u5b9a\u3059\u308b\n\n\n\n\n/etc/apt/preferences \u3067 buster \u306e\u512a\u5148\u5ea6\u3092\u4e0b\u3052\u308b\n\n\n/etc/apt/preferences\n\nPackage: *\r\nPin: release n=buster\r\nPin-Priority: 100\n\n\n\n/etc/apt/sources.list \u306b buster(testing) \u3092 \u8ffd\u52a0 \u8a2d\u5b9a\n\ndeb http://deb.debian.org/debian buster main\n\n\n\n\u203bsources.list \u306e\u7de8\u96c6\u306b\u306f apt edit-sources \u3092\u4f7f\u3046\u3068\u6587\u6cd5\u30c1\u30a7\u30c3\u30af\u3092\u3057\u3066\u304f\u308c\u308b\u306e\u3067\u304a\u3059\u3059\u3081\n\n\n\u30d1\u30c3\u30b1\u30fc\u30b8\u60c5\u5831\u306e\u66f4\u65b0\n\n$ sudo apt update\n\n\n\nmozc\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u78ba\u8a8d\n\n$ apt-cache search mozc\r\nmozc-data - Mozc input method - data files\r\nfcitx-dbus-status - Addon for Fcitx to set/get/monitor IM statuses via D-Bus\r\nemacs-mozc - Mozc for Emacs\r\nemacs-mozc-bin - Helper module for emacs-mozc\r\nfcitx-mozc - Mozc engine for fcitx - Client of the Mozc input method\r\nibus-mozc - Mozc engine for IBus - Client of the Mozc input method\r\nmozc-server - Server of the Mozc input method\r\nmozc-utils-gui - GUI utilities of the Mozc input method\r\nuim-mozc - Mozc engine for uim - Client of the Mozc input method\n\n\n\n\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u5c0e\u5165\n\n$ apt install fcitx-mozc -t buster\n\n\n\n\u5f8c\u306f\u901a\u5e38\u306e apt update && apt upgrade \u3067 stretch \u3067\u5c0e\u5165\u3057\u305f\u30d1\u30c3\u30b1\u30fc\u30b8\u306f stretch \u3067\uff0cbuster \u3067\u5c0e\u5165\u3057\u305f\u30d1\u30c3\u30b1\u30fc\u30b8\u306fbuster \u3067\u66f4\u65b0\u3055\u308c\u308b\u306f\u305a\uff0e\n\n\n\n\nUbuntu 16.04 LTS xenial arm64 \u306b Ubuntu 18.04 LTS bionic arm64 \u306e mozc \u3092\u501f\u308a\u3066\u304f\u308b\n\n\nDebian\u306e\u624b\u9806\u3068\u540c\u3058\u3067\u3082ok\u3060\u3068\u601d\u3046\u3051\u3069\u5ff5\u306e\u70ba\u4ee5\u4e0b\u306e\u624b\u9806\u3092\u771f\u4f3c\u3057\u3066\u307f\u308b\uff0e\n\n\n\n\nPinningHowto – Community Help Wiki\n\n\n\n\nmozc \u306f Ubuntu 17.10 artful \u304b\u3089\u5bfe\u5fdc\u3057\u3066\u3044\u308b\u304c\uff0c\u3082\u3046\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u306a\u3044\u306e\u3067Ubuntu 18.04 bionic \u3092\u4f7f\u3046\uff0e\n\n\n\n\nUbuntu \u2013 \u30d1\u30c3\u30b1\u30fc\u30b8\u691c\u7d22\u7d50\u679c\u2009\u2014\u2009mozc\n\n\n\n\n\u6a19\u6e96\u306e\u30ea\u30ea\u30fc\u30b9\u3092 xenial \u306b\u8a2d\u5b9a\n\n\n/etc/apt/apt.conf.d/01ubuntu\n\nAPT::Default-Release \"xenial\";\n\n\n\nmozc \u3092pinning\u3059\u308b\n\n\n/etc/apt/preferences\n\nPackage: *mozc*\r\nPin: release n=xenial\r\nPin-Priority: -10\r\n\r\nPackage: *mozc*\r\nPin: release n=bionic\r\nPin-Priority: 900\n\n\n\n/etc/apt/sources.list \u306b buster(testing) \u3092 \u8ffd\u52a0 \u8a2d\u5b9a\n\n\n/etc/apt/sources.list\n\ndeb http://ports.ubuntu.com/ bionic main universe\n\n\n\n\u203bsources.list \u306e\u7de8\u96c6\u306b\u306f apt edit-sources \u3092\u4f7f\u3046\u3068\u6587\u6cd5\u30c1\u30a7\u30c3\u30af\u3092\u3057\u3066\u304f\u308c\u308b\u306e\u3067\u304a\u3059\u3059\u3081\n\u203bmirror\u306b\u3088\u308a arm64 \u304c\u7f6e\u304b\u308c\u3066\u3044\u306a\u3044\u306e\u3067\u6ce8\u610f\n\n\n\u30d1\u30c3\u30b1\u30fc\u30b8\u60c5\u5831\u306e\u66f4\u65b0\n\n$ sudo apt update\n\n\n\n\u691c\u7d22\u7d50\u679c\u306bmozc\u304c\u51fa\u3066\u304f\u308b\n\n$ apt-cache search mozc\r\nmozc-data - Mozc input method - data files\r\nibus-mozc - Mozc engine for IBus - Client of the Mozc input method\r\nmozc-server - Server of the Mozc input method\r\nmozc-utils-gui - GUI utilities of the Mozc input method\r\nemacs-mozc - Mozc for Emacs\r\nemacs-mozc-bin - Helper module for emacs-mozc\r\nfcitx-mozc - Mozc engine for fcitx - Client of the Mozc input method\r\nuim-mozc - Mozc engine for uim - Client of the Mozc input method\n\n\n\n\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u5c0e\u5165\n\n$ sudo apt install fcitx-mozc -t bionic", "date_published": "2018-10-23T23:10:12+09:00", "date_modified": "2018-10-23T23:10:12+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "Apt-Pinning", "Debian", "package", "Ubuntu", "Bionic Beaver(18.04LTS)", "buster", "Linux", "stretch", "testing", "xenial(16.04)" ] }, { "id": "http://matoken.org/blog/?p=2125", "url": "https://matoken.org/blog/2018/09/19/try-telegram-cli-of-informal-cli-client-of-telegram/", "title": "Telegram \u306e\u975e\u516c\u5f0fcli client \u306e telegram-cli \u3092\u8a66\u3059", "content_html": "
\n

Arm \u3067\u3082\u52d5\u304f\u304b\u306a?\u3068\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e

\n
\n
\n\n
\n
\n
\u5fc5\u8981\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u5c0e\u5165
\n
\n
$ sudo apt install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev libjansson-dev libpython-dev make libssl1.0-dev
\n
\n
\n
\n
source\u3092clone\u3059\u308b
\n
\n
$ git clone --recursive https://github.com/vysheng/tg.git && cd tg
\n
\n
\n
\n
configure & make
\n
\n
$ ./configure\r\n$ make
\n
\n
\n
\n
build error1
\n
\n
tgl/crypto/rsa_pem_openssl.c: In function \u2018TGLC_rsa_new\u2019:\r\ntgl/crypto/rsa_pem_openssl.c:41:6: error: dereferencing pointer to incomplete type \u2018RSA {aka struct rsa_st}\u2019\r\n   ret->e = unwrap_bn (TGLC_bn_new ());\r\n      ^~\r\ntgl/crypto/rsa_pem_openssl.c: In function \u2018TGLC_rsa_n\u2019:\r\ntgl/crypto/rsa_pem_openssl.c:52:1: error: control reaches end of non-void function [-Werror=return-type]\r\n RSA_GETTER(n);\r\n ^~~~~~~~~~\r\ntgl/crypto/rsa_pem_openssl.c: In function \u2018TGLC_rsa_e\u2019:\r\ntgl/crypto/rsa_pem_openssl.c:53:1: error: control reaches end of non-void function [-Werror=return-type]\r\n RSA_GETTER(e);\r\n ^~~~~~~~~~\r\ncc1: all warnings being treated as errors\r\nMakefile.tgl:20: recipe for target 'objs/crypto/rsa_pem_openssl.o' failed\r\nmake: *** [objs/crypto/rsa_pem_openssl.o] Error 1
\n
\n
\n
\n

libssl-dev(1.1.1)\u3067\u306f\u52d5\u4f5c\u3057\u306a\u3044\u306e\u3067libssl1.0-dev\u306b\u5165\u308c\u66ff\u3048\u308b\uff0e sudo apt install libssl1.0-dev

\n
\n
\n
build error2
\n
\n
gcc -I. -I. -I./tgl -w  -I/usr/local/include -I/usr/include -I/usr/include -I/usr/include/lua5.2  -DHAVE_CONFIG_H -Wall -Werror -Wextra -Wno-missing-field-initializers -Wno-deprecated-declarations -fno-strict-aliasing -fno-omit-frame-pointer -ggdb -Wno-unused-parameter -fPIC -iquote ./tgl/tl-parser -c -MP -MD -MF dep/tl-parser.d -MQ objs/tl-parser.o -o objs/tl-parser.o tgl/tl-parser/tl-parser.c\r\ntgl/tl-parser/tl-parser.c:37:10: fatal error: zlib.h: \u305d\u306e\u3088\u3046\u306a\u30d5\u30a1\u30a4\u30eb\u3084\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u3042\u308a\u307e\u305b\u3093\r\n #include <zlib.h>\r\n          ^~~~~~~~\r\ncompilation terminated.\r\nmake: *** [Makefile.tl-parser:4: objs/tl-parser.o] \u30a8\u30e9\u30fc 1
\n
\n
\n
\n

zlib1g-dev \u3092\u5c0e\u5165\u3059\u308b\uff0e sudo apt install zlib1g-dev

\n
\n
\n
Raspbian stretch\u3067\u306e\u5b9f\u884c\u6642\u30a8\u30e9\u30fc(32bit\u74b0\u5883\u3067\u306e\u4e0d\u5177\u5408?)
\n
\n
$ bin/telegram-cli\r\nTelegram-cli version 1.4.1, Copyright (C) 2013-2015 Vitaly Valtman\r\nTelegram-cli comes with ABSOLUTELY NO WARRANTY; for details type `show_license'.\r\nThis is free software, and you are welcome to redistribute it\r\nunder certain conditions; type `show_license' for details.\r\nTelegram-cli uses libtgl version 2.1.0\r\nTelegram-cli includes software developed by the OpenSSL Project\r\nfor use in the OpenSSL Toolkit. (http://www.openssl.org/)\r\nI: config dir=[/home/pi/.telegram-cli]\r\n> telegram-cli: tgl/mtproto-utils.c:101: BN2ull: Assertion `0' failed.\r\nSIGNAL received
\n
\n
\n
\n

\u4ee5\u4e0b\u306e\u4fee\u6b63\u3092\u884c\u3044\uff0c make clean \u3057\u3066 build \u3057\u306a\u304a\u3059\uff0e

\n
\n
\n
\n
$ diff -ud tgl/mtproto-utils.c.org tgl/mtproto-utils.c\r\n--- tgl/mtproto-utils.c.org     2018-09-19 21:01:44.878560077 +0900\r\n+++ tgl/mtproto-utils.c 2018-09-19 20:59:55.778295550 +0900\r\n@@ -98,13 +98,13 @@\r\n   if (sizeof (unsigned long) == 8) {\r\n\t return TGLC_bn_get_word (b);\r\n   } else if (sizeof (unsigned long long) == 8) {\r\n-    assert (0); // As long as nobody ever uses this code, assume it is broken.\r\n+    assert (0);  As long as nobody ever uses this code, assume it is broken.\r\n\t unsigned long long tmp;\r\n\t /* Here be dragons, but it should be okay due to be64toh */\r\n\t TGLC_bn_bn2bin (b, (unsigned char *) &tmp);\r\n\t return be64toh (tmp);\r\n   } else {\r\n-    assert (0);\r\n+//    assert (0);\r\n   }\r\n }
\n
\n
\n
\n
\n
$ make clean\r\n$ ./configure\r\n$ make
\n
\n
\n
\n
\u521d\u56de\u5b9f\u884c\u6642\u306fSMS\u8a8d\u8a3c\u304c\u5fc5\u8981
\n
\n
$ bin/telegram-cli\r\nTelegram-cli version 1.4.1, Copyright (C) 2013-2015 Vitaly Valtman\r\nTelegram-cli comes with ABSOLUTELY NO WARRANTY; for details type `show_license'.\r\nThis is free software, and you are welcome to redistribute it\r\nunder certain conditions; type `show_license' for details.\r\nTelegram-cli uses libtgl version 2.1.0\r\nTelegram-cli includes software developed by the OpenSSL Project\r\nfor use in the OpenSSL Toolkit. (http://www.openssl.org/)\r\nI: config dir=[/home/mk/.telegram-cli]\r\n[/home/mk/.telegram-cli] created\r\n[/home/mk/.telegram-cli/downloads] created\r\nphone number: +81-9000000000\r\ncode ('CALL' for phone code): 16802\r\nUser matoken updated flags\r\nUser matoken online (was online [2018/09/18 23:55:32])\r\nUser matoken offline (was online [2018/09/18 23:50:35])
\n
\n
\n
\n
\u8a8d\u8a3c\u3092\u884c\u3046\u3068\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u98db\u3093\u3067\u304f\u308b
\n
\n
matoken,\r\n\r\nWe detected a login into your account from a new device on 19/09/2018 at 12:28:55 UTC.\r\n\r\nDevice: Unix Console\r\nLocation: Shizuoka, Japan (IP = 180.131.110.140)\r\n\r\nIf this wasn't you, you can go to Settings - Privacy and Security - Sessions and terminate that session.\r\n\r\nIf you think that somebody logged in to your account against your will, you can enable two-step verification in Privacy and Security settings.\r\n\r\nSincerely,\r\nThe Telegram Team
\n
\n
\n
\n
\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1\u3057\u3066\u307f\u308b
\n
\n
> msg @matoken hello
\n
\n
\n
\n
telegram-cli \u306e help
\n
\n
$ bin/telegram-cli --help\r\ntelegram-cli Usage\r\n  --phone/-u                           specify username (would not be asked during authorization)\r\n  --rsa-key/-k                         specify location of public key (possible multiple entries)\r\n  --verbosity/-v                       increase verbosity (0-ERROR 1-WARNIN 2-NOTICE 3+-DEBUG-levels)\r\n  --enable-msg-id/-N                   message num mode\r\n  --config/-c                          config file name\r\n  --profile/-p                         use specified profile\r\n  --log-level/-l                       log level\r\n  --sync-from-start/-f                 during authorization fetch all messages since registration\r\n  --disable-auto-accept/-E             disable auto accept of encrypted chats\r\n  --lua-script/-s                      lua script file\r\n  --wait-dialog-list/-W                send dialog_list query and wait for answer before reading input\r\n  --disable-colors/-C                  disable color output\r\n  --disable-readline/-R                disable readline\r\n  --alert/-A                           enable bell notifications\r\n  --daemonize/-d                       daemon mode\r\n  --logname/-L <log-name>              log file name\r\n  --username/-U <user-name>            change uid after start\r\n  --groupname/-G <group-name>          change gid after start\r\n  --disable-output/-D                  disable output\r\n  --tcp-port/-P <port>                 port to listen for input commands\r\n  --udp-socket/-S <socket-name>        unix socket to create\r\n  --exec/-e <commands>                 make commands end exit\r\n  --disable-names/-I                   use user and chat IDs in updates instead of names\r\n  --enable-ipv6/-6                     use ipv6 (may be unstable)\r\n  --help/-h                            prints this help\r\n  --accept-any-tcp                     accepts tcp connections from any src (only loopback by default)\r\n  --disable-link-preview               disables server-side previews to links\r\n  --bot/-b                             bot mode\r\n  --json                               prints answers and values in json format\r\n  --permanent-msg-ids                  use permanent msg ids\r\n  --permanent-peer-ids                 use permanent peer ids
\n
\n
\n
\n
telegram-cli \u8d77\u52d5\u6642\u306ehelp
\n
\n
$ bin/telegram-cli -e help\r\nTelegram-cli version 1.4.1, Copyright (C) 2013-2015 Vitaly Valtman\r\nTelegram-cli comes with ABSOLUTELY NO WARRANTY; for details type `show_license'.\r\nThis is free software, and you are welcome to redistribute it\r\nunder certain conditions; type `show_license' for details.\r\nTelegram-cli uses libtgl version 2.1.0\r\nTelegram-cli includes software developed by the OpenSSL Project\r\nfor use in the OpenSSL Toolkit. (http://www.openssl.org/)\r\nI: config dir=[/home/pi/.telegram-cli]\r\n[33;1maccept_secret_chat <secret chat>  Accepts secret chat. Only useful with -E option\r\nadd_contact <phone> <first name> <last name>    Tries to add user to contact list\r\nblock_user <user>       Blocks user\r\nbroadcast <user>+ <text>        Sends text to several users at once\r\nchannel_get_admins <channel> [limit=100] [offset=0]     Gets channel admins\r\nchannel_get_members <channel> [limit=100] [offset=0]    Gets channel members\r\nchannel_info <channel>  Prints info about channel (id, members, admin, etc.)\r\nchannel_invite <channel> <user> Invites user to channel\r\nchannel_join <channel>  Joins to channel\r\nchannel_kick <channel> <user>   Kicks user from channel\r\nchannel_leave <channel> Leaves from channel\r\nchannel_list [limit=100] [offset=0]     List of last channels\r\nchannel_set_about <channel> <about>     Sets channel about info.\r\nchannel_set_admin <channel> <admin> <type>      Sets channel admin. 0 - not admin, 1 - moderator, 2 - editor\r\nchannel_set_username <channel> <username>       Sets channel username info.\r\nchannel_set_photo <channel> <filename>  Sets channel photo. Photo will be cropped to square\r\nchat_add_user <chat> <user> [msgs-to-forward]   Adds user to chat. Sends him last msgs-to-forward message from this chat. Default 100\r\nchat_del_user <chat> <user>     Deletes user from chat\r\nchat_info <chat>        Prints info about chat (id, members, admin, etc.)\r\nchat_set_photo <chat> <filename>        Sets chat photo. Photo will be cropped to square\r\nchat_upgrade <chat>     Upgrades chat to megagroup\r\nchat_with_peer <peer>   Interface option. All input will be treated as messages to this peer. Type /quit to end this mode\r\nclear   Clears all data and exits. For debug.\r\ncontact_list    Prints contact list\r\ncontact_search username Searches user by username\r\ncreate_channel <name> <about> <user>+   Creates channel with users\r\ncreate_group_chat <name> <user>+        Creates group chat with users\r\ncreate_secret_chat <user>       Starts creation of secret chat\r\ndel_contact <user>      Deletes contact from contact list\r\ndelete_msg <msg-id>     Deletes message\r\ndialog_list [limit=100] [offset=0]      List of last conversations\r\nexport_card     Prints card that can be imported by another user with import_card method\r\nexport_channel_link     Prints channel link that can be used to join to channel\r\nexport_chat_link        Prints chat link that can be used to join to chat\r\nfwd <peer> <msg-id>+    Forwards message to peer. Forward to secret chats is forbidden\r\nfwd_media <peer> <msg-id>       Forwards message media to peer. Forward to secret chats is forbidden. Result slightly differs from fwd\r\nget_terms_of_service    Prints telegram's terms of service\r\nget_message <msg-id>    Get message by id\r\nget_self        Get our user info\r\nhelp [command]  Prints this help\r\nhistory <peer> [limit] [offset] Prints messages with this peer (most recent message lower). Also marks messages as read\r\nimport_card <card>      Gets user by card and prints it name. You can then send messages to him as usual\r\nimport_chat_link <hash> Joins to chat by link\r\nimport_channel_link <hash>      Joins to channel by link\r\nload_audio <msg-id>     Downloads file to downloads dirs. Prints file name after download end\r\nload_channel_photo <channel>    Downloads file to downloads dirs. Prints file name after download end\r\nload_chat_photo <chat>  Downloads file to downloads dirs. Prints file name after download end\r\nload_document <msg-id>  Downloads file to downloads dirs. Prints file name after download end\r\nload_document_thumb <msg-id>    Downloads file to downloads dirs. Prints file name after download end\r\nload_file <msg-id>      Downloads file to downloads dirs. Prints file name after download end\r\nload_file_thumb <msg-id>        Downloads file to downloads dirs. Prints file name after download end\r\nload_photo <msg-id>     Downloads file to downloads dirs. Prints file name after download end\r\nload_user_photo <user>  Downloads file to downloads dirs. Prints file name after download end\r\nload_video <msg-id>     Downloads file to downloads dirs. Prints file name after download end\r\nload_video_thumb <msg-id>       Downloads file to downloads dirs. Prints file name after download end\r\nmain_session    Sends updates to this connection (or terminal). Useful only with listening socket\r\nmark_read <peer>        Marks messages with peer as read\r\nmsg <peer> <text>       Sends text message to peer\r\nmsg <peer> <kbd> <text> Sends text message to peer with custom kbd\r\npost <peer> <text>      Sends text message to peer as admin\r\npost_audio <peer> <file>        Posts audio to peer\r\npost_document <peer> <file>     Posts document to peer\r\npost_file <peer> <file> Sends document to peer\r\npost_location <peer> <latitude> <longitude>     Sends geo location\r\npost_photo <peer> <file>       Sends photo to peer\r\npost_text <peer> <file> Sends contents of text file as plain text message\r\npost_video <peer> <file>       Sends video to peer\r\nquit    Quits immediately\r\nrename_channel <channel> <new name>     Renames channel\r\nrename_chat <chat> <new name>   Renames chat\r\nrename_contact <user> <first name> <last name>  Renames contact\r\nreply <msg-id> <text>   Sends text reply to message\r\nreply_audio <msg-id> <file>     Sends audio to peer\r\nreply_contact <msg-id> <phone> <first-name> <last-name> Sends contact (not necessary telegram user)\r\nreply_document <msg-id> <file>  Sends document to peer\r\nreply_file <msg-id> <file>      Sends document to peer\r\nreply_location <msg-id> <latitude> <longitude>  Sends geo location\r\nreply_photo <msg-id> <file>    Sends photo to peer\r\nreply_video <msg-id> <file>     Sends video to peer\r\nresolve_username username       Searches user by username\r\nsafe_quit       Waits for all queries to end, then quits\r\nsearch [peer] [limit] [from] [to] [offset] pattern      Search for pattern in messages from date from to date to (unixtime) in messages with peer (if peer not\r\npresent, in all messages)\r\nsend_audio <peer> <file>        Sends audio to peer\r\nsend_contact <peer> <phone> <first-name> <last-name>    Sends contact (not necessary telegram user)\r\nsend_document <peer> <file>     Sends document to peer\r\nsend_file <peer> <file> Sends document to peer\r\nsend_location <peer> <latitude> <longitude>     Sends geo location\r\nsend_photo <peer> <file>       Sends photo to peer\r\nsend_text <peer> <file> Sends contents of text file as plain text message\r\nsend_typing <peer> [status]     Sends typing notification. You can supply a custom status (range 0-10): none, typing, cancel, record video, upload video, recor\r\nd audio, upload audio, upload photo, upload document, geo, choose contact.\r\nsend_typing_abort <peer>        Sends typing notification abort\r\nsend_video <peer> <file>       Sends video to peer\r\nset <param> <value>     Sets value of param. Currently available: log_level, debug_verbosity, alarm, msg_num\r\nset_password <hint>     Sets password\r\nset_profile_name <first-name> <last-name>       Sets profile name.\r\nset_profile_photo <filename>    Sets profile photo. Photo will be cropped to square\r\nset_ttl <secret chat>   Sets secret chat ttl. Client itself ignores ttl\r\nset_username <name>     Sets username.\r\nset_phone_number <phone>        Changes the phone number of this account\r\nshow_license    Prints contents of GPL license\r\nstart_bot <bot> <chat> <data>   Adds bot to chat\r\nstats   For debug purpose\r\nstatus_online   Sets status as online\r\nstatus_offline  Sets status as offline\r\nunblock_user <user>     Unblocks user\r\nuser_info <user>        Prints info about user (id, last online, phone)\r\nversion Prints client and library version\r\nview_audio <msg-id>     Downloads file to downloads dirs. Then tries to open it with system default action\r\nview_channel_photo <channel>    Downloads file to downloads dirs. Then tries to open it with system default action\r\nview_chat_photo <chat>  Downloads file to downloads dirs. Then tries to open it with system default action\r\nview_document <msg-id>  Downloads file to downloads dirs. Then tries to open it with system default action\r\nview_document_thumb <msg-id>    Downloads file to downloads dirs. Then tries to open it with system default action\r\nview_file <msg-id>      Downloads file to downloads dirs. Then tries to open it with system default action\r\nview_file_thumb <msg-id>        Downloads file to downloads dirs. Then tries to open it with system default action\r\nview_photo <msg-id>     Downloads file to downloads dirs. Then tries to open it with system default action\r\nview_user_photo <user>  Downloads file to downloads dirs. Then tries to open it with system default action\r\nview_video <msg-id>     Downloads file to downloads dirs. Then tries to open it with system default action\r\nview_video_thumb <msg-id>       Downloads file to downloads dirs. Then tries to open it with system default action\r\nview <msg-id>   Tries to view message contents\r\nvisualize_key <secret chat>     Prints visualization of encryption key (first 16 bytes sha1 of it in fact)\r\n[0mAll done. Exit\r\nhalt
\n
\n
\n
\n

\u5927\u62b5\u306e\u3053\u3068\u306f\u51fa\u6765\u308b\u611f\u3058\u3067\u3059\uff0e

\n
\n
\n
\u8a66\u3057\u305f\u74b0\u58831
\n
\n
$ git log --decorate|head -7\r\ncommit 6547c0b21b977b327b3c5e8142963f4bc246187a (HEAD -> master, origin/master, origin/HEAD)\r\nMerge: 443793d 160231b\r\nAuthor: V V <vvaltman@aurum>\r\nDate:   Wed Mar 23 14:42:53 2016 +0300\r\n\r\n    Merge github.com:vysheng/tg\r\n\r\n$ dpkg-query -W libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev libjansson-dev libpython-dev make libssl1.0-dev\r\nlibconfig-dev:armhf     1.5-0.3\r\nlibevent-dev    2.0.21-stable-3\r\nlibjansson-dev:armhf    2.9-1\r\nliblua5.2-dev:armhf     5.2.4-1.1\r\nlibpython-dev:armhf     2.7.13-2\r\nlibreadline-dev:armhf   7.0-3\r\nlibssl-dev\r\nlibssl1.0-dev:armhf     1.0.2l-2+deb9u3\r\nlua5.2  5.2.4-1.1\r\nmake    4.1-9.1\r\n$ lsb_release -d\r\nDescription:    Raspbian GNU/Linux 9.4 (stretch)\r\n$ uname -m\r\narmv7l\r\n$ cat /proc/device-tree/model ;echo\r\nRaspberry Pi 2 Model B Rev 1.1
\n
\n
\n
\n
\u8a66\u3057\u305f\u74b0\u58832
\n
\n
$ git log --decorate|head -7\r\ncommit 6547c0b21b977b327b3c5e8142963f4bc246187a (HEAD -> master, origin/master, origin/HEAD)\r\nMerge: 443793d 160231b\r\nAuthor: V V <vvaltman@aurum>\r\nDate:   Wed Mar 23 14:42:53 2016 +0300\r\n\r\n    Merge github.com:vysheng/tg\r\n\r\n$ dpkg-query -W libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev libjansson-dev libpython-dev make libssl1.0-dev\r\nlibconfig-dev:amd64     1.5-0.4\r\nlibevent-dev    2.1.8-stable-4build1\r\nlibjansson-dev:amd64    2.11-1\r\nliblua5.2-dev:amd64     5.2.4-1.1build1\r\nlibpython-dev:amd64     2.7.15~rc1-1\r\nlibreadline-dev:amd64   7.0-3\r\nlibssl-dev\r\nlibssl1.0-dev:amd64     1.0.2n-1ubuntu5.1\r\nlua5.2  5.2.4-1.1build1\r\nmake    4.1-9.1ubuntu1\r\n$ lsb_release -d\r\nDescription:    Ubuntu 18.04.1 LTS\r\n(mk)-(jobs:0)-(~/src/tg)\r\n$ uname -m\r\nx86_64
\n
\n
\n", "content_text": "Arm \u3067\u3082\u52d5\u304f\u304b\u306a?\u3068\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e\n\n\n\n\nvysheng/tg: telegram-cli\n\n\n\n\n\u5fc5\u8981\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u5c0e\u5165\n\n$ sudo apt install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev libjansson-dev libpython-dev make libssl1.0-dev\n\n\n\nsource\u3092clone\u3059\u308b\n\n$ git clone --recursive https://github.com/vysheng/tg.git && cd tg\n\n\n\nconfigure & make\n\n$ ./configure\r\n$ make\n\n\n\nbuild error1\n\ntgl/crypto/rsa_pem_openssl.c: In function \u2018TGLC_rsa_new\u2019:\r\ntgl/crypto/rsa_pem_openssl.c:41:6: error: dereferencing pointer to incomplete type \u2018RSA {aka struct rsa_st}\u2019\r\n ret->e = unwrap_bn (TGLC_bn_new ());\r\n ^~\r\ntgl/crypto/rsa_pem_openssl.c: In function \u2018TGLC_rsa_n\u2019:\r\ntgl/crypto/rsa_pem_openssl.c:52:1: error: control reaches end of non-void function [-Werror=return-type]\r\n RSA_GETTER(n);\r\n ^~~~~~~~~~\r\ntgl/crypto/rsa_pem_openssl.c: In function \u2018TGLC_rsa_e\u2019:\r\ntgl/crypto/rsa_pem_openssl.c:53:1: error: control reaches end of non-void function [-Werror=return-type]\r\n RSA_GETTER(e);\r\n ^~~~~~~~~~\r\ncc1: all warnings being treated as errors\r\nMakefile.tgl:20: recipe for target 'objs/crypto/rsa_pem_openssl.o' failed\r\nmake: *** [objs/crypto/rsa_pem_openssl.o] Error 1\n\n\n\nlibssl-dev(1.1.1)\u3067\u306f\u52d5\u4f5c\u3057\u306a\u3044\u306e\u3067libssl1.0-dev\u306b\u5165\u308c\u66ff\u3048\u308b\uff0e sudo apt install libssl1.0-dev\n\n\nbuild error2\n\ngcc -I. -I. -I./tgl -w -I/usr/local/include -I/usr/include -I/usr/include -I/usr/include/lua5.2 -DHAVE_CONFIG_H -Wall -Werror -Wextra -Wno-missing-field-initializers -Wno-deprecated-declarations -fno-strict-aliasing -fno-omit-frame-pointer -ggdb -Wno-unused-parameter -fPIC -iquote ./tgl/tl-parser -c -MP -MD -MF dep/tl-parser.d -MQ objs/tl-parser.o -o objs/tl-parser.o tgl/tl-parser/tl-parser.c\r\ntgl/tl-parser/tl-parser.c:37:10: fatal error: zlib.h: \u305d\u306e\u3088\u3046\u306a\u30d5\u30a1\u30a4\u30eb\u3084\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u3042\u308a\u307e\u305b\u3093\r\n #include <zlib.h>\r\n ^~~~~~~~\r\ncompilation terminated.\r\nmake: *** [Makefile.tl-parser:4: objs/tl-parser.o] \u30a8\u30e9\u30fc 1\n\n\n\nzlib1g-dev \u3092\u5c0e\u5165\u3059\u308b\uff0e sudo apt install zlib1g-dev\n\n\nRaspbian stretch\u3067\u306e\u5b9f\u884c\u6642\u30a8\u30e9\u30fc(32bit\u74b0\u5883\u3067\u306e\u4e0d\u5177\u5408?)\n\n$ bin/telegram-cli\r\nTelegram-cli version 1.4.1, Copyright (C) 2013-2015 Vitaly Valtman\r\nTelegram-cli comes with ABSOLUTELY NO WARRANTY; for details type `show_license'.\r\nThis is free software, and you are welcome to redistribute it\r\nunder certain conditions; type `show_license' for details.\r\nTelegram-cli uses libtgl version 2.1.0\r\nTelegram-cli includes software developed by the OpenSSL Project\r\nfor use in the OpenSSL Toolkit. (http://www.openssl.org/)\r\nI: config dir=[/home/pi/.telegram-cli]\r\n> telegram-cli: tgl/mtproto-utils.c:101: BN2ull: Assertion `0' failed.\r\nSIGNAL received\n\n\n\n\u4ee5\u4e0b\u306e\u4fee\u6b63\u3092\u884c\u3044\uff0c make clean \u3057\u3066 build \u3057\u306a\u304a\u3059\uff0e\n\n\n\n$ diff -ud tgl/mtproto-utils.c.org tgl/mtproto-utils.c\r\n--- tgl/mtproto-utils.c.org 2018-09-19 21:01:44.878560077 +0900\r\n+++ tgl/mtproto-utils.c 2018-09-19 20:59:55.778295550 +0900\r\n@@ -98,13 +98,13 @@\r\n if (sizeof (unsigned long) == 8) {\r\n\t return TGLC_bn_get_word (b);\r\n } else if (sizeof (unsigned long long) == 8) {\r\n- assert (0); // As long as nobody ever uses this code, assume it is broken.\r\n+ assert (0); As long as nobody ever uses this code, assume it is broken.\r\n\t unsigned long long tmp;\r\n\t /* Here be dragons, but it should be okay due to be64toh */\r\n\t TGLC_bn_bn2bin (b, (unsigned char *) &tmp);\r\n\t return be64toh (tmp);\r\n } else {\r\n- assert (0);\r\n+// assert (0);\r\n }\r\n }\n\n\n\n\n$ make clean\r\n$ ./configure\r\n$ make\n\n\n\n\u521d\u56de\u5b9f\u884c\u6642\u306fSMS\u8a8d\u8a3c\u304c\u5fc5\u8981\n\n$ bin/telegram-cli\r\nTelegram-cli version 1.4.1, Copyright (C) 2013-2015 Vitaly Valtman\r\nTelegram-cli comes with ABSOLUTELY NO WARRANTY; for details type `show_license'.\r\nThis is free software, and you are welcome to redistribute it\r\nunder certain conditions; type `show_license' for details.\r\nTelegram-cli uses libtgl version 2.1.0\r\nTelegram-cli includes software developed by the OpenSSL Project\r\nfor use in the OpenSSL Toolkit. (http://www.openssl.org/)\r\nI: config dir=[/home/mk/.telegram-cli]\r\n[/home/mk/.telegram-cli] created\r\n[/home/mk/.telegram-cli/downloads] created\r\nphone number: +81-9000000000\r\ncode ('CALL' for phone code): 16802\r\nUser matoken updated flags\r\nUser matoken online (was online [2018/09/18 23:55:32])\r\nUser matoken offline (was online [2018/09/18 23:50:35])\n\n\n\n\u8a8d\u8a3c\u3092\u884c\u3046\u3068\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u98db\u3093\u3067\u304f\u308b\n\nmatoken,\r\n\r\nWe detected a login into your account from a new device on 19/09/2018 at 12:28:55 UTC.\r\n\r\nDevice: Unix Console\r\nLocation: Shizuoka, Japan (IP = 180.131.110.140)\r\n\r\nIf this wasn't you, you can go to Settings - Privacy and Security - Sessions and terminate that session.\r\n\r\nIf you think that somebody logged in to your account against your will, you can enable two-step verification in Privacy and Security settings.\r\n\r\nSincerely,\r\nThe Telegram Team\n\n\n\n\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u9001\u4fe1\u3057\u3066\u307f\u308b\n\n> msg @matoken hello\n\n\n\ntelegram-cli \u306e help\n\n$ bin/telegram-cli --help\r\ntelegram-cli Usage\r\n --phone/-u specify username (would not be asked during authorization)\r\n --rsa-key/-k specify location of public key (possible multiple entries)\r\n --verbosity/-v increase verbosity (0-ERROR 1-WARNIN 2-NOTICE 3+-DEBUG-levels)\r\n --enable-msg-id/-N message num mode\r\n --config/-c config file name\r\n --profile/-p use specified profile\r\n --log-level/-l log level\r\n --sync-from-start/-f during authorization fetch all messages since registration\r\n --disable-auto-accept/-E disable auto accept of encrypted chats\r\n --lua-script/-s lua script file\r\n --wait-dialog-list/-W send dialog_list query and wait for answer before reading input\r\n --disable-colors/-C disable color output\r\n --disable-readline/-R disable readline\r\n --alert/-A enable bell notifications\r\n --daemonize/-d daemon mode\r\n --logname/-L <log-name> log file name\r\n --username/-U <user-name> change uid after start\r\n --groupname/-G <group-name> change gid after start\r\n --disable-output/-D disable output\r\n --tcp-port/-P <port> port to listen for input commands\r\n --udp-socket/-S <socket-name> unix socket to create\r\n --exec/-e <commands> make commands end exit\r\n --disable-names/-I use user and chat IDs in updates instead of names\r\n --enable-ipv6/-6 use ipv6 (may be unstable)\r\n --help/-h prints this help\r\n --accept-any-tcp accepts tcp connections from any src (only loopback by default)\r\n --disable-link-preview disables server-side previews to links\r\n --bot/-b bot mode\r\n --json prints answers and values in json format\r\n --permanent-msg-ids use permanent msg ids\r\n --permanent-peer-ids use permanent peer ids\n\n\n\ntelegram-cli \u8d77\u52d5\u6642\u306ehelp\n\n$ bin/telegram-cli -e help\r\nTelegram-cli version 1.4.1, Copyright (C) 2013-2015 Vitaly Valtman\r\nTelegram-cli comes with ABSOLUTELY NO WARRANTY; for details type `show_license'.\r\nThis is free software, and you are welcome to redistribute it\r\nunder certain conditions; type `show_license' for details.\r\nTelegram-cli uses libtgl version 2.1.0\r\nTelegram-cli includes software developed by the OpenSSL Project\r\nfor use in the OpenSSL Toolkit. (http://www.openssl.org/)\r\nI: config dir=[/home/pi/.telegram-cli]\r\n[33;1maccept_secret_chat <secret chat> Accepts secret chat. Only useful with -E option\r\nadd_contact <phone> <first name> <last name> Tries to add user to contact list\r\nblock_user <user> Blocks user\r\nbroadcast <user>+ <text> Sends text to several users at once\r\nchannel_get_admins <channel> [limit=100] [offset=0] Gets channel admins\r\nchannel_get_members <channel> [limit=100] [offset=0] Gets channel members\r\nchannel_info <channel> Prints info about channel (id, members, admin, etc.)\r\nchannel_invite <channel> <user> Invites user to channel\r\nchannel_join <channel> Joins to channel\r\nchannel_kick <channel> <user> Kicks user from channel\r\nchannel_leave <channel> Leaves from channel\r\nchannel_list [limit=100] [offset=0] List of last channels\r\nchannel_set_about <channel> <about> Sets channel about info.\r\nchannel_set_admin <channel> <admin> <type> Sets channel admin. 0 - not admin, 1 - moderator, 2 - editor\r\nchannel_set_username <channel> <username> Sets channel username info.\r\nchannel_set_photo <channel> <filename> Sets channel photo. Photo will be cropped to square\r\nchat_add_user <chat> <user> [msgs-to-forward] Adds user to chat. Sends him last msgs-to-forward message from this chat. Default 100\r\nchat_del_user <chat> <user> Deletes user from chat\r\nchat_info <chat> Prints info about chat (id, members, admin, etc.)\r\nchat_set_photo <chat> <filename> Sets chat photo. Photo will be cropped to square\r\nchat_upgrade <chat> Upgrades chat to megagroup\r\nchat_with_peer <peer> Interface option. All input will be treated as messages to this peer. Type /quit to end this mode\r\nclear Clears all data and exits. For debug.\r\ncontact_list Prints contact list\r\ncontact_search username Searches user by username\r\ncreate_channel <name> <about> <user>+ Creates channel with users\r\ncreate_group_chat <name> <user>+ Creates group chat with users\r\ncreate_secret_chat <user> Starts creation of secret chat\r\ndel_contact <user> Deletes contact from contact list\r\ndelete_msg <msg-id> Deletes message\r\ndialog_list [limit=100] [offset=0] List of last conversations\r\nexport_card Prints card that can be imported by another user with import_card method\r\nexport_channel_link Prints channel link that can be used to join to channel\r\nexport_chat_link Prints chat link that can be used to join to chat\r\nfwd <peer> <msg-id>+ Forwards message to peer. Forward to secret chats is forbidden\r\nfwd_media <peer> <msg-id> Forwards message media to peer. Forward to secret chats is forbidden. Result slightly differs from fwd\r\nget_terms_of_service Prints telegram's terms of service\r\nget_message <msg-id> Get message by id\r\nget_self Get our user info\r\nhelp [command] Prints this help\r\nhistory <peer> [limit] [offset] Prints messages with this peer (most recent message lower). Also marks messages as read\r\nimport_card <card> Gets user by card and prints it name. You can then send messages to him as usual\r\nimport_chat_link <hash> Joins to chat by link\r\nimport_channel_link <hash> Joins to channel by link\r\nload_audio <msg-id> Downloads file to downloads dirs. Prints file name after download end\r\nload_channel_photo <channel> Downloads file to downloads dirs. Prints file name after download end\r\nload_chat_photo <chat> Downloads file to downloads dirs. Prints file name after download end\r\nload_document <msg-id> Downloads file to downloads dirs. Prints file name after download end\r\nload_document_thumb <msg-id> Downloads file to downloads dirs. Prints file name after download end\r\nload_file <msg-id> Downloads file to downloads dirs. Prints file name after download end\r\nload_file_thumb <msg-id> Downloads file to downloads dirs. Prints file name after download end\r\nload_photo <msg-id> Downloads file to downloads dirs. Prints file name after download end\r\nload_user_photo <user> Downloads file to downloads dirs. Prints file name after download end\r\nload_video <msg-id> Downloads file to downloads dirs. Prints file name after download end\r\nload_video_thumb <msg-id> Downloads file to downloads dirs. Prints file name after download end\r\nmain_session Sends updates to this connection (or terminal). Useful only with listening socket\r\nmark_read <peer> Marks messages with peer as read\r\nmsg <peer> <text> Sends text message to peer\r\nmsg <peer> <kbd> <text> Sends text message to peer with custom kbd\r\npost <peer> <text> Sends text message to peer as admin\r\npost_audio <peer> <file> Posts audio to peer\r\npost_document <peer> <file> Posts document to peer\r\npost_file <peer> <file> Sends document to peer\r\npost_location <peer> <latitude> <longitude> Sends geo location\r\npost_photo <peer> <file> Sends photo to peer\r\npost_text <peer> <file> Sends contents of text file as plain text message\r\npost_video <peer> <file> Sends video to peer\r\nquit Quits immediately\r\nrename_channel <channel> <new name> Renames channel\r\nrename_chat <chat> <new name> Renames chat\r\nrename_contact <user> <first name> <last name> Renames contact\r\nreply <msg-id> <text> Sends text reply to message\r\nreply_audio <msg-id> <file> Sends audio to peer\r\nreply_contact <msg-id> <phone> <first-name> <last-name> Sends contact (not necessary telegram user)\r\nreply_document <msg-id> <file> Sends document to peer\r\nreply_file <msg-id> <file> Sends document to peer\r\nreply_location <msg-id> <latitude> <longitude> Sends geo location\r\nreply_photo <msg-id> <file> Sends photo to peer\r\nreply_video <msg-id> <file> Sends video to peer\r\nresolve_username username Searches user by username\r\nsafe_quit Waits for all queries to end, then quits\r\nsearch [peer] [limit] [from] [to] [offset] pattern Search for pattern in messages from date from to date to (unixtime) in messages with peer (if peer not\r\npresent, in all messages)\r\nsend_audio <peer> <file> Sends audio to peer\r\nsend_contact <peer> <phone> <first-name> <last-name> Sends contact (not necessary telegram user)\r\nsend_document <peer> <file> Sends document to peer\r\nsend_file <peer> <file> Sends document to peer\r\nsend_location <peer> <latitude> <longitude> Sends geo location\r\nsend_photo <peer> <file> Sends photo to peer\r\nsend_text <peer> <file> Sends contents of text file as plain text message\r\nsend_typing <peer> [status] Sends typing notification. You can supply a custom status (range 0-10): none, typing, cancel, record video, upload video, recor\r\nd audio, upload audio, upload photo, upload document, geo, choose contact.\r\nsend_typing_abort <peer> Sends typing notification abort\r\nsend_video <peer> <file> Sends video to peer\r\nset <param> <value> Sets value of param. Currently available: log_level, debug_verbosity, alarm, msg_num\r\nset_password <hint> Sets password\r\nset_profile_name <first-name> <last-name> Sets profile name.\r\nset_profile_photo <filename> Sets profile photo. Photo will be cropped to square\r\nset_ttl <secret chat> Sets secret chat ttl. Client itself ignores ttl\r\nset_username <name> Sets username.\r\nset_phone_number <phone> Changes the phone number of this account\r\nshow_license Prints contents of GPL license\r\nstart_bot <bot> <chat> <data> Adds bot to chat\r\nstats For debug purpose\r\nstatus_online Sets status as online\r\nstatus_offline Sets status as offline\r\nunblock_user <user> Unblocks user\r\nuser_info <user> Prints info about user (id, last online, phone)\r\nversion Prints client and library version\r\nview_audio <msg-id> Downloads file to downloads dirs. Then tries to open it with system default action\r\nview_channel_photo <channel> Downloads file to downloads dirs. Then tries to open it with system default action\r\nview_chat_photo <chat> Downloads file to downloads dirs. Then tries to open it with system default action\r\nview_document <msg-id> Downloads file to downloads dirs. Then tries to open it with system default action\r\nview_document_thumb <msg-id> Downloads file to downloads dirs. Then tries to open it with system default action\r\nview_file <msg-id> Downloads file to downloads dirs. Then tries to open it with system default action\r\nview_file_thumb <msg-id> Downloads file to downloads dirs. Then tries to open it with system default action\r\nview_photo <msg-id> Downloads file to downloads dirs. Then tries to open it with system default action\r\nview_user_photo <user> Downloads file to downloads dirs. Then tries to open it with system default action\r\nview_video <msg-id> Downloads file to downloads dirs. Then tries to open it with system default action\r\nview_video_thumb <msg-id> Downloads file to downloads dirs. Then tries to open it with system default action\r\nview <msg-id> Tries to view message contents\r\nvisualize_key <secret chat> Prints visualization of encryption key (first 16 bytes sha1 of it in fact)\r\n[0mAll done. Exit\r\nhalt\n\n\n\n\u5927\u62b5\u306e\u3053\u3068\u306f\u51fa\u6765\u308b\u611f\u3058\u3067\u3059\uff0e\n\n\n\u8a66\u3057\u305f\u74b0\u58831\n\n$ git log --decorate|head -7\r\ncommit 6547c0b21b977b327b3c5e8142963f4bc246187a (HEAD -> master, origin/master, origin/HEAD)\r\nMerge: 443793d 160231b\r\nAuthor: V V <vvaltman@aurum>\r\nDate: Wed Mar 23 14:42:53 2016 +0300\r\n\r\n Merge github.com:vysheng/tg\r\n\r\n$ dpkg-query -W libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev libjansson-dev libpython-dev make libssl1.0-dev\r\nlibconfig-dev:armhf 1.5-0.3\r\nlibevent-dev 2.0.21-stable-3\r\nlibjansson-dev:armhf 2.9-1\r\nliblua5.2-dev:armhf 5.2.4-1.1\r\nlibpython-dev:armhf 2.7.13-2\r\nlibreadline-dev:armhf 7.0-3\r\nlibssl-dev\r\nlibssl1.0-dev:armhf 1.0.2l-2+deb9u3\r\nlua5.2 5.2.4-1.1\r\nmake 4.1-9.1\r\n$ lsb_release -d\r\nDescription: Raspbian GNU/Linux 9.4 (stretch)\r\n$ uname -m\r\narmv7l\r\n$ cat /proc/device-tree/model ;echo\r\nRaspberry Pi 2 Model B Rev 1.1\n\n\n\n\u8a66\u3057\u305f\u74b0\u58832\n\n$ git log --decorate|head -7\r\ncommit 6547c0b21b977b327b3c5e8142963f4bc246187a (HEAD -> master, origin/master, origin/HEAD)\r\nMerge: 443793d 160231b\r\nAuthor: V V <vvaltman@aurum>\r\nDate: Wed Mar 23 14:42:53 2016 +0300\r\n\r\n Merge github.com:vysheng/tg\r\n\r\n$ dpkg-query -W libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev libjansson-dev libpython-dev make libssl1.0-dev\r\nlibconfig-dev:amd64 1.5-0.4\r\nlibevent-dev 2.1.8-stable-4build1\r\nlibjansson-dev:amd64 2.11-1\r\nliblua5.2-dev:amd64 5.2.4-1.1build1\r\nlibpython-dev:amd64 2.7.15~rc1-1\r\nlibreadline-dev:amd64 7.0-3\r\nlibssl-dev\r\nlibssl1.0-dev:amd64 1.0.2n-1ubuntu5.1\r\nlua5.2 5.2.4-1.1build1\r\nmake 4.1-9.1ubuntu1\r\n$ lsb_release -d\r\nDescription: Ubuntu 18.04.1 LTS\r\n(mk)-(jobs:0)-(~/src/tg)\r\n$ uname -m\r\nx86_64", "date_published": "2018-09-19T22:06:57+09:00", "date_modified": "2018-09-19T22:06:57+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "Bionic Beaver(18.04LTS)", "Raspberry Pi", "Raspbian stretch", "Ubuntu" ] }, { "id": "http://matoken.org/blog/?p=2122", "url": "https://matoken.org/blog/2018/09/18/try-msmtp-of-smtp-client-which-does-not-start-daemon-ssmtp-transfer/", "title": "\u30c7\u30fc\u30e2\u30f3\u306e\u8d77\u52d5\u3057\u306a\u3044SMTP\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306e msmtp \u3092\u8a66\u3059(sSMTP\u4e57\u308a\u63db\u3048)", "content_html": "
\n

sSMTP \u304b\u3089 msmtp \u3078

\n
\n
\n

\u73fe\u5728\u30e1\u30fc\u30eb\u3092\u53d7\u3051\u53d6\u3089\u305a\u30e1\u30fc\u30eb\u3092\u9001\u4fe1\u3059\u308b\u3060\u3051\u306e\u30db\u30b9\u30c8\u3067\u306fsSMTP\u3092\u3088\u304f\u4f7f\u3063\u3066\u3044\u307e\u3059\uff0eMTA\u306fexim\u3084Postfix\u7b49\u3067\u3082\u826f\u3044\u306e\u3067\u3059\u304c\uff0c\u30c7\u30fc\u30e2\u30f3\u304c\u8d77\u52d5\u3057\u306a\u3044\u306e\u3067\u305d\u306e\u5206\u30bb\u30ad\u30e5\u30a2\u3067\u8a2d\u5b9a\u3082\u697d\u3067\u3059\uff0e
\n\u3057\u304b\u3057\uff0csSMTP\u306f\u6700\u8fd1\u30e1\u30f3\u30c6\u3055\u308c\u3066\u3044\u307e\u305b\u3093\uff0cDebian \u306a\u3069\u306e\u30c7\u30a3\u30b9\u30c8\u30ea\u30d3\u30e5\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u307e\u3060\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u65b0\u6a5f\u80fd\u304c\u5165\u3063\u305f\u308a\u306f\u3057\u306a\u3044\u3067\u3057\u3087\u3046\uff0e

\n
\n
\n\n
\n
ssmtp is unmaintained. Consider using something like msmtp instead.
\n
\n
\n
\n
\u30d0\u30fc\u30b8\u30e7\u30f3\u3082\u636e\u3048\u7f6e\u304d\u3067Upstream\u3082\u7121\u3055\u305d\u3046
\n
\n
$ w3m -dump https://packages.qa.debian.org/s/ssmtp.html|grep versions -A11\r\nversions ... ...pool\r\n\r\no-o-stable\r\n    save 2.64-7\r\noldstable\r\n    save 2.64-8\r\nstable\r\n    save 2.64-8\r\nunstable\r\n    save 2.64-8\r\nUbuntu\r\n    2.64-8ubuntu2\r\n$ apt show ssmtp 2>/dev/null |grep Homepage\r\nHomepage: http://packages.qa.debian.org/s/ssmtp.html
\n
\n
\n\n
\n

\u305d\u3053\u3067\uff0calternativeto.net \u3067\u6319\u3052\u3089\u308c\u3066\u3044\u308b msmtp \u3092\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e

\n
\n
\n\n
\n
\n

\u4ee5\u4e0b\u3067\u306f\u8272\u3005\u8a66\u3057\u3066\u3044\u307e\u3059\u304c\uff0c\u30b7\u30b9\u30c6\u30e0\u30e1\u30fc\u30eb\u3092\u9001\u308b\u3060\u3051\u306a\u3089 msmtp, msmtp-mta pkg \u3092\u5c0e\u5165\uff0c/etc/msmtprc \u306e\u8a2d\u5b9a\u3060\u3051\u3067ok\u3067\u3059\uff0e

\n
\n
\n
\n
\n

msmtp \u306e\u5c0e\u5165

\n
\n
\n

Debian sid/Ubuntu 18.04 LTS \u306a\u3069\u3067\u306f\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u3042\u3063\u305f\u306e\u3067\u3053\u308c\u3092\u5c0e\u5165\u3057\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
$ sudo apt install msmtp
\n
\n
\n
\n
\n
\n

mstp\u306e\u8a2d\u5b9a

\n
\n
\n

\u8a2d\u5b9a\u4f8b\u304c /usr/share/doc/msmtp/examples/ \u4ee5\u4e0b\u306b\u3042\u308b\u306e\u3067
\n\u30b7\u30b9\u30c6\u30e0\u8a2d\u5b9a\u306e\u5834\u5408\u306f msmtprc-system.example \u3092 `/etc/msmtprc \u306bcp\u3057\u3066\u8a2d\u5b9a\uff0e
\n\u30e6\u30fc\u30b6\u8a2d\u5b9a\u306e\u5834\u5408\u306f msmtprc-user.example \u3092 ~/.msmtprc \u306bcp\u3057\u3066\u8a2d\u5b9a\u3059\u308b\uff0e

\n
\n
\n

\u30b7\u30b9\u30c6\u30e0\u3067\u306e\u8a2d\u5b9a\u4f8b

\n
\n

\u4ee5\u4e0b\u306e\u4f8b\u3067\u306f root \u304c\u8aad\u307f\u66f8\u304d\u3067\u304d\u3066\uff0c\u4e00\u822c\u30e6\u30fc\u30b6\u306ematoken\u30a2\u30ab\u30a6\u30f3\u30c8\u306f\u8aad\u307f\u8fbc\u307f\u304c\u53ef\u80fd\u306a\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb /etc/msmtprc \u3092\u4f5c\u6210\u3057\u3066\u3044\u308b\uff0e
\ndefaults \u30bb\u30af\u30b7\u30e7\u30f3\u306b\u5171\u901a\u8a2d\u5b9a\u3092\u66f8\u304d\uff0caccount \u30bb\u30af\u30b7\u30e7\u30f3\u306b\u30e1\u30fc\u30eb\u30b5\u30fc\u30d0\u56fa\u6709\u306e\u8a2d\u5b9a\u3092\u66f8\u304f\uff0eaccount \u30bb\u30af\u30b7\u30e7\u30f3\u306f\u8907\u6570\u66f8\u3051\u3066\uff0caccount default \u306b\u898f\u5b9aaccount \u3092\u6307\u5b9a\u3059\u308b\uff0e\u4ee5\u4e0b\u306e\u4f8b\u3067\u306fgmail \u304c\u898f\u5b9a\u5024\u3068\u306a\u308b\uff0e

\n
\n
\n
/etc/msmtprc \u306e\u4f5c\u6210
\n
\n
$ sudo install /dev/null /etc/msmtprc -o root -g root -m 600\r\n$ sudo setfacl -m u:matoken:r /etc/msmtprc\r\n$ getfacl /etc/msmtprc\r\ngetfacl: Removing leading '/' from absolute path names\r\n# file: etc/msmtprc\r\n# owner: root\r\n# group: root\r\nuser::rw-\r\nuser:matoken:r--\r\ngroup::---\r\nmask::r--\r\nother::---\r\n\r\n$ sudo vi /etc/msmtprc\r\n$ sudo grep -v ^# /etc/msmtprc\r\n\r\ndefaults\r\nsyslog on\r\naliases /etc/aliases\r\n\r\ntls on\r\ntls_trust_file /etc/ssl/certs/ca-certificates.crt\r\nauth on\r\nsyslog LOG_MAIL\r\n\r\naccount gmail\r\nhost smtp.gmail.com\r\nport 587\r\nfrom example@gmail.com\r\nuser example\r\npassword porseypacdoadwif\r\n\r\naccount default : gmail
\n
\n
\n
\n

\u203bgmail\u306e\u591a\u8981\u7d20\u8a8d\u8a3c\u3092\u5229\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u4ee5\u4e0b\u304b\u3089\u30a2\u30d7\u30ea\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u751f\u6210\u3059\u308b\uff0e(\u4f7f\u3044\u56de\u3057\u304c\u3067\u304d\u3061\u3083\u3046\u3051\u308c\u3069\u6d41\u51fa\u3057\u305f\u3068\u304d\u306e\u5f71\u97ff\u3092\u8003\u3048\u3066\u8a2d\u5b9a\u6bce\u306b\u767a\u884c\u3059\u308b)

\n
\n\n
\n
\n

\u30e6\u30fc\u30b6\u3067\u306e\u8a2d\u5b9a

\n
\n

\u30e6\u30fc\u30b6\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306f`~/.msmtprc` \u82e5\u3057\u304f\u306f $XDG_CONFIG_HOME/msmtp/config \u3067\u30b7\u30b9\u30c6\u30e0\u3068\u9055\u3044\uff0calias file \u3068 log \u3092\u9069\u5f53\u306a\u30d5\u30a1\u30a4\u30eb\u306b\u3057\u305f\uff0e
\n\u30a2\u30ab\u30a6\u30f3\u30c8\u3082\u5897\u3084\u3057\u3066\u307f\u305f\uff0e
\ngmail\u306e\u30a2\u30d7\u30ea\u30d1\u30b9\u30ef\u30fc\u30c9\u3082\u65b0\u305f\u306b\u767a\u884c\u3057\u305f\uff0e

\n
\n
\n
~/.msmtprc \u306e\u4f5c\u6210
\n
\n
$ install /dev/null ~/.msmtprc -o matoken -g matoken -m 600\r\n$ vi ~/.msmtprc\r\n$ grep -v ^# ~/.msmtprc\r\n\r\ndefaults\r\nlogfile ~/.msmtp.log\r\naliases ~/.msmtp.aliases\r\n\r\ntls on\r\ntls_trust_file /etc/ssl/certs/ca-certificates.crt\r\nauth on\r\nsyslog LOG_MAIL\r\n\r\naccount gmail\r\nhost smtp.gmail.com\r\nport 587\r\nfrom example@gmail.com\r\nuser example\r\npassword igeinleedafchygy\r\n\r\naccount yandex\r\ntls_starttls off\r\nhost smtp.yandex.com\r\nport 465\r\nfrom example@yandex.com\r\nuser example\r\npassword throjfeekdewxeib\r\n\r\naccount nifty\r\ntls_starttls off\r\nhost smtp.nifty.com\r\nport 465\r\nfrom example@nifty.com\r\nuser aaa99999\r\npassword 9Z#9999X\r\n\r\naccount default : gmail
\n
\n
\n
\n
\n

\u9001\u4fe1\u30c6\u30b9\u30c8

\n
\n

msmtp \u30b3\u30de\u30f3\u30c9\u3067\u9001\u4fe1\u30c6\u30b9\u30c8\u304c\u51fa\u6765\u308b\uff0e
\n-a \u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u6307\u5b9a\u3067\u304d\u308b\uff0e
\n-C \u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304c\u6307\u5b9a\u3067\u304d\u308b\uff0e(\u30b7\u30b9\u30c6\u30e0\u3068\u30e6\u30fc\u30b6\u306e\u8a2d\u5b9a\u3092\u4e21\u65b9\u30c6\u30b9\u30c8\u3059\u308b)

\n
\n
\n
\n
$ echo \"hello system msmtp\" | msmtp -C /etc/msmtprc matohara@gmail.com\r\n$ echo \"hello user msmtp\" | msmtp -C ~/.msmtprc -a gmail matohara@gmail.com
\n
\n
\n
\n

\u5927\u62b5\u306eMTA\u3067\u306f . \u3067mail body \u7d42\u4e86\u3068\u306a\u308b\u304c\uff0cmsmtp\u3067\u306f`.`\u306f\u666e\u901a\u306bbody \u306b\u542b\u307e\u308c\u308b\uff0eCtrl + d \u3067\u7d42\u4e86\uff0e

\n
\n
\n
\n
$ msmtp -a gmail matohara@gmail.com\r\nSubject: hello\r\n\r\nmsmtp test\r\n.\r\ndot \u3067\u306f\u7d42\u4e86\u306b\u306a\u3089\u306a\u3044\r\nCtrl+d \u3067\u7d42\u4e86\r\n^d
\n
\n
\n
\n
\n

aliases file

\n
\n

msmtp\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e alias \u3067\u8a2d\u5b9a\u3067\u304d\u308b\uff0e

\n
\n
\n
\n
$ grep alias ~/.msmtprc\r\naliases ~/.msmtp.alias\r\n$ sudo grep alias /etc/msmtprc\r\naliases /etc/aliases
\n
\n
\n
\n

\u3053\u306ealias file\u306f\u901a\u5e38\u306ealiases \u30d5\u30a1\u30a4\u30eb\u3068\u540c\u3058\u5f62\u5f0f\u306e plain text \u3067 newaliases \u30b3\u30de\u30f3\u30c9\u3067\u306e\u5909\u63db\u306f\u4e0d\u8981\uff0e

\n
\n
\n

\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306f\u8907\u6570\u6307\u5b9a\u3067\u304d\u308b\uff0edefault \u3068\u3044\u3046\u540d\u524d\u306f\u898f\u5b9a\u30a2\u30c9\u30ec\u30b9\u3068\u306a\u308b\uff0e

\n
\n
\n
\n
root: hoge@example.com, fuga@example.com\r\ndefault: piyo@example.com
\n
\n
\n
\n

\u4ee5\u524d\u306ealiases \u30d5\u30a1\u30a4\u30eb\u3092\u6d41\u7528\u3057\u3066\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u3057\u3066\u307f\u305f\u3068\u3053\u308d\uff0c

\n
\n
\n
\n
# /etc/aliases\r\nmailer-daemon: postmaster\r\npostmaster: root\r\nnobody: root\r\nhostmaster: root\r\nusenet: root\r\nnews: root\r\nwebmaster: root\r\nwww: root\r\nftp: root\r\nabuse: root\r\nnoc: root\r\nsecurity: root\r\nroot: matohara@gmail.com\r\ndefault: matohara@gmail.com
\n
\n
\n
\n

\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u30a8\u30e9\u30fc\u3068\u306a\u3063\u305f\uff0ealias\u5148\u306f\u30e6\u30fc\u30b6\u540d\u3067\u306f\u30a8\u30e9\u30fc\u3068\u306a\u308b\u3088\u3046\uff0e

\n
\n
\n
\n
$ echo hello | sudo msmtp -C /etc/msmtprc root\r\nmsmtp: /etc/aliases: line 2: invalid address 'postmaster'
\n
\n
\n
\n

\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u305d\u308c\u305e\u308c\u306b\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u6307\u5b9a\u3059\u308b\u3068\u671f\u5f85\u3057\u305f\u52d5\u4f5c\u3068\u306a\u3063\u305f\uff0e

\n
\n
\n
\n
$ sudo sed -i -e 's/ root$\\| postmaster$/matohara@gmail.com/' /etc/aliases\r\n$ cat /etc/aliases\r\n# /etc/aliases\r\nmailer-daemon:matohara@gmail.com\r\npostmaster:matohara@gmail.com\r\nnobody:matohara@gmail.com\r\nhostmaster:matohara@gmail.com\r\nusenet:matohara@gmail.com\r\nnews:matohara@gmail.com\r\nwebmaster:matohara@gmail.com\r\nwww:matohara@gmail.com\r\nftp:matohara@gmail.com\r\nabuse:matohara@gmail.com\r\nnoc:matohara@gmail.com\r\nsecurity:matohara@gmail.com\r\nroot: matohara@gmail.com\r\ndefault: matohara@gmail.com
\n
\n
\n
\n
\n

\u30d1\u30b9\u30ef\u30fc\u30c9\u3092GnuPG\u6697\u53f7\u5316\u30d5\u30a1\u30a4\u30eb\u306b\u683c\u7d0d\u3057\u3066\u5229\u7528\u3059\u308b

\n
\n

\u30d1\u30b9\u30ef\u30fc\u30c9\u3092gpg\u3067\u6697\u53f7\u5316\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u306b\u683c\u7d0d\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\uff0e\u3053\u306e\u5834\u5408\u30a2\u30ab\u30a6\u30f3\u30c8\u3054\u3068\u306b\u30d5\u30a1\u30a4\u30eb\u304c\u5fc5\u8981\u306a\u306e\u304c\u5c11\u3057\u9762\u5012\uff0e
\npassword porseypacdoadwif \u306e\u5834\u5408 porseypacdoadwif \u90e8\u5206\u3060\u3051\u3092\u6697\u53f7\u5316\u3057\u3066\u30d5\u30a1\u30a4\u30eb\u306b\u683c\u7d0d\u3059\u308b\uff0e(\u306f\u3058\u3081password \u3082\u542b\u3081\u3066\u3057\u307e\u3044\u5931\u6557\u3057\u305f)

\n
\n
\n
\n
$ grep ^password\\  ~/.msmtprc | head -1 | awk {'print $2'} | gpg2 --default-recipient-self -e - > ~/.msmtp-password-gmail.gpg\r\n$ grep ^password\\  ~/.msmtprc | head -2 | tail -1 | awk {'print $2'} | gpg2 --default-recipient-self -e - > ~/.msmtp-password-yandex.gpg\r\n$ grep ^password\\  ~/.msmtprc | tail -1 | awk {'print $2'} | gpg2 --default-recipient-self -e - > ~/.msmtp-password-nifty.gpg
\n
\n
\n
\n

msmtprc \u306e password \u3092\u524a\u9664\u3057\u3066\uff0c\u4ee3\u308f\u308a\u306b passwordeval gpg2 --no-tty -q -d \u6697\u53f7\u30d5\u30a1\u30a4\u30eb \u3068\u8a2d\u5b9a\u3092\u5909\u66f4\u3059\u308b\uff0e

\n
\n
\n
\n
$ grep ^passworde ~/.msmtprc\r\npasswordeval gpg2 --no-tty -q -d ~/.msmtp-password-gmail.gpg\r\npasswordeval gpg2 --no-tty -q -d ~/.msmtp-password-yandex.gpg\r\npasswordeval gpg2 --no-tty -q -d ~/.msmtp-password-nifty.gpg
\n
\n
\n
\n

\u5f8c\u306f\u3053\u308c\u307e\u3067\u306e\u3088\u3046\u306bmsmtp\u3092\u547c\u3076\u3068gpg-agent\u304c\u8d77\u52d5\u3059\u308b\uff0e

\n
\n
\n

\u203b\u30b7\u30b9\u30c6\u30e0\u5074\u306f\u30b7\u30b9\u30c6\u30e0\u30e1\u30fc\u30eb\u304c\u9001\u308c\u306a\u304f\u306a\u308b\u306e\u3067\u3053\u306e\u8a2d\u5b9a\u3092\u3057\u306a\u3044\u307b\u3046\u304c\u3044\u3044\u3068\u601d\u3046\uff0e

\n
\n
\n
\n

\u30d1\u30b9\u30ef\u30fc\u30c9\u3092openssl\u6697\u53f7\u5316\u30d5\u30a1\u30a4\u30eb\u306b\u683c\u7d0d

\n
\n

\u30b7\u30b9\u30c6\u30e0\u30e1\u30fc\u30eb\u3067gpg agent\u3092\u5229\u7528\u3059\u308b\u306e\u306f\u591a\u5206\u7121\u7406\u306a\u306e\u3067openssl\u3067\u6697\u53f7\u5316\u3057\u3066\u307f\u308b\uff0e\u30d1\u30b9\u30ef\u30fc\u30c9\u306fNIC\u306emac address\u306b\u3057\u3066\u3042\u308b\uff0e\u6c17\u4f11\u3081\u30ec\u30d9\u30eb\u3060\u3051\u3069\u8a66\u3057\u306b\u8a2d\u5b9a\uff0e
\n\u30de\u30b7\u30f3\u304c\u4e57\u3063\u53d6\u3089\u308c\u305f\u5834\u5408\u306f\u3069\u3046\u3057\u3088\u3046\u3082\u306a\u3044\u3051\u308c\u3069 /etc/msmtprc, /etc/msmtp-password \u30d5\u30a1\u30a4\u30eb\u6d41\u51fa\u6642\u306e\u6642\u9593\u7a3c\u304e\u304f\u3089\u3044\u306b\u306f\u306a\u308b?
\nNIC \u304c\u4f7f\u3063\u3066\u3044\u306a\u3044\u3082\u306e\u3082\u542b\u3081\u5897\u6e1b\u3057\u305f\u308a\u5909\u66f4\u306b\u306a\u3063\u305f\u5834\u5408\u306f\u5fa9\u5143\u3067\u304d\u306a\u304f\u306a\u308b\u306e\u3067\u6ce8\u610f\uff0e

\n
\n
\n
mac address \u3092\u30d1\u30b9\u30ef\u30fc\u30c9\u3068\u3057\u3066openssl\u3067\u6697\u53f7\u5316
\n
\n
$ umask 0077; grep ^password\\  /etc/msmtprc | head -1 | awk {'print $2'} | sudo openssl enc -e -md sha256 -aes-256-cbc -a -A -salt -pbkdf2 -in /dev/stdin -out /etc/msmtp-password -pass pass:`hwinfo --network | grep 'Permanent HW Address' | sed 's/^.*: //' | sort -n | tr -d '\\n'`
\n
\n
\n
\n
\u5fa9\u5143\u30c6\u30b9\u30c8
\n
\n
$ sudo openssl enc -d -md sha256 -aes-256-cbc -a -A -salt -pbkdf2 -in /etc/msmtp-password -pass pass:`hwinfo --network | grep 'Permanent HW Address' | sed 's/^.*: //' | sort -n | tr -d '\\n'`\r\nigeinleedafchygy
\n
\n
\n
\n
/etc/msmtprc \u306e password \u3092\u524a\u9664\u3057\u3066 passwordeval \u306b\u66f8\u304d\u63db\u3048
\n
\n
$ grep passworde /etc/msmtprc\r\npasswordeval openssl enc -d -md sha256 -aes-256-cbc -a -A -salt -pbkdf2 -in /etc/msmtp-password -pass pass:`hwinfo --network | grep 'Permanent HW Address' | sed 's/^.*: //' | sort -n | tr -d '\\n'`
\n
\n
\n
\n

\u203bifconfig\u3084iproute2\u3092\u4f7f\u308f\u305ahwinfo\u3092\u4f7f\u3063\u3066Permanent HW Address\u3092\u4f7f\u3063\u3066\u3044\u308b\u306e\u306fmac address\u507d\u88c5\u5bfe\u7b56

\n
\n
\n
\n
\n
\n

MTA \u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u5c0e\u5165

\n
\n
\n

msmtp \u30b3\u30de\u30f3\u30c9\u3067\u30e1\u30fc\u30eb\u304c\u9001\u4fe1\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3089\uff0cmsmtp-mta pkg \u3092\u5c0e\u5165\u3059\u308b\uff0e\u3053\u308c\u3067sendmail\u30b3\u30de\u30f3\u30c9\u306b\u30b7\u30f3\u30dc\u30ea\u30c3\u30af\u30ea\u30f3\u30af\u304c\u5f35\u3089\u308c\u3066\u540c\u69d8\u306b\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308b\uff0e\u30b7\u30b9\u30c6\u30e0\u30e1\u30fc\u30eb\u3082\u98db\u3076\u3088\u3046\u306b\u306a\u308b\uff0e

\n
\n
\n
\n
$ sudo apt install msmtp-mta\r\n$ ls -l /usr/sbin/sendmail\r\nlrwxrwxrwx 1 root root 12 11\u6708 29  2016 /usr/sbin/sendmail -> ../bin/msmtp
\n
\n
\n
\n
\n
\n

\u30aa\u30d5\u30e9\u30a4\u30f3\u6642\u306bmsmtp\u3092\u5229\u7528\u3059\u308b

\n
\n
\n

msmtp\u306f\u30aa\u30d5\u30e9\u30a4\u30f3\u6642\u306b\u5b9f\u884c\u3059\u308b\u3068\u30a8\u30e9\u30fc\u3068\u306a\u308b\uff0e\u901a\u5e38\u306f\u5e38\u306b\u30aa\u30f3\u30e9\u30a4\u30f3\u306a\u306e\u3067\u554f\u984c\u306f\u306a\u3044\u304c\uff0c\u6301\u3061\u904b\u3073NotePC\u306a\u3069\u3067\u306f\u30aa\u30d5\u30e9\u30a4\u30f3\u30aa\u30f3\u30e9\u30a4\u30f3\u304c\u767a\u751f\u3057\u3066\u30e1\u30fc\u30eb\u306e\u9001\u4fe1\u306b\u5931\u6557\u3059\u308b\u3053\u3068\u304c\u3042\u308b\uff0e

\n
\n
\n
\n
$ echo 'hoge' | msmtp -a gmail matoken@gmail.com\r\nmsmtp: cannot locate host smtp.gmail.com: \u540d\u524d\u307e\u305f\u306f\u30b5\u30fc\u30d3\u30b9\u304c\u4e0d\u660e\u3067\u3059\r\nmsmtp: could not send mail (account gmail from /etc/msmtprc)
\n
\n
\n
\n

/usr/share/doc/msmtp/examples/ \u4ee5\u4e0b\u306e msmtpq \u82e5\u3057\u304f\u306f msmtpqueue \u306b\u683c\u7d0d\u3055\u308c\u3066\u3044\u308bscript\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u3067\u30aa\u30d5\u30e9\u30a4\u30f3\u6642\u306b\u30ad\u30e5\u30fc\u3068\u3057\u3066\u8caf\u3081\u3066\u304a\u3044\u3066\u30aa\u30f3\u30e9\u30a4\u30f3\u6642\u306b\u9001\u4fe1\u3068\u3044\u3063\u305f\u3053\u3068\u304c\u51fa\u6765\u308b\uff0e

\n
\n
\n

\u3069\u3061\u3089\u3082sendmail\u3068\u7f6e\u304d\u63db\u3048\u304c\u53ef\u80fd\u306a\u306e\u3067\uff0c\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30c0\u30a6\u30f3\u6642\u306b`/usr/sbin/sendmail`\u3092\u3053\u308c\u306b\u7f6e\u304d\u63db\u3048\u3066\u30aa\u30f3\u30e9\u30a4\u30f3\u6642\u306b\u623b\u3057\u3066queue\u3092\u30d5\u30e9\u30c3\u30b7\u30e5\u3059\u308b\u3088\u3046\u306b\u3059\u308b\u3068\u3044\u3044\u304b\u3082\u3057\u308c\u306a\u3044\uff0e

\n
\n
\n

Debian/Ubuntu\u306a\u3089\u4ee5\u4e0b\u306e\u3042\u305f\u308a\u3067\uff0c

\n
\n
\n
    \n
  • \n

    /etc/network/if-down.d/
    \n/usr/sbin/sendmail \u3092 msmtpq or msmtpqueue \u306b\u5411\u3051\u308b

    \n
  • \n
  • \n

    /etc/network/if-pre-up.d/
    \n/usr/sbin/sendmail \u3092 msmtp \u306b\u5411\u3051\u308b

    \n
  • \n
  • \n

    /etc/network/if-up.d/
    \nqueue\u3092\u30d5\u30e9\u30c3\u30b7\u30e5

    \n
  • \n
\n
\n
\n

NetworkManager\u3060\u3068 /etc/NetworkManager/dispatcher.d/ \u4ee5\u4e0b\u3067\u540c\u3058\u3053\u3068\u304c\u51fa\u6765\u308b\uff0e

\n
\n
\n

\n
\n
\n

msmtpq

\n
\n
\u5727\u7e2e\u3055\u308c\u3066\u3044\u308bmsmtpq\u3092\u5c55\u958b\u3057\u3066\u5b9f\u884c\u6a29\u3092\u4ed8\u4e0e\u3059\u308b
\n
\n
$ sudo gunzip /usr/share/doc/msmtp/examples/msmtpq/msmtpq.gz\r\n$ sudo chmod 755 /usr/share/doc/msmtp/examples/msmtpq/msmtpq
\n
\n
\n
\n
\u4f7f\u3044\u3084\u3059\u3044\u5834\u6240\u306b\u30b7\u30f3\u30dc\u30ea\u30c3\u30af\u30ea\u30f3\u30af\u3092\u5f35\u308b
\n
\n
$ sudo ln -s /usr/share/doc/msmtp/examples/msmtpq/msmtpq /usr/local/bin/msmtpq\r\n$ sudo ln -s /usr/share/doc/msmtp/examples/msmtpq/msmtp-queue /usr/local/bin/msmtp-queue
\n
\n
\n
\n
queue\u3068log\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210
\n
\n
$ install -d -m 700 ~/.msmtp.queue\r\n$ install -d -m 700 ~/log
\n
\n
\n
\n
\u30aa\u30d5\u30e9\u30a4\u30f3\u6642\u306b\u9001\u4fe1\u3057\u3088\u3046\u3068\u3059\u308b
\n
\n
$ echo 'msmtpq' | msmtpq -C ~/.msmtprc -a gmail matoken@gmail.com\r\n  mail for [ -C /home/matoken/.msmtprc -a gmail matoken@gmail.com ] : couldn't be sent - host not connected\r\n  enqueued mail as : [ 2018-09-18-06.21.48 ] ( -C /home/matoken/.msmtprc -a gmail matoken@gmail.com ) : successful
\n
\n
\n
\n
queue\u3092\u78ba\u8a8d\u3059\u308b
\n
\n
$ msmtp-queue -d\r\n\r\n  mail  num=[ 1 ]  id=[ 2018-09-18-06.21.18 ]\r\n\r\n  mail  num=[ 2 ]  id=[ 2018-09-18-06.21.48 ]
\n
\n
\n
\n
queue\u3092\u30d5\u30e9\u30c3\u30b7\u30e5\u3059\u308b
\n
\n
$ msmtp-queue -r\r\n  mail [ 1 ] [ 2018-09-18-06.21.18 ] from queue ; send was successful ; purged from queue\r\n  mail [ 2 ] [ 2018-09-18-06.21.48 ] from queue ; send was successful ; purged from queue\r\n$ msmtp-queue -d\r\n\r\n  no mail in queue
\n
\n
\n
\n
\n

msmtpqueue

\n
\n
\u4f7f\u3044\u3084\u3059\u3044\u5834\u6240\u306b\u30b7\u30f3\u30dc\u30ea\u30c3\u30af\u30ea\u30f3\u30af\u3092\u5f35\u308b
\n
\n
$ sudo ln -s /usr/share/doc/msmtp/examples/msmtpqueue/msmtp-enqueue.sh /usr/local/bin/msmtp-enqueue.sh\r\n$ sudo ln -s /usr/share/doc/msmtp/examples/msmtpqueue/msmtp-listqueue.sh /usr/local/bin/msmtp-listqueue.sh\r\n~$ sudo ln -s /usr/share/doc/msmtp/examples/msmtpqueue/msmtp-runqueue.sh /usr/local/bin/msmtp-runqueue.sh
\n
\n
\n
\n
`msmtp`\u30b3\u30de\u30f3\u30c9\u306e\u4ee3\u308f\u308a\u306b`msmtp-enqueue.sh`\u3092\u4f7f\u3046
\n
\n
$ echo 'queue' | msmtp-enqueue.sh -C ~/.msmtprc -a gmail matoken@gmail.com
\n
\n
\n
\n
queue\u3092\u78ba\u8a8d\u3059\u308b
\n
\n
$ msmtp-listqueue.sh\r\nNo mail in queue
\n
\n
\n
\n
\u4eca\u56de\u306e\u3088\u3046\u306b\u30e1\u30fc\u30eb\u306e\u5185\u5bb9\u304cbody\u3060\u3051\u3067From, To, Subject \u304c\u5b58\u5728\u3057\u306a\u3044\u3068\u3053\u306escript\u306f\u3046\u307e\u304f\u6a5f\u80fd\u3057\u306a\u3044><
\n
\n
         egrep -s --colour -h '(^From:|^To:|^Subject:)' \"$i\" || echo \"No mail in queue\";
\n
\n
\n
\n
\u76f4\u63a5`~/.msmtpqueue/`\u3092\u78ba\u8a8d\u3059\u308b\u3068queue\u304c\u6e9c\u307e\u3063\u3066\u3044\u308b\u306e\u304c\u308f\u304b\u308b
\n
\n
$ ls -lA ~/.msmtpqueue/\r\n\u5408\u8a08 8\r\n-rw------- 1 matoken matoken  7  9\u6708 18 00:15 2018-09-18-00.15.53.mail\r\n-rw------- 1 matoken matoken 53  9\u6708 18 00:15 2018-09-18-00.15.53.msmtp
\n
\n
\n
\n
Subject\u306e\u4ed8\u3044\u305f\u30e1\u30fc\u30eb\u304c\u3042\u308b\u6642
\n
\n
$ msmtp-listqueue.sh\r\nNo mail in queue\r\n\r\nSubject: offline><
\n
\n
\n
\n
\u30aa\u30f3\u30e9\u30a4\u30f3\u6642\u306bqueue\u3092\u30d5\u30e9\u30c3\u30b7\u30e5\u3059\u308b
\n
\n
$ msmtp-runqueue.sh\r\n*** Sending 2018-09-18-00.15.53.mail to -C /home/matoken/.msmtprc -a gmail matoken@gmail.com ...\r\n2018-09-18-00.15.53.mail sent successfully\r\n*** Sending 2018-09-18-00.27.21.mail to -C /home/matoken/.msmtprc -a gmail matoken@gmail.com ...\r\n2018-09-18-00.27.21.mail sent successfully
\n
\n
\n
\n

\uff03sudo\u306e\u5834\u5408\u3082 ~root/.msmtpqueue/ \u3060\u3063\u305f\uff0e

\n
\n
\n
\n

tips

\n
\n
gmail\u3067\u4ee5\u4e0b\u306e\u30a8\u30e9\u30fc\u3068\u306a\u3063\u305f\u5834\u5408 tls_starttls on ( tls on\u306e\u3068\u304d\u306e\u65e2\u5b9a\u5024? )\u3068\u8a2d\u5b9a\u3059\u308b\u3068\u9001\u4fe1\u3067\u304d\u305f
\n
\n
$ echo \"hello msmtp\" | sudo msmtp -a gmail matohara@gmail.com\r\nmsmtp: envelope from address matohara@gmail.com not accepted by the server\r\nmsmtp: server message: 530 5.7.0 Must issue a STARTTLS command first. k126-v6sm14991126pgk.26 - gsmtp\r\nmsmtp: could not send mail (account gmail from /etc/msmtprc)
\n
\n
\n
\n
Yandex\u3067\u30e1\u30fc\u30eb\u9001\u4fe1\u6642\u306b\u5e30\u3063\u3066\u3053\u306a\u3044\u5834\u5408 tls_starttls off \u3068\u8a2d\u5b9a\u3059\u308b\u3068\u9001\u4fe1\u3067\u304d\u305f
\n
\n
\n
\n
\n
\n
nifty\u3067\u4ee5\u4e0b\u306e\u30a8\u30e9\u30fc\u3068\u306a\u3063\u305f\u5834\u5408 tls_starttls off \u3068\u8a2d\u5b9a\u3059\u308b\u3068\u9001\u4fe1\u3067\u304d\u305f
\n
\n
msmtp: network read error: \u63a5\u7d9a\u304c\u76f8\u624b\u304b\u3089\u30ea\u30bb\u30c3\u30c8\u3055\u308c\u307e\u3057\u305f\r\nmsmtp: could not send mail (account nifty from /etc/msmtprc)
\n
\n
\n
\n
\n
\n
\n

\u8a66\u3057\u305f\u74b0\u5883

\n
\n
\n
\u74b0\u58831(Raspberry Pi 2B/Raspbian stretch)
\n
\n
$ dpkg-query -W msmtp msmtp-mta gnupg2 openssl\r\ngnupg2  2.1.18-8~deb9u2\r\nmsmtp   1.6.6-1\r\nmsmtp-mta       1.6.6-1\r\nopenssl 1.1.0f-3+deb9u2\r\n$ lsb_release -d\r\nDescription:    Raspbian GNU/Linux 9.4 (stretch)\r\n$ uname -m\r\narmv7l
\n
\n
\n
\n
\u74b0\u58832(Ubuntu 18.04 LTS)
\n
\n
$ dpkg-query -W msmtp msmtp-mta gnupg2 openssl\r\ngnupg2  2.2.4-1ubuntu1.1\r\nmsmtp   1.6.6-1\r\nmsmtp-mta       1.6.6-1\r\nopenssl 1.1.0g-2ubuntu4.1\r\n$ lsb_release -d\r\nDescription:    Ubuntu 18.04.1 LTS\r\n$ uname -m\r\nx86_64
\n
\n
\n
\n
\u74b0\u58833(Debian sid)
\n
\n
$ dpkg-query -W msmtp msmtp-mta gnupg2 openssl\r\ngnupg2  2.2.10-1\r\nmsmtp   1.6.7-1\r\nmsmtp-mta\r\nopenssl 1.1.1-1\r\n$ lsb_release -d\r\nDescription:    Debian GNU/Linux unstable (sid)\r\n$ uname -m\r\nx86_64
\n
\n
\n
\n
\n", "content_text": "sSMTP \u304b\u3089 msmtp \u3078\n\n\n\u73fe\u5728\u30e1\u30fc\u30eb\u3092\u53d7\u3051\u53d6\u3089\u305a\u30e1\u30fc\u30eb\u3092\u9001\u4fe1\u3059\u308b\u3060\u3051\u306e\u30db\u30b9\u30c8\u3067\u306fsSMTP\u3092\u3088\u304f\u4f7f\u3063\u3066\u3044\u307e\u3059\uff0eMTA\u306fexim\u3084Postfix\u7b49\u3067\u3082\u826f\u3044\u306e\u3067\u3059\u304c\uff0c\u30c7\u30fc\u30e2\u30f3\u304c\u8d77\u52d5\u3057\u306a\u3044\u306e\u3067\u305d\u306e\u5206\u30bb\u30ad\u30e5\u30a2\u3067\u8a2d\u5b9a\u3082\u697d\u3067\u3059\uff0e\n\u3057\u304b\u3057\uff0csSMTP\u306f\u6700\u8fd1\u30e1\u30f3\u30c6\u3055\u308c\u3066\u3044\u307e\u305b\u3093\uff0cDebian \u306a\u3069\u306e\u30c7\u30a3\u30b9\u30c8\u30ea\u30d3\u30e5\u30fc\u30b7\u30e7\u30f3\u3067\u306f\u307e\u3060\u30e1\u30f3\u30c6\u30ca\u30f3\u30b9\u3055\u308c\u3066\u3044\u307e\u3059\u304c\u65b0\u6a5f\u80fd\u304c\u5165\u3063\u305f\u308a\u306f\u3057\u306a\u3044\u3067\u3057\u3087\u3046\uff0e\n\n\nsSMTP Alternatives and Similar Software – AlternativeTo.net\n\nssmtp is unmaintained. Consider using something like msmtp instead.\n\n\n\n\u30d0\u30fc\u30b8\u30e7\u30f3\u3082\u636e\u3048\u7f6e\u304d\u3067Upstream\u3082\u7121\u3055\u305d\u3046\n\n$ w3m -dump https://packages.qa.debian.org/s/ssmtp.html|grep versions -A11\r\nversions ... ...pool\r\n\r\no-o-stable\r\n save 2.64-7\r\noldstable\r\n save 2.64-8\r\nstable\r\n save 2.64-8\r\nunstable\r\n save 2.64-8\r\nUbuntu\r\n 2.64-8ubuntu2\r\n$ apt show ssmtp 2>/dev/null |grep Homepage\r\nHomepage: http://packages.qa.debian.org/s/ssmtp.html\n\n\n\n\n\nDebian Package Tracking System – ssmtp\n\n\najwans/sSMTP: patches to sSMTP\n\n\n\n\n\u305d\u3053\u3067\uff0calternativeto.net \u3067\u6319\u3052\u3089\u308c\u3066\u3044\u308b msmtp \u3092\u8a66\u3057\u3066\u307f\u307e\u3057\u305f\uff0e\n\n\n\n\nmsmtp – about\n\n\n\n\n\u4ee5\u4e0b\u3067\u306f\u8272\u3005\u8a66\u3057\u3066\u3044\u307e\u3059\u304c\uff0c\u30b7\u30b9\u30c6\u30e0\u30e1\u30fc\u30eb\u3092\u9001\u308b\u3060\u3051\u306a\u3089 msmtp, msmtp-mta pkg \u3092\u5c0e\u5165\uff0c/etc/msmtprc \u306e\u8a2d\u5b9a\u3060\u3051\u3067ok\u3067\u3059\uff0e\n\n\n\n\nmsmtp \u306e\u5c0e\u5165\n\n\nDebian sid/Ubuntu 18.04 LTS \u306a\u3069\u3067\u306f\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u3042\u3063\u305f\u306e\u3067\u3053\u308c\u3092\u5c0e\u5165\u3057\u307e\u3057\u305f\uff0e\n\n\n\n$ sudo apt install msmtp\n\n\n\n\n\nmstp\u306e\u8a2d\u5b9a\n\n\n\u8a2d\u5b9a\u4f8b\u304c /usr/share/doc/msmtp/examples/ \u4ee5\u4e0b\u306b\u3042\u308b\u306e\u3067\n\u30b7\u30b9\u30c6\u30e0\u8a2d\u5b9a\u306e\u5834\u5408\u306f msmtprc-system.example \u3092 `/etc/msmtprc \u306bcp\u3057\u3066\u8a2d\u5b9a\uff0e\n\u30e6\u30fc\u30b6\u8a2d\u5b9a\u306e\u5834\u5408\u306f msmtprc-user.example \u3092 ~/.msmtprc \u306bcp\u3057\u3066\u8a2d\u5b9a\u3059\u308b\uff0e\n\n\n\u30b7\u30b9\u30c6\u30e0\u3067\u306e\u8a2d\u5b9a\u4f8b\n\n\u4ee5\u4e0b\u306e\u4f8b\u3067\u306f root \u304c\u8aad\u307f\u66f8\u304d\u3067\u304d\u3066\uff0c\u4e00\u822c\u30e6\u30fc\u30b6\u306ematoken\u30a2\u30ab\u30a6\u30f3\u30c8\u306f\u8aad\u307f\u8fbc\u307f\u304c\u53ef\u80fd\u306a\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb /etc/msmtprc \u3092\u4f5c\u6210\u3057\u3066\u3044\u308b\uff0e\ndefaults \u30bb\u30af\u30b7\u30e7\u30f3\u306b\u5171\u901a\u8a2d\u5b9a\u3092\u66f8\u304d\uff0caccount \u30bb\u30af\u30b7\u30e7\u30f3\u306b\u30e1\u30fc\u30eb\u30b5\u30fc\u30d0\u56fa\u6709\u306e\u8a2d\u5b9a\u3092\u66f8\u304f\uff0eaccount \u30bb\u30af\u30b7\u30e7\u30f3\u306f\u8907\u6570\u66f8\u3051\u3066\uff0caccount default \u306b\u898f\u5b9aaccount \u3092\u6307\u5b9a\u3059\u308b\uff0e\u4ee5\u4e0b\u306e\u4f8b\u3067\u306fgmail \u304c\u898f\u5b9a\u5024\u3068\u306a\u308b\uff0e\n\n\n/etc/msmtprc \u306e\u4f5c\u6210\n\n$ sudo install /dev/null /etc/msmtprc -o root -g root -m 600\r\n$ sudo setfacl -m u:matoken:r /etc/msmtprc\r\n$ getfacl /etc/msmtprc\r\ngetfacl: Removing leading '/' from absolute path names\r\n# file: etc/msmtprc\r\n# owner: root\r\n# group: root\r\nuser::rw-\r\nuser:matoken:r--\r\ngroup::---\r\nmask::r--\r\nother::---\r\n\r\n$ sudo vi /etc/msmtprc\r\n$ sudo grep -v ^# /etc/msmtprc\r\n\r\ndefaults\r\nsyslog on\r\naliases /etc/aliases\r\n\r\ntls on\r\ntls_trust_file /etc/ssl/certs/ca-certificates.crt\r\nauth on\r\nsyslog LOG_MAIL\r\n\r\naccount gmail\r\nhost smtp.gmail.com\r\nport 587\r\nfrom example@gmail.com\r\nuser example\r\npassword porseypacdoadwif\r\n\r\naccount default : gmail\n\n\n\n\u203bgmail\u306e\u591a\u8981\u7d20\u8a8d\u8a3c\u3092\u5229\u7528\u3057\u3066\u3044\u308b\u5834\u5408\u306f\u4ee5\u4e0b\u304b\u3089\u30a2\u30d7\u30ea\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u751f\u6210\u3059\u308b\uff0e(\u4f7f\u3044\u56de\u3057\u304c\u3067\u304d\u3061\u3083\u3046\u3051\u308c\u3069\u6d41\u51fa\u3057\u305f\u3068\u304d\u306e\u5f71\u97ff\u3092\u8003\u3048\u3066\u8a2d\u5b9a\u6bce\u306b\u767a\u884c\u3059\u308b)\n\n\n\n\n\u30a2\u30d7\u30ea \u30d1\u30b9\u30ef\u30fc\u30c9\n\n\n\n\n\n\u30e6\u30fc\u30b6\u3067\u306e\u8a2d\u5b9a\n\n\u30e6\u30fc\u30b6\u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306f`~/.msmtprc` \u82e5\u3057\u304f\u306f $XDG_CONFIG_HOME/msmtp/config \u3067\u30b7\u30b9\u30c6\u30e0\u3068\u9055\u3044\uff0calias file \u3068 log \u3092\u9069\u5f53\u306a\u30d5\u30a1\u30a4\u30eb\u306b\u3057\u305f\uff0e\n\u30a2\u30ab\u30a6\u30f3\u30c8\u3082\u5897\u3084\u3057\u3066\u307f\u305f\uff0e\ngmail\u306e\u30a2\u30d7\u30ea\u30d1\u30b9\u30ef\u30fc\u30c9\u3082\u65b0\u305f\u306b\u767a\u884c\u3057\u305f\uff0e\n\n\n~/.msmtprc \u306e\u4f5c\u6210\n\n$ install /dev/null ~/.msmtprc -o matoken -g matoken -m 600\r\n$ vi ~/.msmtprc\r\n$ grep -v ^# ~/.msmtprc\r\n\r\ndefaults\r\nlogfile ~/.msmtp.log\r\naliases ~/.msmtp.aliases\r\n\r\ntls on\r\ntls_trust_file /etc/ssl/certs/ca-certificates.crt\r\nauth on\r\nsyslog LOG_MAIL\r\n\r\naccount gmail\r\nhost smtp.gmail.com\r\nport 587\r\nfrom example@gmail.com\r\nuser example\r\npassword igeinleedafchygy\r\n\r\naccount yandex\r\ntls_starttls off\r\nhost smtp.yandex.com\r\nport 465\r\nfrom example@yandex.com\r\nuser example\r\npassword throjfeekdewxeib\r\n\r\naccount nifty\r\ntls_starttls off\r\nhost smtp.nifty.com\r\nport 465\r\nfrom example@nifty.com\r\nuser aaa99999\r\npassword 9Z#9999X\r\n\r\naccount default : gmail\n\n\n\n\n\u9001\u4fe1\u30c6\u30b9\u30c8\n\nmsmtp \u30b3\u30de\u30f3\u30c9\u3067\u9001\u4fe1\u30c6\u30b9\u30c8\u304c\u51fa\u6765\u308b\uff0e\n-a \u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u30a2\u30ab\u30a6\u30f3\u30c8\u304c\u6307\u5b9a\u3067\u304d\u308b\uff0e\n-C \u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u304c\u6307\u5b9a\u3067\u304d\u308b\uff0e(\u30b7\u30b9\u30c6\u30e0\u3068\u30e6\u30fc\u30b6\u306e\u8a2d\u5b9a\u3092\u4e21\u65b9\u30c6\u30b9\u30c8\u3059\u308b)\n\n\n\n$ echo \"hello system msmtp\" | msmtp -C /etc/msmtprc matohara@gmail.com\r\n$ echo \"hello user msmtp\" | msmtp -C ~/.msmtprc -a gmail matohara@gmail.com\n\n\n\n\u5927\u62b5\u306eMTA\u3067\u306f . \u3067mail body \u7d42\u4e86\u3068\u306a\u308b\u304c\uff0cmsmtp\u3067\u306f`.`\u306f\u666e\u901a\u306bbody \u306b\u542b\u307e\u308c\u308b\uff0eCtrl + d \u3067\u7d42\u4e86\uff0e\n\n\n\n$ msmtp -a gmail matohara@gmail.com\r\nSubject: hello\r\n\r\nmsmtp test\r\n.\r\ndot \u3067\u306f\u7d42\u4e86\u306b\u306a\u3089\u306a\u3044\r\nCtrl+d \u3067\u7d42\u4e86\r\n^d\n\n\n\n\naliases file\n\nmsmtp\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\u306e alias \u3067\u8a2d\u5b9a\u3067\u304d\u308b\uff0e\n\n\n\n$ grep alias ~/.msmtprc\r\naliases ~/.msmtp.alias\r\n$ sudo grep alias /etc/msmtprc\r\naliases /etc/aliases\n\n\n\n\u3053\u306ealias file\u306f\u901a\u5e38\u306ealiases \u30d5\u30a1\u30a4\u30eb\u3068\u540c\u3058\u5f62\u5f0f\u306e plain text \u3067 newaliases \u30b3\u30de\u30f3\u30c9\u3067\u306e\u5909\u63db\u306f\u4e0d\u8981\uff0e\n\n\n\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306f\u8907\u6570\u6307\u5b9a\u3067\u304d\u308b\uff0edefault \u3068\u3044\u3046\u540d\u524d\u306f\u898f\u5b9a\u30a2\u30c9\u30ec\u30b9\u3068\u306a\u308b\uff0e\n\n\n\nroot: hoge@example.com, fuga@example.com\r\ndefault: piyo@example.com\n\n\n\n\u4ee5\u524d\u306ealiases \u30d5\u30a1\u30a4\u30eb\u3092\u6d41\u7528\u3057\u3066\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u3057\u3066\u307f\u305f\u3068\u3053\u308d\uff0c\n\n\n\n# /etc/aliases\r\nmailer-daemon: postmaster\r\npostmaster: root\r\nnobody: root\r\nhostmaster: root\r\nusenet: root\r\nnews: root\r\nwebmaster: root\r\nwww: root\r\nftp: root\r\nabuse: root\r\nnoc: root\r\nsecurity: root\r\nroot: matohara@gmail.com\r\ndefault: matohara@gmail.com\n\n\n\n\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u30a8\u30e9\u30fc\u3068\u306a\u3063\u305f\uff0ealias\u5148\u306f\u30e6\u30fc\u30b6\u540d\u3067\u306f\u30a8\u30e9\u30fc\u3068\u306a\u308b\u3088\u3046\uff0e\n\n\n\n$ echo hello | sudo msmtp -C /etc/msmtprc root\r\nmsmtp: /etc/aliases: line 2: invalid address 'postmaster'\n\n\n\n\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u305d\u308c\u305e\u308c\u306b\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u6307\u5b9a\u3059\u308b\u3068\u671f\u5f85\u3057\u305f\u52d5\u4f5c\u3068\u306a\u3063\u305f\uff0e\n\n\n\n$ sudo sed -i -e 's/ root$\\| postmaster$/matohara@gmail.com/' /etc/aliases\r\n$ cat /etc/aliases\r\n# /etc/aliases\r\nmailer-daemon:matohara@gmail.com\r\npostmaster:matohara@gmail.com\r\nnobody:matohara@gmail.com\r\nhostmaster:matohara@gmail.com\r\nusenet:matohara@gmail.com\r\nnews:matohara@gmail.com\r\nwebmaster:matohara@gmail.com\r\nwww:matohara@gmail.com\r\nftp:matohara@gmail.com\r\nabuse:matohara@gmail.com\r\nnoc:matohara@gmail.com\r\nsecurity:matohara@gmail.com\r\nroot: matohara@gmail.com\r\ndefault: matohara@gmail.com\n\n\n\n\n\u30d1\u30b9\u30ef\u30fc\u30c9\u3092GnuPG\u6697\u53f7\u5316\u30d5\u30a1\u30a4\u30eb\u306b\u683c\u7d0d\u3057\u3066\u5229\u7528\u3059\u308b\n\n\u30d1\u30b9\u30ef\u30fc\u30c9\u3092gpg\u3067\u6697\u53f7\u5316\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u306b\u683c\u7d0d\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\uff0e\u3053\u306e\u5834\u5408\u30a2\u30ab\u30a6\u30f3\u30c8\u3054\u3068\u306b\u30d5\u30a1\u30a4\u30eb\u304c\u5fc5\u8981\u306a\u306e\u304c\u5c11\u3057\u9762\u5012\uff0e\npassword porseypacdoadwif \u306e\u5834\u5408 porseypacdoadwif \u90e8\u5206\u3060\u3051\u3092\u6697\u53f7\u5316\u3057\u3066\u30d5\u30a1\u30a4\u30eb\u306b\u683c\u7d0d\u3059\u308b\uff0e(\u306f\u3058\u3081password \u3082\u542b\u3081\u3066\u3057\u307e\u3044\u5931\u6557\u3057\u305f)\n\n\n\n$ grep ^password\\ ~/.msmtprc | head -1 | awk {'print $2'} | gpg2 --default-recipient-self -e - > ~/.msmtp-password-gmail.gpg\r\n$ grep ^password\\ ~/.msmtprc | head -2 | tail -1 | awk {'print $2'} | gpg2 --default-recipient-self -e - > ~/.msmtp-password-yandex.gpg\r\n$ grep ^password\\ ~/.msmtprc | tail -1 | awk {'print $2'} | gpg2 --default-recipient-self -e - > ~/.msmtp-password-nifty.gpg\n\n\n\nmsmtprc \u306e password \u3092\u524a\u9664\u3057\u3066\uff0c\u4ee3\u308f\u308a\u306b passwordeval gpg2 --no-tty -q -d \u6697\u53f7\u30d5\u30a1\u30a4\u30eb \u3068\u8a2d\u5b9a\u3092\u5909\u66f4\u3059\u308b\uff0e\n\n\n\n$ grep ^passworde ~/.msmtprc\r\npasswordeval gpg2 --no-tty -q -d ~/.msmtp-password-gmail.gpg\r\npasswordeval gpg2 --no-tty -q -d ~/.msmtp-password-yandex.gpg\r\npasswordeval gpg2 --no-tty -q -d ~/.msmtp-password-nifty.gpg\n\n\n\n\u5f8c\u306f\u3053\u308c\u307e\u3067\u306e\u3088\u3046\u306bmsmtp\u3092\u547c\u3076\u3068gpg-agent\u304c\u8d77\u52d5\u3059\u308b\uff0e\n\n\n\u203b\u30b7\u30b9\u30c6\u30e0\u5074\u306f\u30b7\u30b9\u30c6\u30e0\u30e1\u30fc\u30eb\u304c\u9001\u308c\u306a\u304f\u306a\u308b\u306e\u3067\u3053\u306e\u8a2d\u5b9a\u3092\u3057\u306a\u3044\u307b\u3046\u304c\u3044\u3044\u3068\u601d\u3046\uff0e\n\n\n\n\u30d1\u30b9\u30ef\u30fc\u30c9\u3092openssl\u6697\u53f7\u5316\u30d5\u30a1\u30a4\u30eb\u306b\u683c\u7d0d\n\n\u30b7\u30b9\u30c6\u30e0\u30e1\u30fc\u30eb\u3067gpg agent\u3092\u5229\u7528\u3059\u308b\u306e\u306f\u591a\u5206\u7121\u7406\u306a\u306e\u3067openssl\u3067\u6697\u53f7\u5316\u3057\u3066\u307f\u308b\uff0e\u30d1\u30b9\u30ef\u30fc\u30c9\u306fNIC\u306emac address\u306b\u3057\u3066\u3042\u308b\uff0e\u6c17\u4f11\u3081\u30ec\u30d9\u30eb\u3060\u3051\u3069\u8a66\u3057\u306b\u8a2d\u5b9a\uff0e\n\u30de\u30b7\u30f3\u304c\u4e57\u3063\u53d6\u3089\u308c\u305f\u5834\u5408\u306f\u3069\u3046\u3057\u3088\u3046\u3082\u306a\u3044\u3051\u308c\u3069 /etc/msmtprc, /etc/msmtp-password \u30d5\u30a1\u30a4\u30eb\u6d41\u51fa\u6642\u306e\u6642\u9593\u7a3c\u304e\u304f\u3089\u3044\u306b\u306f\u306a\u308b?\nNIC \u304c\u4f7f\u3063\u3066\u3044\u306a\u3044\u3082\u306e\u3082\u542b\u3081\u5897\u6e1b\u3057\u305f\u308a\u5909\u66f4\u306b\u306a\u3063\u305f\u5834\u5408\u306f\u5fa9\u5143\u3067\u304d\u306a\u304f\u306a\u308b\u306e\u3067\u6ce8\u610f\uff0e\n\n\nmac address \u3092\u30d1\u30b9\u30ef\u30fc\u30c9\u3068\u3057\u3066openssl\u3067\u6697\u53f7\u5316\n\n$ umask 0077; grep ^password\\ /etc/msmtprc | head -1 | awk {'print $2'} | sudo openssl enc -e -md sha256 -aes-256-cbc -a -A -salt -pbkdf2 -in /dev/stdin -out /etc/msmtp-password -pass pass:`hwinfo --network | grep 'Permanent HW Address' | sed 's/^.*: //' | sort -n | tr -d '\\n'`\n\n\n\n\u5fa9\u5143\u30c6\u30b9\u30c8\n\n$ sudo openssl enc -d -md sha256 -aes-256-cbc -a -A -salt -pbkdf2 -in /etc/msmtp-password -pass pass:`hwinfo --network | grep 'Permanent HW Address' | sed 's/^.*: //' | sort -n | tr -d '\\n'`\r\nigeinleedafchygy\n\n\n\n/etc/msmtprc \u306e password \u3092\u524a\u9664\u3057\u3066 passwordeval \u306b\u66f8\u304d\u63db\u3048\n\n$ grep passworde /etc/msmtprc\r\npasswordeval openssl enc -d -md sha256 -aes-256-cbc -a -A -salt -pbkdf2 -in /etc/msmtp-password -pass pass:`hwinfo --network | grep 'Permanent HW Address' | sed 's/^.*: //' | sort -n | tr -d '\\n'`\n\n\n\n\u203bifconfig\u3084iproute2\u3092\u4f7f\u308f\u305ahwinfo\u3092\u4f7f\u3063\u3066Permanent HW Address\u3092\u4f7f\u3063\u3066\u3044\u308b\u306e\u306fmac address\u507d\u88c5\u5bfe\u7b56\n\n\n\n\n\nMTA \u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u5c0e\u5165\n\n\nmsmtp \u30b3\u30de\u30f3\u30c9\u3067\u30e1\u30fc\u30eb\u304c\u9001\u4fe1\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u3089\uff0cmsmtp-mta pkg \u3092\u5c0e\u5165\u3059\u308b\uff0e\u3053\u308c\u3067sendmail\u30b3\u30de\u30f3\u30c9\u306b\u30b7\u30f3\u30dc\u30ea\u30c3\u30af\u30ea\u30f3\u30af\u304c\u5f35\u3089\u308c\u3066\u540c\u69d8\u306b\u5229\u7528\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308b\uff0e\u30b7\u30b9\u30c6\u30e0\u30e1\u30fc\u30eb\u3082\u98db\u3076\u3088\u3046\u306b\u306a\u308b\uff0e\n\n\n\n$ sudo apt install msmtp-mta\r\n$ ls -l /usr/sbin/sendmail\r\nlrwxrwxrwx 1 root root 12 11\u6708 29 2016 /usr/sbin/sendmail -> ../bin/msmtp\n\n\n\n\n\n\u30aa\u30d5\u30e9\u30a4\u30f3\u6642\u306bmsmtp\u3092\u5229\u7528\u3059\u308b\n\n\nmsmtp\u306f\u30aa\u30d5\u30e9\u30a4\u30f3\u6642\u306b\u5b9f\u884c\u3059\u308b\u3068\u30a8\u30e9\u30fc\u3068\u306a\u308b\uff0e\u901a\u5e38\u306f\u5e38\u306b\u30aa\u30f3\u30e9\u30a4\u30f3\u306a\u306e\u3067\u554f\u984c\u306f\u306a\u3044\u304c\uff0c\u6301\u3061\u904b\u3073NotePC\u306a\u3069\u3067\u306f\u30aa\u30d5\u30e9\u30a4\u30f3\u30aa\u30f3\u30e9\u30a4\u30f3\u304c\u767a\u751f\u3057\u3066\u30e1\u30fc\u30eb\u306e\u9001\u4fe1\u306b\u5931\u6557\u3059\u308b\u3053\u3068\u304c\u3042\u308b\uff0e\n\n\n\n$ echo 'hoge' | msmtp -a gmail matoken@gmail.com\r\nmsmtp: cannot locate host smtp.gmail.com: \u540d\u524d\u307e\u305f\u306f\u30b5\u30fc\u30d3\u30b9\u304c\u4e0d\u660e\u3067\u3059\r\nmsmtp: could not send mail (account gmail from /etc/msmtprc)\n\n\n\n/usr/share/doc/msmtp/examples/ \u4ee5\u4e0b\u306e msmtpq \u82e5\u3057\u304f\u306f msmtpqueue \u306b\u683c\u7d0d\u3055\u308c\u3066\u3044\u308bscript\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u3067\u30aa\u30d5\u30e9\u30a4\u30f3\u6642\u306b\u30ad\u30e5\u30fc\u3068\u3057\u3066\u8caf\u3081\u3066\u304a\u3044\u3066\u30aa\u30f3\u30e9\u30a4\u30f3\u6642\u306b\u9001\u4fe1\u3068\u3044\u3063\u305f\u3053\u3068\u304c\u51fa\u6765\u308b\uff0e\n\n\n\u3069\u3061\u3089\u3082sendmail\u3068\u7f6e\u304d\u63db\u3048\u304c\u53ef\u80fd\u306a\u306e\u3067\uff0c\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u30c0\u30a6\u30f3\u6642\u306b`/usr/sbin/sendmail`\u3092\u3053\u308c\u306b\u7f6e\u304d\u63db\u3048\u3066\u30aa\u30f3\u30e9\u30a4\u30f3\u6642\u306b\u623b\u3057\u3066queue\u3092\u30d5\u30e9\u30c3\u30b7\u30e5\u3059\u308b\u3088\u3046\u306b\u3059\u308b\u3068\u3044\u3044\u304b\u3082\u3057\u308c\u306a\u3044\uff0e\n\n\nDebian/Ubuntu\u306a\u3089\u4ee5\u4e0b\u306e\u3042\u305f\u308a\u3067\uff0c\n\n\n\n\n/etc/network/if-down.d/\n/usr/sbin/sendmail \u3092 msmtpq or msmtpqueue \u306b\u5411\u3051\u308b\n\n\n/etc/network/if-pre-up.d/\n/usr/sbin/sendmail \u3092 msmtp \u306b\u5411\u3051\u308b\n\n\n/etc/network/if-up.d/\nqueue\u3092\u30d5\u30e9\u30c3\u30b7\u30e5\n\n\n\n\nNetworkManager\u3060\u3068 /etc/NetworkManager/dispatcher.d/ \u4ee5\u4e0b\u3067\u540c\u3058\u3053\u3068\u304c\u51fa\u6765\u308b\uff0e\n\n\n\n\n\nmsmtpq\n\n\u5727\u7e2e\u3055\u308c\u3066\u3044\u308bmsmtpq\u3092\u5c55\u958b\u3057\u3066\u5b9f\u884c\u6a29\u3092\u4ed8\u4e0e\u3059\u308b\n\n$ sudo gunzip /usr/share/doc/msmtp/examples/msmtpq/msmtpq.gz\r\n$ sudo chmod 755 /usr/share/doc/msmtp/examples/msmtpq/msmtpq\n\n\n\n\u4f7f\u3044\u3084\u3059\u3044\u5834\u6240\u306b\u30b7\u30f3\u30dc\u30ea\u30c3\u30af\u30ea\u30f3\u30af\u3092\u5f35\u308b\n\n$ sudo ln -s /usr/share/doc/msmtp/examples/msmtpq/msmtpq /usr/local/bin/msmtpq\r\n$ sudo ln -s /usr/share/doc/msmtp/examples/msmtpq/msmtp-queue /usr/local/bin/msmtp-queue\n\n\n\nqueue\u3068log\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3092\u4f5c\u6210\n\n$ install -d -m 700 ~/.msmtp.queue\r\n$ install -d -m 700 ~/log\n\n\n\n\u30aa\u30d5\u30e9\u30a4\u30f3\u6642\u306b\u9001\u4fe1\u3057\u3088\u3046\u3068\u3059\u308b\n\n$ echo 'msmtpq' | msmtpq -C ~/.msmtprc -a gmail matoken@gmail.com\r\n mail for [ -C /home/matoken/.msmtprc -a gmail matoken@gmail.com ] : couldn't be sent - host not connected\r\n enqueued mail as : [ 2018-09-18-06.21.48 ] ( -C /home/matoken/.msmtprc -a gmail matoken@gmail.com ) : successful\n\n\n\nqueue\u3092\u78ba\u8a8d\u3059\u308b\n\n$ msmtp-queue -d\r\n\r\n mail num=[ 1 ] id=[ 2018-09-18-06.21.18 ]\r\n\r\n mail num=[ 2 ] id=[ 2018-09-18-06.21.48 ]\n\n\n\nqueue\u3092\u30d5\u30e9\u30c3\u30b7\u30e5\u3059\u308b\n\n$ msmtp-queue -r\r\n mail [ 1 ] [ 2018-09-18-06.21.18 ] from queue ; send was successful ; purged from queue\r\n mail [ 2 ] [ 2018-09-18-06.21.48 ] from queue ; send was successful ; purged from queue\r\n$ msmtp-queue -d\r\n\r\n no mail in queue\n\n\n\n\nmsmtpqueue\n\n\u4f7f\u3044\u3084\u3059\u3044\u5834\u6240\u306b\u30b7\u30f3\u30dc\u30ea\u30c3\u30af\u30ea\u30f3\u30af\u3092\u5f35\u308b\n\n$ sudo ln -s /usr/share/doc/msmtp/examples/msmtpqueue/msmtp-enqueue.sh /usr/local/bin/msmtp-enqueue.sh\r\n$ sudo ln -s /usr/share/doc/msmtp/examples/msmtpqueue/msmtp-listqueue.sh /usr/local/bin/msmtp-listqueue.sh\r\n~$ sudo ln -s /usr/share/doc/msmtp/examples/msmtpqueue/msmtp-runqueue.sh /usr/local/bin/msmtp-runqueue.sh\n\n\n\n`msmtp`\u30b3\u30de\u30f3\u30c9\u306e\u4ee3\u308f\u308a\u306b`msmtp-enqueue.sh`\u3092\u4f7f\u3046\n\n$ echo 'queue' | msmtp-enqueue.sh -C ~/.msmtprc -a gmail matoken@gmail.com\n\n\n\nqueue\u3092\u78ba\u8a8d\u3059\u308b\n\n$ msmtp-listqueue.sh\r\nNo mail in queue\n\n\n\n\u4eca\u56de\u306e\u3088\u3046\u306b\u30e1\u30fc\u30eb\u306e\u5185\u5bb9\u304cbody\u3060\u3051\u3067From, To, Subject \u304c\u5b58\u5728\u3057\u306a\u3044\u3068\u3053\u306escript\u306f\u3046\u307e\u304f\u6a5f\u80fd\u3057\u306a\u3044><\n\n egrep -s --colour -h '(^From:|^To:|^Subject:)' \"$i\" || echo \"No mail in queue\";\n\n\n\n\u76f4\u63a5`~/.msmtpqueue/`\u3092\u78ba\u8a8d\u3059\u308b\u3068queue\u304c\u6e9c\u307e\u3063\u3066\u3044\u308b\u306e\u304c\u308f\u304b\u308b\n\n$ ls -lA ~/.msmtpqueue/\r\n\u5408\u8a08 8\r\n-rw------- 1 matoken matoken 7 9\u6708 18 00:15 2018-09-18-00.15.53.mail\r\n-rw------- 1 matoken matoken 53 9\u6708 18 00:15 2018-09-18-00.15.53.msmtp\n\n\n\nSubject\u306e\u4ed8\u3044\u305f\u30e1\u30fc\u30eb\u304c\u3042\u308b\u6642\n\n$ msmtp-listqueue.sh\r\nNo mail in queue\r\n\r\nSubject: offline><\n\n\n\n\u30aa\u30f3\u30e9\u30a4\u30f3\u6642\u306bqueue\u3092\u30d5\u30e9\u30c3\u30b7\u30e5\u3059\u308b\n\n$ msmtp-runqueue.sh\r\n*** Sending 2018-09-18-00.15.53.mail to -C /home/matoken/.msmtprc -a gmail matoken@gmail.com ...\r\n2018-09-18-00.15.53.mail sent successfully\r\n*** Sending 2018-09-18-00.27.21.mail to -C /home/matoken/.msmtprc -a gmail matoken@gmail.com ...\r\n2018-09-18-00.27.21.mail sent successfully\n\n\n\n\uff03sudo\u306e\u5834\u5408\u3082 ~root/.msmtpqueue/ \u3060\u3063\u305f\uff0e\n\n\n\ntips\n\ngmail\u3067\u4ee5\u4e0b\u306e\u30a8\u30e9\u30fc\u3068\u306a\u3063\u305f\u5834\u5408 tls_starttls on ( tls on\u306e\u3068\u304d\u306e\u65e2\u5b9a\u5024? )\u3068\u8a2d\u5b9a\u3059\u308b\u3068\u9001\u4fe1\u3067\u304d\u305f\n\n$ echo \"hello msmtp\" | sudo msmtp -a gmail matohara@gmail.com\r\nmsmtp: envelope from address matohara@gmail.com not accepted by the server\r\nmsmtp: server message: 530 5.7.0 Must issue a STARTTLS command first. k126-v6sm14991126pgk.26 - gsmtp\r\nmsmtp: could not send mail (account gmail from /etc/msmtprc)\n\n\n\nYandex\u3067\u30e1\u30fc\u30eb\u9001\u4fe1\u6642\u306b\u5e30\u3063\u3066\u3053\u306a\u3044\u5834\u5408 tls_starttls off \u3068\u8a2d\u5b9a\u3059\u308b\u3068\u9001\u4fe1\u3067\u304d\u305f\n\n\n\n\n\nnifty\u3067\u4ee5\u4e0b\u306e\u30a8\u30e9\u30fc\u3068\u306a\u3063\u305f\u5834\u5408 tls_starttls off \u3068\u8a2d\u5b9a\u3059\u308b\u3068\u9001\u4fe1\u3067\u304d\u305f\n\nmsmtp: network read error: \u63a5\u7d9a\u304c\u76f8\u624b\u304b\u3089\u30ea\u30bb\u30c3\u30c8\u3055\u308c\u307e\u3057\u305f\r\nmsmtp: could not send mail (account nifty from /etc/msmtprc)\n\n\n\n\n\n\n\u8a66\u3057\u305f\u74b0\u5883\n\n\n\u74b0\u58831(Raspberry Pi 2B/Raspbian stretch)\n\n$ dpkg-query -W msmtp msmtp-mta gnupg2 openssl\r\ngnupg2 2.1.18-8~deb9u2\r\nmsmtp 1.6.6-1\r\nmsmtp-mta 1.6.6-1\r\nopenssl 1.1.0f-3+deb9u2\r\n$ lsb_release -d\r\nDescription: Raspbian GNU/Linux 9.4 (stretch)\r\n$ uname -m\r\narmv7l\n\n\n\n\u74b0\u58832(Ubuntu 18.04 LTS)\n\n$ dpkg-query -W msmtp msmtp-mta gnupg2 openssl\r\ngnupg2 2.2.4-1ubuntu1.1\r\nmsmtp 1.6.6-1\r\nmsmtp-mta 1.6.6-1\r\nopenssl 1.1.0g-2ubuntu4.1\r\n$ lsb_release -d\r\nDescription: Ubuntu 18.04.1 LTS\r\n$ uname -m\r\nx86_64\n\n\n\n\u74b0\u58833(Debian sid)\n\n$ dpkg-query -W msmtp msmtp-mta gnupg2 openssl\r\ngnupg2 2.2.10-1\r\nmsmtp 1.6.7-1\r\nmsmtp-mta\r\nopenssl 1.1.1-1\r\n$ lsb_release -d\r\nDescription: Debian GNU/Linux unstable (sid)\r\n$ uname -m\r\nx86_64", "date_published": "2018-09-18T07:04:56+09:00", "date_modified": "2018-09-25T10:34:46+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "mail", "msmtp", "SMTP", "sSMTP", "Bionic Beaver(18.04LTS)", "Debian", "Linux", "Rasbian_stretch", "Raspberry Pi", "Raspbian stretch", "sid", "Ubuntu" ] }, { "id": "http://matoken.org/blog/?p=2116", "url": "https://matoken.org/blog/2018/09/16/i-want-to-specify-the-subject-of-e-mail-sent-from-crontab/", "title": "crontab \u304b\u3089\u9001\u4fe1\u3055\u308c\u308b\u96fb\u5b50\u30e1\u30fc\u30eb\u306e\u4ef6\u540d\u3092\u6307\u5b9a\u3057\u305f\u3044", "content_html": "
\n
\n
\n

crontab \u3067\u5b9f\u884c\u3055\u308c\u305f\u30b3\u30de\u30f3\u30c9\u306e\u51fa\u529b\u306f\u30e1\u30fc\u30eb\u3067\u9001\u3089\u308c\u307e\u3059\u304c\uff0c\u3053\u306e\u3068\u304d\u306e\u4ef6\u540d\u306f\u300cCron <\u30e6\u30fc\u30b6\u540d@\u30db\u30b9\u30c8\u540d> \u5b9f\u884c\u30b3\u30de\u30f3\u30c9\u300d\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\uff0e

\n
\n
\n
crontab \u4f8b
\n
\n
15 7 * * *  echo \"cron subject\"
\n
\n
\n
\n
\u30e1\u30fc\u30eb\u4f8b
\n
\n
Subject: Cron <matoken@T430s> echo \"cron subject\"\r\n\r\ncron subject
\n
\n
\n
\n
1\u3064\u306ehost\u304b\u3089\u3053\u3093\u306a\u30e1\u30fc\u30eb\u98db\u3093\u3067\u6765\u308b\u3068\u3069\u308c\u304c\u3069\u308c\u304b\u308f\u304b\u308a\u3065\u3089\u3044
\n
\n
Cron <matoken@T430s> nice -n 19 ionice -c 3 rsync -avxze \"ssh -i\u2026\u2026\r\nCron <root@T430s> nice -n 19 ionice -c 3 rsync -avxze \"ssh -i\u2026\u2026\r\nCron <root@T430s> nice -n 19 ionice -c 3 rsync -avxze \"ssh -i\u2026\u2026
\n
\n
\n
\n

\u5206\u304b\u308a\u3065\u3089\u3044\u306e\u3067\u81ea\u5206\u3067\u4ef6\u540d\u3092\u4ed8\u3051\u305f\u3044\u3068\u3053\u308d\u3067\u3059\uff0e

\n
\n
\n
\n
Table of Contents
\n\n
\n
\n
\n

: \u3092\u5229\u7528\u3059\u308b

\n
\n
\n

: \u306f shell \u306e\u7d44\u307f\u8fbc\u307f\u95a2\u6570\u3067\u4f55\u3082\u305b\u305a\u6b63\u5e38\u7d42\u4e86\u3057\u307e\u3059\uff0e
\n\u30b3\u30de\u30f3\u30c9\u306a\u306e\u3067 # \u3068\u9055\u3044\uff0c; \u306e\u5f8c\u306b\u30b3\u30de\u30f3\u30c9\u3092\u66f8\u304f\u3068\u305d\u306e\u5f8c\u306e\u30b3\u30de\u30f3\u30c9\u306f\u89e3\u91c8\u3055\u308c\u307e\u3059\uff0e

\n
\n
\n
\n
$ :           #\u4f55\u3082\u3057\u306a\u3044\r\n$ : hoge\r\n$ : echo hoge\r\n$ : rm -rf *\r\n$ : $(hostname)  #\u30b3\u30de\u30f3\u30c9\u3082\u5c55\u958b\u305b\u305a\u4f55\u3082\u3057\u306a\u3044\r\n$ : `whoami`\r\n$ : hoge; echo fuga   #;\u306e\u5f8c\u306f\u89e3\u91c8\u3055\u308c\u308b\r\nfuga\r\n$ # hoge\r\n$ # hoge; echo fuga
\n
\n
\n
\n

\u3053\u308c\u3092crontab\u306e\u982d\u306b\u66f8\u304f\u3068\u3053\u3046\u3044\u3046\u611f\u3058\u306b\u306a\u308a\u307e\u3059\uff0e

\n
\n
\n
crontab
\n
\n
29 6 * * *  : cron subject; echo \"hello\"
\n
\n
\n
\n
mail
\n
\n
Subject: Cron <matoken@T430s> : cron subject; echo \"hello\"\r\n\r\nhello
\n
\n
\n
\n

\u5c11\u3057\u308f\u304b\u308a\u3084\u3059\u304f\u306a\u308a\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
\n

mail\u30b3\u30de\u30f3\u30c9\u3092\u5229\u7528\u3059\u308b

\n
\n
\n

\u3053\u308c\u306f\u3061\u3087\u3063\u3068\u53cd\u5247\u306a\u611f\u3058\u304c\u3059\u308b\u306e\u3067\u3059\u304c\u4ef6\u540d\u306b\u30b3\u30de\u30f3\u30c9\u5b9f\u884c\u7d50\u679c\u3092\u5165\u308c\u305f\u308a\uff0c\u982d\u306e\u90e8\u5206\u3082\u66f8\u304d\u63db\u3048\u305f\u3044\u5834\u5408\u306fcron\u3060\u3051\u3067\u306f\u3067\u304d\u306a\u3055\u305d\u3046\u306a\u306e\u3067mail\u30b3\u30de\u30f3\u30c9\u7d4c\u7531\u3067\u9001\u4fe1\u3057\u3066\u307f\u307e\u3059\uff0e\u4eca\u56demailutils\u306email\u30b3\u30de\u30f3\u30c9\u3092\u5229\u7528\u3057\u307e\u3057\u305f\u304c\uff0cbsd-mailx\u3084mutt\u7b49\u3005\u3082\u3082\u3061\u308d\u3093\u4f7f\u3048\u307e\u3059\uff0e

\n
\n
\n
crontab
\n
\n
45 6 * * *  echo \"cron test\" | mail -s \"$(hostname)@$(whoami) cron Subject : $(date +\\%F)\" matoken+cron@example.com
\n
\n
\n
\n
mail
\n
\n
Subject: T430s@matoken cron Subject : 2018-09-13\r\nX-Mailer: mail (GNU Mailutils 3.4)\r\n\r\ncron test
\n
\n
\n
\n

mail \u30b3\u30de\u30f3\u30c9\u306e -s \u30aa\u30d7\u30b7\u30e7\u30f3\u90e8\u5206\u304c\u4ef6\u540d\u306b\u306a\u308a\u307e\u3059\uff0e\u305d\u306e\u5f8c\u308d\u304c\u5b9b\u5148\u306e\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\uff0ebody\u306fcron\u306e\u51fa\u529b\u3092\u30d1\u30a4\u30d7\u304b\u3089\u53d7\u3051\u53d6\u308a\u307e\u3059\uff0e

\n
\n
\n

STDERR \u304c\u5225\u30e1\u30fc\u30eb\u3067\u5c4a\u304f

\n
\n

STDERR \u306e\u51fa\u529b\u304c\u3042\u3063\u305f\u5834\u5408cron\u3067\u30e1\u30fc\u30eb\u304c\u9001\u3089\u308c\u3066\u3057\u307e\u3044\u307e\u3059\uff0email\u30b3\u30de\u30f3\u30c9\u3068\u5408\u308f\u305b\u30661\u5ea6\u306b2\u901a\u5c4a\u304f\u3053\u3068\u306b\uff0e
\n\u5b9f\u884c\u30b3\u30de\u30f3\u30c9\u306e\u5f8c\u308d\u306b 2>&1 \u3092\u4ed8\u3051\u3066 STDERR \u3092 STDOUT \u306b\u6e21\u3057\u3066mail\u30b3\u30de\u30f3\u30c9\u3060\u3051\u306b\u3057\u307e\u3059\uff0e

\n
\n
\n
crontab
\n
\n
45 6 * * *  echo \"cron test\" 2>&1 | mail -s \"$(hostname)@$(whoami) cron Subject : $(date +\\%F)\" matoken+cron@example.com
\n
\n
\n
\n
\n

\u51fa\u529b\u304c\u306a\u304f\u3066\u3082\u30e1\u30fc\u30eb\u304c\u5c4a\u304f

\n
\n

crontab \u306e\u5834\u5408\u30b3\u30de\u30f3\u30c9\u306e\u51fa\u529b\u304c\u306a\u3051\u308c\u3070\u30e1\u30fc\u30eb\u304c\u9001\u3089\u308c\u307e\u305b\u3093\u304c\uff0c\u3053\u306e\u30b3\u30de\u30f3\u30c9\u3067\u306f NULL \u3067\u3082\u30e1\u30fc\u30eb\u304c\u9001\u4fe1\u3055\u308c\u307e\u3059\uff0e
\n\u672a\u89e3\u6c7a\uff0e

\n
\n
\n
\n
\n
\n

\u4f59\u9332

\n
\n
\n

cron\u3067\u4e00\u5207\u30e1\u30fc\u30eb\u3092\u9001\u308a\u305f\u304f\u306a\u3044

\n
\n
\u5834\u5408crontab\u3067 MAILTO=”” \u3092\u8a2d\u5b9a\u3059\u308b
\n
\n
MAILTO=\"\"
\n
\n
\n
\n
\n

\u6307\u5b9a\u3057\u305f\u30b3\u30de\u30f3\u30c9\u3060\u3051\u30e1\u30fc\u30eb\u3092\u9001\u308a\u305f\u304f\u306a\u3044

\n
\n
STDOUT \u3068 STDERR \u3092 /dev/null \u306b\u6368\u3066\u308b
\n
\n
20 6 * * *  echo \"cron subject\" > /dev/null 2>&1
\n
\n
\n
\n
\n

\u30e1\u30fc\u30eb\u304c\u5c4a\u304b\u306a\u3044

\n
\n

/var/spool/mail/\u30e6\u30fc\u30b6\u540d \u306e\u30ed\u30fc\u30ab\u30eb\u306b\u306f\u30e1\u30fc\u30eb\u304c\u3069\u3068\u304f\u3051\u3069\uff0c\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u4e0a\u306e\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u6307\u5b9a\u3057\u3066\u3082\u5c4a\u304b\u306a\u3044\u5834\u5408\u30e1\u30fc\u30eb\u30b5\u30fc\u30d0\u306e\u8a2d\u5b9a\u304c\u51fa\u6765\u3066\u3044\u306a\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\uff0e\u30e1\u30fc\u30eb\u30b5\u30fc\u30d0(sSMTP/msmtp\u7b49\u306f\u30c7\u30fc\u30e2\u30f3\u304c\u8d77\u52d5\u3057\u306a\u3044\u306e\u3067\u30e1\u30fc\u30eb\u3092\u53d7\u3051\u53d6\u3089\u305a\u9001\u4fe1\u3059\u308b\u3060\u3051\u306a\u3089\u304a\u3059\u3059\u3081)\u3092\u8a2d\u5b9a\u3057\u3066\u304b\u3089\u518d\u5ea6\u8a66\u3057\u3066\u307f\u307e\u3057\u3087\u3046\uff0e

\n
\n
\n
\u74b0\u58831
\n
\n
$ man cron | grep -m1 cron\r\n       cron - daemon to execute scheduled commands (Vixie Cron)\r\n$ dpkg-query -W cron mailutils\r\ncron    3.0pl1-128.1ubuntu1\r\nmailutils       1:3.4-1\r\n$ lsb_release -d\r\nDescription:    Ubuntu 18.04.1 LTS\r\n$ uname -m\r\nx86_64
\n
\n
\n
\n
\u74b0\u58832
\n
\n
$ man cron | grep -m1 cron\r\n       cron - \u4e88\u5b9a\u3055\u308c\u305f\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u30c7\u30fc\u30e2\u30f3(Vixie Cron)\r\n$ dpkg-query -W cron mailutils\r\ncron    3.0pl1-130\r\nmailutils       1:3.4-1+b1\r\n$ lsb_release -d\r\nDescription:    Debian GNU/Linux unstable (sid)\r\n$ uname -m\r\nx86_64
\n
\n
\n
\n
\n
\n", "content_text": "crontab \u3067\u5b9f\u884c\u3055\u308c\u305f\u30b3\u30de\u30f3\u30c9\u306e\u51fa\u529b\u306f\u30e1\u30fc\u30eb\u3067\u9001\u3089\u308c\u307e\u3059\u304c\uff0c\u3053\u306e\u3068\u304d\u306e\u4ef6\u540d\u306f\u300cCron <\u30e6\u30fc\u30b6\u540d@\u30db\u30b9\u30c8\u540d> \u5b9f\u884c\u30b3\u30de\u30f3\u30c9\u300d\u306e\u3088\u3046\u306b\u306a\u308a\u307e\u3059\uff0e\n\n\ncrontab \u4f8b\n\n15 7 * * * echo \"cron subject\"\n\n\n\n\u30e1\u30fc\u30eb\u4f8b\n\nSubject: Cron <matoken@T430s> echo \"cron subject\"\r\n\r\ncron subject\n\n\n\n1\u3064\u306ehost\u304b\u3089\u3053\u3093\u306a\u30e1\u30fc\u30eb\u98db\u3093\u3067\u6765\u308b\u3068\u3069\u308c\u304c\u3069\u308c\u304b\u308f\u304b\u308a\u3065\u3089\u3044\n\nCron <matoken@T430s> nice -n 19 ionice -c 3 rsync -avxze \"ssh -i\u2026\u2026\r\nCron <root@T430s> nice -n 19 ionice -c 3 rsync -avxze \"ssh -i\u2026\u2026\r\nCron <root@T430s> nice -n 19 ionice -c 3 rsync -avxze \"ssh -i\u2026\u2026\n\n\n\n\u5206\u304b\u308a\u3065\u3089\u3044\u306e\u3067\u81ea\u5206\u3067\u4ef6\u540d\u3092\u4ed8\u3051\u305f\u3044\u3068\u3053\u308d\u3067\u3059\uff0e\n\n\n\nTable of Contents\n\n: \u3092\u5229\u7528\u3059\u308b\nmail\u30b3\u30de\u30f3\u30c9\u3092\u5229\u7528\u3059\u308b\n\nSTDERR \u304c\u5225\u30e1\u30fc\u30eb\u3067\u5c4a\u304f\n\u51fa\u529b\u304c\u306a\u304f\u3066\u3082\u30e1\u30fc\u30eb\u304c\u5c4a\u304f\n\n\n\u4f59\u9332\n\ncron\u3067\u4e00\u5207\u30e1\u30fc\u30eb\u3092\u9001\u308a\u305f\u304f\u306a\u3044\n\u6307\u5b9a\u3057\u305f\u30b3\u30de\u30f3\u30c9\u3060\u3051\u30e1\u30fc\u30eb\u3092\u9001\u308a\u305f\u304f\u306a\u3044\n\u30e1\u30fc\u30eb\u304c\u5c4a\u304b\u306a\u3044\n\n\n\n\n\n\n: \u3092\u5229\u7528\u3059\u308b\n\n\n: \u306f shell \u306e\u7d44\u307f\u8fbc\u307f\u95a2\u6570\u3067\u4f55\u3082\u305b\u305a\u6b63\u5e38\u7d42\u4e86\u3057\u307e\u3059\uff0e\n\u30b3\u30de\u30f3\u30c9\u306a\u306e\u3067 # \u3068\u9055\u3044\uff0c; \u306e\u5f8c\u306b\u30b3\u30de\u30f3\u30c9\u3092\u66f8\u304f\u3068\u305d\u306e\u5f8c\u306e\u30b3\u30de\u30f3\u30c9\u306f\u89e3\u91c8\u3055\u308c\u307e\u3059\uff0e\n\n\n\n$ : #\u4f55\u3082\u3057\u306a\u3044\r\n$ : hoge\r\n$ : echo hoge\r\n$ : rm -rf *\r\n$ : $(hostname) #\u30b3\u30de\u30f3\u30c9\u3082\u5c55\u958b\u305b\u305a\u4f55\u3082\u3057\u306a\u3044\r\n$ : `whoami`\r\n$ : hoge; echo fuga #;\u306e\u5f8c\u306f\u89e3\u91c8\u3055\u308c\u308b\r\nfuga\r\n$ # hoge\r\n$ # hoge; echo fuga\n\n\n\n\u3053\u308c\u3092crontab\u306e\u982d\u306b\u66f8\u304f\u3068\u3053\u3046\u3044\u3046\u611f\u3058\u306b\u306a\u308a\u307e\u3059\uff0e\n\n\ncrontab\n\n29 6 * * * : cron subject; echo \"hello\"\n\n\n\nmail\n\nSubject: Cron <matoken@T430s> : cron subject; echo \"hello\"\r\n\r\nhello\n\n\n\n\u5c11\u3057\u308f\u304b\u308a\u3084\u3059\u304f\u306a\u308a\u307e\u3057\u305f\uff0e\n\n\n\n\nmail\u30b3\u30de\u30f3\u30c9\u3092\u5229\u7528\u3059\u308b\n\n\n\u3053\u308c\u306f\u3061\u3087\u3063\u3068\u53cd\u5247\u306a\u611f\u3058\u304c\u3059\u308b\u306e\u3067\u3059\u304c\u4ef6\u540d\u306b\u30b3\u30de\u30f3\u30c9\u5b9f\u884c\u7d50\u679c\u3092\u5165\u308c\u305f\u308a\uff0c\u982d\u306e\u90e8\u5206\u3082\u66f8\u304d\u63db\u3048\u305f\u3044\u5834\u5408\u306fcron\u3060\u3051\u3067\u306f\u3067\u304d\u306a\u3055\u305d\u3046\u306a\u306e\u3067mail\u30b3\u30de\u30f3\u30c9\u7d4c\u7531\u3067\u9001\u4fe1\u3057\u3066\u307f\u307e\u3059\uff0e\u4eca\u56demailutils\u306email\u30b3\u30de\u30f3\u30c9\u3092\u5229\u7528\u3057\u307e\u3057\u305f\u304c\uff0cbsd-mailx\u3084mutt\u7b49\u3005\u3082\u3082\u3061\u308d\u3093\u4f7f\u3048\u307e\u3059\uff0e\n\n\ncrontab\n\n45 6 * * * echo \"cron test\" | mail -s \"$(hostname)@$(whoami) cron Subject : $(date +\\%F)\" matoken+cron@example.com\n\n\n\nmail\n\nSubject: T430s@matoken cron Subject : 2018-09-13\r\nX-Mailer: mail (GNU Mailutils 3.4)\r\n\r\ncron test\n\n\n\nmail \u30b3\u30de\u30f3\u30c9\u306e -s \u30aa\u30d7\u30b7\u30e7\u30f3\u90e8\u5206\u304c\u4ef6\u540d\u306b\u306a\u308a\u307e\u3059\uff0e\u305d\u306e\u5f8c\u308d\u304c\u5b9b\u5148\u306e\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\uff0ebody\u306fcron\u306e\u51fa\u529b\u3092\u30d1\u30a4\u30d7\u304b\u3089\u53d7\u3051\u53d6\u308a\u307e\u3059\uff0e\n\n\nSTDERR \u304c\u5225\u30e1\u30fc\u30eb\u3067\u5c4a\u304f\n\nSTDERR \u306e\u51fa\u529b\u304c\u3042\u3063\u305f\u5834\u5408cron\u3067\u30e1\u30fc\u30eb\u304c\u9001\u3089\u308c\u3066\u3057\u307e\u3044\u307e\u3059\uff0email\u30b3\u30de\u30f3\u30c9\u3068\u5408\u308f\u305b\u30661\u5ea6\u306b2\u901a\u5c4a\u304f\u3053\u3068\u306b\uff0e\n\u5b9f\u884c\u30b3\u30de\u30f3\u30c9\u306e\u5f8c\u308d\u306b 2>&1 \u3092\u4ed8\u3051\u3066 STDERR \u3092 STDOUT \u306b\u6e21\u3057\u3066mail\u30b3\u30de\u30f3\u30c9\u3060\u3051\u306b\u3057\u307e\u3059\uff0e\n\n\ncrontab\n\n45 6 * * * echo \"cron test\" 2>&1 | mail -s \"$(hostname)@$(whoami) cron Subject : $(date +\\%F)\" matoken+cron@example.com\n\n\n\n\n\u51fa\u529b\u304c\u306a\u304f\u3066\u3082\u30e1\u30fc\u30eb\u304c\u5c4a\u304f\n\ncrontab \u306e\u5834\u5408\u30b3\u30de\u30f3\u30c9\u306e\u51fa\u529b\u304c\u306a\u3051\u308c\u3070\u30e1\u30fc\u30eb\u304c\u9001\u3089\u308c\u307e\u305b\u3093\u304c\uff0c\u3053\u306e\u30b3\u30de\u30f3\u30c9\u3067\u306f NULL \u3067\u3082\u30e1\u30fc\u30eb\u304c\u9001\u4fe1\u3055\u308c\u307e\u3059\uff0e\n\u672a\u89e3\u6c7a\uff0e\n\n\n\n\n\n\u4f59\u9332\n\n\ncron\u3067\u4e00\u5207\u30e1\u30fc\u30eb\u3092\u9001\u308a\u305f\u304f\u306a\u3044\n\n\u5834\u5408crontab\u3067 MAILTO=”” \u3092\u8a2d\u5b9a\u3059\u308b\n\nMAILTO=\"\"\n\n\n\n\n\u6307\u5b9a\u3057\u305f\u30b3\u30de\u30f3\u30c9\u3060\u3051\u30e1\u30fc\u30eb\u3092\u9001\u308a\u305f\u304f\u306a\u3044\n\nSTDOUT \u3068 STDERR \u3092 /dev/null \u306b\u6368\u3066\u308b\n\n20 6 * * * echo \"cron subject\" > /dev/null 2>&1\n\n\n\n\n\u30e1\u30fc\u30eb\u304c\u5c4a\u304b\u306a\u3044\n\n/var/spool/mail/\u30e6\u30fc\u30b6\u540d \u306e\u30ed\u30fc\u30ab\u30eb\u306b\u306f\u30e1\u30fc\u30eb\u304c\u3069\u3068\u304f\u3051\u3069\uff0c\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u4e0a\u306e\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3092\u6307\u5b9a\u3057\u3066\u3082\u5c4a\u304b\u306a\u3044\u5834\u5408\u30e1\u30fc\u30eb\u30b5\u30fc\u30d0\u306e\u8a2d\u5b9a\u304c\u51fa\u6765\u3066\u3044\u306a\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\uff0e\u30e1\u30fc\u30eb\u30b5\u30fc\u30d0(sSMTP/msmtp\u7b49\u306f\u30c7\u30fc\u30e2\u30f3\u304c\u8d77\u52d5\u3057\u306a\u3044\u306e\u3067\u30e1\u30fc\u30eb\u3092\u53d7\u3051\u53d6\u3089\u305a\u9001\u4fe1\u3059\u308b\u3060\u3051\u306a\u3089\u304a\u3059\u3059\u3081)\u3092\u8a2d\u5b9a\u3057\u3066\u304b\u3089\u518d\u5ea6\u8a66\u3057\u3066\u307f\u307e\u3057\u3087\u3046\uff0e\n\n\n\u74b0\u58831\n\n$ man cron | grep -m1 cron\r\n cron - daemon to execute scheduled commands (Vixie Cron)\r\n$ dpkg-query -W cron mailutils\r\ncron 3.0pl1-128.1ubuntu1\r\nmailutils 1:3.4-1\r\n$ lsb_release -d\r\nDescription: Ubuntu 18.04.1 LTS\r\n$ uname -m\r\nx86_64\n\n\n\n\u74b0\u58832\n\n$ man cron | grep -m1 cron\r\n cron - \u4e88\u5b9a\u3055\u308c\u305f\u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u30c7\u30fc\u30e2\u30f3(Vixie Cron)\r\n$ dpkg-query -W cron mailutils\r\ncron 3.0pl1-130\r\nmailutils 1:3.4-1+b1\r\n$ lsb_release -d\r\nDescription: Debian GNU/Linux unstable (sid)\r\n$ uname -m\r\nx86_64", "date_published": "2018-09-16T07:18:17+09:00", "date_modified": "2018-09-16T07:18:17+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "cron", "crontab", "mail", "mailutils", "Bionic Beaver(18.04LTS)", "Debian", "Linux", "sid", "Ubuntu" ] }, { "id": "http://matoken.org/blog/?p=2059", "url": "https://matoken.org/blog/2018/08/27/use-light-with-awesome-wm-to-adjust-the-brightness/", "title": "awesome WM \u3067 Light \u3092\u5229\u7528\u3057\u3066\u8f1d\u5ea6\u8abf\u6574\u3059\u308b", "content_html": "
\n

\u4ee5\u524d\u306f awesome WM \u3067\u306e\u8f1d\u5ea6\u8abf\u6574\u306f xbacklight \u3092\u5229\u7528\u3057\u3066\u3044\u305f\u306e\u3067\u3059\u304c\uff0c\u52d5\u4f5c\u3057\u306a\u304f\u306a\u3063\u3066\u3044\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
$ xbacklight -get\r\nNo outputs have backlight property
\n
\n
\n
\n

\u6700\u8fd1\u307e\u3067 ThinkPad \u304c1\u53f0\u3060\u3051\u306b\u306a\u3063\u3066\u6301\u3061\u904b\u3073\u3092\u3057\u306a\u304f\u306a\u3063\u3066\u3044\u305f\u306e\u3082\u3042\u308a\uff0c\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u611f\u3058\u3067 /sys/class/backlight/intel_backlight/brightness \u306b\u6295\u3052\u3066\u3044\u307e\u3057\u305f\uff0e

\n
\n
\n
\n
$ echo 800 | sudo tee /sys/class/backlight/intel_backlight/brightness\r\n800
\n
\n
\n
\n

\u3057\u304b\u3057\uff0c\u6700\u8fd1 T430s/X201i \u306e\u30b8\u30e3\u30f3\u30af\u3092\u5165\u624b\u3057\u3066\u88dc\u4fee\u3057\u3066\u6301\u3061\u904b\u3079\u308b ThinkPad \u304c\u51fa\u6765\u307e\u3057\u305f :)
\n\u305d\u3046\u306a\u308b\u3068\u5834\u6240\u306b\u3088\u308a\u660e\u308b\u3055\u304c\u5909\u308f\u3063\u305f\u308a\uff0c\u8f1d\u5ea6\u3092\u4e0b\u3052\u3066\u30d0\u30c3\u30c6\u30ea\u30fc\u6301\u3061\u3092\u826f\u304f\u3057\u305f\u308a\u3057\u305f\u3044\u3068\u3044\u3046\u611f\u3058\u3067\u3053\u307e\u3081\u306b\u8d77\u52d5\u8abf\u6574\u304c\u3057\u305f\u304f\u306a\u308a\u307e\u3057\u305f\uff0e
\n\u4ed6\u306ewm\u306epower manager\u3092\u4f7f\u3046\u3068\u4e00\u5fdc\u8f1d\u5ea6\u8abf\u6574\u3067\u304d\u308b\u3051\u3069\u3042\u307e\u308a\u5b09\u3057\u304f\u306a\u3044\u306a\u3068\u3044\u3046\u3053\u3068\u3067\u3061\u3087\u3063\u3068\u63a2\u3057\u3066\u307f\u308b\u3068\uff0c Light \u3068\u3044\u3046\u3082\u306e\u3092\u898b\u3064\u3051\u307e\u3057\u305f\uff0e

\n
\n
\n\n
\n
\n

Arch Linux, Fedora \u306b\u306f\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u3042\u308b\u3088\u3046\u3067\u3059\uff0e\u4eca\u56de\u306fsource\u304b\u3089Ubuntu\u3068Debian\u306b\u5c0e\u5165\u3057\u307e\u3057\u305f\uff0e

\n
\n
\n
\u5c0e\u5165
\n
\n
$ git clone https://github.com/haikarainen/light\r\n$ cd light\r\n$ ./autogen.sh\r\n$ ./configure\r\n$ make\r\n$ sudo checkinstall
\n
\n
\n
\n

\u3068\u308a\u3042\u3048\u305a\u305d\u306e\u307e\u307e\u65e2\u5b9a\u5024\u3067build\u3057\u307e\u3057\u305f\uff0e

\n
\n
\n
\u5b9f\u884c\u4f8b
\n
\n
$ light -G  #\u8f1d\u5ea6\u53d6\u5f97\r\n56.34\r\n$ light -A 10 #\u8f1d\u5ea6 10 Up\r\n$ light -U 10 #\u8f1d\u5ea6 10 Down
\n
\n
\n
\n

\u554f\u984c\u306a\u304f\u52d5\u304d\u307e\u3057\u305f\uff0e\u4ed6\u306b\u3082\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u3042\u308a\u307e\u3059\u304c\uff0c\u3068\u308a\u3042\u3048\u305a\u3053\u308c\u3060\u3051\u52d5\u3051\u3070\u554f\u984c\u3042\u308a\u307e\u305b\u3093\uff0e
\nawesome WM \u306e ~/.config/awesome/lua.rc \u306b\u66f8\u3044\u3066\u307f\u307e\u3059\uff0e

\n
\n
\n
rc.lua
\n
\n
diff --git a/rc.lua b/rc.lua\r\nindex f9a7467..9f461b9 100644\r\n--- a/rc.lua\r\n+++ b/rc.lua\r\n@@ -289,8 +289,12 @@ globalkeys = awful.util.table.join(\r\n\r\n     -- Brightness Controle\r\n---    awful.key({         }, \"XF86MonBrightnessDown\", function () awful.util.spawn(\"xbacklight - 5\") end),\r\n --    awful.key({         }, \"XF86MonBrightnessUp\",   function () awful.util.spawn(\"xbacklight + 5\") end),\r\n+--    awful.key({         }, \"XF86MonBrightnessDown\", function () awful.util.spawn(\"xbacklight - 5\") end),\r\n+    -- \u4ee5\u4e0b\u306e light \u3092\u5229\u7528\r\n+    -- \"haikarainen/light: GNU/Linux application to control backlights\" https://github.com/haikarainen/light\r\n+    awful.key({         }, \"XF86MonBrightnessUp\",   function () awful.util.spawn(\"light -A 10\") end),\r\n+    awful.key({         }, \"XF86MonBrightnessDown\", function () awful.util.spawn(\"light -U 10\") end),\r\n\r\n     -- lock screen\r\n     awful.key({ \"Mod1\"  }, \"l\", function () awful.util.spawn( \"xscreensaver-command -activate\",false) end),
\n
\n
\n
\n

awesome WM \u306e restart \u3092\u3057\u3066\uff0c\u8f1d\u5ea6\u8abf\u6574\u30dc\u30bf\u30f3\u3092\u62bc\u3059\u3068\u3061\u3083\u3093\u3068\u8f1d\u5ea6\u304cUp/Down\u3059\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e
\n\u3053\u308c\u3067\u5916\u51fa\u5148\u3067\u3082\u56f0\u308a\u307e\u305b\u3093 :)

\n
\n
\n
\u74b0\u58831
\n
\n
$ $ dpkg-query -W awesome*\r\nawesome 4.2-4\r\nawesome-doc\r\nawesome-extra   2017110501\r\n$ lsb_release -d\r\nDescription:    Ubuntu 18.04.1 LTS\r\n$ uname -m\r\nx86_64
\n
\n
\u74b0\u58832
\n
\n
$ dpkg-query -W awesome*\r\nawesome 4.2-5\r\nawesome-doc     4.2-5\r\nawesome-extra   2018041201\r\n$ lsb_release -d\r\nDescription:    Debian GNU/Linux unstable (sid)\r\n$ uname -m\r\nx86_64
\n
\n
\n", "content_text": "\u4ee5\u524d\u306f awesome WM \u3067\u306e\u8f1d\u5ea6\u8abf\u6574\u306f xbacklight \u3092\u5229\u7528\u3057\u3066\u3044\u305f\u306e\u3067\u3059\u304c\uff0c\u52d5\u4f5c\u3057\u306a\u304f\u306a\u3063\u3066\u3044\u307e\u3057\u305f\uff0e\n\n\n\n$ xbacklight -get\r\nNo outputs have backlight property\n\n\n\n\u6700\u8fd1\u307e\u3067 ThinkPad \u304c1\u53f0\u3060\u3051\u306b\u306a\u3063\u3066\u6301\u3061\u904b\u3073\u3092\u3057\u306a\u304f\u306a\u3063\u3066\u3044\u305f\u306e\u3082\u3042\u308a\uff0c\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u611f\u3058\u3067 /sys/class/backlight/intel_backlight/brightness \u306b\u6295\u3052\u3066\u3044\u307e\u3057\u305f\uff0e\n\n\n\n$ echo 800 | sudo tee /sys/class/backlight/intel_backlight/brightness\r\n800\n\n\n\n\u3057\u304b\u3057\uff0c\u6700\u8fd1 T430s/X201i \u306e\u30b8\u30e3\u30f3\u30af\u3092\u5165\u624b\u3057\u3066\u88dc\u4fee\u3057\u3066\u6301\u3061\u904b\u3079\u308b ThinkPad \u304c\u51fa\u6765\u307e\u3057\u305f :)\n\u305d\u3046\u306a\u308b\u3068\u5834\u6240\u306b\u3088\u308a\u660e\u308b\u3055\u304c\u5909\u308f\u3063\u305f\u308a\uff0c\u8f1d\u5ea6\u3092\u4e0b\u3052\u3066\u30d0\u30c3\u30c6\u30ea\u30fc\u6301\u3061\u3092\u826f\u304f\u3057\u305f\u308a\u3057\u305f\u3044\u3068\u3044\u3046\u611f\u3058\u3067\u3053\u307e\u3081\u306b\u8d77\u52d5\u8abf\u6574\u304c\u3057\u305f\u304f\u306a\u308a\u307e\u3057\u305f\uff0e\n\u4ed6\u306ewm\u306epower manager\u3092\u4f7f\u3046\u3068\u4e00\u5fdc\u8f1d\u5ea6\u8abf\u6574\u3067\u304d\u308b\u3051\u3069\u3042\u307e\u308a\u5b09\u3057\u304f\u306a\u3044\u306a\u3068\u3044\u3046\u3053\u3068\u3067\u3061\u3087\u3063\u3068\u63a2\u3057\u3066\u307f\u308b\u3068\uff0c Light \u3068\u3044\u3046\u3082\u306e\u3092\u898b\u3064\u3051\u307e\u3057\u305f\uff0e\n\n\n\n\nLight by haikarainen\n\n\n\n\nArch Linux, Fedora \u306b\u306f\u30d1\u30c3\u30b1\u30fc\u30b8\u304c\u3042\u308b\u3088\u3046\u3067\u3059\uff0e\u4eca\u56de\u306fsource\u304b\u3089Ubuntu\u3068Debian\u306b\u5c0e\u5165\u3057\u307e\u3057\u305f\uff0e\n\n\n\u5c0e\u5165\n\n$ git clone https://github.com/haikarainen/light\r\n$ cd light\r\n$ ./autogen.sh\r\n$ ./configure\r\n$ make\r\n$ sudo checkinstall\n\n\n\n\u3068\u308a\u3042\u3048\u305a\u305d\u306e\u307e\u307e\u65e2\u5b9a\u5024\u3067build\u3057\u307e\u3057\u305f\uff0e\n\n\n\u5b9f\u884c\u4f8b\n\n$ light -G #\u8f1d\u5ea6\u53d6\u5f97\r\n56.34\r\n$ light -A 10 #\u8f1d\u5ea6 10 Up\r\n$ light -U 10 #\u8f1d\u5ea6 10 Down\n\n\n\n\u554f\u984c\u306a\u304f\u52d5\u304d\u307e\u3057\u305f\uff0e\u4ed6\u306b\u3082\u30aa\u30d7\u30b7\u30e7\u30f3\u306f\u3042\u308a\u307e\u3059\u304c\uff0c\u3068\u308a\u3042\u3048\u305a\u3053\u308c\u3060\u3051\u52d5\u3051\u3070\u554f\u984c\u3042\u308a\u307e\u305b\u3093\uff0e\nawesome WM \u306e ~/.config/awesome/lua.rc \u306b\u66f8\u3044\u3066\u307f\u307e\u3059\uff0e\n\n\nrc.lua\n\ndiff --git a/rc.lua b/rc.lua\r\nindex f9a7467..9f461b9 100644\r\n--- a/rc.lua\r\n+++ b/rc.lua\r\n@@ -289,8 +289,12 @@ globalkeys = awful.util.table.join(\r\n\r\n -- Brightness Controle\r\n--- awful.key({ }, \"XF86MonBrightnessDown\", function () awful.util.spawn(\"xbacklight - 5\") end),\r\n -- awful.key({ }, \"XF86MonBrightnessUp\", function () awful.util.spawn(\"xbacklight + 5\") end),\r\n+-- awful.key({ }, \"XF86MonBrightnessDown\", function () awful.util.spawn(\"xbacklight - 5\") end),\r\n+ -- \u4ee5\u4e0b\u306e light \u3092\u5229\u7528\r\n+ -- \"haikarainen/light: GNU/Linux application to control backlights\" https://github.com/haikarainen/light\r\n+ awful.key({ }, \"XF86MonBrightnessUp\", function () awful.util.spawn(\"light -A 10\") end),\r\n+ awful.key({ }, \"XF86MonBrightnessDown\", function () awful.util.spawn(\"light -U 10\") end),\r\n\r\n -- lock screen\r\n awful.key({ \"Mod1\" }, \"l\", function () awful.util.spawn( \"xscreensaver-command -activate\",false) end),\n\n\n\nawesome WM \u306e restart \u3092\u3057\u3066\uff0c\u8f1d\u5ea6\u8abf\u6574\u30dc\u30bf\u30f3\u3092\u62bc\u3059\u3068\u3061\u3083\u3093\u3068\u8f1d\u5ea6\u304cUp/Down\u3059\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3057\u305f\uff0e\n\u3053\u308c\u3067\u5916\u51fa\u5148\u3067\u3082\u56f0\u308a\u307e\u305b\u3093 :)\n\n\n\u74b0\u58831\n\n$ $ dpkg-query -W awesome*\r\nawesome 4.2-4\r\nawesome-doc\r\nawesome-extra 2017110501\r\n$ lsb_release -d\r\nDescription: Ubuntu 18.04.1 LTS\r\n$ uname -m\r\nx86_64\n\n\u74b0\u58832\n\n$ dpkg-query -W awesome*\r\nawesome 4.2-5\r\nawesome-doc 4.2-5\r\nawesome-extra 2018041201\r\n$ lsb_release -d\r\nDescription: Debian GNU/Linux unstable (sid)\r\n$ uname -m\r\nx86_64", "date_published": "2018-08-27T07:52:08+09:00", "date_modified": "2018-08-27T08:56:18+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "awesome", "Brightness", "Light", "Bionic Beaver(18.04LTS)", "Debian", "Linux", "sid", "Ubuntu" ] }, { "id": "http://matoken.org/blog/?p=2015", "url": "https://matoken.org/blog/2018/08/09/clock-adjustment-of-a-lot-of-time-staggered-pictures/", "title": "\u305f\u304f\u3055\u3093\u6642\u9593\u306e\u305a\u308c\u305f\u5199\u771f\u306e\u6642\u8a08\u5408\u308f\u305b", "content_html": "

\"DP1M0538\"

\n

\u5148\u65e5\u30dd\u30bf\u30ea\u30f3\u30b0\u306b\u884c\u3063\u305f\u306e\u3067\u3059\u304c\uff0c\u305d\u306e\u6642\u6301\u3063\u3066\u3044\u3063\u305f\u30ab\u30e1\u30e9\u306e\u6642\u8a08\u304c\u521d\u671f\u5316\u3055\u308c\u3066\u3057\u307e\u3063\u3066\u3044\u3066\u30aa\u30d5\u30bb\u30c3\u30c8\u304c6\u5e74\u534a\u4ee5\u4e0a\u3042\u308a\u307e\u3057\u305f\uff0e
\n(\u4e88\u5099\u30d0\u30c3\u30c6\u30ea\u30fc\u304c\u6b7b\u3093\u3067\u30d0\u30c3\u30c6\u30ea\u30fc\u5145\u96fb\u4e2d\u306b\u60c5\u5831\u304c\u521d\u671f\u5316\u3055\u308c\u3066\u3057\u307e\u3046)

\n

\u3053\u308c\u3092\u6b63\u78ba\u306a\u64ae\u5f71\u6642\u9593\u306b\u5909\u66f4\u3057\u307e\u3059\uff0e\u3044\u3064\u3082\u306fexiv2\u3067\u8a2d\u5b9a\u3057\u3066\u3044\u305f\u306e\u3067\u3059\u304c\uff0c\u4eca\u56de\u3053\u308c\u3067\u306f\u3046\u307e\u304f\u884c\u304b\u306a\u304b\u3063\u305f\u306e\u3067exiftime\u30b3\u30de\u30f3\u30c9\u3067\u8a2d\u5b9a\u3057\u307e\u3057\u305f\uff0e

\n

\u5148\u305a\u30ab\u30e1\u30e9\u5185\u6642\u8a08\u3068\u5b9f\u969b\u306e\u6642\u8a08\u306e\u5dee\u5206\u3092\u6c42\u3081\u307e\u3059\uff0e\u6b63\u78ba\u306a\u6642\u9593\u3092\u64ae\u5f71(\u4eca\u56de\u306fNICT\u306eJST Clock\u3092\u64ae\u5f71)\u3057\u305f\u7d50\u679c\u306f\u3053\u3093\u306a\u611f\u3058\u3067\u3057\u305f\uff0e

\n\n
$ ls --full-time DP1M0608.JPG
-rw-r--r-- 1 mk mk 9043186 2012-01-02 10:27:01.000000000 +0900 DP1M0608.JPG
\n

\u5199\u771f\u306b\u5199\u3063\u305f\u6642\u9593 -> 2018-07-17 07:32:00

\n

\u305d\u308c\u305e\u308cUNIX EPOC\u306b\u5909\u63db\u3057\u3066\u5f15\u304d\u7b97\u3092\u3059\u308b\u3068\u5dee\u5206\u306f206312699\u79d2\u3067\u3057\u305f\uff0e

\n
$ date +%s -d '2012-01-02 10:27:01'
1325467621
$ date +%s -d '2018-07-17 07:32:00'
1531780320
$ expr 1531780320 - 1325467621
206312699
\n

\u3044\u3064\u3082\u4f7f\u3063\u3066\u3044\u308bexiv2\u30b3\u30de\u30f3\u30c9\u306b\u3053\u306e\u79d2\u3092\u6307\u5b9a\u3057\u3066\u4fee\u6b63\u3057\u3088\u3046\u3068\u3057\u305f\u3089\u65e5\u4ed8\u304c\u304a\u304b\u3057\u304f\u306a\u3063\u3066\u3057\u307e\u3044\u307e\u3057\u305f\uff0e

\n\n
$ cp -p ./DP1M0608.JPG /tmp/DP1M0608.JPG
$ exiv2 -a +206312699 /tmp/DP1M0608.JPG
$ exiftime /tmp/DP1M0608.JPG
exiftime: field count mismatch (DateTime)
exiftime: field count mismatch (DateTimeOriginal)
exiftime: field count mismatch (DateTimeDigitized)
exiftime: field count mismatch (ImageUniqueID)
/tmp/DP1M0608.JPG: no timestamps available
$ exif /tmp/DP1M0608.JPG|grep -i date
Date and Time       |25548:01:17 21:27:01
Date and Time       |2012:01:02 10:27:01
Date and Time (Origi|25548:01:17 21:27:01
Date and Time (Digit|25548:01:17 21:27:01
\n

man\u3092\u78ba\u8a8d\u3059\u308b\u3068\uff0c\u79d2\u3060\u3051\u306e\u6307\u5b9a\u306f\u99c4\u76ee\u3067\u3061\u3083\u3093\u3068\u8a08\u7b97\u3057\u3066\u6307\u5b9a\u3057\u306a\u3044\u3068\u3044\u3051\u306a\u3044\u3088\u3046\u3067\u3059\uff0e\u305d\u3057\u3066\u65e5\u307e\u305f\u304e\u4ee5\u4e0a\u306f\u6307\u5b9a\u3067\u304d\u306a\u3044\u3088\u3046\u306a\u611f\u3058\u3067\u3059\uff0e\u3053\u308c\u307e\u3067\u306f\u305b\u3044\u305c\u3044\u6570\u79d2\u304b\u3089\u6570\u5206\u3057\u304b\u305a\u308c\u306a\u304b\u3063\u305f\u306e\u3067\u6c17\u3065\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u2026\u2026\uff0e

\n
       -a time
              Time  adjustment  in  the  format  [-]HH[:MM[:SS]]. This option is only used with the 'adjust' action. Examples: 1 adds one
              hour, 1:01 adds one hour and one minute, -0:00:30 subtracts 30 seconds.
 
\n

\u8a08\u7b97\u3059\u308b\u306e\u304c\u9762\u5012\u306a\u306e\u3067\u5dee\u5206\u3092\u79d2\u3067\u6307\u5b9a\u3067\u304d\u308b\u30c4\u30fc\u30eb\u306f\u306a\u3044\u3060\u308d\u3046\u304b\u3068\u63a2\u3057\u3066\u307f\u308b\u3068\uff0cexiftags package\u306eexiftime\u304c\u4f7f\u3048\u305d\u3046\u3067\u3059\uff0e

\n
              If val is numeric, one of either y, m, w, d, H, M, or S must be used to specify which part of the date is to be adjusted.
 
\n

\u5b9f\u969b\u306b\u8a66\u3057\u3066\u307f\u307e\u3059\uff0e

\n

\u5ff5\u306e\u70ba\u30d5\u30a1\u30a4\u30eb\u3092/tmp\u306b\u30b3\u30d4\u30fc\u3057\u3066\u5148\u305a\u306f\u3053\u308c\u3067\u8a66\u3057\u307e\u3059\uff0e

\n
$ cp -p ./DP1M0608.JPG /tmp/DP1M0608.JPG
$ exiftime /tmp/DP1M0608.JPG
exiftime: field count mismatch (ImageUniqueID)
Image Created: 2012:01:02 10:27:01
Image Generated: 2012:01:02 10:27:01
Image Digitized: 2012:01:02 10:27:01
\n

-v\u3067\u30aa\u30d5\u30bb\u30c3\u30c8\u3092\u6307\u5b9a\u3057\u307e\u3059\uff0e\u4eca\u56de\u306f+206312699S\u3067206312699\u79d2\u9032\u3081\u307e\u3059\uff0e

\n
$ exiftime -v +206312699S /tmp/DP1M0608.JPG
exiftime: field count mismatch (ImageUniqueID)
Image Created: 2018:07:17 07:32:00
Image Generated: 2018:07:17 07:32:00
Image Digitized: 2018:07:17 07:32:00
\n

\u5927\u4e08\u592b\u305d\u3046\u3067\u3059\uff0e
\n-v\u3060\u3051\u3067\u306f\u5b9f\u969b\u306f\u66f8\u304d\u63db\u308f\u308a\u307e\u305b\u3093-w\u3067\u5b9f\u969b\u306bexif\u3092\u66f8\u304d\u63db\u3048\u307e\u3059\uff0e

\n
$ exiftime -v +206312699S -w /tmp/DP1M0608.JPG
exiftime: field count mismatch (ImageUniqueID)
adjust time created in /tmp/DP1M0608.JPG from
  2012:01:02 10:27:01 to 2018:07:17 07:32:00? (y/n [n]) y
Image Created: 2012:01:02 10:27:01 -> 2018:07:17 07:32:00
adjust time generated in /tmp/DP1M0608.JPG from
  2012:01:02 10:27:01 to 2018:07:17 07:32:00? (y/n [n]) y
Image Generated: 2012:01:02 10:27:01 -> 2018:07:17 07:32:00
adjust time digitized in /tmp/DP1M0608.JPG from
  2012:01:02 10:27:01 to 2018:07:17 07:32:00? (y/n [n]) y
Image Digitized: 2012:01:02 10:27:01 -> 2018:07:17 07:32:00
$ exiftime /tmp/DP1M0608.JPG
exiftime: field count mismatch (ImageUniqueID)
Image Created: 2018:07:17 07:32:00
Image Generated: 2018:07:17 07:32:00
Image Digitized: 2018:07:17 07:32:00
\n

exiftool\u30b3\u30de\u30f3\u30c9\u3067\u30d5\u30a1\u30a4\u30eb\u306e\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u3082\u4fee\u6b63\u3057\u307e\u3059\uff0e

\n\n
$ exiftool \"-FileModifyDate<DateTimeOriginal\" /tmp/DP1M0608.JPG
Warning: Bad PrintIM size - /tmp/DP1M0608.JPG
    1 image files updated
$ ls --full-time /tmp/DP1M0608.JPG
-rw-r--r-- 1 mk mk 9043186 2018-07-17 07:32:00.000000000 +0900 /tmp/DP1M0608.JPG
\n

OK\u305d\u3046\u3067\u3059\uff0e

\n

\u672c\u756a\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4e00\u6c17\u306b\u66f8\u304d\u63db\u3048\u3066\u307f\u307e\u3059\uff0e
\n\u78ba\u8a8d\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u51fa\u306a\u3044\u3088\u3046exiftime\u306b-f\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4ed8\u3051\u3066\u3044\u307e\u3059\uff0e

\n
$ exiftime -v +206312699S -w -f ./*.JPG
./DP1M0537.JPG:
exiftime: field count mismatch (ImageUniqueID)
Image Created: 2012:01:01 08:46:51 -> 2018:07:16 05:51:50
Image Generated: 2012:01:01 08:46:51 -> 2018:07:16 05:51:50
Image Digitized: 2012:01:01 08:46:51 -> 2018:07:16 05:51:50
 
./DP1M0538.JPG:
exiftime: field count mismatch (ImageUniqueID)
Image Created: 2012:01:01 08:55:16 -> 2018:07:16 06:00:15
Image Generated: 2012:01:01 08:55:16 -> 2018:07:16 06:00:15
Image Digitized: 2012:01:01 08:55:16 -> 2018:07:16 06:00:15
 
   :
$ exiftime -v +206312699S -w -f ./*.X3F
   :
\n

\u66f4\u306b\uff0cgpscorrelate\u3067\u30b8\u30aa\u30bf\u30b0\u3092\u57cb\u3081\u8fbc\u307f\u307e\u3059\uff0e

\n
$ gpscorrelate -g ./2018-07-16\u9e7f\u5c4b\u30dd\u30bf.gpx -z +9 -n *.JPG
$ gpscorrelate -g ./2018-07-16\u9e7f\u5c4b\u30dd\u30bf.gpx -z +9 *.JPG
\n

\u6700\u5f8c\u306b\u30d5\u30a1\u30a4\u30eb\u306e\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u3092\u4fee\u6b63\u3057\u307e\u3059\uff0e

\n
$ exiftool \"-FileModifyDate<DateTimeOriginal\" ./*
\n

\u3046\u307e\u304f\u884c\u3063\u305f\u3088\u3046\u3067\u3059 :)

\n

\u74b0\u5883

\n
$ dpkg-query -W exiv2 exiftags exif
exif    0.6.21-2
exiftags        1.01-6build1
exiv2   0.25-3.1ubuntu0.18.04.1
$ lsb_release -d
Description:    Ubuntu 18.04.1 LTS
$ uname -m
x86_64
\n", "content_text": "\u5148\u65e5\u30dd\u30bf\u30ea\u30f3\u30b0\u306b\u884c\u3063\u305f\u306e\u3067\u3059\u304c\uff0c\u305d\u306e\u6642\u6301\u3063\u3066\u3044\u3063\u305f\u30ab\u30e1\u30e9\u306e\u6642\u8a08\u304c\u521d\u671f\u5316\u3055\u308c\u3066\u3057\u307e\u3063\u3066\u3044\u3066\u30aa\u30d5\u30bb\u30c3\u30c8\u304c6\u5e74\u534a\u4ee5\u4e0a\u3042\u308a\u307e\u3057\u305f\uff0e\n(\u4e88\u5099\u30d0\u30c3\u30c6\u30ea\u30fc\u304c\u6b7b\u3093\u3067\u30d0\u30c3\u30c6\u30ea\u30fc\u5145\u96fb\u4e2d\u306b\u60c5\u5831\u304c\u521d\u671f\u5316\u3055\u308c\u3066\u3057\u307e\u3046)\n\u3053\u308c\u3092\u6b63\u78ba\u306a\u64ae\u5f71\u6642\u9593\u306b\u5909\u66f4\u3057\u307e\u3059\uff0e\u3044\u3064\u3082\u306fexiv2\u3067\u8a2d\u5b9a\u3057\u3066\u3044\u305f\u306e\u3067\u3059\u304c\uff0c\u4eca\u56de\u3053\u308c\u3067\u306f\u3046\u307e\u304f\u884c\u304b\u306a\u304b\u3063\u305f\u306e\u3067exiftime\u30b3\u30de\u30f3\u30c9\u3067\u8a2d\u5b9a\u3057\u307e\u3057\u305f\uff0e\n\u5148\u305a\u30ab\u30e1\u30e9\u5185\u6642\u8a08\u3068\u5b9f\u969b\u306e\u6642\u8a08\u306e\u5dee\u5206\u3092\u6c42\u3081\u307e\u3059\uff0e\u6b63\u78ba\u306a\u6642\u9593\u3092\u64ae\u5f71(\u4eca\u56de\u306fNICT\u306eJST Clock\u3092\u64ae\u5f71)\u3057\u305f\u7d50\u679c\u306f\u3053\u3093\u306a\u611f\u3058\u3067\u3057\u305f\uff0e\n\nJST Clock\n\n$ ls --full-time DP1M0608.JPG-rw-r--r-- 1 mk mk 9043186 2012-01-02 10:27:01.000000000 +0900 DP1M0608.JPG\n\u5199\u771f\u306b\u5199\u3063\u305f\u6642\u9593 -> 2018-07-17 07:32:00\n\u305d\u308c\u305e\u308cUNIX EPOC\u306b\u5909\u63db\u3057\u3066\u5f15\u304d\u7b97\u3092\u3059\u308b\u3068\u5dee\u5206\u306f206312699\u79d2\u3067\u3057\u305f\uff0e\n$ date +%s -d '2012-01-02 10:27:01'1325467621$ date +%s -d '2018-07-17 07:32:00'1531780320$ expr 1531780320 - 1325467621206312699\n\u3044\u3064\u3082\u4f7f\u3063\u3066\u3044\u308bexiv2\u30b3\u30de\u30f3\u30c9\u306b\u3053\u306e\u79d2\u3092\u6307\u5b9a\u3057\u3066\u4fee\u6b63\u3057\u3088\u3046\u3068\u3057\u305f\u3089\u65e5\u4ed8\u304c\u304a\u304b\u3057\u304f\u306a\u3063\u3066\u3057\u307e\u3044\u307e\u3057\u305f\uff0e\n\nGPS \u3067\u8272\u3005\u904a\u3076 – Speaker Deck\n\n$ cp -p ./DP1M0608.JPG /tmp/DP1M0608.JPG$ exiv2 -a +206312699 /tmp/DP1M0608.JPG$ exiftime /tmp/DP1M0608.JPGexiftime: field count mismatch (DateTime)exiftime: field count mismatch (DateTimeOriginal)exiftime: field count mismatch (DateTimeDigitized)exiftime: field count mismatch (ImageUniqueID)/tmp/DP1M0608.JPG: no timestamps available$ exif /tmp/DP1M0608.JPG|grep -i dateDate and Time       |25548:01:17 21:27:01Date and Time       |2012:01:02 10:27:01Date and Time (Origi|25548:01:17 21:27:01Date and Time (Digit|25548:01:17 21:27:01\nman\u3092\u78ba\u8a8d\u3059\u308b\u3068\uff0c\u79d2\u3060\u3051\u306e\u6307\u5b9a\u306f\u99c4\u76ee\u3067\u3061\u3083\u3093\u3068\u8a08\u7b97\u3057\u3066\u6307\u5b9a\u3057\u306a\u3044\u3068\u3044\u3051\u306a\u3044\u3088\u3046\u3067\u3059\uff0e\u305d\u3057\u3066\u65e5\u307e\u305f\u304e\u4ee5\u4e0a\u306f\u6307\u5b9a\u3067\u304d\u306a\u3044\u3088\u3046\u306a\u611f\u3058\u3067\u3059\uff0e\u3053\u308c\u307e\u3067\u306f\u305b\u3044\u305c\u3044\u6570\u79d2\u304b\u3089\u6570\u5206\u3057\u304b\u305a\u308c\u306a\u304b\u3063\u305f\u306e\u3067\u6c17\u3065\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u2026\u2026\uff0e\n       -a time              Time  adjustment  in  the  format  [-]HH[:MM[:SS]]. This option is only used with the 'adjust' action. Examples: 1 adds one              hour, 1:01 adds one hour and one minute, -0:00:30 subtracts 30 seconds. \n\u8a08\u7b97\u3059\u308b\u306e\u304c\u9762\u5012\u306a\u306e\u3067\u5dee\u5206\u3092\u79d2\u3067\u6307\u5b9a\u3067\u304d\u308b\u30c4\u30fc\u30eb\u306f\u306a\u3044\u3060\u308d\u3046\u304b\u3068\u63a2\u3057\u3066\u307f\u308b\u3068\uff0cexiftags package\u306eexiftime\u304c\u4f7f\u3048\u305d\u3046\u3067\u3059\uff0e\n              If val is numeric, one of either y, m, w, d, H, M, or S must be used to specify which part of the date is to be adjusted. \n\u5b9f\u969b\u306b\u8a66\u3057\u3066\u307f\u307e\u3059\uff0e\n\u5ff5\u306e\u70ba\u30d5\u30a1\u30a4\u30eb\u3092/tmp\u306b\u30b3\u30d4\u30fc\u3057\u3066\u5148\u305a\u306f\u3053\u308c\u3067\u8a66\u3057\u307e\u3059\uff0e\n$ cp -p ./DP1M0608.JPG /tmp/DP1M0608.JPG$ exiftime /tmp/DP1M0608.JPGexiftime: field count mismatch (ImageUniqueID)Image Created: 2012:01:02 10:27:01Image Generated: 2012:01:02 10:27:01Image Digitized: 2012:01:02 10:27:01\n-v\u3067\u30aa\u30d5\u30bb\u30c3\u30c8\u3092\u6307\u5b9a\u3057\u307e\u3059\uff0e\u4eca\u56de\u306f+206312699S\u3067206312699\u79d2\u9032\u3081\u307e\u3059\uff0e\n$ exiftime -v +206312699S /tmp/DP1M0608.JPGexiftime: field count mismatch (ImageUniqueID)Image Created: 2018:07:17 07:32:00Image Generated: 2018:07:17 07:32:00Image Digitized: 2018:07:17 07:32:00\n\u5927\u4e08\u592b\u305d\u3046\u3067\u3059\uff0e\n-v\u3060\u3051\u3067\u306f\u5b9f\u969b\u306f\u66f8\u304d\u63db\u308f\u308a\u307e\u305b\u3093-w\u3067\u5b9f\u969b\u306bexif\u3092\u66f8\u304d\u63db\u3048\u307e\u3059\uff0e\n$ exiftime -v +206312699S -w /tmp/DP1M0608.JPGexiftime: field count mismatch (ImageUniqueID)adjust time created in /tmp/DP1M0608.JPG from  2012:01:02 10:27:01 to 2018:07:17 07:32:00? (y/n [n]) yImage Created: 2012:01:02 10:27:01 -> 2018:07:17 07:32:00adjust time generated in /tmp/DP1M0608.JPG from  2012:01:02 10:27:01 to 2018:07:17 07:32:00? (y/n [n]) yImage Generated: 2012:01:02 10:27:01 -> 2018:07:17 07:32:00adjust time digitized in /tmp/DP1M0608.JPG from  2012:01:02 10:27:01 to 2018:07:17 07:32:00? (y/n [n]) yImage Digitized: 2012:01:02 10:27:01 -> 2018:07:17 07:32:00$ exiftime /tmp/DP1M0608.JPGexiftime: field count mismatch (ImageUniqueID)Image Created: 2018:07:17 07:32:00Image Generated: 2018:07:17 07:32:00Image Digitized: 2018:07:17 07:32:00\nexiftool\u30b3\u30de\u30f3\u30c9\u3067\u30d5\u30a1\u30a4\u30eb\u306e\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u3082\u4fee\u6b63\u3057\u307e\u3059\uff0e\n\n\u753b\u50cf\u30d5\u30a1\u30a4\u30eb\u306e\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u3092exif\u306e\u6642\u9593\u306b\u5408\u308f\u305b\u308b \u2013 matoken’s meme\n\n$ exiftool \"-FileModifyDate<DateTimeOriginal\" /tmp/DP1M0608.JPGWarning: Bad PrintIM size - /tmp/DP1M0608.JPG    1 image files updated$ ls --full-time /tmp/DP1M0608.JPG-rw-r--r-- 1 mk mk 9043186 2018-07-17 07:32:00.000000000 +0900 /tmp/DP1M0608.JPG\nOK\u305d\u3046\u3067\u3059\uff0e\n\u672c\u756a\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u4e00\u6c17\u306b\u66f8\u304d\u63db\u3048\u3066\u307f\u307e\u3059\uff0e\n\u78ba\u8a8d\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u51fa\u306a\u3044\u3088\u3046exiftime\u306b-f\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u4ed8\u3051\u3066\u3044\u307e\u3059\uff0e\n$ exiftime -v +206312699S -w -f ./*.JPG./DP1M0537.JPG:exiftime: field count mismatch (ImageUniqueID)Image Created: 2012:01:01 08:46:51 -> 2018:07:16 05:51:50Image Generated: 2012:01:01 08:46:51 -> 2018:07:16 05:51:50Image Digitized: 2012:01:01 08:46:51 -> 2018:07:16 05:51:50 ./DP1M0538.JPG:exiftime: field count mismatch (ImageUniqueID)Image Created: 2012:01:01 08:55:16 -> 2018:07:16 06:00:15Image Generated: 2012:01:01 08:55:16 -> 2018:07:16 06:00:15Image Digitized: 2012:01:01 08:55:16 -> 2018:07:16 06:00:15    :$ exiftime -v +206312699S -w -f ./*.X3F   :\n\u66f4\u306b\uff0cgpscorrelate\u3067\u30b8\u30aa\u30bf\u30b0\u3092\u57cb\u3081\u8fbc\u307f\u307e\u3059\uff0e\n$ gpscorrelate -g ./2018-07-16\u9e7f\u5c4b\u30dd\u30bf.gpx -z +9 -n *.JPG$ gpscorrelate -g ./2018-07-16\u9e7f\u5c4b\u30dd\u30bf.gpx -z +9 *.JPG\n\u6700\u5f8c\u306b\u30d5\u30a1\u30a4\u30eb\u306e\u30bf\u30a4\u30e0\u30b9\u30bf\u30f3\u30d7\u3092\u4fee\u6b63\u3057\u307e\u3059\uff0e\n$ exiftool \"-FileModifyDate<DateTimeOriginal\" ./*\n\u3046\u307e\u304f\u884c\u3063\u305f\u3088\u3046\u3067\u3059 :)\n\u74b0\u5883\n$ dpkg-query -W exiv2 exiftags exifexif    0.6.21-2exiftags        1.01-6build1exiv2   0.25-3.1ubuntu0.18.04.1$ lsb_release -dDescription:    Ubuntu 18.04.1 LTS$ uname -mx86_64", "date_published": "2018-08-09T05:56:25+09:00", "date_modified": "2018-08-09T05:57:30+09:00", "authors": [ { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" } ], "author": { "name": "matoken", "url": "https://matoken.org/blog/author/matoken/", "avatar": "https://secure.gravatar.com/avatar/38f5f3b575c5eb45cda6aa659bca119ac7a5e16b46565e869d0030e3bd66981d?s=512&d=mm&r=g" }, "tags": [ "exif", "exiftime", "ExifTool", "exiv2", "GPS", "gpscorrelate", "photo", "Bionic Beaver(18.04LTS)", "Linux", "Ubuntu" ] } ] }