未分類

conda(Anaconda)経由でPythonにpy2exeをインストールする。

conda経由でPythonにPy2exeをインストールする手順です。

特にPython3でのpy2exepython3.4までしか提供されてないのでAndaconda Navigaterからはインストールできない為(パッケージがcurrent channelで提供されてない)、condaコマンドでインストールする必要があります。

 
 

  1. 事前にPython3.4の環境を構築する。
  2. Py2exeパッケージをインストールする。

    Python3.4でもpy2execurrent channelで提供されて無い為、次のコマンドでパッケージをインストールする。

    > conda install -c kieranharding py2exe


     
     

    ちなみに通常のパッケージインストールコマンドだと次のようにパッケージが見つからないと言われてしまいます。

     
     

    > conda install py2exe


     
     

     
     

  3. インストールしたパッケージがパッケージ一覧に含まれている事を確認する。

    > conda list


     
     

 
 

<補足>

32bit Python3.4では“-c kieranharding” パラメータを指定してもパッケージをインストールできないようなのでpipでインストールする必要があります。

> pip install py2exe


 
 

 
 

 
 

 
 

 
 

未分類

conda環境に古いバージョンのPython環境を構築する。

Python環境作成の際にAnaconda Navigatorから選択できない古いPythonバージョンを構築する際の手順の説明です。

condaコマンドを利用する事で任意のPythonバージョンで環境を構築する事ができます。

ここではpython3.4環境を例に手順を説明します。


 
 

  • 管理者権限でAnacondaPromptを起動する。

    もし、Anaconda上に複数のPythonバージョンの環境を作成している場合はbase環境でプロンプトを起動する。

  • 新しく32bitPython環境を作成する。

    >conda create -n py34 python=3.4.5


     
     

     
     

  • 作成した32bitPython環境を確認する。

    作成した32bit Python環境へ切り替えたのち、Pythonコンソールを起動してVerを確認する。

    > conda activate py34

    > python

     
     


     
     

未分類

64bit Windows の Anacondaに32bitのPython環境を作成する。

64bit Windows環境のAnacondaでは通常64bitのPython環境が構築されます。

時によっては32bitPythonを実行したい場合もあるのでPython 32bit環境の構築する方法の説明です。

 
 

特にpy2exeなどで32bit向けWindows バイナリを作成する際に重宝すると思います。

 
 

  1. 管理者権限でAnacondaPromptを起動する。

    もし、Anaconda上に複数のPythonバージョンの環境を作成している場合はbase環境でプロンプトを起動する。

  2. condaの環境変数を32bitへ変更する。

    > set CONDA_SUBDIR=win-32

  3. 変更結果を確認する。

    > conda info

    platform欄にwin-32と表示されている事を確認する。


     
     

    ちなみに64bitへ戻す場合は次のコマンド

    > set CONDA_SUBDIR=win-64

     
     

  4. 新しく32bitPython環境を作成する。

    >conda create -n py34_32bit python=3.4.5

     
     

    ここではpython 3.4環境で構築。


     
     

     
     

  5. 作成した32bitPython環境を確認する。

    condaの環境を作成した32bit Python環境へ切り替えてPythonコンソールを起動して確認する。

    > conda activate py34_32bit

    > python

     
     


 
 

コンソール上に”on win32″と表示されている事を確認する。

Ubuntu

Ubuntu 18.04Server へ gerberaをインストール


Ubuntu 18.04LTSgerberaをインストールした際のメモ

gerberaのインストール


$ sudo apt update

$ sudo apt install gerberasudo cp /etc/gerbera/config.xml /etc/gerbera/config.xml.bak

config.xmlの内容を環境に合わせて変更する。

初期状態のファイルはとりあえずバックアップしてから内容を変更。

$ sudo cp /etc/gerbera/config.xml /etc/gerbera/config.xml.bak

$ sudo vi /etc/gerbera/config.xml

mysqlとps3から利用したいので次の箇所を変更

変更箇所 変更前 変更後 内容
8行目 <ui enabled=”no” show-tooltips=”yes”> <ui enabled=”yes” show-tooltips=”yes”> gerberaWeb UIを有効化
28行目 <sqlite3 enabled=”yes”> <sqlite3 enabled=”no“> sqliteの無効化
31行目 <mysql enabled=”no”>

<host>localhost</host>

<username>gerbera</username>

<database>gerbera</database>

</MySQL>

<mysql enabled=”yes”>

<host>localhost</host>

<username>MYUSERNAME</username>

<database>MYDBNAME</database>

<password>MYPASSWORD</password>

</MySQL> 

mysqlを有効化
databaseのパスワードを追加
37行名 <protocolInfo extend=”no”/> <protocolInfo extend=”yes“/> PS3 support有効化

gerberaのサービス起動と初期設定


$ sudo service gerbera restart

WebUIにアクセスする為にPortを確認する。

$ sudo cat /var/log/syslog | grep gerbera

Feb 3 08:59:22 server gerbera[2938]: 2019-02-03 08:59:22 INFO: Gerbera UPnP Server version 1.1.0 – http://gerbera.io/

Feb 3 08:59:22 server gerbera[2938]: 2019-02-03 08:59:22 INFO: ===============================================================================

Feb 3 08:59:22 server gerbera[2938]: 2019-02-03 08:59:22 INFO: Gerbera is free software, covered by the GNU General Public License version 2

Feb 3 08:59:22 server gerbera[2938]: 2019-02-03 08:59:22 INFO: Copyright 2016-2017 Gerbera Contributors.

Feb 3 08:59:22 server gerbera[2938]: 2019-02-03 08:59:22 INFO: Gerbera is based on MediaTomb: Copyright 2005-2010 Gena Batsyan, Sergey Bostandzhyan, Leonhard Wimmer.

Feb 3 08:59:22 server gerbera[2938]: 2019-02-03 08:59:22 INFO: ===============================================================================

Feb 3 08:59:22 server gerbera[2938]: 2019-02-03 08:59:22 INFO: Loading configuration from: /etc/gerbera/config.xml

Feb 3 08:59:22 server gerbera[2938]: 2019-02-03 08:59:22 INFO: Checking configuration…

Feb 3 08:59:22 server gerbera[2938]: 2019-02-03 08:59:22 INFO: Setting filesystem import charset to UTF-8

Feb 3 08:59:22 server gerbera[2938]: 2019-02-03 08:59:22 INFO: Setting metadata import charset to UTF-8

Feb 3 08:59:22 server gerbera[2938]: 2019-02-03 08:59:22 INFO: Setting playlist charset to UTF-8

Feb 3 08:59:22 server gerbera[2938]: 2019-02-03 08:59:22 WARNING: You enabled the YouTube feature, which allows you

Feb 3 08:59:22 server gerbera[2938]: to watch YouTube videos on your UPnP device!

Feb 3 08:59:22 server gerbera[2938]: Please check http://www.youtube.com/t/terms

Feb 3 08:59:22 server gerbera[2938]: By using this feature you may be violating YouTube

Feb 3 08:59:22 server gerbera[2938]: service terms and conditions!

Feb 3 08:59:22 server gerbera[2938]: 2019-02-03 08:59:22 INFO: Configuration check succeeded.

Feb 3 08:59:22 server gerbera[2938]: 2019-02-03 08:59:22 WARNING: Sqlite3 database seems to be corrupt or doesn’t exist yet.

Feb 3 08:59:22 server gerbera[2938]: 2019-02-03 08:59:22 INFO: no sqlite3 backup is available or backup is corrupt. automatically creating database…

Feb 3 08:59:22 server gerbera[2938]: 2019-02-03 08:59:22 INFO: database created successfully.

Feb 3 08:59:22 server gerbera[2938]: 2019-02-03 08:59:22 INFO: Initialized port: 49152

portが49152と分かったのでWebブラウザーでアクセスしてgerberaからコンテンツにアクセスできるように設定する。


設定はmediatombと同じ

Ubuntu

Ubuntu18.04 でmediatombをソースからインストールする(その3)


Ubuntu 18.04LTSへ自前ビルドしたMediatombをシステム デーモンに登録した際のメモ

システムデーモン用にmediatomb設定ファイルを作成する


systemdへservice設定ファイルを作成する。

$ cd /etc/systemd/system/

$ sudo vi mediatomb.service

設定ファイルの内容は次の通り

[Unit]

Description = mediatomb

[Service]

ExecStart = /usr/local/bin/mediatomb

Restart = always

Type = simple

[Install]

WantedBy = multi-user.target

デーモン設定の有効化とサービスの開始


systemdへservice設定ファイルを作成する。

$ sudo systemctl enable mediatomb

Removed /etc/systemd/system/multi-user.target.wants/mediatomb.service.

Created symlink /etc/systemd/system/multi-user.target.wants/mediatomb.service /etc/systemd/system/mediatomb.service.

設定の確認。

$ sudo systemctl list-unit-files –type=service | grep mediatomb

mediatomb.service enabled

$ sudo systemctl start mediatomb

未分類

install.packages(“DoE.base”)

install.packages(“DoE.base”)

library(DoE.base)

library(lattice)

library(latticeExtra)

 
 

# =============================================================================(

 
 

plot.summaly <- function(a, df, df.mean, …){

x.lab <- df.mean[[a]]$label

# xy plot

plot.default(df[[a]], df$x, xaxt = “n”, ann = FALSE, …)

par(new = TRUE)

plot.default(df.mean[[a]]$label, df.mean[[a]]$x,

ylab = “x”, xlab = a,

xaxt = “n”,

type = “l”, col = “red”,

…)

 

axis(side = 1, at = x.lab, labels = levels(x.lab))

 

# boxplot

boxplot(formula(sprintf(“x~%s”, a)), data = df, …)

}

 
 

plot.Interaction <- function(a, x.df, …){

 

f00 <- function(a, x.list, y, add.flg = FALSE, …){

f01 <- function(x, y, a, data.list, …){

list.name <- names(data.list)

legend.lab <- list.name

pchs = rep(1, length(legend.lab))

ltys = rep(“b”, length(legend.lab))

for(i in list.name){

order.z <- order(data.list[[i]][[x]])

df <- data.list[[i]][order.z,]

x.lab <- df[[x]]

main.lab <- paste(a, x, sep = ” – “)

if(rev(list.name)[1] == i){

plot.default(df[[x]], df[[y]], col = df[[a]],

ylab = y, xlab = x, main = main.lab,

xaxt = “n”,

…)

 

} else {

plot.default(df[[x]], df[[y]], col = df[[a]],

xaxt = “n”, ann = FALSE, …)

 

par(new = add.flg)

}

 

if(!add.flg){

axis(side = 1, at = x.lab, labels = levels(x.lab))

legend(“topleft”, legend = legend.lab, col = (1:length(legend.lab)),

pch = pchs, #lty = ltys,

bg = “transparent”)

}

 

}

 

if(add.flg){

# if(levels(x.lab)[1] == “D1”){

# browser()

# }

x.lab <- df[[x]]

axis(side = 1, at = x.lab, labels = levels(x.lab))

legend(“topleft”, legend = legend.lab, col = (1:length(legend.lab)),

pch = pchs, #lty = ltys,

bg = “transparent”)

}

TRUE

}

x.list2 <- x.list[[a]]

tg.x <- names(x.list2[[1]])

z <- grep(paste(c(a, y), collapse = “|”), tg.x)

lapply(tg.x[-z], f01, y, a, x.list2, …)

 

}

 

s.df <- lapply(a, function(a, x){split(x, x[[a]])}, x.df)

names(s.df) <- a

lapply(a, f00, s.df, “x”, ylim = c(0, 0.5), type = “b”, …)

}

 
 

cal.LSD <- function(tg.f, data.aov, a = 0.05, tg.x = “x”){

f.lsd <- function(n.comb, n, v.value, t.value){

((1/n[n.comb][1]) + (1/n[n.comb][2]) * v.value)^(1/2) * t.value

}

 

f.delta <- function(n.comb, x){

rtn <- data.frame(x[n.comb][1] – x[n.comb][2])

names(rtn) <- paste(names(x)[n.comb][1], names(x)[n.comb][2], sep = ” “)

row.names(rtn) <- NULL

rtn

}

 

 
 

 

aov.sum <- summary(data.aov)[[1]]

tg.data <- data.aov$model[[tg.f]]

 

if(is.null(tg.data)){

print(sprintf(“error : 対象の要素がNULLです。(tg.f : %s)”, tg.f))

return(NA)

}

lv <- levels(tg.data)

lv.comb <- combn(length(lv),2)

z <- length(row.names(aov.sum)[[1]])

n <-table(tg.data)

e.tValue <- abs(qt(a/2, aov.sum[[“Df”]][z]))

x.mean <- tapply(data.aov$model[[tg.x]], data.aov$model[[tg.f]], mean)

x.lsd <- apply(lv.comb, 2, f.lsd, n, aov.sum[[“Mean Sq”]][z], e.tValue)

names(x.lsd) <- names(x.mean)

x.delta.0 <- apply(lv.comb, 2,

function(n.comb, x){x[n.comb][1] – x[n.comb][2]},

x.mean)

names(x.delta.0) <- apply(lv.comb, 2,

function(n.comb, x){paste(x[n.comb][1], x[n.comb][2], sep = ” – “)},

names(x.mean))

 

x.delta <- as.data.frame(apply(lv.comb, 2, f.delta, x.mean))

# as.data.frame後にnamesに含まれる“-““.”に置き換わるのでgsub()再置換する。

names(x.delta) <- gsub(“[.]”, ” – “, names(x.delta))

# ————————————————————————-

 

print(“(Residuals)”)

print(sprintf(“factor : %s”, paste(lv, collapse = “, “)))

#print(sprintf(“factor : %s”, lv))

print(” – mean -“)

print(x.mean)

print(sprintf(“t-Value : %s”, round(e.tValue, 3)))

print(” – L.S.D -“)

print(x.lsd)

print(” – delta – “)

print(x.delta)

#print(x.delta.0)

rtn <- list()

rtn$factor <- lv

rtn$n <- n

rtn$mean <- x.mean

rtn$lsd <- x.lsd

rtn$delta <- x.delta

rtn

}

 
 

# =============================================================================

 
 

old.wd <- getwd()

setwd(“/Documents/R”)

 
 

# L9(3^4)の直行表を読み込む

show.oas(nruns=9, parents.only=FALSE)

oaTableL9 <- oa.design(ID=L9.3.4, randomize=FALSE)

print(oaTableL9)

 
 

x <- read.csv(“L9_data.csv”,

header = TRUE,

stringsAsFactors = FALSE)

x.data.info <- read.csv(“L9_data_factor_levels.csv”,

header = TRUE,

stringsAsFactors = FALSE)

 
 

# C因子について実験データの割付を直行表にあわせる。

data.frame(“直行表割付水準 = as.integer(oaTableL9.org$C),

実験データの水準” = c(1, 2, 3, 2, 3, 1, 3, 1, 2))

 
 

# 23を入れ替える。

x.data.info$C <- x.data.info$C[c(1,3,2)]

x.data.info$C

 
 

 
 

x.data <- cbind(oaTableL9, x = x$x)

 
 

# x.data.2<- data.frame(

# A = c(sprintf(“A%s”, as.character(x.data$A))),

# B = c(sprintf(“B%s”, as.character(x.data$B))),

# C = c(sprintf(“C%s”, as.character(x.data$C))),

# D = c(sprintf(“D%s”, as.character(x.data$D))),

# x = x.data$x)

 
 

x.data.header <- names(x.data)

z <- (x.data.header != “x”)

 
 

x.data.2 <- data.frame(

as.data.frame(

lapply(x.data.header[z],

function(a, x){paste(a, x[[a]], sep = “”)},

x.data)),

x.data$x)

 
 

x.data.2.mean <- lapply(x.data.header[z],

function(a, x){x <- tapply(x$x, x[[a]], mean); data.frame(x.mean = c(x), label = names(x))},

x.data.2)

 
 

names(x.data.2.mean) <- x.data.header[z]

print(x.data.2.mean)

 
 

 
 

#

old.par <- par(mfcol=c(2,length(x.data.header[z])))

lapply(x.data.header[z],

plot.summaly,

x.data.2, x.data.2.mean, ylim = c(0, 0.5))

par(old.par)

 
 

# 交互作用確認(Interaction)

#

# —————————————————————————

# old.par <- par(mfcol=c(3,3))

# plot.Interaction(“A”, x.data.2, add.flg = TRUE)

# par(old.par)

# for nextを利用してplotするとparによる複数レイアウトができないので

# layout()を使ってplotを配置する。

# layout(matrix(seq(3), rep(1, 3)), 1, 3)

p.mat <- matrix(seq(12), ncol = 3, nrow = 4, byrow = TRUE)

layout(p.mat,

widths = rep.int(1, ncol(p.mat)),

heights = rep.int(1, nrow(p.mat)))

plot.Interaction(x.data.header[-5], x.data.2, add.flg = TRUE)

# —————————————————————————

 
 

 
 

 
 

# 分散分析

result.aov <- aov(x ~ A + B + C, data = x.data)

summary(result.aov)

tapply(x.data$x, x.data$A, mean)

 
 

result.2.aov <- aov(x ~ A + B + C, data = x.data.2)

summary(result.2.aov)

# 誤差分散よりも値が小さいBの要素をプーリング

result.2.aov.2 <- aov(x ~ A + C, data = x.data.2)

summary(result.2.aov.2)

 
 

# 最小有意差:LSD(Least Significant Difference)を求める

#cal.LSD(“A”, result.2.aov, “A1”, “A2”)

result.lsd <- lapply(x.data.header[c(1,3)], cal.LSD, result.2.aov.2)

# lapply(x.data.header[z][4], cal.LSD, result.2.aov)

# debug(cal.LSD)

names(result.lsd) <- x.data.header[c(1,3)]

 
 

result.lm <- lm(x ~ A + B + C, data = x.data)

summary.lm(result.lm)

 
 

result.lm.2 <- lm(x ~ A + B + C, data = x.data.2)

summary.lm(result.lm.2)

未分類

Ubuntu18.04 でmediatombをソースからインストールする(その2)


前回に引き続き、MediatombDLNA Severを構築していたUbuntu 16.04LTS 18.04へアップグレードしたところ、Mediatombが消えてしまったので再構築した際の手順メモです。(前回の記事:Ubuntu18.04 でmediatombをソースからインストールする(その1))

ビルド環境の構築

ソースファイルをビルドする為にbuild-essentialとautoconfをインストールしてビルド環境を構築します。

$ sudo apt install build-essential

$ sudo apt install autoconf

参照:Ubuntu 18.04 Serverへ開発環境をセットアップ

依存パッケージのインストール 1


mediatombビルドする前に、mediatombが依存しているパッケージをあらかじめインストールします。

依存パッケージはUbuntu パッケージの情報を参考にしてインストールしました。


https://packages.ubuntu.com/source/artful/mediatomb

整理するとつぎのとおり。

17.10 依存パッケージ

説明

追加

18.04で追加するパッケージ

dh-autoreconf debhelper add-on to call autoreconf and clean up after the build

x

dh-autoreconf
dh-systemd debhelper add-on to handle systemd unit files – transitional package

x

dh-systemd[universe]
libavformat-dev FFmpeg library with (de)muxers for multimedia containers – development files

x

libavformat-dev[universe]
libavutil-dev FFmpeg library with functions for simplifying programming – development files

x

libavutil-dev[universe]
libcurl4-gnutls-dev development files and documentation for libcurl (GnuTLS flavour)

x

libcurl4-gnutls-dev
libexif-dev library to parse EXIF files (development files)

x

libexif-dev
libexpat-dev 以下のパッケージによって提供される仮想パッケージです: libexpat1-dev

x

libexpat1-dev
libffmpegthumbnailer-dev development files for ffmpegthumbnailer

x

libffmpegthumbnailer-dev[universe]
libflac-dev Free Lossless Audio Codec – C development library

x

libflac-dev
libmagic-dev Recognize the type of data in a file using “magic” numbers – development

x

libmagic-dev
libmysqlclient-dev MySQL database development files

x

libmysqlclient-dev
libsqlite3-dev SQLite 3 development files

x

libsqlite3-dev
libtag1-dev audio meta-data library – development files

x

libtag1-dev
libz-dev 以下のパッケージによって提供される仮想パッケージです: zlib1g-dev

x

zlib1g-dev
pkg-config manage compile and link flags for libraries

x

pkg-config
uuid-dev Universally Unique ID library – headers and static libraries

x

uuid-dev

この中からインストールされてないパッケージを追加していきます。

また、追加するパッケージの中には“universe”のリポジトリを追加する必要があるのも存在するのでリポジトリを追加してからパッケージをインストールします。

(参考:リポジトリ追加)

$ sudo apt-add-repository universe
$ sudo apt update
$ sudo apt install dh-autoreconf dh-systemd libavformat-dev
$ sudo apt install libavutil-dev libcurl4-gnutls-dev libexif-dev
$ sudo apt install libexpat1-dev libffmpegthumbnailer-dev libflac-dev
$ sudo apt install libmagic-dev libmysqlclient-dev libsqlite3-dev
$ sudo apt install libtag1-dev zlib1g-dev pkg-config uuid-dev

依存パッケージのインストール 2

更にビルドする際にあった方がよさそうなライブラリーについてもインストールします。

ここでインストールするライブラリーは無くてもビルドは可能なので必要に応じてインストールしてください。

  • libmp4-v2-dev
    $ sudo apt install libmp4v2-dev
    

mediatombのビルド


$ mkdir source
$ cd source/
$ wget http://archive.ubuntu.com/ubuntu/pool/universe/m/mediatomb/mediatomb_0.12.1-47-g7ab7616.orig.tar.xz
$ tar -xvf mediatomb_0.12.1-47-g7ab7616.orig.tar.xz
  • mediatombのビルド
    $ cd mediatomb-0.12.1-47-g7ab7616/
    $ autoreconf --install
    $ ./configure
    
sqlite3 yes
mysql yes
libjs missing
libmagic yes
inotify yes
libexif yes
expat yes
id3lib disabled
taglib yes
FLAC yes
libmp4v2 not compatible
ffmpeg yes
ffmpegthumbnailer yes
lastfmlib yes
external transcoding yes
curl yes
YouTube yes
db-autocreate yes


configureでは次のような設定になりました。 libmp4v2が”not compatible”となっていますがビルドはできそうなのでそのまま作業を進めます。

$ make
$ sudo make install

インストールが完了すると /usr/local/bin/mediatomb にバイナリーが配置されます。

また、config.xmlについては~/.mediatomb に作成されていました。

mediatombの起動確認

configu.xml に必要な情報を設定したらmediatombを起動して正しく動作する事を確認します。

$ /usr/local/bin/mediatomb
MediaTomb UPnP Server version 0.12.2 - http://mediatomb.cc/
	
	===============================================================================
	Copyright 2005-2010 Gena Batsyan, Sergey Bostandzhyan, Leonhard Wimmer.
	MediaTomb is free software, covered by the GNU General Public License version 2
	
	2018-10-08 03:49:04    INFO: MediaTomb configuration was created in: /home/abc/.mediatomb/config.xml
	2018-10-08 03:49:04    INFO: Loading configuration from: /home/abc/.mediatomb/config.xml
	2018-10-08 03:49:04    INFO: UUID generated: 648f7c48-b52f-4b09-b494-a7ef020e1c65
	2018-10-08 03:49:04    INFO: Checking configuration...
	2018-10-08 03:49:04    INFO: Setting filesystem import charset to UTF-8
	2018-10-08 03:49:04    INFO: Setting metadata import charset to UTF-8
	2018-10-08 03:49:04    INFO: Setting playlist charset to UTF-8
	2018-10-08 03:49:04 WARNING: You enabled the YouTube feature, which allows you
	                             to watch YouTube videos on your UPnP device!
	                             Please check http://www.youtube.com/t/terms
	                             By using this feature you may be violating YouTube
	                             service terms and conditions!
	
	2018-10-08 03:49:04    INFO: Configuration check succeeded.
	2018-10-08 03:49:04 WARNING: Sqlite3 database seems to be corrupt or doesn't exist yet.
	2018-10-08 03:49:04    INFO: no sqlite3 backup is available or backup is corrupt. automatically creating database...
	2018-10-08 03:49:04    INFO: database created successfully.
	2018-10-08 03:49:04    INFO: Initialized port: 49152
	2018-10-08 03:49:04    INFO: Server bound to: 192.168.10.248
	2018-10-08 03:49:05    INFO: MediaTomb Web UI can be reached by following this link:
	2018-10-08 03:49:05    INFO: http://192.168.10.248:49152/

実行すると、上記の情報がコンソールに表示されたので問題なさそうです。

早速、webブラウザでアクセスしてみると無事にmediatombのサービスに接続できました。


libmp4v2が”not compatible” や デーモンが無いなど、いくつか課題が残っていますが、今回はDNLA経由で動画も見れるのでヨシとしました。

たぶん、課題は解決せずにgerberaを利用する方が正解だと思うので次はgerberaの環境を構築してみたいと思います。

Ubuntu

Ubuntu18.04 でmediatombをソースからインストールする(その1)


MediatombDLNA Severを構築していたUbuntu 16.04LTS 18.04へアップグレードしたところ、Mediatombが消えてしまったので再構築した際の手順メモです。

Ubuntu 16.04LTSから18.04にアップグレードしたらMediatombが消えていた。


18.04へアップグレードするとmediatomb serverが起動してない?

とりあえず、サービスを手動で起動を試みるも、mediatobがサービスから消えて良いて起動なんかできない状態。

そもそも、mediatombのバイナリも存在してないし安易にサーバーをアップグレードしてはいけないと、後悔….

  • パッケージから再インストール 失敗

    気を取り直して再インストール。⇒失敗。

    $ sudo apt mediatomb
     E: Invalid operation mediatomb

    リポジトリーを検索すると何故か“gerbera”とか“minidlna”などの別のmedia serberがレコメンドされる結果。

    $ sudo apt search mediatomb
     Sorting... Done
     Full Text Search... Done
     gerbera/bionic 1.1.0+dfsg-2 amd64
      UPnP MediaServer
    	
     minidlna/bionic 1.2.1+dfsg-1 amd64
      lightweight DLNA/UPnP-AV server targeted at embedded systems

18.04では提供されてなく存在しないみたい。


 

Ubuntu · 仮想化

仮想HDDのHDD容量を拡張してUbuntuで利用できるようにする。


仮想マシン上のubuntuで容量が足りなくなったら?

 仮想マシン上でubuntuを使っているとうっかり HDD容量が足りなくなる事ありますよね。

そんな時は仮想HDDのHDD容量を増やしてあげれば良い訳ですが、増やしたHDD容量がubuntu上で利用できるまでの手順がややっこしいので整理してみました。

手順の全体の流れは次の通り。

◆ 仮想HDDのHDD容量を変更する。

◆ partition sizeを拡張する。(VM ubuntuでの操作。)

◆ (LVM) LVMを拡張する。(VM ubuntuでの操作。)

◆ 拡張した領域をFilesystemへ反映する。(VM ubuntuでの操作。)

上記はLVMを利用している環境での例となります。

また、LVMを利用していない場合はLVMの操作は省略してください。

LVM環境の場合、新規仮想HDDを追加してLVMを更新するのが一般的だと思います今回はLVMを利用してない環境と手順を合わせて整理したかったので上記のような手順となっております。

仮想HDDのHDD容量を変更する

 利用している仮想環境に合わせて仮想HDDの設定を変更してください。

例ではESXi v5.5環境での手順です。



partition sizeを拡張する。(VM ubuntuでの操作。)

 (parted) resizepart コマンドで partition size を拡張する。


手順の流れは次の通り。

  1. deviceの状態を確認する。 ⇒ (parted) print all
  2. 指定sizeの単位を設定する。⇒ (parted) unit
  3. sizeを拡張する。 ⇒ (parted) resizepart
  4. 拡張した結果を確認する。(parted)print all
	$ sudo parted /dev/sda
	GNU Parted 3.2
	Using /dev/sda
	Welcome to GNU Parted! Type 'help' to view a list of commands.
	(parted) print all
	Model: VMware Virtual disk (scsi)
	Disk /dev/sda: 34.4GB
	Sector size (logical/physical): 512B/512B
	Partition Table: gpt
	Disk Flags:
	
	Number  Start   End     Size    File system  Name  Flags
	 1      1049kB  2097kB  1049kB                     bios_grub
	 2      2097kB  1076MB  1074MB  ext4
	 3      1076MB  17.2GB  16.1GB
	
	
	Model: Linux device-mapper (linear) (dm)
	Disk /dev/mapper/ubuntu--vg-ubuntu--lv: 4295MB
	Sector size (logical/physical): 512B/512B
	Partition Table: loop
	Disk Flags:
	
	Number  Start  End     Size    File system  Flags
	 1      0.00B  4295MB  4295MB  ext4
	
	
	(parted) unit
	Unit?  [compact]?
	(parted) help unit
	  unit UNIT                                set the default unit to UNIT
	
	        UNIT is one of: s, B, kB, MB, GB, TB, compact, cyl, chs, %, kiB, MiB, GiB, TiB
	(parted) unit GB
	(parted) resizepart 3 34.4GB
	(parted) print all
	Model: VMware Virtual disk (scsi)
	Disk /dev/sda: 34.4GB
	Sector size (logical/physical): 512B/512B
	Partition Table: gpt
	Disk Flags:
	
	Number  Start   End     Size    File system  Name  Flags
	 1      0.00GB  0.00GB  0.00GB                     bios_grub
	 2      0.00GB  1.08GB  1.07GB  ext4
	 3      1.08GB  34.4GB  33.3GB
	
	
	Model: Linux device-mapper (linear) (dm)
	Disk /dev/mapper/ubuntu--vg-ubuntu--lv: 4.29GB
	Sector size (logical/physical): 512B/512B
	Partition Table: loop
	Disk Flags:
	
	Number  Start   End     Size    File system  Flags
	 1      0.00GB  4.29GB  4.29GB  ext4
	
	
	(parted)q

(LVM) LVMを拡張する。(VM ubuntuでの操作。)

 拡張したpartition
sizeLVM で利用できるように設定する。

手順の流れは次の通り。

PV sizeの拡張

  1. PVの状態を確認する。 ⇒ pvdisplay
  2. PVのsizeを拡張する。 ⇒ pvresize
  3. 拡張した結果を確認する。pvdisplay

◆LV sizeの拡張

  1. LVの状態を確認する。 ⇒ lvdisplay
  2. LVのsizeを拡張する。 ⇒ lvextend
  3. 拡張した結果を確認する。lvdisplay


PV sizeの拡張

	$ sudo pvdisplay
	  --- Physical volume ---
	  PV Name               /dev/sda3
	  VG Name               ubuntu-vg
	  PV Size               <15.00 GiB / not usable 0
	  Allocatable           yes
	  PE Size               4.00 MiB
	  Total PE              3839
	  Free PE               2815
	  Allocated PE          1024
	  PV UUID               G4pi2r-wlRi-8t5Y-pcaF-H47v-3uX4-4ylWLd
	
	$ sudo pvresize /dev/sda3
	  Physical volume "/dev/sda3" changed
	  1 physical volume(s) resized / 0 physical volume(s) not resized
	
	$ sudo pvdisplay
	  --- Physical volume ---
	  PV Name               /dev/sda3
	  VG Name               ubuntu-vg
	  PV Size               <31.00 GiB / not usable 16.50 KiB
	  Allocatable           yes
	  PE Size               4.00 MiB
	  Total PE              7935
	  Free PE               6911
	  Allocated PE          1024
	  PV UUID               G4pi2r-wlRi-8t5Y-pcaF-H47v-3uX4-4ylWLd


もし、PVサイズを指定する場合は次のコマンドを利用すれば良い。

>pvresize –setphysicalvolumesize [size] [device]

$ sudo pvresize --setphysicalvolumesize 20G /dev/sda3

◆LV sizeの拡張

$ sudo lvdisplay
	  --- Logical volume ---
	  LV Path                /dev/ubuntu-vg/ubuntu-lv
	  LV Name                ubuntu-lv
	  VG Name                ubuntu-vg
	  LV UUID                H6hjX4-uFx2-HWxw-o7H3-rXDU-VI4a-lt4tL6
	  LV Write Access        read/write
	  LV Creation host, time ubuntu-server, 2018-09-23 23:10:39 +0000
	  LV Status              available
	  # open                 1
	  LV Size                4.00 GiB
	  Current LE             1024
	  Segments               1
	  Allocation             inherit
	  Read ahead sectors     auto
	  - currently set to     256
	  Block device           253:0
	
	$ sudo lvextend -l 100%FREE /dev/ubuntu-vg/ubuntu-lv
	  Size of logical volume ubuntu-vg/ubuntu-lv changed from 4.00 GiB (1024 extents) to <27.00 GiB (6911 extents).
	  Logical volume ubuntu-vg/ubuntu-lv successfully resized.
	
	$ sudo lvdisplay
	  --- Logical volume ---
	  LV Path                /dev/ubuntu-vg/ubuntu-lv
	  LV Name                ubuntu-lv
	  VG Name                ubuntu-vg
	  LV UUID                H6hjX4-uFx2-HWxw-o7H3-rXDU-VI4a-lt4tL6
	  LV Write Access        read/write
	  LV Creation host, time ubuntu-server, 2018-09-23 23:10:39 +0000
	  LV Status              available
	  # open                 1
	  LV Size                <27.00 GiB
	  Current LE             6911
	  Segments               1
	  Allocation             inherit
	  Read ahead sectors     auto
	  - currently set to     256
	  Block device           253:0

拡張した領域をFile systemへ反映する。(VM ubuntuでの操作。)

 拡張した領域をFile systemへ反映する。


手順の流れは次の通り。

  1. File systemのチェック。 ⇒ e2fsck
  2. File systemへ反映する。 ⇒ resize2fe
  3. 反映した結果を確認する。df
$ sudo e2fsck -f /dev/ubuntu-vg/ubuntu-lv
	e2fsck 1.44.1 (24-Mar-2018)
	/dev/ubuntu-vg/ubuntu-lv is mounted.
	e2fsck: Cannot continue, aborting.
	
	
	$ sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
	resize2fs 1.44.1 (24-Mar-2018)
	Filesystem at /dev/ubuntu-vg/ubuntu-lv is mounted on /; on-line resizing required
	old_desc_blocks = 1, new_desc_blocks = 4
	The filesystem on /dev/ubuntu-vg/ubuntu-lv is now 7076864 (4k) blocks long.
	
	$ df -h
	Filesystem                         Size  Used Avail Use% Mounted on
	udev                               464M     0  464M   0% /dev
	tmpfs                               99M  1.1M   98M   2% /run
	/dev/mapper/ubuntu--vg-ubuntu--lv   27G  3.6G   22G  14% /
	tmpfs                              493M     0  493M   0% /dev/shm
	tmpfs                              5.0M     0  5.0M   0% /run/lock
	tmpfs                              493M     0  493M   0% /sys/fs/cgroup
	/dev/loop0                          88M   88M     0 100% /snap/core/5548
	/dev/loop1                          88M   88M     0 100% /snap/core/5328
	/dev/loop2                          87M   87M     0 100% /snap/core/4917
	/dev/loop3                          58M   58M     0 100% /snap/powershell/11
	/dev/sda2                          976M  209M  701M  23% /boot
	tmpfs                               99M     0   99M   0% /run/user/1000

 

Ubuntu

Ubuntu でのリポジトリの追加手順

aptで見つからないパッケージあった場合に、リポジトリへ追加する手順のメモです。(ubuntu18.04)

Ubuntuパッケージ検索でリポジトリ情報を調べる。

http://packages.ubuntu.com/ja/

上記ページの検索窓にキーワードを入れて検索。(例はffmpeg)


[検索結果]


bionic (18.04LTS) (video): Tools for transcoding, streaming and playing of multimedia files [universe]

7:3.4.4-0ubuntu0.18.04.1 [security]: amd64 i386

7:3.4.2-2 [ports]: arm64 armhf ppc64el s390x

amd64, i386[universe] に含まれていることがわかる。

repositoryの追加

とりあえず、現在のrepository情報を確認する。

$ cat /etc/apt/sources.list
deb http://archive.ubuntu.com/ubuntu bionic main
deb http://archive.ubuntu.com/ubuntu bionic-security main
deb http://archive.ubuntu.com/ubuntu bionic-updates main

情報が無いようなので追加する。

$ sudo apt-add-repository universe
'universe' distribution component enabled for all sources.
Hit:1 http://archive.ubuntu.com/ubuntu bionic InRelease
Hit:2 http://archive.ubuntu.com/ubuntu bionic-security InRelease
Hit:3 http://archive.ubuntu.com/ubuntu bionic-updates InRelease
Get:4 http://archive.ubuntu.com/ubuntu bionic/universe amd64 Packages [8,570 kB]
Get:5 http://archive.ubuntu.com/ubuntu bionic/universe Translation-en [4,941 kB]
Get:6 http://archive.ubuntu.com/ubuntu bionic-security/universe amd64 Packages [74.7 kB]
Get:7 http://archive.ubuntu.com/ubuntu bionic-security/universe Translation-en [42.3 kB]
Get:8 http://archive.ubuntu.com/ubuntu bionic-updates/universe amd64 Packages [214 kB]
Get:9 http://archive.ubuntu.com/ubuntu bionic-updates/universe Translation-en [101 kB]
Fetched 13.9 MB in 15s (960 kB/s)

追加したリポジトリーの確認。

$ cat /etc/apt/sources.list
deb http://archive.ubuntu.com/ubuntu bionic main universe
deb http://archive.ubuntu.com/ubuntu bionic-security main universe
deb http://archive.ubuntu.com/ubuntu bionic-updates main universe

 

(参考情報)apt-add-repositoryの追加方法


もし、apt-add-repositoryが無い場合は次のコマンドでインストールする。

$ sudo apt apt-add-repository