ghostbsd で laravel +VScodeの環境を整える。
お手軽GhostBSD。いいですね。
古いノートPCに入れて日本語環境を整えると私のサーバ管理作業の大半をこなせます。
ソフトウェア開発をするにあたっても、VSCodeが入ります。
VSCode は特に苦労しなかったので割愛しますが、Laravelともなると、例の shell スクリプト一発というわけにも行きません。
悪いなノビタ、これはLinux用なんだ
てなわけで、composer からコツコツと入れる作業をしましょう。
Feb 6 20:06:18 ghostbsd pkg[50737]: php82-8.2.27 installed
Feb 6 20:06:18 ghostbsd pkg[50737]: php82-ctype-8.2.27 installed
Feb 6 20:06:18 ghostbsd pkg[50737]: php82-curl-8.2.27 installed
Feb 6 20:06:19 ghostbsd pkg[50737]: php82-phar-8.2.27 installed
Feb 6 20:06:19 ghostbsd pkg[50737]: php82-mbstring-8.2.27 installed
Feb 6 20:06:19 ghostbsd pkg[50737]: php82-intl-8.2.27 installed
Feb 6 20:06:19 ghostbsd pkg[50737]: php82-filter-8.2.27 installed
Feb 6 20:06:19 ghostbsd pkg[50737]: php82-composer-2.8.4 installed
- composer は pkg install devel/composer で入りますが、お供がphp本体,ctype,curl,phar,mbstring,intl,filter しかついてきません。
- laravel を最低限動かすには、以下入れていく必要があります。
- databases: pdo,sqlite3(mysqli,postgresql..) pdoは必須ですね。
- devel: tokenizer
- sysutils: fileinfo
- textproc: dom,xml,xmlwriter
これらを入れてようやく動くのですが・・・
strnh@hiko-ghostbsd ~> composer create-project laravel/laravel example-app
Creating a "laravel/laravel" project at "./example-app"
Installing laravel/laravel (v11.6.1)
- Downloading laravel/laravel (v11.6.1)
- Installing laravel/laravel (v11.6.1): Extracting archive
Created project in /home/strnh/example-app
> @php -r "file_exists('.env') || copy('.env.example', '.env');"
Loading composer repositories with package information
Updating dependencies
Lock file operations: 110 installs, 0 updates, 0 removals
- Locking brick/math (0.12.1)
- Locking carbonphp/carbon-doctrine-types (3.2.0)
- Locking dflydev/dot-access-data (v3.0.3)
- Locking doctrine/inflector (2.0.10)
- Locking doctrine/lexer (3.0.1)
- Locking dragonmantank/cron-expression (v3.4.0)
- Locking egulias/email-validator (4.0.3)
- Locking fakerphp/faker (v1.24.1)
- Locking filp/whoops (2.17.0)
- Locking fruitcake/php-cors (v1.3.0)
- Locking graham-campbell/result-type (v1.1.3)
- Locking guzzlehttp/guzzle (7.9.2)
- Locking guzzlehttp/promises (2.0.4)
- Locking guzzlehttp/psr7 (2.7.0)
- Locking guzzlehttp/uri-template (v1.0.4)
- Locking hamcrest/hamcrest-php (v2.0.1)
- Locking laravel/framework (v11.41.3)
- Locking laravel/pail (v1.2.2)
- Locking laravel/pint (v1.20.0)
- Locking laravel/prompts (v0.3.4)
- Locking laravel/sail (v1.41.0)
- Locking laravel/serializable-closure (v2.0.2)
- Locking laravel/tinker (v2.10.1)
- Locking league/commonmark (2.6.1)
- Locking league/config (v1.2.0)
- Locking league/flysystem (3.29.1)
- Locking league/flysystem-local (3.29.0)
- Locking league/mime-type-detection (1.16.0)
- Locking league/uri (7.5.1)
- Locking league/uri-interfaces (7.5.0)
- Locking mockery/mockery (1.6.12)
- Locking monolog/monolog (3.8.1)
- Locking myclabs/deep-copy (1.12.1)
- Locking nesbot/carbon (3.8.4)
- Locking nette/schema (v1.3.2)
- Locking nette/utils (v4.0.5)
- Locking nikic/php-parser (v5.4.0)
- Locking nunomaduro/collision (v8.6.1)
- Locking nunomaduro/termwind (v2.3.0)
- Locking phar-io/manifest (2.0.4)
- Locking phar-io/version (3.2.1)
- Locking phpoption/phpoption (1.9.3)
- Locking phpunit/php-code-coverage (11.0.8)
- Locking phpunit/php-file-iterator (5.1.0)
- Locking phpunit/php-invoker (5.0.1)
- Locking phpunit/php-text-template (4.0.1)
- Locking phpunit/php-timer (7.0.1)
- Locking phpunit/phpunit (11.5.7)
- Locking psr/clock (1.0.0)
- Locking psr/container (2.0.2)
- Locking psr/event-dispatcher (1.0.0)
- Locking psr/http-client (1.0.3)
- Locking psr/http-factory (1.1.0)
- Locking psr/http-message (2.0)
- Locking psr/log (3.0.2)
- Locking psr/simple-cache (3.0.0)
- Locking psy/psysh (v0.12.7)
- Locking ralouphie/getallheaders (3.0.3)
- Locking ramsey/collection (2.0.0)
- Locking ramsey/uuid (4.7.6)
- Locking sebastian/cli-parser (3.0.2)
- Locking sebastian/code-unit (3.0.2)
- Locking sebastian/code-unit-reverse-lookup (4.0.1)
- Locking sebastian/comparator (6.3.0)
- Locking sebastian/complexity (4.0.1)
- Locking sebastian/diff (6.0.2)
- Locking sebastian/environment (7.2.0)
- Locking sebastian/exporter (6.3.0)
- Locking sebastian/global-state (7.0.2)
- Locking sebastian/lines-of-code (3.0.1)
- Locking sebastian/object-enumerator (6.0.1)
- Locking sebastian/object-reflector (4.0.1)
- Locking sebastian/recursion-context (6.0.2)
- Locking sebastian/type (5.1.0)
- Locking sebastian/version (5.0.2)
- Locking staabm/side-effects-detector (1.0.5)
- Locking symfony/clock (v7.2.0)
- Locking symfony/console (v7.2.1)
- Locking symfony/css-selector (v7.2.0)
- Locking symfony/deprecation-contracts (v3.5.1)
- Locking symfony/error-handler (v7.2.3)
- Locking symfony/event-dispatcher (v7.2.0)
- Locking symfony/event-dispatcher-contracts (v3.5.1)
- Locking symfony/finder (v7.2.2)
- Locking symfony/http-foundation (v7.2.3)
- Locking symfony/http-kernel (v7.2.3)
- Locking symfony/mailer (v7.2.3)
- Locking symfony/mime (v7.2.3)
- Locking symfony/polyfill-ctype (v1.31.0)
- Locking symfony/polyfill-intl-grapheme (v1.31.0)
- Locking symfony/polyfill-intl-idn (v1.31.0)
- Locking symfony/polyfill-intl-normalizer (v1.31.0)
- Locking symfony/polyfill-mbstring (v1.31.0)
- Locking symfony/polyfill-php80 (v1.31.0)
- Locking symfony/polyfill-php83 (v1.31.0)
- Locking symfony/polyfill-uuid (v1.31.0)
- Locking symfony/process (v7.2.0)
- Locking symfony/routing (v7.2.3)
- Locking symfony/service-contracts (v3.5.1)
- Locking symfony/string (v7.2.0)
- Locking symfony/translation (v7.2.2)
- Locking symfony/translation-contracts (v3.5.1)
- Locking symfony/uid (v7.2.0)
- Locking symfony/var-dumper (v7.2.3)
- Locking symfony/yaml (v7.2.3)
- Locking theseer/tokenizer (1.2.3)
- Locking tijsverkoyen/css-to-inline-styles (v2.3.0)
- Locking vlucas/phpdotenv (v5.6.1)
- Locking voku/portable-ascii (2.0.3)
- Locking webmozart/assert (1.11.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 110 installs, 0 updates, 0 removals
- Downloading doctrine/inflector (2.0.10)
- Downloading doctrine/lexer (3.0.1)
- Downloading symfony/polyfill-ctype (v1.31.0)
- Downloading webmozart/assert (1.11.0)
- Downloading dragonmantank/cron-expression (v3.4.0)
- Downloading symfony/deprecation-contracts (v3.5.1)
- Downloading psr/container (2.0.2)
- Downloading fakerphp/faker (v1.24.1)
- Downloading symfony/polyfill-php83 (v1.31.0)
- Downloading symfony/polyfill-mbstring (v1.31.0)
- Downloading symfony/http-foundation (v7.2.3)
- Downloading fruitcake/php-cors (v1.3.0)
- Downloading psr/http-message (2.0)
- Downloading psr/http-client (1.0.3)
- Downloading ralouphie/getallheaders (3.0.3)
- Downloading psr/http-factory (1.1.0)
- Downloading guzzlehttp/psr7 (2.7.0)
- Downloading guzzlehttp/promises (2.0.4)
- Downloading guzzlehttp/guzzle (7.9.2)
- Downloading symfony/polyfill-php80 (v1.31.0)
- Downloading guzzlehttp/uri-template (v1.0.4)
- Downloading symfony/polyfill-intl-normalizer (v1.31.0)
- Downloading symfony/polyfill-intl-grapheme (v1.31.0)
- Downloading symfony/string (v7.2.0)
- Downloading symfony/service-contracts (v3.5.1)
- Downloading symfony/console (v7.2.1)
- Downloading nunomaduro/termwind (v2.3.0)
- Downloading voku/portable-ascii (2.0.3)
- Downloading phpoption/phpoption (1.9.3)
- Downloading graham-campbell/result-type (v1.1.3)
- Downloading vlucas/phpdotenv (v5.6.1)
- Downloading symfony/css-selector (v7.2.0)
- Downloading tijsverkoyen/css-to-inline-styles (v2.3.0)
- Downloading symfony/var-dumper (v7.2.3)
- Downloading symfony/polyfill-uuid (v1.31.0)
- Downloading symfony/uid (v7.2.0)
- Downloading symfony/routing (v7.2.3)
- Downloading symfony/process (v7.2.0)
- Downloading symfony/polyfill-intl-idn (v1.31.0)
- Downloading symfony/mime (v7.2.3)
- Downloading psr/event-dispatcher (1.0.0)
- Downloading symfony/event-dispatcher-contracts (v3.5.1)
- Downloading symfony/event-dispatcher (v7.2.0)
- Downloading psr/log (3.0.2)
- Downloading egulias/email-validator (4.0.3)
- Downloading symfony/mailer (v7.2.3)
- Downloading symfony/error-handler (v7.2.3)
- Downloading symfony/http-kernel (v7.2.3)
- Downloading symfony/finder (v7.2.2)
- Downloading ramsey/collection (2.0.0)
- Downloading brick/math (0.12.1)
- Downloading ramsey/uuid (4.7.6)
- Downloading psr/simple-cache (3.0.0)
- Downloading symfony/translation-contracts (v3.5.1)
- Downloading symfony/translation (v7.2.2)
- Downloading psr/clock (1.0.0)
- Downloading symfony/clock (v7.2.0)
- Downloading carbonphp/carbon-doctrine-types (3.2.0)
- Downloading nesbot/carbon (3.8.4)
- Downloading monolog/monolog (3.8.1)
- Downloading league/uri-interfaces (7.5.0)
- Downloading league/uri (7.5.1)
- Downloading league/mime-type-detection (1.16.0)
- Downloading league/flysystem-local (3.29.0)
- Downloading league/flysystem (3.29.1)
- Downloading nette/utils (v4.0.5)
- Downloading nette/schema (v1.3.2)
- Downloading dflydev/dot-access-data (v3.0.3)
- Downloading league/config (v1.2.0)
- Downloading league/commonmark (2.6.1)
- Downloading laravel/serializable-closure (v2.0.2)
- Downloading laravel/prompts (v0.3.4)
- Downloading laravel/framework (v11.41.3)
- Downloading laravel/pail (v1.2.2)
- Downloading laravel/pint (v1.20.0)
- Downloading symfony/yaml (v7.2.3)
- Downloading laravel/sail (v1.41.0)
- Downloading nikic/php-parser (v5.4.0)
- Downloading psy/psysh (v0.12.7)
- Downloading laravel/tinker (v2.10.1)
- Downloading hamcrest/hamcrest-php (v2.0.1)
- Downloading mockery/mockery (1.6.12)
- Downloading filp/whoops (2.17.0)
- Downloading nunomaduro/collision (v8.6.1)
- Downloading staabm/side-effects-detector (1.0.5)
- Downloading sebastian/version (5.0.2)
- Downloading sebastian/type (5.1.0)
- Downloading sebastian/recursion-context (6.0.2)
- Downloading sebastian/object-reflector (4.0.1)
- Downloading sebastian/object-enumerator (6.0.1)
- Downloading sebastian/global-state (7.0.2)
- Downloading sebastian/exporter (6.3.0)
- Downloading sebastian/environment (7.2.0)
- Downloading sebastian/diff (6.0.2)
- Downloading sebastian/comparator (6.3.0)
- Downloading sebastian/code-unit (3.0.2)
- Downloading sebastian/cli-parser (3.0.2)
- Downloading phpunit/php-timer (7.0.1)
- Downloading phpunit/php-text-template (4.0.1)
- Downloading phpunit/php-invoker (5.0.1)
- Downloading phpunit/php-file-iterator (5.1.0)
- Downloading theseer/tokenizer (1.2.3)
- Downloading sebastian/lines-of-code (3.0.1)
- Downloading sebastian/complexity (4.0.1)
- Downloading sebastian/code-unit-reverse-lookup (4.0.1)
- Downloading phpunit/php-code-coverage (11.0.8)
- Downloading phar-io/version (3.2.1)
- Downloading phar-io/manifest (2.0.4)
- Downloading myclabs/deep-copy (1.12.1)
- Downloading phpunit/phpunit (11.5.7)
- Installing doctrine/inflector (2.0.10): Extracting archive
- Installing doctrine/lexer (3.0.1): Extracting archive
- Installing symfony/polyfill-ctype (v1.31.0): Extracting archive
- Installing webmozart/assert (1.11.0): Extracting archive
- Installing dragonmantank/cron-expression (v3.4.0): Extracting archive
- Installing symfony/deprecation-contracts (v3.5.1): Extracting archive
- Installing psr/container (2.0.2): Extracting archive
- Installing fakerphp/faker (v1.24.1): Extracting archive
- Installing symfony/polyfill-php83 (v1.31.0): Extracting archive
- Installing symfony/polyfill-mbstring (v1.31.0): Extracting archive
- Installing symfony/http-foundation (v7.2.3): Extracting archive
- Installing fruitcake/php-cors (v1.3.0): Extracting archive
- Installing psr/http-message (2.0): Extracting archive
- Installing psr/http-client (1.0.3): Extracting archive
- Installing ralouphie/getallheaders (3.0.3): Extracting archive
- Installing psr/http-factory (1.1.0): Extracting archive
- Installing guzzlehttp/psr7 (2.7.0): Extracting archive
- Installing guzzlehttp/promises (2.0.4): Extracting archive
- Installing guzzlehttp/guzzle (7.9.2): Extracting archive
- Installing symfony/polyfill-php80 (v1.31.0): Extracting archive
- Installing guzzlehttp/uri-template (v1.0.4): Extracting archive
- Installing symfony/polyfill-intl-normalizer (v1.31.0): Extracting archive
- Installing symfony/polyfill-intl-grapheme (v1.31.0): Extracting archive
- Installing symfony/string (v7.2.0): Extracting archive
- Installing symfony/service-contracts (v3.5.1): Extracting archive
- Installing symfony/console (v7.2.1): Extracting archive
- Installing nunomaduro/termwind (v2.3.0): Extracting archive
- Installing voku/portable-ascii (2.0.3): Extracting archive
- Installing phpoption/phpoption (1.9.3): Extracting archive
- Installing graham-campbell/result-type (v1.1.3): Extracting archive
- Installing vlucas/phpdotenv (v5.6.1): Extracting archive
- Installing symfony/css-selector (v7.2.0): Extracting archive
- Installing tijsverkoyen/css-to-inline-styles (v2.3.0): Extracting archive
- Installing symfony/var-dumper (v7.2.3): Extracting archive
- Installing symfony/polyfill-uuid (v1.31.0): Extracting archive
- Installing symfony/uid (v7.2.0): Extracting archive
- Installing symfony/routing (v7.2.3): Extracting archive
- Installing symfony/process (v7.2.0): Extracting archive
- Installing symfony/polyfill-intl-idn (v1.31.0): Extracting archive
- Installing symfony/mime (v7.2.3): Extracting archive
- Installing psr/event-dispatcher (1.0.0): Extracting archive
- Installing symfony/event-dispatcher-contracts (v3.5.1): Extracting archive
- Installing symfony/event-dispatcher (v7.2.0): Extracting archive
- Installing psr/log (3.0.2): Extracting archive
- Installing egulias/email-validator (4.0.3): Extracting archive
- Installing symfony/mailer (v7.2.3): Extracting archive
- Installing symfony/error-handler (v7.2.3): Extracting archive
- Installing symfony/http-kernel (v7.2.3): Extracting archive
- Installing symfony/finder (v7.2.2): Extracting archive
- Installing ramsey/collection (2.0.0): Extracting archive
- Installing brick/math (0.12.1): Extracting archive
- Installing ramsey/uuid (4.7.6): Extracting archive
- Installing psr/simple-cache (3.0.0): Extracting archive
- Installing symfony/translation-contracts (v3.5.1): Extracting archive
- Installing symfony/translation (v7.2.2): Extracting archive
- Installing psr/clock (1.0.0): Extracting archive
- Installing symfony/clock (v7.2.0): Extracting archive
- Installing carbonphp/carbon-doctrine-types (3.2.0): Extracting archive
- Installing nesbot/carbon (3.8.4): Extracting archive
- Installing monolog/monolog (3.8.1): Extracting archive
- Installing league/uri-interfaces (7.5.0): Extracting archive
- Installing league/uri (7.5.1): Extracting archive
- Installing league/mime-type-detection (1.16.0): Extracting archive
- Installing league/flysystem-local (3.29.0): Extracting archive
- Installing league/flysystem (3.29.1): Extracting archive
- Installing nette/utils (v4.0.5): Extracting archive
- Installing nette/schema (v1.3.2): Extracting archive
- Installing dflydev/dot-access-data (v3.0.3): Extracting archive
- Installing league/config (v1.2.0): Extracting archive
- Installing league/commonmark (2.6.1): Extracting archive
- Installing laravel/serializable-closure (v2.0.2): Extracting archive
- Installing laravel/prompts (v0.3.4): Extracting archive
- Installing laravel/framework (v11.41.3): Extracting archive
- Installing laravel/pail (v1.2.2): Extracting archive
- Installing laravel/pint (v1.20.0): Extracting archive
- Installing symfony/yaml (v7.2.3): Extracting archive
- Installing laravel/sail (v1.41.0): Extracting archive
- Installing nikic/php-parser (v5.4.0): Extracting archive
- Installing psy/psysh (v0.12.7): Extracting archive
- Installing laravel/tinker (v2.10.1): Extracting archive
- Installing hamcrest/hamcrest-php (v2.0.1): Extracting archive
- Installing mockery/mockery (1.6.12): Extracting archive
- Installing filp/whoops (2.17.0): Extracting archive
- Installing nunomaduro/collision (v8.6.1): Extracting archive
- Installing staabm/side-effects-detector (1.0.5): Extracting archive
- Installing sebastian/version (5.0.2): Extracting archive
- Installing sebastian/type (5.1.0): Extracting archive
- Installing sebastian/recursion-context (6.0.2): Extracting archive
- Installing sebastian/object-reflector (4.0.1): Extracting archive
- Installing sebastian/object-enumerator (6.0.1): Extracting archive
- Installing sebastian/global-state (7.0.2): Extracting archive
- Installing sebastian/exporter (6.3.0): Extracting archive
- Installing sebastian/environment (7.2.0): Extracting archive
- Installing sebastian/diff (6.0.2): Extracting archive
- Installing sebastian/comparator (6.3.0): Extracting archive
- Installing sebastian/code-unit (3.0.2): Extracting archive
- Installing sebastian/cli-parser (3.0.2): Extracting archive
- Installing phpunit/php-timer (7.0.1): Extracting archive
- Installing phpunit/php-text-template (4.0.1): Extracting archive
- Installing phpunit/php-invoker (5.0.1): Extracting archive
- Installing phpunit/php-file-iterator (5.1.0): Extracting archive
- Installing theseer/tokenizer (1.2.3): Extracting archive
- Installing sebastian/lines-of-code (3.0.1): Extracting archive
- Installing sebastian/complexity (4.0.1): Extracting archive
- Installing sebastian/code-unit-reverse-lookup (4.0.1): Extracting archive
- Installing phpunit/php-code-coverage (11.0.8): Extracting archive
- Installing phar-io/version (3.2.1): Extracting archive
- Installing phar-io/manifest (2.0.4): Extracting archive
- Installing myclabs/deep-copy (1.12.1): Extracting archive
- Installing phpunit/phpunit (11.5.7): Extracting archive
63 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover --ansi
INFO Discovering packages.
laravel/pail .......................................................... DONE
laravel/sail .......................................................... DONE
laravel/tinker ........................................................ DONE
nesbot/carbon ......................................................... DONE
nunomaduro/collision .................................................. DONE
nunomaduro/termwind ................................................... DONE
81 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
> @php artisan vendor:publish --tag=laravel-assets --ansi --force
INFO No publishable resources for tag [laravel-assets].
No security vulnerability advisories found.
> @php artisan key:generate --ansi
INFO Application key set successfully. ```
> @php -r "file_exists('database/database.sqlite') || touch('database/database.sqlite');"
> @php artisan migrate --graceful --ansi
WARN could not find driver (Connection: sqlite, SQL: PRAGMA foreign_keys = ON;).
- composer が出してくる注意を無視して key を作り忘れるとこうなります。
strnh@ghostbsd ~/example-app> php artisan key:generate --ansi
INFO Application key set successfully.
strnh@ghostbsd ~/example-app> head .env
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:bYzan43a17Ya11hK82o77cZPImt2La/QmdleFKrHP0=
APP_DEBUG=true
APP_TIMEZONE=UTC
APP_URL=http://localhost
strnh@ghostbsd ~/example-app> ./artisan serve
INFO Server running on [http://127.0.0.1:8000].
Press Ctrl+C to stop the server
- composer 指示にしたがい、 sqlite3 なりDBを準備しましょう・・・
strnh@ghostbsd ~/example-app> php -r "file_exists('database/database.sqlite') || touch('database/database.sqlite');"
strnh@hiko-ghostbsd ~/example-app> php artisan migrate --graceful --ansi
WARN could not find driver (Connection: sqlite, SQL: PRAGMA foreign_keys = ON;).
- うっかりしていました。pdo_sqlite ドライバが必要になるようです・・・
ghostbsd% sudo pkg install databases/php82-pdo_sqlite
Updating GhostBSD repository catalogue...
GhostBSD repository is up to date.
Updating GhostBSD-base repository catalogue...
GhostBSD-base repository is up to date.
All repositories are up to date.
The following 1 package(s) will be affected (of 0 checked):
New packages to be INSTALLED:
php82-pdo_sqlite: 8.2.27 [GhostBSD]
Number of packages to be installed: 1
15 KiB to be downloaded.
Proceed with this action? [y/N]: y
[1/1] Fetching php82-pdo_sqlite-8.2.27.pkg: 100% 15 KiB 15.6kB/s 00:01
Checking integrity... done (0 conflicting)
[1/1] Installing php82-pdo_sqlite-8.2.27...
[1/1] Extracting php82-pdo_sqlite-8.2.27: 100%
=====
Message from php82-pdo_sqlite-8.2.27:
--
This file has been added to automatically load the installed extension:
/usr/local/etc/php/ext-30-pdo_sqlite.ini.sample
- migration します。
INFO Preparing database.
Creating migration table ...................................... 31.36ms DONE
INFO Running migrations.
0001_01_01_000000_create_users_table ......................... 154.44ms DONE
0001_01_01_000001_create_cache_table .......................... 48.87ms DONE
0001_01_01_000002_create_jobs_table .......................... 106.25ms DONE
- ようやく作業環境が出来上がりました・・・。
2ヶ月程度 GhostBSD の使用感
- カスタマイズ・コンパイル大好きな人には残念ですが、GhostBSD 基本的に pkg しか使えない感じです。 ports でコンパイルしようにも 14.1-stable というOSバージョンなのでいろいろ制約があり苦労した割りには実り少ない。FreeBSDのように行かずインストールした機材ではコンパイルするのは諦めて使うというスタイルになります。どこかで作って持ってくるのは多分ABIが合えば動くだろうとは思いますが、既存pkgのライブラリのバージョン不一致の関係など依存関係をすべてクリアする必要はあるでしょう。
- 上記の理由で、Ubuntuと遜色なく使える部分はあれど、ユーザが意識せず使えるレベルのアプリケーションコンテナ環境を整える必要があります。
- とはいえLinux互換機能が充実したFreeBSDの開発が進んでいるので、あと数年もすれば追いつくでしょう。
- ディスプレイドライバ・drm-kmodの問題:
[drm] Initialized i915 1.6.0 20201103 for drmn0 on minor 0
FreeBSDはこの分野でLinuxドライバを使うことでしのいでます。若干古いようですがとりあえず動いています。 サーバなどでは、drm-kmodをインストールすることすらせず使うことができますが、最近のHDMI/DPが持つハードウェア制約で KVMスイッチなどでモニタを切り離してしまうと復帰しないという現象があります。アナログなVGAデバイスとは異なりモダンなドライバがないFreeBSDではこのハードウェアの挙動を制御できず、電源を入れた際にモニタと EDIDをやり取りできない時点で「接続がないもの」としてディスプレイ出力しなくなってしまうため使いづらい思いをしたことがあります。起動時に繋がっていれば OSが制御する前のブート時にEDIDをやり取りして出力が始まりますが、一旦KVMであるとかケーブルを外してしまうと通信が切れたとして以後の出力は再開されません。これはHDMI/DPの場合、OS側、ディスプレイドライバが電源制御のサブシステムとして扱うこととされているので、FreeBSDのEDID非対応ドライバで対応しないとなります。
- ノートPCなら外部モニタをプラグして使いたい: ドライバの問題なのかできていない。
drmn0: [drm] HPD interrupt storm detected on connector DP-1: switching from hotplug detection to polling
Debian では 解決されているらしいのですが、2020年のドライバということもありできていません。再起動すれば動くかもしれませんが、原稿執筆中では確認できていません。
- この原稿も ghostbsd のインストール環境で書いています。
というところで本日の作業は終わります。
Discussion