Postinst betiğinde oturum açma adını .deb dosyası Ubuntu Software Center tarafından yüklenirken alın.


2

Debian için bir uygulama geliştirdim ve equivs-build kullanarak .deb kurulum paketi hazırladım. Paket oluşturmak için kullandığım kontrol dosyasının bir postinst betiğini çalıştıran bir satırı var, setup.sh. Bu dosyada, aşağıdakileri içeren çeşitli yöntemler kullanarak kullanıcının giriş adını almaya çalıştım:

USER=$(logname)
USER=$(who am i | awk '{print $1}')

Bir terminal penceresinde kök olarak denediğimde bu yollar düzgün çalışıyor. Ne yazık ki, hepsi kurulum sırasında başarısız oldu ve kullanıcı adı "root" olarak alındı. Bu, komut dosyasındaki tüm yolların yanlış olmasına neden olur ve komut dosyası bir hatayla çıkar ve Yazılım Merkezinin bir hata mesajı göstermesine ve kurulumu durdurmasına neden olur.

Ancak, paketi aşağıdaki gibi yüklemek için dpkg kullanarak, uygulamam başarıyla yüklendi.

dpkg -i package-name

Peki, bu neden oluyor? Giriş adı doğru nasıl alınır?

Yanıtlar:


0

Ne yapmaya çalışıyorsun belki Doğru çalış

.deb paketler değil her kullanıcıya özel - hepsi sistem genelinde kurulur, bu nedenle 'logname' çıktısı "root" gösterir - bu nedenle aynı şekilde çalışması gerekir herşey Kullanıcılar ve kimsenin giriş dizinini sistem genelinde yapılandırma dosyalarına kodlanmış olarak giremezsiniz.

Linux'un çok kullanıcılı bir işletim sistemi olduğunu unutmayın - aynı anda birden fazla kullanıcı hesabı oluşturulmuş ve hatta giriş yapmış olabilir. Eğer paketiniz bunu yaparsa, o zaman sadece kurulumu yapan kişi için çalışır, ancak bilgisayardaki herkes için kullanmak imkansız hale gelir!

Arasındaki fark dpkg Buradaki Yazılım Merkezi, önceki işlemin tüm eylemleri gerçekleştirdiğini ve doğrudan komut dosyalarını çalıştırdığı, bu nedenle postinst komut dosyaları hala kullanıcının oturum açma oturumunda çalışıyor. Ancak, Yazılım Merkezi, gerçek yüklemeyi herhangi bir oturum açma oturumunun "dışında" çalışan ve kullanıcılarla hiçbir şekilde etkileşime girmeyen bir arka plan hizmetine gönderir.


1
Bunu başarmaya çalışmamın nedeni, benim uygulamamın, sadece bir kullanıcı için kurulması gereken ebeveyn kontrolleri uygulamasıdır.
Mustafa Orkun Acar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.