【Linux】Ubuntuの不要ファイルを徹底的に削除する
Ubuntuで色々やっていると、だんだんSSDの容量を圧迫してきました。
512GBしかないSSDをWindows用とよく使う動画データ用とUbuntu用で3つにパーティション分割している上に、WindowsパーティションにSolidworksやらFusionやらInventerやらUnityやら重たいソフトばっかり入っているので、どーしてもUbuntuに割くことのできる容量が少なくなってしまい、すぐ容量いっぱいになってしまうんです。
ちなみにですが、使用しているUbuntuはこちら:
では本題。
まずは使用容量と空き容量の確認
$ sudo du / -h -s # 現在使用している容量を取得 75G $ df / -h Filesystem Type Size Used Avail Use% Mounted on /dev/sda5 ext4 82G 75G 7G 95% /
パーティションサイズが82GBでそのうち75GBも使ってました。ひえー
不要なアプリケーションを削除
これは簡単。以下のコマンドを実行するだけ
$ sudo apt autoremove # 更新に伴い必要なくなったパッケージを削除 $ sudo apt clean # キャッシュされている全てのdebファイルを削除
ndcuで巨大ファイルを削除
sudo apt-get install ncdu -y
でインストールします。
cd /; ncdu
を実行すると、以下のように表示されます。
`du`コマンドなどと違って、ファイルの大きさがグラフで表示されており、しかもサイズが大きい順にソートされているのでわかりやすいです。
- 上下矢印:フォルダ or ファイル選択
- 左矢印:上の階層に移動
- Enter:選択中のフォルダに入る
- d : フォルダ or ファイルの削除
- q : ncduを終了
のようなコマンドを駆使して、大容量の不要ファイルを見つけて削除していきます。
?を入力するとヘルプ画面が表示されます
不要なDockerイメージを削除
`dockrer ps -a` とか `docker images`とかを打ちながら、もう使っていないDockerコンテナ/イメージを削除します。
$ docker ps -a #コンテナ一覧 $ docker images # イメージ一覧 $ docker rm [container] # コンテナ削除(その前にdocker stop [container]でコンテナ停止が必要) $ docker rmi [image] # イメージ削除
上記のようなコマンドを一括で行うには
$ docker system prune -a
を実行します。これを実行すると以下の内容が削除されます:
- all stopped containers
- all networks not used by at least one container
- all images without at least one container associated to them
- all build cache
Android emulatorのDocker Imageが11GBくらいあったので、思い切って削除しました。
MySQLのデータベース削除
$ mysql --version mysql Ver 8.0.23-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu)) $ sudo mysql -u root -p; mysql> show databases; mysql> drop database [hoge]; ...... mysql> quit
みたいな感じでMySQLの不要なテーブルやデータベースを削除していきます。
最終的に残ったデータベースはこれだけになりました。↓(おそらくデフォルト?)
+--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+
各種ログ削除
ここから、各アプリケーションのログを削除していきます。
`/var/cache/ `とかに入っている場合が多いのかなぁ...
Slack
どこにあったかはメモしていなかったためわかりませんでしたが、どこかにSlackフォルダがあってそこにlogがあったので全部消しました。
//TODO:どこだっけ?
MySQL
MySQLのログは/var/lib/mysqlにバイナリーログとしてあるようです。Linuxのrmコマンドを使ってもいいのかもしれませんが、怖いのでこうしました:
mysql> SHOW BINARY LOGS; +---------------+-----------+-----------+ | Log_name | File_size | Encrypted | +---------------+-----------+-----------+ | binlog.000186 | 85478899 | No | (略 100ファイルくらいあった) | binlog.000321 | 1531 | No | | binlog.000322 | 574 | No | +---------------+-----------+-----------+ 137 rows in set (0.07 sec) mysql> PURGE BINARY LOGS TO 'binlog.000322'; Query OK, 0 rows affected (0.07 sec) mysql> SHOW BINARY LOGS; +---------------+-----------+-----------+ | Log_name | File_size | Encrypted | +---------------+-----------+-----------+ | binlog.000322 | 574 | No | +---------------+-----------+-----------+ 1 row in set (0.00 sec)
2つ目のコマンド、「PURGE BINARY LOGS TO 'binlog.000322';」で「binlog.000322よりも古いログを消す」という操作を実行しています
いい感じです。
snap関連を削除
これはしないほうが良いかも?
$ sudo apt purge snapd sudo rm -rf /var/cache/snapd/
結果
再度dfコマンドを実行した結果:
$ df / -h Filesystem Type Size Used Avail Use% Mounted on /dev/sda5 ext4 82G 25G 53G 33% /
おお〜〜!!!
個人的には、MySQLのログとDockerの不要コンテナ削除が大きかった気がします。
YouTubeに有料の素材を使った動画をアップする(Envato Market / audiojungle)
先日、サークルの新歓PVで↓の様な動画を作りました。
この動画にはBGMにaudiojungleの有料素材を使っているのですが、その場合はYouTubeに「正規のサイトから購入したから著作権問題は大丈夫だよ!」という事を伝える必要があります。この記事はその方法の記録です。
YouTube Content IDシステム( YouTubeの著作権管理()
YouTubeに動画をアップすると、その時に事前に登録されている著作権コンテンツ一覧から類似するものが無いかを確かめます。それがContent IDというシステムです。一致するコンテンツが検知された場合、以下の様な対処がなされる場合があります。
- 動画の公開範囲の制限(限定公開など)
- 動画の収益化
- 統計情報の追跡
これに対して、正当なライセンスを持っていることを伝える「異議申し立て」を行い、上記の対処を取り消すように申告することができます。
蛇足ですが、著作権コンテンツの一致検査は、動画がアップロードされた時だけではなく定期的に実行されているそうです
ライセンス確認
私が使用した曲の場合、以下の様なライセンスでした(画面右側のLicense detailsをクリック→view full licenseするとみることができます)。
You are licensed to use the Item in one of the following ways (Allowed Use), in a single application (a single product or project):
(a) synchronisation with an audio-visual or audio-only work, to create one End Product that incorporates the Item as well as other things, so that it is larger in scope and different in nature than the Item;
(b) specific direct playback uses, which are background music for one event, venue or location, one company’s private on-hold music system, or one personal mobile ring-tone.
(Music Standard License | AudioJungle より引用)
ほかにも色々禁止事項などが書かれていますが要約すると、
- YouTubeなどの動画サービスで使うのはOK (宣伝でも可)
- 10000回まで使用可
- TV放送で使用不可
- 劇場版の映画で使用不可
という感じでした。
異議申し立てを行う
動画をアップロードして少し経つと、おそらく「YouTube Studio」の「動画の詳細(下写真)」の「制限」の欄に著作権コンテンツが使用されていることが表示されると思います。
(下の画像は異議申し立てが受理された後のスクショなので制限なしになっていますが)
それをクリックすると、↓の様な画像が表示されます
動画が限定公開になって、著作権者によって収益化されていますね。
画面右側の「操作を選択」から「異議申し立て...」を選択します。
きちんと正規のサイトからライセンスを購入しているので「ライセンス」を選択
チェックして次へ
「ライセンス情報」の欄には、audiojungleのライセンス証明書を記載します。
参考:Where Is My Purchase Code? – Envato Market Help Center
ライセンス証明書を取得するため、まず、Envato Marketにログインします。
audiojungle.net
ログイン後、右上のユーザーメニューから「Downloads」を選択
「License certificate & purchase code(text)」を選択して、ライセンス証明書をダウンロードします。
で、これをYouTubeの異議申し立て欄の「ライセンス情報」欄に記載します。こんな感じ:
A license to use this music "Powerful Inspiring Positive Cinematic Orchestra (long version)" by "WavebeatsMusic" was purchased from audiojungle.net LICENSE CERTIFICATE : Envato Market Item ============================================== This document certifies the purchase of: ONE MUSIC STANDARD LICENSE as defined in the standard terms and conditions on Envato Market. Licensor's Author Username: WavebeatsMusic Licensee:hoge hoge Item Title:Inspiring & Uplifting Cinematic Item URL:https://audiojungle.net/item/powerful-inspiring-positive-cinematic-orchestra/21564893 Item ID:20210307 Item Purchase Code : 114514-810-1234-5678-31415926535 Purchase Date:2020-09-11 12:07:53 UTC For any queries related to this document or license please contact Help Team via https://help.market.envato.com Envato Pty. Ltd. (ABN 12 138 211 777) PO Box 16122, Collins Street West, VIC 8007, Australia ==== THIS IS NOT A TAX RECEIPT OR INVOICE ====
で、下の3つにチェックをつけて送信します。
異議申し立て受理
異議申し立てから数時間後、YouTubeアカウントのメールアドレスに返信がきました。
異議申し立てが通って、ライセンス認証がされました!やったね(*^^*)
動画の公開範囲が「制限なし」になってる:
これで、無事に動画を公開することができましたとさ、めでたしめでたし
【C++】MinGW (g++)とCMakeでOpenCVとopencv-contributeをビルドする(Windows)
バージョン
$ cmake --version cmake version 3.17.2 $ make -v GNU Make 3.81 $ mingw32-make -v GNU Make 4.2.1 $ g++ -v gcc version 8.1.0
はじめに
タイトルの通りです。開発環境がVisual Studioを使っているならば、ココの「Windows」ボタンからビルド済みのものをインストールできますが、g++, gccでビルドされたものは見つかりませんでした。
[追記]...と思っていたら、ありました!!
https://github.com/huihut/OpenCV-MinGW-Build
まぁでも最新バージョンではないっぽいし、自分でビルドすることにしました。
ということで、OpenCVの適当なバージョンをダウンロードして、cmakeで普通にやろうとしたのですが、
$ cmake [directry]
ってしても、抑もConfigureが通りません。そして、そのままmakeをしても、
gcc: error: long: No such file or directory C:\PROGRA~1\MINGW-~1\X86_64~1.0-P\mingw64\bin\windres.exe: preprocessing failed. make[2]: *** [modules/core/CMakeFiles/opencv_core.dir/vs_version.rc.obj] エラー 1 make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] エラー 2 make: *** [all] エラー 2
もちろんですがエラーが出てしまいました。
ということで、CMakeのGUIを使って設定する必要があります。
ビルド方法
1. opencv-3.4 とcontributeをダウンロードする
ここ↓から、最新バージョンのOpenCVをgit cloneしてきます。
github.com
そして、ここ↓から最新バージョンのOpencv-contributeをgit cloneしてきます。
github.com
Contributeとは:OpenCvの追加物みたいなもので、顔認識やセグメンテーションのような機能を追加できます(機能一覧についてはここを見てください)。十分にテストされていないAPIなので、OpenCV本体と一緒にするべきではない、という考えのようです。
2. opencv-3.4の中にbuildフォルダを作る(名前は何でもOK)
みたいな感じです。
3. Cmake GUIを開く
CMakeGUIを開いて、一番上にある「Where is the source code」と「Where to build the binaries」を設定します。
ソースコードの位置は hoge/opencv-3.4、ビルド先にはhoge/opencv-3.4/build_mingw みたいな感じで先ほど作ったフォルダを指定します。
そして、Configureボタンを押します。
4. コンパイラをMinGWに指定する
Configureボタンを押すと、以下の様なコンパイラーを選択する画面が表示されます。
この写真のように設定してFinishを押します
7. 以下の様な設定にします。
Configureが終わると、未解決の項目が赤くなって大量に表示されているはずです。ここからビルド設定を行います。ここは個人の環境によって変わるかもしれませんが、僕の環境では以下の設定でビルドが通りました。
- BUILD_JAVAのチェックを外す
- BUIKD_PYTHONのチェックを外す
- BUILD_OPENEXRのチェックを外す
- WITH_IPPのチェックを外す
- ENABLE_PRECOMPILED_HEADERS のチェックを外す
- WITH_OPENGL のチェックを付ける
- OPENCV_ENABLE_NONFREEのチェックを付ける
- OPENCV_EXTRA_MODULES_PATH のパスを「hoge/opencv_contrib-3.4/modules」に設定する
- BUILD_opencv_worldのチェックを付ける(これをチェックすると、libファイルやdllファイルが「opencv_world_[version].dll」の様な名前で一つにまとめてくれる)
7. DOPENCV_ALLOCATOR_STATS_COUNTER_TYPEを追加
CMake GUIの右上に「Add Entry」というボタンがあるので、そこを押します。
そして、
- Name = DOPENCV_ALLOCATOR_STATS_COUNTER_TYPE
- Type = STRING
- Value = int64_t(上写真ではDescriptionの所に書き込んでいますがミスですm(__)m。Valueが正解)
となるように設定します。
このように表示されればOKです。
10. 「Configure」→「Generate」
これで、一通りの設定が終わったので、もう一度Configure をしてみましょう!
エラーが出ずに最後までConfigureできたら成功です。Generateもします。
11. コマンドプロンプトで「make」!
ここまで順調に来ていれば、mingw_buildフォルダ(2.で作成したフォルダ)にMakeFileがあるはずなので、
$ cd mingw_make #(2.で作成したフォルダ) $ make
でmakeします。
上手くいけば、以下のファイルが生成されているはずです
上の二つがあればビルドはできています!!(*'ω'*)
HelloWorld
適当にプログラムを作ります。HelloWorldという文字を出力するプログラムです。
//main.cpp #include <opencv2/opencv.hpp> int main() { cv::Mat image(200, 800, CV_8UC3); cv::String text = "Hello, world"; cv::putText(image, text, cv::Point(100,100), cv::FONT_HERSHEY_SIMPLEX, 3, cv::Scalar(255,255,0), 5, cv::LINE_AA);// テキストを描画 // 画像を表示 cv::imshow("hello_world", image); cv::waitKey(0); return 0; }
CmakeListsは以下のようになります。
# CmakeLists.txt cmake_minimum_required(VERSION 2.8) set(PROJECT_NAME Test) project(${PROJECT_NAME} CXX) set(OpenCV_DIR "hogw/mingw_build") #2.で作成したフォルダ find_package(OpenCV REQUIRED) if(OpenCV_FOUND) include_directories(${OpenCV_INCLUDE_DIRS}) link_libraries(${OpenCV_LIBS}) endif() add_executable(${PROJECT_NAME} main.cpp main.hpp) target_link_libraries(${PROJECT_NAME} ${OpenCV_LIBRARIES})
$ cd (上で書いた.cppとCMakeFilesがあるディレクトリ) $ mkdir build $ cmake .. -G"MinGW Makefiles" # コンパイラをMinGWに指定する $ make
これでTest.exeが生成されればOKです!!
動的ライブラリファイル「(2.で作ったフォルダ)/bin/libopencv_world3412.dll」をTest.extと同じ階層にコピーしてきます。
これで、OpenCVのプログラムを実行できるはずです、、、!
HelloWorld実行
実行できたぁ~~