[Çözüldü].deb uzantısı hakkında bilgi

Başlatan Bahired, 02 Kasım 2010 - 16:15:20

« önceki - sonraki »

0 Üyeler ve 5 Ziyaretçi konuyu incelemekte.

Bahired

Merhabalar;

Arkadaşlar Uzun süre windows kullanış, Linux/ubuntuya geçmiştim fakat uzun zamandır aklımda bulunan bir soru, örneğin c++ veya C de bir program yazıp derlediğimizde otomatik .exe oluşuyor ve çalıştırıyoruz fakat python derlenen değil yorumlanan bi dil olduğu için derleme gibi bir imkanımız yok derledik, .exeye bastık çalıştırdık birde ben aynısını ubuntuda yapmak istiyorum, Kaynak kodlardan çalıştırmak yerine .exe gibi çalıştırmak istiyorum ubuntuda bunun uzantısı nedir? .deb midir? yardımlarınızı bekliyorum.

Saygılarımla;
Bayram Şerefoğlu.

krwlng

Daha iyi bilgisi olan arkadaşlar geniş bilgi verecektir, o zamana kadar birkaç şey söylemek istiyorum. deb dosyaları kurulum paketleridir, yani çalıştırılabilir dosyalar ve kütüphaneleri için bir saklama birimi gibi düşünün, deb, içerisindeki bilgi dosyaları ile çalıştırılabilir ve kütüphane dosyalarını gerekli yerlere kopyalayıp, menülere gereken kısayolları ekler, yani diğer bir deyimle kurulum paketleridir. Debian, ubuntu ve türevi işletim sistemleri deb kullanır, mandriva, red hat ve benzerleri rpm, pardus ise pisi kullanır aynı işlem için. Linux'ta exe olayı yok fakat çalıştırılabilir dosyalar mevcuttur. C++ ile bir betik derlediğinizde çıktısı çalıştırılabilir olarak alınır ve duruma göre ya uçbirimden komutla ya da çift tıklama mantığı ile çalışır. Python uygulamalarında genellikle paketleme sırasında kısayol için python komutu ile betik dosyası çalıştırılır ve gereken bayraklar eklenerek uygulama istenildiği gibi işletilir.Linux üzerinde tekel bir çalıştırılabilir dosya mantığı yoktur, bu ister ikili kodda olsun ister python isterse ruby olsun çalıştırılabilir olarak kodlayabilirsiniz.
http://twitter.com/yusuFBrn

Ali İsmail Korkmaz, FENERBAHÇE Yıkılmaz!

barış

@krwing'e ek olarak:

Kaynak koddan çalıştırmak için:
Python ile yazdığınız bir dosyanın sonunu: .py ile
C için: .c ile
C++ için: .cpp ile
perl için: .pl ile,
bash için: .sh ile (daha değişikleri de var ama en yaygını)
vs. vs. o şekilde gidiyor. Kaydediyorsunuz.
Gedit ya da başka bir derleyiciyle bir C programı yazdıysanız sonunu .c ile kaydediyorsunuz. Örnek: program.c
dosya.c gibi dosyalara çalışma hakkı verdikten sonra (aşağıda yazıcam) çalıştırabilirsiniz(uçbirimden):
sudo chmod +x /dizin/dosya.c
(dosyanın C ile yazıldığını varsaydım)
Ne kadar anlatabildim bilmiyorum, umarım yardımcı olabilmişimdir.

Bahired

#3
Merhabalar,
Diyelimki ben bir program yazdım, Uçbirimi açıp python dosyaismi.py demek yorucu geliyor açıckası :), Tek tıkla çalıştırabilceğim bir uzanti varmıdır?, O uzantıya çevirir tek tıkla çalıştırırım.
barışubuntu: Sonradan yazdığını farkettim; Evet biliyorum chmod olayını fakat ben .exe gibi bir olay arıyorum, Umarım anlatabilmişimdir.
Ekleme: Bu konuda profesyonel arkadaşlardan yardım istiyorum.

rick

#4
Alıntı yapılan: Bahired - 02 Kasım 2010 - 16:33:28
Merhabalar,
Diyelimki ben bir program yazdım, Uçbirimi açıp python dosyaismi.py demek yorucu geliyor açıckası :), Tek tıkla çalıştırabilceğim bir uzanti varmıdır?, O uzantıya çevirir tek tıkla çalıştırırım.
barışubuntu: Sonradan yazdığını farkettim; Evet biliyorum chmod olayını fakat ben .exe gibi bir olay arıyorum, Umarım anlatabilmişimdir.
Ekleme: Bu konuda profesyonel arkadaşlardan yardım istiyorum.
Eğer başında "#!" ile hangi dil olduğu yazdıysanız (mesela "#!/usr/bin/env python3.1") ve bir program gibi çalışmasına izin verirseniz; eklere gerek kalmaz. "dosyaismi.py" dosyasını "dosyaismi" diye kaydetseniz bile hangi dil olduğu bilindiğinden çalışacaktır. (Ayrıca Uçbirim'den sadece "dosyaismi" yazarak çalıştırmak için dosyayı "/usr/bin" diznine taşımanız yeterlidir.)

Bahired

Merhaba rick,
Benim amacım uçbirimden çalıştırmak değil tık ile çalıştırmak, Onları biliyorum yardımlarınızdan dolayı teşekkürler.

hitokiri

Alıntı Yap/usr/share/applications/
dizinindeki dosyalar gibi mi ?

agritux


rick

Alıntı yapılan: Bahired - 02 Kasım 2010 - 17:55:46
Merhaba rick,
Benim amacım uçbirimden çalıştırmak değil tık ile çalıştırmak, Onları biliyorum yardımlarınızdan dolayı teşekkürler.
Dediklerimi yaparsanız, zaten "tık" ile çalışır.


Alıntı yapılan: hitokiri - 02 Kasım 2010 - 18:37:01
Alıntı Yap/usr/share/applications/
dizinindeki dosyalar gibi mi ?
"/usr/share/applications/" programların bulunduğu dizindir, kısayollar buraya yönelir. Ama "/usr/bin/" ise (çalıştırılabilir) kaynak kodlarının bulunduğu dizindir.

Bahired

#9
Merhabalar,
hitokiri evet o dizindeki dosyalar gibi tıklayınca çalışıyor onların uzantısı nedir? onu soruyorum.
Rick: Kardeşim hepsini biliyorum o kadar acemi deilim yahu :) fakat uygulamalar kısmında gözükecek o şekilde * bir şey veya masaüstündeyken tık ile çalışacak aynı  hitokirinin dediği dizindeki gibi.
ekleme: usr/bin/ dizininde brasero adında bir dosya var ve tık ile çalışıyor bu şekilde birşey yapmak istiyorum.

hitokiri

o dizindeki dosayayı gedit ile açıp kendine göre özelleştir uzantısı .desktop ,
Alıntı Yapfile  /usr/bin/brasero
/usr/bin/brasero: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, stripped
braseronun olayı nedir bilemiycem :)

rick

Alıntı yapılan: Bahired - 02 Kasım 2010 - 18:46:54
Merhabalar,
hitokiri evet o dizindeki dosyalar gibi tıklayınca çalışıyor onların uzantısı nedir? onu soruyorum.
Rick: Kardeşim hepsini biliyorum o kadar acemi deilim yahu :) fakat uygulamalar kısmında gözükecek o şekilde * bir şey veya masaüstündeyken tık ile çalışacak aynı  hitokirinin dediği dizindeki gibi.
ekleme: usr/bin/ dizininde brasero adında bir dosya var ve tık ile çalışıyor bu şekilde * bir şey yapmak istiyorum.
Onu başlatıcılar ile yapabilirsiniz. Masaüstüne sağ tıklayıp, "Başlatıcı Oluştur"a tıklayın ve komutu girin. (Mesela eğer başlangıç diznindeyse "./dosyaismi" veya "/usr/bin" diznine taşıdıysanız, sadece "dosyaismi".)

Bahired

Tekrardan merhabalar,
Rick teşekkür ederim amacıma ulaştım fakat bir program gibi çalışmasına izin ver ve yetkilerini 777 yapmama rağmen hiç * bir şey açılmıyor tıklayınca, Neden olabilir bir fikrin varmı? sudo naitulus komutu ile usr/bin dizinine attım.
Bir sorun daha, Python ile yazdığım uygulamaları direk uçbirimden çalıştırınca cevabı vermeden kapatıyor, Bilginiz varmı rick?


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 02 Kasım 2010 - 19:32:14

Tekrardan merhabalar, Sorunumu halletmiş bulunuyorum tüm herkeze yardımlarından dolayı teşekkür ederim.

rick

Alıntı yapılan: Bahired - 02 Kasım 2010 - 19:27:49
Bir sorun daha, Python ile yazdığım uygulamaları direk uçbirimden çalıştırınca cevabı vermeden kapatıyor, Bilginiz varmı rick?
Komut, işlevini bitirince kapanacaktır. Eğer doğrudan bir Uçbirim açıp, içinden dosyayı çalıştırırsanız; komutun işlevi bitince Uçbirim'e geri döner.

sem

Alıntı yapılan: barışubuntu - 02 Kasım 2010 - 16:30:17
Gedit ya da başka bir derleyiciyle bir C programı yazdıysanız sonunu .c ile kaydediyorsunuz. Örnek: program.c
dosya.c gibi dosyalara çalışma hakkı verdikten sonra (aşağıda yazıcam) çalıştırabilirsiniz(uçbirimden):
sudo chmod +x /dizin/dosya.c
(dosyanın C ile yazıldığını varsaydım)
Ne kadar anlatabildim bilmiyorum, umarım yardımcı olabilmişimdir.

Aslında buna gerek yok. Şöyle ki; .c uzantılı dosya sadece GCC'ye kaynak kod olduğunu tanıtmak için kullanılıyor. Bu durumda "dosya.c" kaynak kodunda +x (çalıştırma) izni olması gerekmiyor. Hatta "dosya.c"

chmod -w dosya.c ile yazma hakkını alsak dahi yani sadece GCC için okuma izni bıraksak yine kod derlenecektir.

@Bahired
Derleme işleminden sonra oluşan ikilik dosya zaten "+x" olarak düzenleniyor. Fakat çift tık ile çalıştıramıyorsunuz. Bu durumda sizin sorunu hallettiğiniz şekilde "uygulama baştatıcı" ile sorunu halledebilirsiniz. Mesela bir firefox için başlatıcı hazırlarsanız sorun olmaz.

Ama her durumda bu şekilde çözemezsiniz. İlk iletide "program yazıp derlediğimizde" demişsiniz. Eğer siz kendi programlarınızı yapacaksanız eğer şöyle bir sorun olur (bu sorun Windows için de geçerlidir)... Aşağıdaki kaynak koda bakalım mesela:
#include <stdio.h>


int main()
{
   fprintf(stdout,"Merhaba\n");
}


Bunu:
gcc kod.c -o kod
olarak derledik ve masaüstümüzde "kod" adında bir çalışan dosya oluştu diyelim. Masaüstünü sağ tıkladık -> uygulama başlatıcıyı açtık.  Türü uçbirim uygulaması seçtim ve ben kendi bilgisayarımda "komut"  kısmına şunu giriyorum:
/home/sem0900/Desktop/kod

Bu şekilde normalde çalışması gerekir ama terminal penceresini bazen göremeyiz bile. Çünkü program başlıyor, ekrana bir şey yazıyor ve kapanıyor. Bu durumun üstesinden:

#include <stdio.h>


int main()
{
   fprintf(stdout,"Merhaba\n");
getchar();
}



ile gelebilirsiniz. Ben C kodları ile örnek verdim. Yaptığım şey: "benden bir tuş bekle". Yani ben bir tuşa basmadan terminal kapanmayacak. Bu şekilde kodum istediğim gibi çalışacaktır.

Tabi önceden dediğim gibi bu durum kendi yazıp derlediğiniz programlar için geçerli.

Reklam: Uygulama başlatıcı için SUDO 22. Sayı -> İpuçları.
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

eribol

Ben de yorumumu yapıp konuyu tekrar kilitleyeyim :)

deb=setup.exe. Windows ortamında setup.exe aslında sadece derlenip makine diline çevrilen bir dosya değil. Sıkıştırılmış ve kuralları olan bir paket. İçerisinde programın derlenmiş paketleri, simgeleri, kütüphaneleri, ayar dosyaları vardır. setup.exe, bu dosyaları kendisine belirtilen yerlere tek tek atar. Kısaca setup.exe bu.

Aynı şekilde deb paketleri de böyledir. Mesela C ile yazılan bir program düşünün. Ubuntu geliştiricileri ( veya gönüllüleri) bu programın kaynak kodlarını alır, üzerinde bir kaç oynama yapar, derler ve derleme sonunda oluşan makine diline dönüşmüş çalıştırılabilir dosyaların, kütüphanelerin, simgelerin, ayar dosyalarının vb. dosyaların nereye aktarılacağı bilgisini deb dosyasının içine atarak deb dosyasını oluşturur. Tabii ben basit bir şekilde ele alarak söylüyorum ama tabii ki gelişmiş ayarlar yapılabiliyor. Mesela bir gnome deb paketi haline getirildiğinde bir kaç deb paketi oluşturulur. gnome, gnome library, gnome devel gibi birkaç deb paketi oluşturulur ve oluşturulan her deb dosyasının hangi paketlere ihtiyaç duyduğu da yine bu deb oluşturulması esnasında ayarlanır.

C ve python arasında ki fark ise şu; C'de kaynak dosya vardır ve gcc(derleyici) bu kaynak dosyayı derler, yeni ve ayrı bir dosya oluşturur(makine dilinde dosya=ikili dosya=binary). İşte oluşturulan bu dosya sizin bahsettiğiniz exe dosyası gibidir. Ancak C kaynak kodunda yaptığınız değişiklik tabii ki bu çalıştırılabilir dosyaya direk aktarılmaz, yeniden derlenmesi gerekir. Python'da ise durum böyle değildir. Komutları yazarsınız ve çalıştırırsınız. Makine diline çevrilen dosya yoktur(istenirse yapılabilir tabii ki). Bu nedenle kaynak kodunda yaptığınız değişiklik hemen etkisini gösterir(tekrar derlemeye gerek yoktur).