Quantcast
Channel: mattintosh note
Viewing all articles
Browse latest Browse all 891

Cisco Packet Tracer 7.1.1 を Ubuntu 16.04 や Debian 9 以降にインストールする方法

$
0
0

f:id:mattintosh4:20180527001644p:plain

会社で CCENT/CCNAの教材作成用に Cisco Packet Tracer を使う用事があったので Linux版のインストール方法を残しておく。

Ubuntu 16.04 以降では Packet Tracer 7.1.1 をインストールしただけでは起動できない

Linux向けの Cisco Packet Tracer 7.1.1 は Ubuntu 14.04 を対象にしているようなので Ubuntu 16.04 以降の環境では一部のライブラリが存在せず起動できない。

installスクリプトによってインストールされた packettracerコマンドでは >/dev/null 2>&1となっているためエラーが出力されないが、PacketTracer7を直接実行するとライブラリが見つからないというエラーを確認することができる。

linus@ubuntu1804:~/Applications/pt-7.1.1$ LD_LIBRARY_PATH=lib bin/PacketTracer7  
bin/PacketTracer7: error while loading shared libraries: libpng12.so.0: cannot open shared object file: No such file or directory
linus@ubuntu1804:~/Applications/pt-7.1.1$ LD_LIBRARY_PATH=lib ldd bin/PacketTracer7 | grep "not found" | sort | uniq
        libicui18n.so.52 => not found
        libicuuc.so.52 => not found
        libpng12.so.0 => not found

Packet Tracer 7.1.1 を使用するにあたり、追加で必要になるライブラリは下記の通り。Kali Linux (MATE Edition) でも試したが libxslt が不足していたような気がする。

ディストリビューション追加で必要なライブラリ
Ubuntu 16.04.4 LTS xeniallibicui18n.so.52
libicuuc.so.52
Ubuntu 18.04 LTS bioniclibicui18n.so.52
libicuuc.so.52
libpng12.so.0
Debian 9libcrypto.so.1.0.0
libicui18n.so.52
libicuuc.so.52
libpng12.so.0
Kali Linux (Mate Edition)後日確認予定

Packet Tracer 7.1.1 のインストール

適当なディレクトリ(ここでは ~/Applications/pt-7.1.1とする)を作成して、その中に Packet Tracer 7.1.1 for Linux 64 bit.tar.gzを展開する。このとき savesディレクトリ以下に書き込み権限が無く、エラーを吐くので sudoで展開する。

mkdir-p ~/Applications/pt-7.1.1
cd       ~/Applications/pt-7.1.1
sudo tar xzf ~/Downloads/Packet\ Tracer\ 7.1.1\ for\ Linux\ 64\ bit.tar.gz

展開直後のトップディレクトリの構成は下記の通り。

linus@ubuntu1804:~/Applications/pt-7.1.1$ tree -F -L 1
.
├── Sounds/
├── art/
├── backgrounds/
├── bin/
├── eula.txt
├── extensions/
├── help/
├── install*
├── languages/
├── lib/
├── saves/
├── set_ptenv.sh
├── set_qtenv.sh
├── templates/
├── tpl.linguist
└── tpl.packettracer

10 directories, 6 files

インストールはトップディレクトリにある installスクリプトを実行し、EULAを読んだ後にインストールディレクトリを指定する。「/usr/local/binpackettracerをインストールしますか?」のような質問をされるので「はい」にすれば LD_LIBRARY_PATHの設定をしてくれる /usr/local/bin/packettracerを配置してくれる。

./install

依存関係の解決

Packet Tracer 7.1.1 には Qt5 のライブラリが同梱されている。

linus@ubuntu1804:~/Applications/pt-7.1.1$ tree -F lib
lib
├── libQt5Core.so -> libQt5Core.so.5.5.1*
├── libQt5Core.so.5 -> libQt5Core.so.5.5.1*
├── libQt5Core.so.5.5 -> libQt5Core.so.5.5.1*
├── libQt5Core.so.5.5.1*
├── libQt5DBus.so -> libQt5DBus.so.5.5.1*
├── libQt5DBus.so.5 -> libQt5DBus.so.5.5.1*
├── libQt5DBus.so.5.5 -> libQt5DBus.so.5.5.1*
├── libQt5DBus.so.5.5.1*
├── libQt5Gui.so -> libQt5Gui.so.5.5.1*
├── libQt5Gui.so.5 -> libQt5Gui.so.5.5.1*
├── libQt5Gui.so.5.5 -> libQt5Gui.so.5.5.1*
├── libQt5Gui.so.5.5.1*
├── libQt5Multimedia.so -> libQt5Multimedia.so.5.5.1*
├── libQt5Multimedia.so.5 -> libQt5Multimedia.so.5.5.1*
├── libQt5Multimedia.so.5.5 -> libQt5Multimedia.so.5.5.1*
├── libQt5Multimedia.so.5.5.1*
├── libQt5MultimediaWidgets.so -> libQt5MultimediaWidgets.so.5.5.1*
├── libQt5MultimediaWidgets.so.5 -> libQt5MultimediaWidgets.so.5.5.1*
├── libQt5MultimediaWidgets.so.5.5 -> libQt5MultimediaWidgets.so.5.5.1*
├── libQt5MultimediaWidgets.so.5.5.1*
├── libQt5Network.so -> libQt5Network.so.5.5.1*
├── libQt5Network.so.5 -> libQt5Network.so.5.5.1*
├── libQt5Network.so.5.5 -> libQt5Network.so.5.5.1*
├── libQt5Network.so.5.5.1*
├── libQt5Positioning.so -> libQt5Positioning.so.5.5.1*
├── libQt5Positioning.so.5 -> libQt5Positioning.so.5.5.1*
├── libQt5Positioning.so.5.5 -> libQt5Positioning.so.5.5.1*
├── libQt5Positioning.so.5.5.1*
├── libQt5PrintSupport.so -> libQt5PrintSupport.so.5.5.1*
├── libQt5PrintSupport.so.5 -> libQt5PrintSupport.so.5.5.1*
├── libQt5PrintSupport.so.5.5 -> libQt5PrintSupport.so.5.5.1*
├── libQt5PrintSupport.so.5.5.1*
├── libQt5Script.so -> libQt5Script.so.5.5.1*
├── libQt5Script.so.5 -> libQt5Script.so.5.5.1*
├── libQt5Script.so.5.5 -> libQt5Script.so.5.5.1*
├── libQt5Script.so.5.5.1*
├── libQt5ScriptTools.so -> libQt5ScriptTools.so.5.5.1*
├── libQt5ScriptTools.so.5 -> libQt5ScriptTools.so.5.5.1*
├── libQt5ScriptTools.so.5.5 -> libQt5ScriptTools.so.5.5.1*
├── libQt5ScriptTools.so.5.5.1*
├── libQt5Sensors.so -> libQt5Sensors.so.5.5.1*
├── libQt5Sensors.so.5 -> libQt5Sensors.so.5.5.1*
├── libQt5Sensors.so.5.5 -> libQt5Sensors.so.5.5.1*
├── libQt5Sensors.so.5.5.1*
├── libQt5Sql.so -> libQt5Sql.so.5.5.1*
├── libQt5Sql.so.5 -> libQt5Sql.so.5.5.1*
├── libQt5Sql.so.5.5 -> libQt5Sql.so.5.5.1*
├── libQt5Sql.so.5.5.1*
├── libQt5Svg.so -> libQt5Svg.so.5.5.1*
├── libQt5Svg.so.5 -> libQt5Svg.so.5.5.1*
├── libQt5Svg.so.5.5 -> libQt5Svg.so.5.5.1*
├── libQt5Svg.so.5.5.1*
├── libQt5WebKit.so -> libQt5WebKit.so.5.5.1*
├── libQt5WebKit.so.5 -> libQt5WebKit.so.5.5.1*
├── libQt5WebKit.so.5.5 -> libQt5WebKit.so.5.5.1*
├── libQt5WebKit.so.5.5.1*
├── libQt5WebKitWidgets.so -> libQt5WebKitWidgets.so.5.5.1*
├── libQt5WebKitWidgets.so.5 -> libQt5WebKitWidgets.so.5.5.1*
├── libQt5WebKitWidgets.so.5.5 -> libQt5WebKitWidgets.so.5.5.1*
├── libQt5WebKitWidgets.so.5.5.1*
├── libQt5Widgets.so -> libQt5Widgets.so.5.5.1*
├── libQt5Widgets.so.5 -> libQt5Widgets.so.5.5.1*
├── libQt5Widgets.so.5.5 -> libQt5Widgets.so.5.5.1*
├── libQt5Widgets.so.5.5.1*
├── libQt5XcbQpa.so -> libQt5XcbQpa.so.5.5.1*
├── libQt5XcbQpa.so.5 -> libQt5XcbQpa.so.5.5.1*
├── libQt5XcbQpa.so.5.5 -> libQt5XcbQpa.so.5.5.1*
├── libQt5XcbQpa.so.5.5.1*
├── libQt5Xml.so -> libQt5Xml.so.5.5.1*
├── libQt5Xml.so.5 -> libQt5Xml.so.5.5.1*
├── libQt5Xml.so.5.5 -> libQt5Xml.so.5.5.1*
└── libQt5Xml.so.5.5.1*

0 directories, 72 files

packettracerコマンドのソースである tpl.packettracerを見ると LD_LIBRARY_PATHでインストール先の libディレクトリを参照するになっている。

#!/bin/bashecho Starting Packet Tracer 7.1.1PTDIR=III
export LD_LIBRARY_PATH=$PTDIR/lib
pushd$PTDIR/bin > /dev/null
./PacketTracer7 "$@"> /dev/null 2>&1popd> /dev/null

どのライブラリが足りないのかを lddを使って確認する。

Ubuntu 16.04〉

libicuuc.so.52は libicu52 に含まれるのでこれは libicu52 のパッケージを入れれば解決できる。

linus@ubuntu1604:~/Applications/pt-7.1.1$ LD_LIBRARY_PATH=lib ldd bin/PacketTracer7 | grep "not found" | sort | uniq
        libicui18n.so.52 => not found
        libicuuc.so.52 => not found

Ubuntu 18.04〉

Ubuntu 18.04 の場合は libicu52 に加え、libpng12 が不足している。

linus@ubuntu1804:~/Applications/pt-7.1.1$ LD_LIBRARY_PATH=lib ldd bin/PacketTracer7 | grep "not found" | sort | uniq
        libicui18n.so.52 => not found
        libicuuc.so.52 => not found
        libpng12.so.0 => not found

Debian 9〉

Debian 9 の場合は更に libcrypto.so.1.0.0が不足しているが、これは libssl-1.0.0 に含まれる。

linus@debian9:~/Applications/pt-7.1.1$ LD_LIBRARY_PATH=lib ldd bin/PacketTracer7  | grep "not found" | sort | uniq
        libcrypto.so.1.0.0 => not found
        libicui18n.so.52 => not found
        libicuuc.so.52 => not found
        libpng12.so.0 => not found

依存関係のパッケージの入手

いずれのディストリビューションも libicu52 を必要とするが、APT でインストールできるのは libicu55 や libicu57 以降になっている。

linus@ubuntu1604:~/Applications/pt-7.1.1$ apt-cache search libicu
icu-devtools - Development utilities for International Components for Unicode
libicu-dev - Development files for International Components for Unicode
libicu55 - International Components for Unicode
libicu55-dbg - International Components for Unicode
libicu4j-4.4-java - Library for Unicode support and internationalization
libicu4j-49-java - Library for Unicode support and internationalization
libicu4j-java - Library for Unicode support and internationalization

そこで、http://ftp.jaist.ac.jpあたりから対象パッケージの DEBファイルをダウンロードしてくる。

Ubuntu

※以降、Ubuntu 16.04 の場合は libpng12 は最初からインストールされているので読み飛ばしてかまわない。

wget http://ftp.jaist.ac.jp/pub/Linux/ubuntu/pool/main/i/icu/libicu52_52.1-3ubuntu0.8_amd64.deb
wget http://ftp.jaist.ac.jp/pub/Linux/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1_amd64.deb

Debian

Debian 9 の場合は libssl-1.0.0 もダウンロードする。

wget http://ftp.jaist.ac.jp/pub/Linux/debian/pool/main/i/icu/libicu52_52.1-8+deb8u7_amd64.deb
wget http://ftp.jaist.ac.jp/pub/Linux/debian/pool/main/libp/libpng/libpng12-0_1.2.50-2+deb8u3_amd64.deb
wget http://ftp.jaist.ac.jp/pub/Linux/debian/pool/main/o/openssl/libssl1.0.0_1.0.2l-1~bpo8+1_amd64.deb

依存関係のインストール

Ubuntu

libicu52、libpng12 は現行バージョンと名前が異なるため衝突しないと思われるので dpkgコマンドでインストールする。詳細な検証はしていないのでパッケージをインストールしたくない場合は下の手動配置方法を参照。

sudo dpkg -i libicu52_52.1-3ubuntu0.8_amd64.deb
sudo dpkg -i libpng12-0_1.2.54-1ubuntu1_amd64.deb

Debian

dpkg -i libicu52_52.1-8+deb8u7_amd64.deb
dpkg -i libpng12-0_1.2.50-2+deb8u3_amd64.deb 
dpkg -i libssl1.0.0_1.0.2l-1~bpo8+1_amd64.deb

これで Packet Tracer 7.1.1 が起動できるようになる。

【番外編】 Packet Tracer とライブラリを手動で配置する方法

パッケージをインストールをしたくない場合は DEBファイルからライブラリだけを取り出せばよい。DEBパッケージの中にある data.tar.xzを取り出して中を見てみる。libicu52 の場合、必要になるのは ./usr/lib/x86_64-linux-gnu以下にあるものだけ。

linus@ubuntu1804:~/Applications/pt-7.1.1$ ar p libicu52_52.1-3ubuntu0.8_amd64.deb data.tar.xz | xz -dc | tar tvf -  | sort -k6
drwxr-xr-x root/root         0 2018-03-28 01:08 ./
drwxr-xr-x root/root         0 2018-03-28 01:08 ./usr/
drwxr-xr-x root/root         0 2018-03-28 01:08 ./usr/lib/
drwxr-xr-x root/root         0 2018-03-28 01:08 ./usr/lib/x86_64-linux-gnu/
lrwxrwxrwx root/root         0 2018-03-28 01:08 ./usr/lib/x86_64-linux-gnu/libicudata.so.52 -> libicudata.so.52.1
-rw-r--r-- root/root  23512848 2018-03-28 01:08 ./usr/lib/x86_64-linux-gnu/libicudata.so.52.1
lrwxrwxrwx root/root         0 2018-03-28 01:08 ./usr/lib/x86_64-linux-gnu/libicui18n.so.52 -> libicui18n.so.52.1
-rw-r--r-- root/root   2121040 2018-03-28 01:08 ./usr/lib/x86_64-linux-gnu/libicui18n.so.52.1
lrwxrwxrwx root/root         0 2018-03-28 01:08 ./usr/lib/x86_64-linux-gnu/libicuio.so.52 -> libicuio.so.52.1
-rw-r--r-- root/root     55304 2018-03-28 01:08 ./usr/lib/x86_64-linux-gnu/libicuio.so.52.1
lrwxrwxrwx root/root         0 2018-03-28 01:08 ./usr/lib/x86_64-linux-gnu/libicule.so.52 -> libicule.so.52.1
-rw-r--r-- root/root    358408 2018-03-28 01:08 ./usr/lib/x86_64-linux-gnu/libicule.so.52.1
lrwxrwxrwx root/root         0 2018-03-28 01:08 ./usr/lib/x86_64-linux-gnu/libiculx.so.52 -> libiculx.so.52.1
-rw-r--r-- root/root     47112 2018-03-28 01:08 ./usr/lib/x86_64-linux-gnu/libiculx.so.52.1
lrwxrwxrwx root/root         0 2018-03-28 01:08 ./usr/lib/x86_64-linux-gnu/libicutest.so.52 -> libicutest.so.52.1
-rw-r--r-- root/root     64864 2018-03-28 01:08 ./usr/lib/x86_64-linux-gnu/libicutest.so.52.1
lrwxrwxrwx root/root         0 2018-03-28 01:08 ./usr/lib/x86_64-linux-gnu/libicutu.so.52 -> libicutu.so.52.1
-rw-r--r-- root/root    195344 2018-03-28 01:08 ./usr/lib/x86_64-linux-gnu/libicutu.so.52.1
lrwxrwxrwx root/root         0 2018-03-28 01:08 ./usr/lib/x86_64-linux-gnu/libicuuc.so.52 -> libicuuc.so.52.1
-rw-r--r-- root/root   1525776 2018-03-28 01:08 ./usr/lib/x86_64-linux-gnu/libicuuc.so.52.1
drwxr-xr-x root/root         0 2018-03-28 01:08 ./usr/share/
drwxr-xr-x root/root         0 2018-03-28 01:08 ./usr/share/doc/
drwxr-xr-x root/root         0 2018-03-28 01:08 ./usr/share/doc/libicu52/
-rw-r--r-- root/root       317 2013-12-25 01:45 ./usr/share/doc/libicu52/NEWS.Debian.gz
-rw-r--r-- root/root      1807 2018-03-28 01:08 ./usr/share/doc/libicu52/changelog.Debian.gz
-rw-r--r-- root/root      7016 2013-12-25 01:45 ./usr/share/doc/libicu52/copyright
drwxr-xr-x root/root         0 2018-03-28 01:08 ./usr/share/lintian/
drwxr-xr-x root/root         0 2018-03-28 01:08 ./usr/share/lintian/overrides/
-rw-r--r-- root/root       176 2013-12-25 01:45 ./usr/share/lintian/overrides/libicu52

DEBファイルからライブラリだけを取り出すが、その際、--strip-components=2オプションで2階層ほど削って展開することで余計なファイル移動を省略する。--strip-components=3で、もう一段階削って lib直下に libicu52 のライブラリを展開するようにしてもいいが、なんとなく分けたかったので lib/x86_64-linux-gnu以下に展開するようにする。(paxコマンドがあればそちらでパスを変換して取り出すのもあり)

ar p libicu52_52.1-3ubuntu0.8_amd64.deb data.tar.xz | xz -dc | tar xf - --wildcards'*/lib/x86_64-linux-gnu/*'--strip-components=2

これで libの直下に x86_64-linux-gnuディレクトリが作成され、libicu52 のライブラリが展開される。

linus@ubuntu1804:~/Applications/pt-7.1.1$ tree -F lib
lib
├── libQt5Core.so -> libQt5Core.so.5.5.1*
├── libQt5Core.so.5 -> libQt5Core.so.5.5.1*
├── libQt5Core.so.5.5 -> libQt5Core.so.5.5.1*
├── libQt5Core.so.5.5.1*
:
中略
:
└── x86_64-linux-gnu/
    ├── libicudata.so.52 -> libicudata.so.52.1
    ├── libicudata.so.52.1
    ├── libicui18n.so.52 -> libicui18n.so.52.1
    ├── libicui18n.so.52.1
    ├── libicuio.so.52 -> libicuio.so.52.1
    ├── libicuio.so.52.1
    ├── libicule.so.52 -> libicule.so.52.1
    ├── libicule.so.52.1
    ├── libiculx.so.52 -> libiculx.so.52.1
    ├── libiculx.so.52.1
    ├── libicutest.so.52 -> libicutest.so.52.1
    ├── libicutest.so.52.1
    ├── libicutu.so.52 -> libicutu.so.52.1
    ├── libicutu.so.52.1
    ├── libicuuc.so.52 -> libicuuc.so.52.1
    └── libicuuc.so.52.1

1 directory, 88 files

libpng12 もライブラリだけを取り出すことができるが、こちらは /usr/lib/x86_64-linux-gnuにあるのはシンボリックリンクで、実体は ./lib/x86_64-linux-gnu/libpng12.so.0になっている。

linus@ubuntu1804:~/Applications/pt-7.1.1$ ar p libpng12-0_1.2.54-1ubuntu1_amd64.deb data.tar.xz | xz -dc | tar tvf - --wildcards '*/x86_64-linux-gnu/*' | sort -k6
lrwxrwxrwx root/root         0 2016-01-07 03:08 ./lib/x86_64-linux-gnu/libpng12.so.0 -> libpng12.so.0.54.0
-rw-r--r-- root/root    149904 2016-01-07 03:08 ./lib/x86_64-linux-gnu/libpng12.so.0.54.0
lrwxrwxrwx root/root         0 2016-01-07 03:08 ./usr/lib/x86_64-linux-gnu/libpng12.so.0 -> /lib/x86_64-linux-gnu/libpng12.so.0

シンボリックリンクの方は展開しても意味が無いので ./lib/x86_64-linux-gnuだけを展開する。これはそのまま展開すれば相対パスでちょうどよく lib/x86_64-linux-gnuに配置される。

ar p libpng12-0_1.2.54-1ubuntu1_amd64.deb data.tar.xz | xz -dc | tar xf - --wildcards'./lib/x86_64-linux-gnu/*'
linus@ubuntu1804:~/Applications/pt-7.1.1$ tree -F lib
lib
:
中略
:
└── x86_64-linux-gnu/
    :
    中略
    :
    ├── libpng12.so.0 -> libpng12.so.0.54.0
    └── libpng12.so.0.54.0

1 directory, 90 files

Debian 9 の場合は arコマンドが無いので busybox arを使う。

busybox ar p libicu52_52.1-8+deb8u7_amd64.deb data.tar.xz      | xz -dc | tar xf - --wildcards'*/lib/x86_64-linux-gnu/*'--strip-components=2
busybox ar p libpng12-0_1.2.50-2+deb8u3_amd64.deb data.tar.xz  | xz -dc | tar xf - --wildcards'./lib/x86_64-linux-gnu/*'
busybox ar p libssl1.0.0_1.0.2l-1~bpo8+1_amd64.deb data.tar.xz | xz -dc | tar xf - --wildcards'*/libcrypto.so.1.0.0'--strip-components=2

ライブラリだけを取り出しても通常のインストールとは異なるため packettracerコマンドを自作する。これはルートディレクトリにある tpl.packettracerを参考に変更すればよい。

〈packettracer〉

libicu52 や libpng12 のライブラリを lib/x86_64-linux-gnuの下に配置したので、LD_LIBRARY_PATHx86_64-gnu-linuxディレクトリを追加する必要がある。tpl.packettracerでは pushdpopd相対パスで実行するようになっていたが、気に入らなかったのでフルパス呼び出しに変更した。

PT7HOME環境変数QT_DEVICE_PIXEL_RATIO環境変数installスクリプトを使用したときに、同ディレクトリにある set_qtenv.shset_ptenv.shによって必要に応じて /etc/profileに書き出されるもの。これも一応追加しておく。

#!/bin/bashPTDIR=$(cd"$(dirname "$0")"&& pwd)export LD_LIBRARY_PATH=$PTDIR/lib/x86_64-linux-gnu:$PTDIR/lib
export PT7HOME=$PTDIRexport QT_DEVICE_PIXEL_RATIO=auto
exec"$PTDIR"/bin/PacketTracer7 "$@">/dev/null 2>&1

このスクリプトpackettracerという名前で実行権限を付与して実行すれば Packet Tracer が起動する。

chmod+x packettracer
./packettracer

続いて、デスクトップエントリも自分で配置する。

cp bin/Cisco-PacketTracer.desktop ~/.local/share/applications

packettracer/usr/local/binに配置していないので適切なパスに変更する。また、インストール先を /opt/ptから変更しているのでアイコンのパスも変更しておく。

〈~/.local/share/applications/Cisco-PacketTracer.desktop〉

[Desktop Entry]Encoding=UTF-8
Type=Application#Exec=packettracer %FExec=/home/linus/Applications/pt-7.1.1/packettracer %F#Icon=/opt/pt/art/app.pngIcon=/home/linus/Applications/pt-7.1.1/art/app.png

Name=Cisco Packet Tracer
Categories=Application;Network;

MimeType=application/x-pkt;application/x-pka;application/x-pkz;

デスクトップファイルのデータベースを更新する。

update-desktop-database ~/.local/share/applications

これでアプリケーションメニューに「Cisco Packet Tracer」が表示されるようになる。

f:id:mattintosh4:20180527001525p:plain


任意のパッケージだけ APT に追加できたような気がするけど忘れた。

VirtualBoxでゲストの Ubuntuに Packet Tracer をインストールして X11転送でホスト側に持ってきてみたけどまぁまぁ動くのでアプリケーションサーバとして稼働させておけば複数台にインストールする手間が省けるかも。

f:id:mattintosh4:20180527012646p:plain


Viewing all articles
Browse latest Browse all 891

Trending Articles