MHMT Linux

Uygulama yönetimi — mhmt uygulama

MHMT Linux'ta isteğe bağlı uygulamalar tek bir katalogdan kurulur ve kaldırılır. Aynı katalog üç yerde kullanılır:

Nerede Ne zaman Ne yapar
Kurucunun Uygulamalar ekranı Kurulum sırasında Seçilenler yeni sisteme kurulur
Menüdeki Uygulamalar penceresi Kurulumdan sonra İşaretle/kaldır, değişiklik uygulanır
mhmt uygulama komutu (İngilizcesi mhmt app) Kurulumdan sonra, terminalde Liste, ara, kur, kaldır

Üçü de aynı kodu çalıştırır: pencere ve kurucu sonunda mhmt uygulama komutunu çağırır. Bir uygulama nereden kurulursa kurulsun, diğer ikisinde "kurulu" görünür.

mhmt komutunun her alt komutunun Türkçe ve İngilizce adı aynı işi yapar; çıktı sistem dilindedir (Türkçe sistemde Türkçe, diğerlerinde İngilizce). Eski mhmt-uygulama komutu da çalışır; mhmt uygulama ile aynıdır.

Türkçe İngilizce İş
mhmt uygulama liste mhmt app list Katalog ve durum
mhmt uygulama ara <sözcük> mhmt app search <word> Ad, açıklama, paket adında arama
mhmt uygulama kur … mhmt app install … Kurma
mhmt uygulama kaldir … mhmt app remove … Kaldırma
mhmt guncelle mhmt update apt + Flatpak + aygıt yazılımı güncellemesi (§7)
mhmt destek mhmt support Sorun bildirimi için bilgi arşivi (§7)
mhmt surum mhmt version Sürüm
mhmt yardim mhmt help Yardım

Sekme tuşu alt komutları ve uygulama kimliklerini tamamlar (sudo mhmt uygulama kur st<Tab> → steam). Root gereken komutlar sudosuz yazılırsa kendini sudo ile yeniden başlatır.

İlgili kararlar: #40 (Flathub uygulamaları), #44 (katalog ve kurucu ekranı), #46 (Debian uygulamaları ISO'da), #47 (katalog genişletme), #48 (mhmt komutu, Ubuntu). Kontrat: 02-mimari.md, mhmt-app-cli ve mhmt-app-uygulamalar.


1. Kullanıcı için

Listeyi görmek

mhmt uygulama liste

Örnek çıktı:

Oyun (oyun)
  steam           Steam                          Debian   kurulu
  heroic          Heroic Games Launcher          Flatpak  sırada
  discord         Discord                        Flatpak  kurulu değil

Sütunlar: kimlik (komutta yazılan), ad (ekranda görünen), kaynak, durum. Parantezdeki oyun grubun kimliğidir.

Durumlar:

Kurmak

sudo mhmt uygulama kur steam discord      # tek tek
sudo mhmt uygulama kur oyun               # bütün grup
sudo mhmt uygulama kur -y gimp            # onay sormadan

Komutta kimlik, grup kimliği (Türkçe oyun ya da İngilizce games), paket adı (virt-manager) ya da Flathub kimliği (com.discordapp.Discord) yazılabilir; paket adı ve Flathub kimliği katalogdaki öğeye çevrilir, böylece 32 bit desteği gibi işler yine yapılır. Ekrandaki ad yazılmaz: boşluk, büyük harf ve "+" içerir ("Virtual Machine Manager" → virtmanager). Kimlikler kalıcıdır; ad değişse de kimlik değişmez. Kimliği bilmiyorsan: mhmt uygulama ara sanal.

Kaldırmak

sudo mhmt uygulama kaldir discord

kaldır (ı ile) da çalışır.

Pencereden

Menü → Uygulamalar (Sistem kategorisi):

Doğrudan apt / Flatpak ile

Katalog zorunlu değil. Her paket her zamanki yoldan da kurulabilir:

sudo apt install virt-manager
flatpak install flathub com.discordapp.Discord

Bu yoldan kurulan bir uygulama katalogda varsa liste onu yine kurulu gösterir, çünkü durum sistemden okunur.

Katalogun farkı şu üç şeyi kendisi yapmasıdır:

Güncelleme

Kaynak Nasıl güncellenir
[Debian] Sistem güncellemesiyle: Discover ya da sudo apt update && sudo apt full-upgrade
[Flatpak] Discover ya da flatpak update

Hepsini tek seferde güncellemek için: sudo mhmt guncelle (§7).


2. Kaynaklar: [Debian] ve [Flatpak]

[Debian] [Flatpak]
Nereden Debian trixie depoları (+ MHMT deposu) Flathub
Kurulumda internet Gerekmez: paketler ISO'da (karar #46) Gerekir: ilk internette iner
Kurulumdan sonra apt kaynakları (internet) Flathub (internet)
Kum havuzu Yok, sistem paketi Var (izinler: Flatseal)

Neden bazıları Flatpak: Bazı uygulamalar Debian'da yok ya da çok eski (Discord, Spotify, VS Code, Chrome). Bazılarının lisansı ISO'ya gömülmeye izin vermiyor (Chrome, Discord). Bazılarının Flathub paketi programı kurulum sırasında üreticiden indiriyor (Brave). Bu yüzden Flatpak'lar ISO'ya girmez.

iso: true öğeleri (Chromium, OBS Studio, qBittorrent gibi varsayılan işaretli Debian uygulamaları) canlı imajda zaten kuruludur. Kurucuda işareti kaldırılırsa kurulumun sonunda yeni sistemden kaldırılır.


3. Akış ayrıntısı

3.1 Debian öğesi kurulurken

sudo mhmt uygulama kur steam sırasıyla şunları yapar:

  1. Seçim. Kimlikler ve grup kimlikleri katalogdan çözülür. Bilinmeyen ad varsa hiçbir şey yapmadan çıkar.
  2. Yetki. Root değilse sudo ile tekrar çalıştırılacak komutu yazıp çıkar.
  3. 32 bit (i386: true öğeler: Steam, Wine).
  4. Wine seçiliyse wine32:i386 eklenir.
  5. Sistemde nvidia-driver-libs kuruluysa nvidia-driver-libs:i386 eklenir. Steam istemcisi 32 bittir; NVIDIA kapalı sürücüsünde Mesa'nın 32 bit GL'i işe yaramaz.
  6. i386 mimarisi kapalıysa dpkg --add-architecture i386 ile açılır.
  7. Lisans yanıtları. Öğenin debconf satırları debconf-set-selections ile önceden verilir. Kurulum soru sorup takılmaz.
  8. apt-get update --error-on=any. Bir kaynağa bile ulaşılamazsa kurulum yapılmaz, çünkü eksik indeksle yarım kurulum olur. Bu adımda i386'yı kendisi açtıysa geri kapatır ve "Sonradan: sudo mhmt uygulama kur …" komutunu yazar.
  9. apt-get install. Çözülemezse hiçbir şey kurulmaz. i386'yı kendisi açtıysa yine geri alır.

Çıkış kodu: hepsi kurulduysa 0, apt adımı başarısızsa 1.

3.2 Flatpak öğesi kurulurken

  1. Flathub kimliği (com.discordapp.Discord) sıra dosyasına yazılır: /var/lib/mhmt/flatpak/sirada.
  2. Daha önce kurulup kaldırıldıysa "kuruldu" kaydından silinir; açıkça istendiği için yeniden kurulur.
  3. Normal sistemde kurucu betik hemen çalışır: /usr/libexec/mhmt-flatpak/mhmt-flatpak-kur.
  4. İnternet varsa uygulama hemen iner.
  5. Yoksa sırada kalır ve §3.3'teki tetiklerle kurulur.

3.3 Flatpak sırası (mhmt-config-flatpak)

mhmt-flatpak-kur iki listeyi birleştirir:

/var/lib/mhmt/flatpak/kuruldu dosyasında olanları atlar. Böylece kullanıcının sonradan kaldırdığı bir uygulama bir daha kendiliğinden gelmez.

dl.flathub.org çözülemiyorsa sessizce çıkar. Her başarılı kurulumdan sonra sonra.d/<kimlik> betiği varsa çalışır; örneğin VS Code'un sistem derleyicilerine ulaşma izni ve varsayılan ayarları buradan gelir.

Ne zaman çalışır:

Tetik Ne zaman
mhmt-flatpak-kur.timer Açılıştan 2 dk sonra, sonra her 30 dk'da bir
NetworkManager dispatcher (90-mhmt-flatpak) Ağ bağlandığı anda, sırada iş varsa (mhmt-config-flatpak 0.3.0, b51'de yok)
mhmt uygulama kur Kurulumdan sonra elle istenince, hemen

Canlı USB oturumunda (boot=live) hiç çalışmaz.

Elle tetiklemek ve günlüğe bakmak için:

sudo systemctl start mhmt-flatpak-kur.service
journalctl -u mhmt-flatpak-kur
cat /var/lib/mhmt/flatpak/sirada /var/lib/mhmt/flatpak/kuruldu

3.4 Kurucuda (Calamares)

netinstall (Uygulamalar ekranı)
   │  seçilen her uygulama = adını taşıyan sahte paket ("Steam")
   ▼
mhmt-roles-select            packages'tan önce
   │  netinstall'ın eklediği sahte paketleri packageOperations'tan çıkarır,
   │  adı katalogdan kimliğe çevirir → mhmtApps
   │  işareti kaldırılmış iso öğeleri → mhmtAppsRemove
   ▼
packages                     (sahte paketleri hiç görmez)
   ▼
sources-media                ISO deposu hedefe bağlanır: file:/run/live/medium trixie main
mhmt-nvidia                  NVIDIA algılanırsa sürücü
mhmt-roles                   hedefte (chroot):
   │    mhmt uygulama kaldir -y --kurucu <mhmtAppsRemove>
   │    mhmt uygulama kur    -y --kurucu <mhmtApps>
   ▼
sources-media-unmount        ISO deposu satırı silinir

--kurucu kipindeki farklar:

Satırın içi: Uygulama ekranında bir satır açılınca altında uygulamanın adı görünür. Bu, Calamares'in "paket" satırıdır. b51'de burada mhmt-app:steam yazıyordu; installer-branding 0.5.2'den itibaren ad yazıyor.


4. Katalog dosyası

/usr/share/mhmt/uygulamalar/katalog.json (kaynak: packages/mhmt-app-cli/katalog.json)

{"gruplar": [
  {"id": "oyun", "ad": "Oyun", "aciklama": "Steam ve Wine 32 bit mimariyi açar",
   "ogeler": [
     {"id": "steam", "ad": "Steam", "aciklama": "Steam ve oyun kolu desteği",
      "apt": ["steam-installer", "steam-devices"], "i386": true},
     {"id": "discord", "ad": "Discord", "aciklama": "Oyuncu sohbeti",
      "flatpak": "com.discordapp.Discord"}
   ]}
]}
Alan Zorunlu Anlamı
id evet Komutta yazılan kimlik. Küçük harf, boşluksuz, değiştirilmez
ad evet Ekranda görünen ad, katalogda benzersiz. Ad standardı aşağıda
ad_en hayır İngilizce ad; yalnız ad dile göre değişiyorsa (Microsoft fonts)
aciklama evet Kısa açıklama (Türkçe)
aciklama_en evet Kısa açıklama (İngilizce)
apt biri Debian trixie paketleri listesi
flatpak biri Flathub uygulama kimliği
varsayilan hayır Kurucuda işaretli gelir
iso hayır Canlı imajda kurulu gelir. Paketleri live-build/config/package-lists/mhmt.list.chroot'ta da olmalı
i386 hayır 32 bit mimari gerekir (Steam, Wine)
debconf hayır Kurulumdan önce verilecek debconf-set-selections satırları
dagitim hayır Başka dağıtımdaki karşılık (aşağıda)

Her öğede apt ya da flatpak alanlarından biri olmalı ("biri" bunu anlatır). Gruplarda da id_en, ad_en, aciklama_en zorunlu (oyun → games).

Dağıtım karşılığı (dagitim): apt/flatpak alanları Debian trixie içindir. Başka dağıtımda paket yoksa ya da farklıysa karşılık yazılır; aranma sırası sürüm adı (noble), dağıtım (ubuntu), türediği dağıtımlar:

{"id": "chromium", ..., "apt": ["chromium", "chromium-l10n"],
 "dagitim": {"ubuntu": {"flatpak": "org.chromium.Chromium"}}}
{"id": "ghcli", ..., "apt": ["gh", "lazygit"], "dagitim": {"noble": {"apt": ["gh"]}}}

Karşılık apt ya da flatpak taşıyorsa öğenin kaynağının yerine geçer; null o dağıtımda öğeyi gizler. Derleme tools/katalog-denetle.py ile alanları, benzersizliği ve İngilizce metinleri denetler; eksik varsa durur.

Ad standardı:

Katalog değişince

  1. Öğe eklenir ya da düzeltilir.
  2. Debian öğesi için paketin trixie'de olduğunu doğrula: apt-cache policy <paket> (build VM).
  3. Flatpak öğesi için kimliğin Flathub'da olduğunu doğrula: https://flathub.org/apps/<kimlik>.
  4. Ubuntu 24.04 ve 26.04'te paket adı aynı mı, snap'e mi yönlendiriyor: farklıysa dagitim karşılığı yazılır.
  5. packages/mhmt-app-cli/debian/changelog'a yeni sürüm yazılır. Yayınlanmış sürüm değişmez.
  6. Kurucu ekranı katalogdan üretildiği için mhmt-config-installer-branding changelog'u da yükselir.
  7. vm/publish-packages.ps1 -Public ile paketler yayınlanır. Kurulu sistemlere apt güncellemesiyle yeni katalog gelir.
  8. Bir sonraki ISO'da yeni Debian öğeleri ISO deposuna da girer (hook 0400-mhmt-uygulama-deposu).

5. Dosyalar

Yol Paket İçerik
/usr/bin/mhmt mhmt-app-cli Komut
/usr/lib/mhmt/python/mhmt_cli/ mhmt-app-cli Komutun modülleri (uygulama, guncelle, destek, dil, katalog)
/usr/bin/mhmt-uygulama mhmt-app-cli Eski ad: mhmt uygulama
/usr/share/mhmt/uygulamalar/katalog.json mhmt-app-cli Katalog
/usr/share/bash-completion/completions/mhmt mhmt-app-cli Sekme tamamlaması
/usr/bin/mhmt-uygulamalar mhmt-app-uygulamalar Menüdeki pencere (kdialog, yalnız KDE)
/usr/libexec/mhmt-flatpak/mhmt-flatpak-kur mhmt-config-flatpak Flatpak sırasını kurar
/usr/lib/NetworkManager/dispatcher.d/90-mhmt-flatpak mhmt-config-flatpak Ağ gelince tetikler
/usr/share/mhmt/flatpak/sonra.d/ mhmt-config-flatpak Kurulum sonrası betikler
/var/lib/mhmt/flatpak/sirada, kuruldu (durum) Sıra ve kurulmuş kayıtları
/usr/bin/mhmt-rol mhmt-config-apt Eski komut, uyumluluk için: mhmt-rol kur oyun = mhmt uygulama kur oyun

6. Sorun giderme

Belirti Neden / çözüm
"bilinmeyen öğe, grup ya da paket" Ekrandaki ad yazılmış ya da uygulama katalogda yok; mhmt uygulama ara <sözcük>
"depolarda bulunamayan paketler" Ubuntu'da paket universe/multiverse'te olabilir: sudo add-apt-repository multiverse; Debian'da depo kaynaklarını kontrol et
"paket kaynaklarına ulaşılamadı; şunlar kurulmadı" İnternet yok ya da bir depo erişilemiyor; sudo apt update çıktısına bak, sonra komutu tekrar çalıştır
Flatpak sırada kalıyor İnternet yok ya da Flathub erişilemiyor; journalctl -u mhmt-flatpak-kur, elle: sudo systemctl start mhmt-flatpak-kur.service
Kaldırdığım Flatpak geri geldi Gelmemeli (kuruldu kaydı); geldiyse kaydı ve sirada dosyasını kontrol et
Steam açılmıyor, 32 bit hatası dpkg --print-foreign-architectures içinde i386 olmalı; NVIDIA'da nvidia-driver-libs:i386 (Ubuntu'da libnvidia-gl-<sürüm>:i386) kurulu olmalı
Kurulumda "bir kısmı kurulamadı" penceresi Sistem kuruldu, eksikler pencerede yazan komutla sonradan kurulur; kurucu günlüğü canlı oturumda /root/.cache/calamares/session.log

7. Diğer alt komutlar

mhmt guncelle / mhmt update

sudo mhmt guncelle        # her adımda onay sorar
sudo mhmt guncelle -y     # sormadan

Sırayla çalışır; bir adım hata verirse diğerleri yine çalışır:

  1. apt-get update ve apt-get full-upgrade: sistem ve [Debian] uygulamaları.
  2. flatpak update: sistem kurulumu; sudo ile çağıranın kendi (--user) Flatpak'ları da.
  3. snap refresh: yalnız snap varsa (Ubuntu).
  4. fwupdmgr update: aygıt yazılımı (BIOS/UEFI, SSD, dock vb.), yalnız fwupd kuruluysa.

Sonunda adım adım özet yazılır. Yeni çekirdek kurulduysa ya da sistem "yeniden başlatma gerekli" diyorsa uyarır.

mhmt destek / mhmt support

mhmt destek           # kullanıcı olarak: kendi günlüklerin
sudo mhmt destek      # sistem günlüklerinin tamamı

Ev klasörüne mhmt-destek-<tarih>.tar.gz yazar. İçinde:

Hiçbir yere gönderilmez. Arşive girmeden önce makine adı, kullanıcı adları, MAC adresleri ve makine kimliği maskelenir. Göndermeden önce açıp bakabilirsin.

8. Ubuntu'da

mhmt komutu ve Flatpak sırası Ubuntu 24.04 LTS (noble) ve 26.04 LTS (resolute) için de MHMT deposunda. Uygulamalar penceresi KDE ister (Kubuntu); diğer masaüstlerinde yalnız komut kurulur.

sudo install -d /etc/apt/keyrings
sudo curl -fsSLo /etc/apt/keyrings/mhmt-archive-keyring.asc https://repo.mehmetozkan.net/mhmt-archive-keyring.asc
. /etc/os-release
printf 'Types: deb
URIs: https://repo.mehmetozkan.net
Suites: %s
Components: main
Architectures: amd64
Signed-By: /etc/apt/keyrings/mhmt-archive-keyring.asc
' "$VERSION_CODENAME"   | sudo tee /etc/apt/sources.list.d/mhmt.sources
sudo apt update
sudo apt install mhmt-app-cli              # yalnız komut
sudo apt install mhmt-app-uygulamalar      # Kubuntu: menüde "Uygulamalar" penceresi de

Ubuntu'da farklar: